1 |
#! /usr/bin/env bash |
2 |
|
3 |
#PBS -N FastC24AB3 |
4 |
#PBS -q four-twelve |
5 |
#PBS -l nodes=8 |
6 |
#PBS -V |
7 |
|
8 |
|
9 |
# ITRDA specific calls: |
10 |
. /etc/profile.d/modules.sh |
11 |
module add mpich/intel |
12 |
module add python-ext |
13 |
|
14 |
|
15 |
#-----------------------------------------------------------------------------# |
16 |
# - Load PC parameters # |
17 |
# - Determine stop iteration for this period # |
18 |
#-----------------------------------------------------------------------------# |
19 |
runDir=/net/ds-06/scratch-0/dfer/MITgcm_cpl/verification/cpl_aim+ocn_fast/input_C24_AB3 |
20 |
varlist="npcpl npocn exp matscript outDir figOutDir scrDir cplmonitor \ |
21 |
ocnmonitor period iitO iitA fitO fitA nitC nitO nitA nitOonly \ |
22 |
pChkptFreq taveFreq cpl_taveFreq dumpFreq monitorFreq plotFreq \ |
23 |
exC exO exA exOOnly cplDir ocnDir atmDir dtA dtO dtC \ |
24 |
LocalScratch MakePlots PeriodicCoupling ocnForcingRoot gWeight" |
25 |
cd $runDir |
26 |
source pc.vars |
27 |
sitO=$(($iitO+$nitO)) |
28 |
sitA=$(($iitA+$nitA)) |
29 |
iitO0=`$scrDir/add0upto10c $iitO` |
30 |
iitA0=`$scrDir/add0upto10c $iitA` |
31 |
sitO0=`$scrDir/add0upto10c $sitO` |
32 |
sitA0=`$scrDir/add0upto10c $sitA` |
33 |
rm -f $cplmonitor |
34 |
echo "Coupled period!" > $cplmonitor |
35 |
echo "Actual start time, of script: "`date` >> $cplmonitor |
36 |
echo "Simulation directory: "$runDir >> $cplmonitor |
37 |
echo "Period: "$period >> $cplmonitor |
38 |
echo "Period START iteration:" >> $cplmonitor |
39 |
echo " Ocean "$iitO >> $cplmonitor |
40 |
echo " Atmosphere "$iitA >> $cplmonitor |
41 |
echo "Period STOP iteration:" >> $cplmonitor |
42 |
echo " Ocean "$sitO >> $cplmonitor |
43 |
echo " Atmosphere "$sitA >> $cplmonitor |
44 |
echo "Overall FINAL iteration:" >> $cplmonitor |
45 |
echo " Ocean "$fitO >> $cplmonitor |
46 |
echo " Atmosphere "$fitA >> $cplmonitor |
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 |
# Move pickup files to ocean rank, copy atmospheric pickup files forward # |
60 |
#-----------------------------------------------------------------------------# |
61 |
NpO=1 |
62 |
NpA=6 |
63 |
listO=`seq $NpO` |
64 |
listA=`seq $(($NpO+1)) $(($NpA+$NpO))` |
65 |
#NpO=0 |
66 |
#for xx in $listO; do |
67 |
# NpO=`expr $NpO + 1` |
68 |
#done |
69 |
|
70 |
listP=`cat $PBS_NODEFILE` |
71 |
rm -f pr_group ; touch pr_group |
72 |
np=0 ; nc=0 ; exe=$exC ; |
73 |
for xx in $listP; do |
74 |
echo $xx $np $runDir/executables/$exe >> pr_group |
75 |
if [ $nc -lt $NpO ]; then |
76 |
exe=$exO |
77 |
else |
78 |
exe=$exA |
79 |
fi |
80 |
nc=`expr $nc + 1` |
81 |
np=1 |
82 |
done |
83 |
#nodelist=`cat $PBS_NODEFILE` |
84 |
#rm -f pr_group; touch pr_group |
85 |
#nc=0; type=C1 |
86 |
#for ii in $nodelist; do |
87 |
# echo $ii $nc $runDir/executables/mitgcmuv.$type >> pr_group |
88 |
# if test $nc = 0 ; then type=O1 ; else type=A6 ; fi |
89 |
# nc=1 |
90 |
#done |
91 |
echo "Program goup file:" >> $cplmonitor |
92 |
cat pr_group >> $cplmonitor |
93 |
echo "Beginning model execution..." >> $cplmonitor |
94 |
|
95 |
|
96 |
oldper=$((period-1)) |
97 |
rm $runDir/rank_*/pickup* |
98 |
if [ $PeriodicCoupling -eq 0 ]; then |
99 |
cp $outDir/Cpl$oldper/Ocn/pickup.$iitO0.* $ocnDir/. |
100 |
for tile in `seq $NpA`; do |
101 |
tile30=`$scrDir/add0upto3c $tile` |
102 |
cp $outDir/Cpl$oldper/Atm/pickup*$iitA0.$tile30* \ |
103 |
$runDir/rank_$((tile+$NpO))/. |
104 |
done |
105 |
fi |
106 |
|
107 |
# Prepare run directories. |
108 |
for rank in `seq 7`; do |
109 |
if [ $rank -ge 3 ]; then |
110 |
# rm rank_$rank/data* rank_$rank/eedata rank_$rank/*.bin |
111 |
rm rank_$rank/data* rank_$rank/eedata |
112 |
cp rank_2/data* rank_$rank/. |
113 |
cp rank_2/eedata rank_$rank/. |
114 |
# cp rank_2/*.bin rank_$rank/. |
115 |
fi |
116 |
done |
117 |
|
118 |
echo "Beginning model execution..." >> $cplmonitor |
119 |
mpirun -p4pg pr_group -v ./executables/$exC |
120 |
status=$? |
121 |
echo "Ended with status: "$status >> $cplmonitor |
122 |
|
123 |
#-----------------------------------------------------------------------------# |
124 |
# Check for pickups # |
125 |
#-----------------------------------------------------------------------------# |
126 |
pickO=rank_1/pickup.$sitO0.001.001.data |
127 |
pickA=$atmDir/pickup.$sitA0.001.001.data |
128 |
if [ -f $pickO ]; then echo "Ocn pickup present: "$pickO >> $cplmonitor |
129 |
else echo "No Ocn pickup: "$pickO >> $cplmonitor; exit; fi |
130 |
if [ -f $pickA ]; then echo "Atm pickup present: "$pickA >> $cplmonitor |
131 |
else echo "No Atm pickup: "$pickA >> $cplmonitor; exit; fi |
132 |
|
133 |
#-----------------------------------------------------------------------------# |
134 |
# Move old data (just copy pickups) # |
135 |
#-----------------------------------------------------------------------------# |
136 |
. $scrDir/movedataCpl2 $npcpl $runDir $ocnDir $atmDir $outDir \ |
137 |
$period $sitO0 $sitA0 $cplmonitor $NpO $NpA |
138 |
|
139 |
rm rank_*/pickup* |
140 |
|
141 |
#-----------------------------------------------------------------------------# |
142 |
# Reset periodic coupling parameters # |
143 |
#-----------------------------------------------------------------------------# |
144 |
source pc.vars |
145 |
iitO=$sitO |
146 |
iitA=$sitA |
147 |
if [ $PeriodicCoupling -eq 0 ]; then period=$(($period+1)); fi |
148 |
rm -f pc.vars |
149 |
for i in $varlist; do echo $i'='`eval echo '$'$i` >> pc.vars.temp; done |
150 |
mv pc.vars.temp pc.vars |
151 |
|
152 |
|
153 |
#-----------------------------------------------------------------------------# |
154 |
# Resubmit coupled model # |
155 |
#-----------------------------------------------------------------------------# |
156 |
if [ $iitO -ge $fitO ]; then |
157 |
echo "New iitO exceeds fitO; All done!" >> $cplmonitor; exit; fi |
158 |
if [ $iitA -ge $fitA ]; then |
159 |
echo "New iitA exceeds fitA; All done!" >> $cplmonitor; exit; fi |
160 |
if [ $PeriodicCoupling -eq 0 ]; then qsub runCpl; fi |
161 |
if [ $PeriodicCoupling -eq 1 ]; then qsub runOcn; fi |