1 |
enderton |
1.1 |
#! /usr/bin/env bash |
2 |
|
|
|
3 |
|
|
#PBS -N Rw3p0km_LW |
4 |
|
|
#PBS -l ncpus=8 |
5 |
|
|
#PBS -l walltime=08:00:00 |
6 |
|
|
#PBS -q science@columbia2 |
7 |
|
|
#PBS -V |
8 |
|
|
|
9 |
|
|
|
10 |
|
|
# Columbia specific calls: |
11 |
|
|
. /usr/share/modules/init/bash |
12 |
|
|
|
13 |
|
|
|
14 |
|
|
#-----------------------------------------------------------------------------# |
15 |
|
|
# - Load PC parameters # |
16 |
|
|
# - Determine stop iteration for this period # |
17 |
|
|
#-----------------------------------------------------------------------------# |
18 |
|
|
runDir=/nobackup/enderton/Rw3p0km_LW |
19 |
|
|
varlist="npcpl npocn exp matscript outDir figOutDir scrDir cplmonitor \ |
20 |
|
|
ocnmonitor period iitO iitA fitO fitA nitC nitO nitA nitOonly \ |
21 |
|
|
pChkptFreq taveFreq cpl_taveFreq dumpFreq monitorFreq plotFreq \ |
22 |
|
|
exC exO exA exOOnly cplDir ocnDir atmDir dtA dtO dtC \ |
23 |
|
|
LocalScratch MakePlots PeriodicCoupling ocnForcingRoot gWeight" |
24 |
|
|
cd $runDir |
25 |
|
|
source pc.vars |
26 |
|
|
sitO=$(($iitO+$nitO)) |
27 |
|
|
sitA=$(($iitA+$nitA)) |
28 |
|
|
iitO0=`$scrDir/add0upto10c $iitO` |
29 |
|
|
iitA0=`$scrDir/add0upto10c $iitA` |
30 |
|
|
sitO0=`$scrDir/add0upto10c $sitO` |
31 |
|
|
sitA0=`$scrDir/add0upto10c $sitA` |
32 |
|
|
rm -f $cplmonitor |
33 |
|
|
echo "Coupled period!" > $cplmonitor |
34 |
|
|
echo "Actual start time, of script: "`date` >> $cplmonitor |
35 |
|
|
echo "Simulation directory: "$runDir >> $cplmonitor |
36 |
|
|
echo "Period: "$period >> $cplmonitor |
37 |
|
|
echo "Period START iteration:" >> $cplmonitor |
38 |
|
|
echo " Ocean "$iitO >> $cplmonitor |
39 |
|
|
echo " Atmosphere "$iitA >> $cplmonitor |
40 |
|
|
echo "Period STOP iteration:" >> $cplmonitor |
41 |
|
|
echo " Ocean "$sitO >> $cplmonitor |
42 |
|
|
echo " Atmosphere "$sitA >> $cplmonitor |
43 |
|
|
echo "Overall FINAL iteration:" >> $cplmonitor |
44 |
|
|
echo " Ocean "$fitO >> $cplmonitor |
45 |
|
|
echo " Atmosphere "$fitA >> $cplmonitor |
46 |
|
|
|
47 |
|
|
|
48 |
|
|
#-----------------------------------------------------------------------------# |
49 |
|
|
# - Set coupled data file, and cpl_taveFreq in the ocean data.cpl file # |
50 |
|
|
# - Set ocean and atmosphere data files # |
51 |
|
|
#-----------------------------------------------------------------------------# |
52 |
|
|
. $scrDir/setdatacpl $runDir/$cplDir $runDir/$ocnDir $nitC $cpl_taveFreq |
53 |
|
|
. $scrDir/setdata $runDir/$ocnDir $iitO $nitO $pChkptFreq \ |
54 |
|
|
$taveFreq $dumpFreq $monitorFreq |
55 |
|
|
. $scrDir/setdata $runDir/$atmDir $iitA $nitA $pChkptFreq \ |
56 |
|
|
$taveFreq $dumpFreq $monitorFreq |
57 |
|
|
|
58 |
|
|
|
59 |
|
|
#-----------------------------------------------------------------------------# |
60 |
|
|
# Move pickup files to ocean rank, copy atmospheric pickup files forward # |
61 |
|
|
#-----------------------------------------------------------------------------# |
62 |
|
|
oldper=$((period-1)) |
63 |
|
|
rm $runDir/rank_*/pickup* |
64 |
|
|
if [ $PeriodicCoupling -eq 0 ]; then |
65 |
|
|
cp $outDir/Cpl$oldper/Ocn/pickup.$iitO0.* $ocnDir/. |
66 |
|
|
for tile in `seq 6`; do |
67 |
|
|
tile30=`$scrDir/add0upto3c $tile` |
68 |
|
|
cp $outDir/Cpl$oldper/Atm/pickup*$iitA0.$tile30* \ |
69 |
|
|
$runDir/rank_$((tile+1))/. |
70 |
|
|
done |
71 |
|
|
fi |
72 |
|
|
if [ $PeriodicCoupling -eq 1 ]; then |
73 |
|
|
cp $outDir/Ocn$oldper/pickup.$iitO0.* $ocnDir/. |
74 |
|
|
oldA=`$scrDir/add0upto10c $(($iitA-(8*$nitOonly)))` |
75 |
|
|
oldO=`$scrDir/add0upto10c $(($iitO-$nitOonly))` |
76 |
|
|
for tile in `seq 6`; do |
77 |
|
|
for suffix in meta data; do |
78 |
|
|
tile30=`$scrDir/add0upto3c $tile` |
79 |
|
|
cp $outDir/Cpl$oldper/Atm/pickup.$oldA.$tile30.001.$suffix \ |
80 |
|
|
$runDir/rank_$((tile+1))/pickup.$iitA0.$tile30.001.$suffix |
81 |
|
|
cp $outDir/Cpl$oldper/Atm/pickup_cpl.$oldA.$tile30.001.$suffix \ |
82 |
|
|
$runDir/rank_$((tile+1))/pickup_cpl.$iitA0.$tile30.001.$suffix |
83 |
|
|
cp $outDir/Cpl$oldper/Atm/pickup_ic.$oldA.$tile30.001.$suffix \ |
84 |
|
|
$runDir/rank_$((tile+1))/pickup_ic.$iitA0.$tile30.001.$suffix |
85 |
|
|
cp $outDir/Cpl$oldper/Atm/pickup_land.$oldA.$tile30.001.$suffix \ |
86 |
|
|
$runDir/rank_$((tile+1))/pickup_land.$iitA0.$tile30.001.$suffix |
87 |
|
|
cp $outDir/Cpl$oldper/Ocn/pickup_cpl.$oldO.$tile30.001.$suffix \ |
88 |
|
|
$runDir/rank_1/pickup_cpl.$iitO0.$tile30.001.$suffix |
89 |
|
|
done |
90 |
|
|
done |
91 |
|
|
fi |
92 |
|
|
|
93 |
|
|
# Prepare run directories. |
94 |
|
|
for rank in `seq 7`; do |
95 |
|
|
if [ $rank -ge 3 ]; then |
96 |
|
|
rm rank_$rank/data* rank_$rank/eedata rank_$rank/*.bin |
97 |
|
|
cp rank_2/data* rank_$rank/. |
98 |
|
|
cp rank_2/eedata rank_$rank/. |
99 |
|
|
cp rank_2/*.bin rank_$rank/. |
100 |
|
|
fi |
101 |
|
|
done |
102 |
|
|
|
103 |
|
|
echo "Beginning model execution..." >> $cplmonitor |
104 |
|
|
mpirun -np 1 ./executables/mitgcmuv.c32.C1 \ |
105 |
|
|
: 1 ./executables/mitgcmuv.c32.O1 \ |
106 |
|
|
: 6 ./executables/mitgcmuv.c32.A6 |
107 |
|
|
status=$? |
108 |
|
|
echo "Ended with status: "$status >> $cplmonitor |
109 |
|
|
|
110 |
|
|
|
111 |
|
|
#-----------------------------------------------------------------------------# |
112 |
|
|
# Move old data (just copy pickups) # |
113 |
|
|
#-----------------------------------------------------------------------------# |
114 |
|
|
. $scrDir/moveDataCpl $runDir $outDir $period $iitO0 \ |
115 |
|
|
$sitO0 $iitA0 $sitA0 $cplmonitor |
116 |
|
|
rm rank_*/pickup* |
117 |
|
|
|
118 |
|
|
|
119 |
|
|
#-----------------------------------------------------------------------------# |
120 |
|
|
# Check for pickups # |
121 |
|
|
#-----------------------------------------------------------------------------# |
122 |
|
|
pickO=$outDir/Cpl$period/Ocn/pickup.$sitO0.001.001.data |
123 |
|
|
pickA=$outDir/Cpl$period/Atm/pickup.$sitA0.001.001.data |
124 |
|
|
if [ -f $pickO ]; then echo "Ocn pickup present: "$pickO >> $cplmonitor |
125 |
|
|
else echo "No Ocn pickup: "$pickO >> $cplmonitor; exit; fi |
126 |
|
|
if [ -f $pickA ]; then echo "Atm pickup present: "$pickA >> $cplmonitor |
127 |
|
|
else echo "No Atm pickup: "$pickA >> $cplmonitor; exit; fi |
128 |
|
|
|
129 |
|
|
|
130 |
|
|
#-----------------------------------------------------------------------------# |
131 |
|
|
# Reset periodic coupling parameters # |
132 |
|
|
#-----------------------------------------------------------------------------# |
133 |
|
|
source pc.vars |
134 |
|
|
iitO=$sitO |
135 |
|
|
iitA=$sitA |
136 |
|
|
if [ $PeriodicCoupling -eq 0 ]; then period=$(($period+1)); fi |
137 |
|
|
rm -f pc.vars |
138 |
|
|
for i in $varlist; do echo $i'='`eval echo '$'$i` >> pc.vars.temp; done |
139 |
|
|
mv pc.vars.temp pc.vars |
140 |
|
|
|
141 |
|
|
|
142 |
|
|
#-----------------------------------------------------------------------------# |
143 |
|
|
# Resubmit coupled model # |
144 |
|
|
#-----------------------------------------------------------------------------# |
145 |
|
|
if [ $iitO -ge $fitO ]; then |
146 |
|
|
echo "New iitO exceeds fitO; All done!" >> $cplmonitor; exit; fi |
147 |
|
|
if [ $iitA -ge $fitA ]; then |
148 |
|
|
echo "New iitA exceeds fitA; All done!" >> $cplmonitor; exit; fi |
149 |
|
|
if [ $PeriodicCoupling -eq 0 ]; then qsub runCpl; fi |
150 |
|
|
if [ $PeriodicCoupling -eq 1 ]; then qsub runOcn; fi |