/[MITgcm]/MITgcm/tools/tst_2+2
ViewVC logotype

Diff of /MITgcm/tools/tst_2+2

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1 by jmc, Tue Dec 25 22:07:54 2007 UTC revision 1.2 by jmc, Fri Feb 27 22:58:57 2009 UTC
# Line 3  Line 3 
3  # $Header$  # $Header$
4  # $Name$  # $Name$
5    
6    run_mpi()
7    {
8    #   run_mpi output_file
9        echo "execute: '$RUNMPI'"
10        $RUNMPI
11        if test $# = 1
12        then  mv STDOUT.0000  $1
13        echo 'mv STDOUT.0000' $1
14        fi
15    }
16    
17  rnp_loc()  rnp_loc()
18  {  {
19  #   rnp_loc arg_1 arg_2  #   rnp_loc arg_1 arg_2
# Line 19  rnp_loc() Line 30  rnp_loc()
30    
31  #---------------------------  #---------------------------
32    
 #- default:  
 Nit=2  
 prt=1    # 1 = print some informations ; 2 = print more informations  
 action=1  
 cmd='mv -f'  
 tmpDir='temp_tst'  
   
 #- executable:  
 mpi=0  
 if [ $mpi -ge 1 ]  
 then gcmExc=run_ifc_mpi  
 else gcmExc=mitgcmuv  
 fi  
   
33  #- exit status:  #- exit status:
34  # 0 -> test is successful  # 0 -> test is successful
35  # 1 -> fail in 1rst run  # 1 -> fail in 1rst run
36  # 2 -> fail in 2nd  run  # 2 -> fail in 2nd  run
37  # 3 -> fail in 3rd  run  # 3 -> fail in 3rd  run
38  # 4 -> pickup*.data (written at the end of 2+2 & 4 it run) are different  # 4 -> pickup*.data (written at the end of 2+2 & 4 it run) are different
39  # 5 -> pickup*.meta (written at the end of 2+2 & 4 it run) are different  # 5 -> pickup*.meta (written at the end of 2+2 & 4 it run) are different
40  # 6 -> missing 'data.tst' file (removed or not yet generated ?)  # 6 -> missing 'data.tst' file (removed or not yet generated ?)
# Line 45  fi Line 42  fi
42  # 8 -> missing information (in standard output of previous run) about pickup  # 8 -> missing information (in standard output of previous run) about pickup
43  # 9 -> error in argument list  # 9 -> error in argument list
44    
45    #- default:
46    Nit=2
47    prt=1    # 1 = print some informations ; 2 = print more informations
48    action=1
49    cmdMV='mv -f'
50    tmpDir='temp_tst'
51    
52    #- default executable, command-line , using MPI:
53    gcmEXE=./mitgcmuv
54    cmdEXE=
55    mpi=0
56    
57  nArg=$#  nArg=$#
58  if [ $nArg -ge 3 ]  prev=
59  then  for xx ; do
60   if test $2 = '-exe' ; then gcmExc=$3 ; nArg=`expr $nArg - 2` ; fi    #echo "xx='$xx'"
61   if test $1 = '-exe' ; then gcmExc=$2 ; shift ; shift ; nArg=$# ; fi    # If the previous option needs an argument, assign it.
62  fi    if test -n "$prev"; then
63        eval "$prev=\$xx"
64        prev=
65        nArg=`expr $nArg - 2`
66        continue
67      fi
68    
69      case $xx in
70      -mpi     ) mpi=1 ; nArg=`expr $nArg - 1` ;;
71      -exe     ) prev=gcmEXE ;;
72      -command ) prev=cmdEXE ;;
73              *) flag=$xx ;;
74      esac
75    done
76    echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'"
77    echo "nArg=$nArg ; mpi=$mpi ; flag='$flag'"
78    
79  case $nArg in  case $nArg in
80    1) ;;    1) ;;
81     *) echo "Usage: `basename $0` flag [-exe EXECUTABLE]"     *) echo "Usage: `basename $0` flag [-mpi] [-exe EXECUTABLE] [-command COMMAND]"
82        echo " Check restart: compare 1 run of 2 x $Nit it long"        echo " Check restart: compare 1 run of 2 x $Nit it long"
83        echo "     with 2 consecutive runs of $Nit it long each"        echo "     with 2 consecutive runs of $Nit it long each"
84        echo " where: flag = 0 -> prepare (from a previous run) pickup & data files"        echo " where: flag = 0 -> prepare (from a previous run) pickup & data files"
85        echo "        flag = 1 -> do the 3 runs (with EXECUTABLE, default=mitgcmuv)"        echo "        flag = 1 -> do the 3 runs (using COMMAND"
86          echo "                         or simply using EXECUTABLE, default=$gcmEXE)"
87        echo "        flag = 2 -> compare std_outp"        echo "        flag = 2 -> compare std_outp"
88        echo "        flag = 3 -> compare pickup files"        echo "        flag = 3 -> compare pickup files"
89        echo "        flag = 4 -> clean-up output files"        echo "        flag = 4 -> clean-up output files"
90        echo "      flag = All -> do 0,1,2,3,4 sequentially"        echo "      flag = All -> do 0,1,2,3,4 sequentially"
91        exit 9 ;;        exit 9 ;;
92  esac  esac
 flag=$1  
