Warning, /tools/run_cpl_test is written in an unsupported language. File is not indexed.
view on githubraw file Latest commit 86f38990 on 2025-04-30 15:10:43 UTC
b2495a94f0 Jean*0001 #! /usr/bin/env bash
dda5bd4160 Jean*0002
a99d705983 Jean*0003 #---
0004 # Description:
0005 # script to compile and run MITgcm Atmosphere-Ocean coupled set-up
0006 # see, e.g., verification/cpl_aim+ocn/README.md
0007 # or verification_other/cpl_gray+ocn/
0008 # Note: currently these coupled set-up are not covered by "testreport"
0009 # 1) running "./run_cpl_test" show the different steps (+ some options) available
0010 # 2) some options are not available as argument and require editing this script, e.g.,
86f389907b Jean*0011 # to run Ocean or Atmos component on more that 1 MPI process (edit: NpOc and Npr)
a99d705983 Jean*0012 #---
0013
a3fd9a2edd Jean*0014 bdPfx='build'; # build-dir prefix
0015
a99d705983 Jean*0016 # Npr :: total number of MPI procs (including 1 for coupler)
0017 # NpOc :: number of MPI procs for Ocean component
0018 # Npr - NpOc - 1 :: number of MPI procs for Atmos. component
c186d3754d Jean*0019 #- default:
ab3c9af868 Jean*0020 Npr=3 ; NpOc=1 ;
0021 #Npr=25; NpOc=12;
a99d705983 Jean*0022
0023 # MTH :: genmake2 option for multi-threading compilation
4fee6741c4 Jean*0024 MTH=
a99d705983 Jean*0025
0026 rnkO=1 ; rnkA=`expr $rnkO + $NpOc`
0027 MTHo=
0028 MTHa=
c186d3754d Jean*0029 #- parse options:
5d8546a51a Jean*0030 if [ $# -ge 1 ] ; then if test $1 = '-mth' ; then
7e24056d27 Jean*0031 MTH='-omp' ; shift
0032 if test -f input_ocn/eedata.mth ; then MTHo=$MTH ; fi
0033 if test -f input_atm/eedata.mth ; then MTHa=$MTH ; fi
5d8546a51a Jean*0034 fi ; fi
a99d705983 Jean*0035 sfx=''; chkArg=$# ;
0036 if [ $chkArg -eq 2 ]; then
0037 sfx=$2 ; nInpAlt=`ls -1 -d input_???.$sfx 2> /dev/null | wc -l`
0038 if [ $nInpAlt -eq 0 ]; then chkArg=0
0039 echo " no second set of input-dir matching suffix '.$sfx'"
0040 else chkArg=1 ; fi
0041 fi
0042 if [ $chkArg -ge 1 ]; then
0043 if [ $1 -lt 0 -o $1 -gt 5 ]; then chkArg=0 ; fi
0044 #- allows more argument for building step (step=1)
0045 if [ $1 -eq 1 ]; then chkArg=1 ; fi
0046 fi
3bf5ee70f4 Jean*0047 if [ $chkArg -ne 1 ]; then
a99d705983 Jean*0048 echo 'Usage: '`basename $0`' [typ] step [opt-arg]'
ab7ee76107 Jean*0049 echo ' => test coupled set-up on linux box (1.cpu)'
a99d705983 Jean*0050 echo ' typ = -mth : compile and run (if eedata.mth) 2-threads for ocn & atm'
7e24056d27 Jean*0051 echo ' step = 0 : clean all directories'
a99d705983 Jean*0052 echo ' step = 1 : compile the 3 executables (cpl,ocn,atm);'
86f389907b Jean*0053 echo ' opt-arg: all are passed to "genmake2" (e.g., "-of Opt-File")'
a99d705983 Jean*0054 echo ' step = 2 : copy input files and dir(s);'
ab3c9af868 Jean*0055 echo " step = 3 : run with $Npr mpi processes"
7e24056d27 Jean*0056 echo ' step = 4 : check the results'
0057 echo ' step = 5 : remove output files in rank_0,1,2 dir.'
a99d705983 Jean*0058 echo ' opt-arg (for step 2 & 4): suffix of second set of input-dir to use'
dda5bd4160 Jean*0059 exit
0060 fi
0061 kpr=$1
a99d705983 Jean*0062 curDir=`pwd`
dda5bd4160 Jean*0063
0064 #============================================================================
0065
a99d705983 Jean*0066 if test $kpr = 0 ; then
0067 rm -f pr_group std_outp comp_res.{ocn,atm,land,icTh,icDy,pTr}
a3fd9a2edd Jean*0068 rm -f ${bdPfx}_???/TTT.*make.* ${bdPfx}_???/TTT.mkdepend.*
ab3c9af868 Jean*0069 /bin/rm -r -f rank_? rank_1? rank_2?
a3fd9a2edd Jean*0070 if test -f ${bdPfx}_cpl/Makefile ; then cd ${bdPfx}_cpl ; make Clean ; cd .. ; fi
0071 if test -f ${bdPfx}_ocn/Makefile ; then cd ${bdPfx}_ocn ; make Clean ; cd .. ; fi
0072 if test -f ${bdPfx}_atm/Makefile ; then cd ${bdPfx}_atm ; make Clean ; cd .. ; fi
dda5bd4160 Jean*0073 fi
a99d705983 Jean*0074 if test $kpr = 5 ; then
37faa9ac7a Jean*0075 echo 'remove output files in rank_0,1,2 dir.'
a99d705983 Jean*0076 rm -f pr_group std_outp comp_res.{ocn,atm,land,icTh,icDy,pTr}
a3fd9a2edd Jean*0077 test -f rank_0/Coupler.0000.clog && rm -f rank_0/Coupler.0000.clog
0078 if test -d rank_$rnkO ; then
a99d705983 Jean*0079 ( cd rank_$rnkO ; rm -f *.txt *.log STD???.00?? UV-*.00??.clog
0080 mkdir tmp_trash ; mv *.data *.meta tmp_trash
0081 listLNK=`find tmp_trash -type l`
0082 if test "x$listLNK" != x ; then mv $listLNK .
0083 echo -n " move back to rank_$rnkO : " ; echo $listLNK | sed "s|tmp_trash/||g"
0084 fi
0085 /bin/rm -rf tmp_trash )
a3fd9a2edd Jean*0086 fi
0087 if test -d rank_$rnkA ; then
a99d705983 Jean*0088 ( cd rank_$rnkA ; rm -f *.txt *.log STD???.00?? UV-*.00??.clog
0089 mkdir tmp_trash ; mv *.data *.meta tmp_trash
0090 listLNK=`find tmp_trash -type l`
0091 if test "x$listLNK" != x ; then mv $listLNK .
0092 echo -n " move back to rank_$rnkA : " ; echo $listLNK | sed "s|tmp_trash/||g"
0093 fi
0094 /bin/rm -rf tmp_trash )
a3fd9a2edd Jean*0095 fi
37faa9ac7a Jean*0096 fi
dda5bd4160 Jean*0097
a99d705983 Jean*0098 if test $kpr = 1 ; then
dda5bd4160 Jean*0099
86f389907b Jean*0100 #- set list of opt-arg to pass to genmake2 ( $GMKopt )
0101 shift ; args="$*"
0102 #- simplify the list, remove "-omp" and find optfile name:
0103 arg1=`echo $args | sed 's/=/ /g' | sed 's/-optfile /-of /g' | sed 's/--of /-of /g'`
0104 args=`echo $arg1 | sed 's/ *-\+omp\>//'`
0105 zz=`echo $args | grep -c '\-of '`
0106 if test $zz = 0 ; then
0107 echo "Error: Need to specify an Opt-File for 'genmake2' (-of Opt-File)"
0108 exit
0109 fi
0110 #- get the opt-file name:
0111 OPTFILE=`echo $args | sed 's/^.*-of //' | awk '{print $1}'`
0112 #- set options to pass to genmake2:
0113 zz=`echo $args | grep -c '\-mpi\>'`
0114 if test $zz = 0 ; then
0115 GMKopt=`echo -mpi $args | sed "s: *-of $OPTFILE::"`
0116 else
0117 GMKopt=`echo $args | sed "s: *-of $OPTFILE::"`
3bf5ee70f4 Jean*0118 fi
86f389907b Jean*0119 if test -r $OPTFILE ; then
0120 zz=`grep '^ *FC=' $OPTFILE | tail -1`
0121 echo " Using optfile: $OPTFILE (compiler: $zz) $MTH"
0122 else
0123 echo "Error: optfile '$OPTFILE' not found or not readable"
0124 exit
ab7ee76107 Jean*0125 fi
86f389907b Jean*0126 zz=`echo $OPTFILE | grep -c '^/'`
f9b804c1e5 Jean*0127 if test $zz = 0 ; then OPTFILE="../$OPTFILE" ; fi
86f389907b Jean*0128 #echo "CMDarg='-of $OPTFILE $GMKopt'" ; exit 66
ab7ee76107 Jean*0129 #---
dda5bd4160 Jean*0130 echo '==== compile coupler:'
a3fd9a2edd Jean*0131 cd ${bdPfx}_cpl
dda5bd4160 Jean*0132 echo ' --- genmake2 (cpl):'
86f389907b Jean*0133 ../../../tools/genmake2 -of $OPTFILE $GMKopt > TTT.genmake.$$ 2>&1
42ba74acb2 Jean*0134 RetVal=$? ; tail -5 TTT.genmake.$$
0135 if test "x$RetVal" != x0 ; then
0136 echo "Error in genmake2 (cpl)" ; exit 11
0137 fi
dda5bd4160 Jean*0138 echo ' --- make depend (cpl):'
b2495a94f0 Jean*0139 make depend > TTT.mkdepend.$$ 2>&1
42ba74acb2 Jean*0140 RetVal=$? ; tail -5 TTT.mkdepend.$$
0141 if test "x$RetVal" != x0 ; then
0142 echo "Error in mkdepend (cpl)" ; exit 12
0143 fi
b6f598c890 Jean*0144 echo ' --- make (cpl):' ; touch TTT.make.$$
0145 #do_make_syntax.sh obj > TTT.make.$$ 2>&1
0146 make >> TTT.make.$$ 2>&1
42ba74acb2 Jean*0147 RetVal=$? ; tail -10 TTT.make.$$
0148 if test "x$RetVal" != x0 ; then
0149 echo "Error in make (cpl)" ; exit 13
0150 fi
a99d705983 Jean*0151 echo ' ' ; cd $curDir
dda5bd4160 Jean*0152
0153 echo '==== compile OGCM:'
a3fd9a2edd Jean*0154 cd ${bdPfx}_ocn
dda5bd4160 Jean*0155 echo ' --- genmake2 (ocn):'
86f389907b Jean*0156 ../../../tools/genmake2 -of $OPTFILE $MTHo $GMKopt > TTT.genmake.$$ 2>&1
42ba74acb2 Jean*0157 RetVal=$? ; tail -5 TTT.genmake.$$
0158 if test "x$RetVal" != x0 ; then
0159 echo "Error in genmake2 (ocn)" ; exit 21
0160 fi
dda5bd4160 Jean*0161 echo ' --- make depend (ocn):'
b2495a94f0 Jean*0162 make depend > TTT.mkdepend.$$ 2>&1
42ba74acb2 Jean*0163 RetVal=$? ; tail -10 TTT.mkdepend.$$
0164 if test "x$RetVal" != x0 ; then
0165 echo "Error in mkdepend (ocn)" ; exit 22
0166 fi
b6f598c890 Jean*0167 echo ' --- make (ocn):' ; touch TTT.make.$$
0168 #do_make_syntax.sh obj > TTT.make.$$ 2>&1
0169 make >> TTT.make.$$ 2>&1
42ba74acb2 Jean*0170 RetVal=$? ; tail -10 TTT.make.$$
0171 if test "x$RetVal" != x0 ; then
0172 echo "Error in make (ocn)" ; exit 23
0173 fi
a99d705983 Jean*0174 echo ' ' ; cd $curDir
dda5bd4160 Jean*0175
0176 echo '==== compile AGCM:'
a3fd9a2edd Jean*0177 cd ${bdPfx}_atm
dda5bd4160 Jean*0178 echo ' --- genmake2 (atm):'
86f389907b Jean*0179 ../../../tools/genmake2 -of $OPTFILE $MTHa $GMKopt > TTT.genmake.$$ 2>&1
42ba74acb2 Jean*0180 RetVal=$? ; tail -5 TTT.genmake.$$
0181 if test "x$RetVal" != x0 ; then
0182 echo "Error in genmake2 (atm)" ; exit 31
0183 fi
dda5bd4160 Jean*0184 echo ' --- make depend (atm):'
b2495a94f0 Jean*0185 make depend > TTT.mkdepend.$$ 2>&1
42ba74acb2 Jean*0186 RetVal=$? ; tail -10 TTT.mkdepend.$$
0187 if test "x$RetVal" != x0 ; then
0188 echo "Error in mkdepend (atm)" ; exit 32
0189 fi
b6f598c890 Jean*0190 echo ' --- make (atm):' ; touch TTT.make.$$
0191 #do_make_syntax.sh obj > TTT.make.$$ 2>&1
0192 make >> TTT.make.$$ 2>&1
42ba74acb2 Jean*0193 RetVal=$? ; tail -10 TTT.make.$$
0194 if test "x$RetVal" != x0 ; then
0195 echo "Error in make (atm)" ; exit 33
0196 fi
a99d705983 Jean*0197 echo ' ' ; cd $curDir
dda5bd4160 Jean*0198
a3fd9a2edd Jean*0199 ls -l ${bdPfx}_???/mitgcmuv
dda5bd4160 Jean*0200
0201 fi
0202
a99d705983 Jean*0203 if test $kpr = 2 ; then
ab3c9af868 Jean*0204 echo 'rm dir:' rank_? rank_1? rank_2?
0205 /bin/rm -r -f rank_? rank_1? rank_2?
a99d705983 Jean*0206 n=0 ; inpDr='input_cpl';
0207 mkdir rank_$n
0208 ( cd rank_$n
86f389907b Jean*0209 if test "x$sfx" != x -a -d ../$inpDr.$sfx ; then
a99d705983 Jean*0210 echo 'Link files from dir:' $inpDr.$sfx '->' rank_$n
86f389907b Jean*0211 files=`( cd ../$inpDr.$sfx ; ls -1 )`
0212 for ff in $files ; do
0213 if test ! -d "../$inpDr.$sfx/$ff" -a ! -f $ff ; then
0214 ln -s ../$inpDr.$sfx/$ff $ff
0215 fi
0216 done
a99d705983 Jean*0217 fi
0218 echo 'Link files from dir:' $inpDr '->' rank_$n
86f389907b Jean*0219 files=`( cd ../$inpDr ; ls -1 )`
0220 for ff in $files ; do
0221 if test ! -d "../$inpDr/$ff" -a ! -f $ff ; then
0222 ln -s ../$inpDr/$ff $ff
0223 fi
0224 done
a99d705983 Jean*0225 if test -x prepare_run ; then ./prepare_run ; fi
0226 )
ab3c9af868 Jean*0227
a99d705983 Jean*0228 n=$rnkO ; inpDr='input_ocn';
ab3c9af868 Jean*0229 mkdir rank_$n
a99d705983 Jean*0230 ( cd rank_$n
86f389907b Jean*0231 if test "x$sfx" != x -a -d ../$inpDr.$sfx ; then
a99d705983 Jean*0232 echo 'Link files from dir:' $inpDr.$sfx '->' rank_$n
86f389907b Jean*0233 files=`( cd ../$inpDr.$sfx ; ls -1 )`
0234 for ff in $files ; do
0235 if test ! -d "../$inpDr.$sfx/$ff" -a ! -f $ff ; then
0236 ln -s ../$inpDr.$sfx/$ff $ff
0237 fi
0238 done
a99d705983 Jean*0239 fi
0240 echo 'Link files from dir:' $inpDr '->' rank_$n
86f389907b Jean*0241 files=`( cd ../$inpDr ; ls -1 )`
0242 for ff in $files ; do
0243 if test ! -d "../$inpDr/$ff" -a ! -f $ff ; then
0244 ln -s ../$inpDr/$ff $ff
0245 fi
0246 done
a99d705983 Jean*0247 if test -x prepare_run ; then ./prepare_run ; fi
0248 if test "x$MTHo" != x ; then
0249 echo " MTH run: mv -f eedata.mth eedata"
0250 if test -h eedata ; then rm -f eedata ; fi
0251 mv -f eedata.mth eedata
0252 fi
0253 )
ab3c9af868 Jean*0254 n=`expr $n + 1`
0255 while [ $n -le $NpOc ] ; do
0256 ln -s rank_$rnkO rank_$n
0257 n=`expr $n + 1`
0258 done
0259
a99d705983 Jean*0260 n=$rnkA ; inpDr='input_atm';
ab3c9af868 Jean*0261 mkdir rank_$n
a99d705983 Jean*0262 ( cd rank_$n
86f389907b Jean*0263 if test "x$sfx" != x -a -d ../$inpDr.$sfx ; then
a99d705983 Jean*0264 echo 'Link files from dir:' $inpDr.$sfx '->' rank_$n
86f389907b Jean*0265 files=`( cd ../$inpDr.$sfx ; ls -1 )`
0266 for ff in $files ; do
0267 if test ! -d "../$inpDr.$sfx/$ff" -a ! -f $ff ; then
0268 ln -s ../$inpDr.$sfx/$ff $ff
0269 fi
0270 done
a99d705983 Jean*0271 fi
0272 echo 'Link files from dir:' $inpDr '->' rank_$n
86f389907b Jean*0273 files=`( cd ../$inpDr ; ls -1 )`
0274 for ff in $files ; do
0275 if test ! -d "../$inpDr/$ff" -a ! -f $ff ; then
0276 ln -s ../$inpDr/$ff $ff
0277 fi
0278 done
a99d705983 Jean*0279 if test -x prepare_run ; then ./prepare_run ; fi
0280 if test "x$MTHa" != x ; then
0281 echo " MTH run: mv -f eedata.mth eedata"
0282 if test -h eedata ; then rm -f eedata ; fi
0283 mv -f eedata.mth eedata
0284 fi
0285 )
ab3c9af868 Jean*0286 n=`expr $n + 1`
0287 while [ $n -lt $Npr ] ; do
0288 ln -s rank_$rnkA rank_$n
0289 n=`expr $n + 1`
0290 done
dda5bd4160 Jean*0291
0292 fi
0293
a99d705983 Jean*0294 if test $kpr = 3 ; then
0295 runDir=$curDir
ab3c9af868 Jean*0296 # rm -f rank_?/pickup*.ckptA.00?.00?.??ta
a99d705983 Jean*0297 echo $runDir
ab3c9af868 Jean*0298 tmpfil=TTT.$$
0299
0300 #--- running on the same node:
0301 list='' ; nc=0; xx=`hostname`
0302 while [ $nc -lt $Npr ] ; do list="$list $xx" ; nc=`expr $nc + 1` ; done
0303 #-- On darwin cluster node (from qrsh session):
0304 # JOB_ID=`qstat | sed -n '3,$ p' | grep " $USER " | awk '{print $1}'`
0305 # NODEFILE="/tmp/$JOB_ID.1.darwin/machines"
0306 # echo " JOB_ID = '$JOB_ID' ; NODEFILE = '$NODEFILE'"
0307 #-- On ACES cluster (in PBS batch job):
0308 # NODEFILE=$PBS_NODEFILE
0309 #--- running on different nodes:
0310 # ls -l $NODEFILE
0311 # nprc=`cat $NODEFILE | uniq | wc -l`
0312 # if [ $nprc -ge $Npr ] ; then
0313 # list=`cat $NODEFILE | uniq | head -$Npr`
0314 # else
0315 # list=`cat $NODEFILE | head -$Npr`
0316 # fi
0317
0318 nc=0; nn=0; dd1=cpl ;
0319 rm -f pr_group ; touch pr_group
0320 for xx in $list
0321 do
a99d705983 Jean*0322 echo $xx $nn $curDir/${bdPfx}_$dd1/mitgcmuv >> pr_group
ab3c9af868 Jean*0323 nc=`expr $nc + 1`
0324 if [ $nc -le $NpOc ] ; then dd1=ocn ; else dd1=atm ; fi
0325 nn=1
0326 done
3b043b9ccf Jean*0327 NpAt=`expr $Npr - 1 - $NpOc`
a3fd9a2edd Jean*0328 RunOpt="-np 1 ./${bdPfx}_cpl/mitgcmuv"
0329 RunOpt="$RunOpt : -np $NpOc ./${bdPfx}_ocn/mitgcmuv"
0330 RunOpt="$RunOpt : -np $NpAt ./${bdPfx}_atm/mitgcmuv"
ab3c9af868 Jean*0331
a99d705983 Jean*0332 cd $runDir
ab3c9af868 Jean*0333 if test "x$MTH" != x ; then
0334 export OMP_NUM_THREADS=2 ; export KMP_STACKSIZE=400m
0335 if test "x$MTHo" != x ; then
0336 echo -n " run OCN ($MTHo) with $OMP_NUM_THREADS threads ;"
0337 fi
0338 if test "x$MTHa" != x ; then
0339 echo -n " run ATM ($MTHa) with $OMP_NUM_THREADS threads ;"
0340 fi
0341 echo ""
0342 fi
3b043b9ccf Jean*0343 mpich=`which mpirun`
0344 echo $mpich | grep 'mpich-mx' > /dev/null 2>&1
0345 mpichmx=$?
b6f598c890 Jean*0346 echo $mpich | grep 'mpich-1' > /dev/null 2>&1
0347 mpich1=$?
3b043b9ccf Jean*0348 echo $mpich | grep 'mpich2' > /dev/null 2>&1
0349 mpich2=$?
0919079818 Jean*0350 echo $mpich | grep 'openmpi' > /dev/null 2>&1
0351 opnmpi=$?
b6f598c890 Jean*0352 if test $mpich1 == 0 ; then
a99d705983 Jean*0353 # /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/bin/mpirun.ch_gm -pg pr_group -wd $runDir --gm-kill 5 -v ./${bdPfx}_cpl/mitgcmuv > std_outp 2>&1
b6f598c890 Jean*0354 #- with mpich-1 (on danton, old aces: ao, geo, itrda):
a3fd9a2edd Jean*0355 echo "execute 'mpirun -p4pg pr_group -v ./${bdPfx}_cpl/mitgcmuv' :"
0356 mpirun -p4pg pr_group -v ./${bdPfx}_cpl/mitgcmuv > std_outp 2>&1
3b043b9ccf Jean*0357 elif test $mpichmx == 0 ; then
0358 #- with mpich-mx (on beagle):
a3fd9a2edd Jean*0359 echo "execute 'mpirun -pg pr_group -v ./${bdPfx}_cpl/mitgcmuv' :"
0360 mpirun -pg pr_group -v ./${bdPfx}_cpl/mitgcmuv > std_outp 2>&1
b6f598c890 Jean*0361 elif test $mpich2 == 0 -o $opnmpi == 0 ; then
0362 #- with Hydra mpich2 (on baudelaire) or with openmpi:
0363 echo "execute 'mpirun $RunOpt' :"
0364 mpirun $RunOpt > std_outp 2>&1
3b043b9ccf Jean*0365 else
b6f598c890 Jean*0366 #- new mpich (mpich2) installation often just put in "mpich" dir
0367 echo "execute 'mpirun $RunOpt' :"
0368 mpirun $RunOpt > std_outp 2>&1
3b043b9ccf Jean*0369 fi
ab3c9af868 Jean*0370 tail -20 std_outp
a99d705983 Jean*0371 ls -l rank_$rnkO/pickup.ckpt?.*data | tail -1
0372 ls -l rank_$rnkA/pickup.ckpt?.*data | tail -1
dda5bd4160 Jean*0373
0374 fi
0375
a99d705983 Jean*0376 if test $kpr = 4 ; then
86f389907b Jean*0377 CompRes="comp_res"
0378 which $CompRes > /dev/null 2>&1 ; retVal=$?
0379 if [ $retVal -ne 0 ] ; then
0380 CompRes="$HOME/bin/$CompRes"
0381 if test -x $CompRes ; then retVal=0 ; fi
0382 fi
0383 if [ $retVal -eq 0 ] ; then
a99d705983 Jean*0384 if test "x$sfx" = x ; then rfx='0000' ; else rfx=$sfx ; fi
dda5bd4160 Jean*0385
a99d705983 Jean*0386 if test -f rank_$rnkO/STDOUT.0000 ; then
0387 echo '==> check Ocean output:'
0388 $CompRes rank_$rnkO/STDOUT.0000 results/ocnSTDOUT.$rfx
ab7ee76107 Jean*0389 mv -f comp_res.log comp_res.ocn
a99d705983 Jean*0390 usePkg=`grep -i '^ *useSEAICE *=' rank_$rnkO/data.pkg | tail -n 1 | grep -i -c '= *\.TRUE\.'`
0391 if [ $usePkg -ge 1 ] ; then
0392 echo '==> check Seaice output:'
0393 $CompRes rank_$rnkO/STDOUT.0000 results/ocnSTDOUT.$rfx S
0394 mv -f comp_res.log comp_res.icDy
0395 fi
0396 usePkg=`grep -i '^ *usePTRACERS *=' rank_$rnkO/data.pkg | tail -n 1 | grep -i -c '= *\.TRUE\.'`
0397 if [ $usePkg -ge 1 ] ; then
0398 echo '==> check pTracers output:'
0399 nTr=`grep -i '^ *PTRACERS_numInUse *=' rank_$rnkO/data.ptracers \
0400 | tail -n 1 | sed 's/^.*=//' | sed 's/,.*$//'`
0401 $CompRes rank_$rnkO/STDOUT.0000 results/ocnSTDOUT.$rfx $nTr
0402 mv -f comp_res.log comp_res.pTr
0403 fi
ab7ee76107 Jean*0404 echo ' '
a99d705983 Jean*0405 else echo "No Ocean output file in rank_$rnkO" ; fi
dda5bd4160 Jean*0406
a99d705983 Jean*0407 if test -f rank_$rnkA/STDOUT.0000 ; then
dda5bd4160 Jean*0408 echo '==> check Atmos output:'
a99d705983 Jean*0409 $CompRes rank_$rnkA/STDOUT.0000 results/atmSTDOUT.$rfx
ab7ee76107 Jean*0410 mv -f comp_res.log comp_res.atm
a99d705983 Jean*0411 usePkg=`grep -i '^ *useLand *=' rank_$rnkA/data.pkg | tail -n 1 | grep -i -c '= *\.TRUE\.'`
0412 if [ $usePkg -ge 1 ] ; then
0413 echo '==> check Land output:'
0414 $CompRes rank_$rnkA/STDOUT.0000 results/atmSTDOUT.$rfx L
0415 mv -f comp_res.log comp_res.land
0416 fi
0417 usePkg=`grep -i '^ *useThSIce *=' rank_$rnkA/data.pkg | tail -n 1 | grep -i -c '= *\.TRUE\.'`
0418 if [ $usePkg -ge 1 ] ; then
0419 echo '==> check thSIce output:'
0420 $CompRes rank_$rnkA/STDOUT.0000 results/atmSTDOUT.$rfx I
0421 mv -f comp_res.log comp_res.icTh
0422 fi
ab7ee76107 Jean*0423 echo ' '
a99d705983 Jean*0424 else echo "No Atmos output file in rank_$rnkA" ; fi
dda5bd4160 Jean*0425
a99d705983 Jean*0426 else
86f389907b Jean*0427 echo "No 'comp_res' in PATH nor here '$CompRes' to run ==> skip step: $kpr "
a99d705983 Jean*0428 fi
dda5bd4160 Jean*0429 fi
0430
0431 exit 0