| 1 |
dfer |
1.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 |