93    
94    #-- set the run-command :
95    if test "x$cmdEXE" = x
96    then
97        RUNMPI="mpirun -machinefile ../../mf -v -np 2 $gcmEXE"
98        cmdEXE=$gcmEXE
99    else
100        RUNMPI="$cmdEXE"
101    fi
102    if [ $mpi -ge 1 ] ; then cmdEXE=run_mpi ; fi
103    echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'"
104  #=========================  #=========================
105    
106  if test $flag = '0' -o $flag = 'All' ; then  if test $flag = '0' -o $flag = 'All' ; then
107  #----------------------------------------------------------------------  #----------------------------------------------------------------------
108  # last pickup written (from previous run):  # last pickup written (from previous run):
109  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
110  then outpRun='STDOUT.0000'  then outpRun='STDOUT.0000'
111  else outpRun='output.txt'  else outpRun='output.txt'
112  fi  fi
113  if test -r $outpRun  if test -r $outpRun
114  then  then
115  # grep ' %CHECKPOINT ' $outpRun | tail -1  # grep ' %CHECKPOINT ' $outpRun | tail -1
116    lastPick=`grep ' %CHECKPOINT ' $outpRun | sed 's/^.*%CHECKPOINT //' | tail -1`    lastPick=`grep ' %CHECKPOINT ' $outpRun | sed 's/^.*%CHECKPOINT //' | tail -1`
117    if test "x$lastPick" = x    if test "x$lastPick" = x
118    then    then
119      echo "no pickup information written in '$outpRun' from previous run"      echo "no pickup information written in '$outpRun' from previous run"
120      exit 8      exit 8
121    else    else
# Line 89  then Line 123  then
123      zz=`echo $lastPick | awk '{print $2}'`      zz=`echo $lastPick | awk '{print $2}'`
124      echo "from previous run std.outp, lastPick='$lastPick' ; iter='$iter' ; zz='$zz'"      echo "from previous run std.outp, lastPick='$lastPick' ; iter='$iter' ; zz='$zz'"
125    fi    fi
126  else  else
127    echo "no standard output file '$outpRun' from previous run"    echo "no standard output file '$outpRun' from previous run"
128    exit 7    exit 7
129  fi  fi
# Line 112  else Line 146  else
146      for xx in $listF      for xx in $listF
147      do      do
148        new=`echo $xx | sed "s/^$yy\.$zz/$yy\.$sufx/"`        new=`echo $xx | sed "s/^$yy\.$zz/$yy\.$sufx/"`
149        if [ $prt -ge 2 ] ; then echo '  '$cmd $xx $new ; fi        if [ $prt -ge 2 ] ; then echo '  '$cmdMV $xx $new ; fi
150        if test $action = 1 ; then    $cmd $xx $new ; fi        if test $action = 1 ; then    $cmdMV $xx $new ; fi
151      done      done
152    done    done
153   fi   fi
# Line 149  mv -f data.tmp_$$ data.tst Line 183  mv -f data.tmp_$$ data.tst
183  sed "/^ *\&PARM03/a \ nIter0=$iter," data.tst > data.tmp_$$  sed "/^ *\&PARM03/a \ nIter0=$iter," data.tst > data.tmp_$$
184  mv -f data.tmp_$$ data.tst  mv -f data.tmp_$$ data.tst
185  echo "prepare file 'data.tst' : done"  echo "prepare file 'data.tst' : done"
186  if  [ $prt -ge 1 ] ; then  if  [ $prt -ge 1 ] ; then
187    echo ' diff data.tst data' ; diff data.tst data ; echo ' ' ;    echo ' diff data.tst data' ; diff data.tst data ; echo ' ' ;
188  fi  fi
189  #---- clean up current dir: move output to temp_tst dir:  #---- clean up current dir: move output to temp_tst dir:
# Line 159  if test $action = 1 ; then Line 193  if test $action = 1 ; then
193   mv -f *.data $tmpDir   mv -f *.data $tmpDir
194   mv -f *.meta $tmpDir   mv -f *.meta $tmpDir
195   mv -f *.txt $tmpDir   mv -f *.txt $tmpDir
196     mv -f STD???.0[0-9][0-9][0-9] $tmpDir
197   listS=`ls $tmpDir/pickup*.${sufx}* 2> /dev/null | head -1`   listS=`ls $tmpDir/pickup*.${sufx}* 2> /dev/null | head -1`
198   if test "x$listS" != x ; then mv $tmpDir/pickup*.${sufx}* . ; fi   if test "x$listS" != x ; then mv $tmpDir/pickup*.${sufx}* . ; fi
199  #- move main parameter file "data":  #- move main parameter file "data":
# Line 177  if test $action = 1 ; then Line 212  if test $action = 1 ; then
212      for ll in $listN      for ll in $listN
213      do      do
214        sed "$ll s/^./#&/" data.pkg > data.tmp_$$        sed "$ll s/^./#&/" data.pkg > data.tmp_$$
215        if  [ $prt -ge 1 ] ; then echo ' changes in data.pkg'        if  [ $prt -ge 1 ] ; then echo ' changes in data.pkg'
216          diff data.tmp_$$ data.pkg ; echo ' ' ; fi          diff data.tmp_$$ data.pkg ; echo ' ' ; fi
217        mv -f data.tmp_$$ data.pkg        mv -f data.tmp_$$ data.pkg
218      done      done
# Line 213  num1c=`printf "%10.10i\n" $num1` Line 248  num1c=`printf "%10.10i\n" $num1`
248  num2c=`printf "%10.10i\n" $num2`  num2c=`printf "%10.10i\n" $num2`
249  echo " start-end iter: $num0 , $num1 , $num2"  echo " start-end iter: $num0 , $num1 , $num2"
250  echo " sufix: '$num0c' '$num1c' '$num2c'"  echo " sufix: '$num0c' '$num1c' '$num2c'"
251  echo ' gcmExc='$gcmExc  echo ' cmdEXE='$cmdEXE
252  #exit  #exit
253  #---------------------------  #---------------------------
254    
# Line 238  rm -f STDERR.0000 Line 273  rm -f STDERR.0000
273  cp -p data.tst data  cp -p data.tst data
274  echo '==> START RUN 2 x' $Nit 'it'  echo '==> START RUN 2 x' $Nit 'it'
275  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
276  then ./$gcmExc std_outp.2it > TTT.out.2it 2>&1  then $cmdEXE std_outp.2it > TTT.out.2it 2>&1
277  else ./$gcmExc > std_outp.2it  else $cmdEXE > std_outp.2it
278  fi  fi
279  mv STDERR.0000 std__err.2it  mv STDERR.0000 std__err.2it
280  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`
# Line 263  if test "x$listS" != x ; then mv $dir1/p Line 298  if test "x$listS" != x ; then mv $dir1/p
298  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data
299  echo '==> START RUN 1iA'  echo '==> START RUN 1iA'
300  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
301  then ./$gcmExc std_outp.1iA > TTT.out.1iA 2>&1  then $cmdEXE std_outp.1iA > TTT.out.1iA 2>&1
302  else ./$gcmExc > std_outp.1iA  else $cmdEXE > std_outp.1iA
303  fi  fi
304  mv STDERR.0000 std__err.1iA  mv STDERR.0000 std__err.1iA
305  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`
# Line 288  sed "s/^ nIter0=$num0/ nIter0=$num1/g" d Line 323  sed "s/^ nIter0=$num0/ nIter0=$num1/g" d
323  mv -f data.tmp data  mv -f data.tmp data
324  echo '==> START RUN 1iB'  echo '==> START RUN 1iB'
325  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
326  then ./$gcmExc std_outp.1iB > TTT.out.1iB 2>&1  then $cmdEXE std_outp.1iB > TTT.out.1iB 2>&1
327  else ./$gcmExc > std_outp.1iB  else $cmdEXE > std_outp.1iB
328  fi  fi
329  mv STDERR.0000 std__err.1iB  mv STDERR.0000 std__err.1iB
330  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`
# Line 329  fi Line 364  fi
364    
365  if test $flag = '3' -o $flag = 'All' ; then  if test $flag = '3' -o $flag = 'All' ; then
366  #----------------------------------------------------------------------  #----------------------------------------------------------------------
367  echo ' '  echo ' '
368  echo "== diff pickup files : end of 1rst run (2x$Nit it) & end of 3rd run (2nd $Nit it)"  echo "== diff pickup files : end of 1rst run (2x$Nit it) & end of 3rd run (2nd $Nit it)"
369  listP=`( cd $dir1 ; ls pickup*.$num2c* | sed 's/\..*//g' | uniq )`  listP=`( cd $dir1 ; ls pickup*.$num2c* | sed 's/\..*//g' | uniq )`
370  chkmeta='Y'  chkmeta='Y'
# Line 351  do Line 386  do
386      echo ' diff' $dir1/$zz.$xx.meta $dir3      echo ' diff' $dir1/$zz.$xx.meta $dir3
387      diff $dir1/$zz.$xx.meta $dir3      diff $dir1/$zz.$xx.meta $dir3
388      out=$?      out=$?
389      if test $out != 0 ; then      if test $out != 0 ; then
390       echo 'Diff outp=' $out ' ==> stop'       echo 'Diff outp=' $out ' ==> stop'
391       exit 5       exit 5
392      fi      fi
# Line 363  fi Line 398  fi
398    
399  if test $flag = '4' -o $flag = 'All' ; then  if test $flag = '4' -o $flag = 'All' ; then
400  #-------------  #-------------
401  echo ' '  echo ' '
402  echo "== clean-up and reset :"  echo "== clean-up and reset :"
403   echo '--> remove output dir and output files:'   echo '--> remove output dir and output files:'
404   echo ' rm -rf' $dir1 $dir2 $dir3   echo ' rm -rf' $dir1 $dir2 $dir3

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22