Back to home page

MITgcm

 
 

    


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