/[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.3 by jmc, Sat Feb 28 18:55:48 2009 UTC revision 1.11 by jmc, Sat Nov 5 13:32:53 2011 UTC
# Line 7  rnp_loc() Line 7  rnp_loc()
7  {  {
8  #   rnp_loc arg_1 arg_2  #   rnp_loc arg_1 arg_2
9  #   rename files with prefix = 'arg_1' to files with prefix = 'arg_2'  #   rename files with prefix = 'arg_1' to files with prefix = 'arg_2'
10      echo ' rnp_loc:' $1 $2      if [ $prt -ge 1 ] ; then echo '  rnp_loc:' $1 $2 ; fi
11  #   rnp -s $1 $2  #   rnp -s $1 $2
12      listY=`ls -1 $1*`      listY=`ls -1 $1*`
13      for yy in $listY      for yy in $listY
14      do      do
15        zz=`echo $yy | sed "s/^$1/$2/"`        zz=`echo $yy | sed "s/^$1/$2/"`
16        mv $yy $zz        if [ $prt -ge 2 ] ; then echo '   '$cmdMV $yy $zz ; fi
17          if test $action = 1 ; then    $cmdMV $yy $zz ; fi
18      done      done
19  }  }
20    
21    #-----------
22    
23    move_outp()
24    {
25    #   move_outp arg_1
26    #   move mitgcm output files to directory 'arg_1'
27        if [ $prt -ge 1 ] ; then echo ' move_outp:' $1 ; fi
28        mv *.data *.meta $1
29        listF=`ls -1 *.txt STD???.00?? 2> /dev/null`
30        if test "x$listF" != x ; then mv $listF $1 ; fi
31        #- move back sym link:
32        listL=`find $1 -type l`
33        ttd=`echo $listL | wc -w`
34        #echo "ttd=$ttd"
35        if test $ttd != 0 ; then
36          #echo "listL='$listL'"
37          if [ $prt -ge 2 ] ; then echo "  mv back:" $listL | sed "s/$1\///g" ; fi
38          mv $listL .
39        fi
40    }
41    
42  #---------------------------  #---------------------------
43    
44  #- exit status:  #- exit status:
# Line 27  rnp_loc() Line 49  rnp_loc()
49  # 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
50  # 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
51  # 6 -> missing 'data.tst' file (removed or not yet generated ?)  # 6 -> missing 'data.tst' file (removed or not yet generated ?)
52  # 7 -> missing standard output from previous run  # 7 -> missing executable or standard output from previous run
53  # 8 -> missing information (in standard output of previous run) about pickup  # 8 -> missing information (in standard output of previous run) about pickup
54  # 9 -> error in argument list  # 9 -> error in argument list
55    
# Line 63  for xx ; do Line 85  for xx ; do
85            *) flag=$xx ;;            *) flag=$xx ;;
86    esac    esac
87  done  done
88  echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'"  #echo "cmdEXE='$cmdEXE'"
89  echo "nArg=$nArg ; mpi=$mpi ; flag='$flag'"  #echo "nArg=$nArg ; mpi=$mpi ; flag='$flag'"
90    
91  case $nArg in  case $nArg in
92    1) ;;    1) ;;
# Line 77  case $nArg in Line 99  case $nArg in
99        echo "        flag = 2 -> compare std_outp"        echo "        flag = 2 -> compare std_outp"
100        echo "        flag = 3 -> compare pickup files"        echo "        flag = 3 -> compare pickup files"
101        echo "        flag = 4 -> clean-up output files"        echo "        flag = 4 -> clean-up output files"
102          echo "       flag = NC -> do 0,1,2,3 sequentially (no cleaning)"
103        echo "      flag = All -> do 0,1,2,3,4 sequentially"        echo "      flag = All -> do 0,1,2,3,4 sequentially"
104        exit 9 ;;        exit 9 ;;
105  esac  esac
106    if test $flag = 'NC' -o $flag = 'All' ; then Multi=1 ; else Multi=0 ; fi
107    
108  #-- set the run-command :  #-- set the run-command :
109  if test "x$cmdEXE" = x  if test "x$cmdEXE" = x
# Line 90  then Line 114  then
114      cmdEXE=$gcmEXE      cmdEXE=$gcmEXE
115    fi    fi
116  fi  fi
 #if [ $mpi -ge 1 ] ; then cmdEXE=run_mpi ; fi  
 #echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'"  
117  echo "cmdEXE='$cmdEXE'"  echo "cmdEXE='$cmdEXE'"
118  #=========================  #=========================
119    
120  if test $flag = '0' -o $flag = 'All' ; then  if test $flag = '0' -o $Multi = '1' ; then
121  #----------------------------------------------------------------------  #----------------------------------------------------------------------
122    # check for executable:
123    if test ! -x $gcmEXE ; then
124      echo "file '$gcmEXE' does not exist or is not executable"
125      exit 7
126    fi
127  # last pickup written (from previous run):  # last pickup written (from previous run):
128  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
129  then outpRun='STDOUT.0000'  then outpRun='STDOUT.0000'
# Line 112  then Line 139  then
139      exit 8      exit 8
140    else    else
141      iter=`echo $lastPick | awk '{print $1}'`      iter=`echo $lastPick | awk '{print $1}'`
142      zz=`echo $lastPick | awk '{print $2}'`      sufx=`echo $lastPick | awk '{print $2}'`
143      echo "from previous run std.outp, lastPick='$lastPick' ; iter='$iter' ; zz='$zz'"      echo "from previous run std.outp, lastPick='$lastPick' ; iter='$iter' ; sufx='$sufx'"
144    fi    fi
145  else  else
146    echo "no standard output file '$outpRun' from previous run"    echo "no standard output file '$outpRun' from previous run"
147    exit 7    exit 7
148  fi  fi
149    
 #- rename pickup (if needed)  
 sufx=`printf "%10.10i\n" $iter`  
 if test $zz = $sufx  
 then  
  echo "no need to change pickup sufix"  
 else  
 # echo "rename pickup sufix: $zz -> $sufx"  
  listP=`ls pickup*.${zz}* 2> /dev/null | sed 's/\..*//g' | uniq`  
  if test "x$listP" = x  
  then echo ' rename' $zz  '->' $sufx ': no file to rename'  
  else  
   if [ $prt -ge 1 ] ; then echo ' rename' $zz  '->' $sufx 'for all:' $listP ; fi  
   for yy in $listP  
   do  
     listF=`ls -1 $yy.${zz}*`  
     for xx in $listF  
     do  
       new=`echo $xx | sed "s/^$yy\.$zz/$yy\.$sufx/"`  
       if [ $prt -ge 2 ] ; then echo '  '$cmdMV $xx $new ; fi  
       if test $action = 1 ; then    $cmdMV $xx $new ; fi  
     done  
   done  
  fi  
 fi  
150  #-------------------------  #-------------------------
151  echo "prepare parameter file 'data.tst' :"  echo "prepare parameter file 'data.tst' :"
152  cp -p -f data data.tst  cp -p -f data data.tst
153  listOut='startTime endTime nIter0 nTimeSteps nEndIter chkPtFreq pChkPtFreq globalFiles'  listOut='startTime endTime nIter0 nTimeSteps nEndIter chkPtFreq pChkPtFreq'
154  listOut=$listOut' useSingleCpuIO pickupSuff usePickupBeforeC54 mdsioLocalDir'  listOut=$listOut' pickupSuff usePickupBeforeC54 mdsioLocalDir pickupStrictlyMatch'
155  #- comment out (in data.tst) all parameters from list: 'listOut'  #- comment out (in data.tst) all parameters from list: 'listOut'
156  for yy in $listOut  for yy in $listOut
157  do  do
# Line 186  if test $action = 1 ; then Line 189  if test $action = 1 ; then
189   mv -f *.meta $tmpDir   mv -f *.meta $tmpDir
190   mv -f *.txt $tmpDir 2> /dev/null   mv -f *.txt $tmpDir 2> /dev/null
191   mv -f STD???.0[0-9][0-9][0-9] $tmpDir   mv -f STD???.0[0-9][0-9][0-9] $tmpDir
  listS=`ls $tmpDir/pickup*.${sufx}* 2> /dev/null | head -1`  
  if test "x$listS" != x ; then mv $tmpDir/pickup*.${sufx}* . ; fi  
192  #- move main parameter file "data":  #- move main parameter file "data":
193   mv -f data $tmpDir   mv -f data $tmpDir
194  #- do not deal with MNC pickup at all:  #- do not deal with MNC pickup at all:
# Line 211  if test $action = 1 ; then Line 212  if test $action = 1 ; then
212    else if [ $prt -ge 2 ] ; then echo ' : not found' ; echo ' ' ; fi    else if [ $prt -ge 2 ] ; then echo ' : not found' ; echo ' ' ; fi
213    fi    fi
214  fi  fi
215    #-------------------------
216    #-- link back pickup files
217     listS=`ls $tmpDir/pickup*.${sufx}* 2> /dev/null | head -1`
218     if test "x$listS" != x ; then
219       if [ $prt -ge 1 ] ; then echo ' link back:' $tmpDir'/pickup*.'${sufx}'*' ; fi
220       if test $action = 1 ; then ln -s $tmpDir/pickup*.${sufx}* . ; fi
221     fi
222    #- rename pickup (if needed)
223    nIt0c=`printf "%10.10i\n" $iter`
224    if test $sufx = $nIt0c
225    then
226     echo "no need to change pickup sufix"
227    else
228     listP=`ls pickup*.${sufx}* 2> /dev/null | sed 's/\..*//g' | uniq`
229     if test "x$listP" = x
230     then echo ' rename' $sufx  '->' $nIt0c ': no file to rename'
231     else
232      if [ $prt -ge 1 ] ; then echo ' rename' $sufx  '->' $nIt0c 'for all:' $listP ; fi
233      for yy in $listP
234      do
235        rnp_loc $yy.${sufx} $yy.$nIt0c
236      done
237     fi
238    fi
239  #----------------------------------------------------------------------  #----------------------------------------------------------------------
240  fi  fi
241    
# Line 244  echo ' cmdEXE='$cmdEXE Line 269  echo ' cmdEXE='$cmdEXE
269  #exit  #exit
270  #---------------------------  #---------------------------
271    
272  if test $flag = '1' -o $flag = 'All' ; then  if test $flag = '1' -o $Multi = '1' ; then
273  #----------------------------------------------------------------------  #----------------------------------------------------------------------
274  #- check at the end of each run for pickup with prefix:  #- check at the end of each run for pickup with prefix:
275  pref='pickup'  pref='pickup'
# Line 265  rm -f STDERR.0000 Line 290  rm -f STDERR.0000
290  cp -p data.tst data  cp -p data.tst data
291  echo '==> START RUN 2 x' $Nit 'it'  echo '==> START RUN 2 x' $Nit 'it'
292  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
293  then  then
294       sleep $wait2run       sleep $wait2run
295       $cmdEXE > TTT.out.2it 2>&1       $cmdEXE > TTT.out.2it 2>&1
296       mv STDOUT.0000 std_outp.2it       mv STDOUT.0000 std_outp.2it
# Line 276  mv STDERR.0000 std__err.2it Line 301  mv STDERR.0000 std__err.2it
301  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`
302  if test $out != 0  if test $out != 0
303  then echo "==> RUN 2 x $Nit it : ABNORMAL END => exit" ; exit 1 ; fi  then echo "==> RUN 2 x $Nit it : ABNORMAL END => exit" ; exit 1 ; fi
304  if test -f $pref.ckptA.001.001.data  listF=`ls -1 $pref.ckptA*.data 2> /dev/null`
305  then echo "==>  END  RUN 2 x $Nit it"  if test "x$listF" = x
306  else echo "==> RUN 2 x $Nit it STOP without writing $pref => exit" ; exit 1 ; fi  then echo "==> RUN 2 x $Nit it STOP without writing $pref => exit" ; exit 1
307    else echo "==>  END  RUN 2 x $Nit it" ; fi
308  listP=`ls pickup*.ckptA* | sed 's/\..*//g' | uniq`  listP=`ls pickup*.ckptA* | sed 's/\..*//g' | uniq`
309  echo ' listP=' $listP  echo ' listP=' $listP
310  for xx in $listP  for xx in $listP
311  do  do
312    rnp_loc $xx.ckptA $xx.$num2c    rnp_loc $xx.ckptA $xx.$num2c
313  done  done
314  mv *.0??.0??.* $dir1  move_outp $dir1
 txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`  
 mv R?.data R?.meta DR?.data DR?.meta PHref{C,F}.??ta $txtF $dir1  
 listS=`ls $dir1/pickup*.${num0c}* 2> /dev/null | head -1`  
 if test "x$listS" != x ; then mv $dir1/pickup*.${num0c}* . ; fi  
315  #---  2nd run ( Nit iter , restart from same Iter = num0 as 1rst run )  #---  2nd run ( Nit iter , restart from same Iter = num0 as 1rst run )
316  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data.tmp  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data.tmp
317  mv -f data.tmp data  mv -f data.tmp data
318  echo '==> START RUN 1iA'  echo '==> START RUN 1iA'
319  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
320  then  then
321       sleep $wait2run       sleep $wait2run
322       $cmdEXE > TTT.out.1iA 2>&1       $cmdEXE > TTT.out.1iA 2>&1
323       mv STDOUT.0000 std_outp.1iA       mv STDOUT.0000 std_outp.1iA
# Line 306  mv STDERR.0000 std__err.1iA Line 328  mv STDERR.0000 std__err.1iA
328  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`
329  if test $out != 0  if test $out != 0
330  then echo "==> RUN 1iA : ABNORMAL END => exit" ; exit 2 ; fi  then echo "==> RUN 1iA : ABNORMAL END => exit" ; exit 2 ; fi
331  if test -f $pref.ckptA.001.001.data  listF=`ls -1 $pref.ckptA*.data 2> /dev/null`
332  then echo "==>  END  RUN 1iA"  if test "x$listF" = x
333  else echo "==> RUN 1iA STOP without writing $pref => exit" ; exit 2 ; fi  then echo "==> RUN 1iA STOP without writing $pref => exit" ; exit 2
334    else echo "==>  END  RUN 1iA" ; fi
335  for xx in $listP  for xx in $listP
336  do  do
337   rnp_loc $xx.ckptA $xx.$num1c   rnp_loc $xx.ckptA $xx.$num1c
338  done  done
339  mv *.0??.0??.* $dir2  move_outp $dir2
 txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`  
 mv R?.data R?.meta DR?.data DR?.meta $txtF $dir2  
 listS=`ls $dir2/pickup*.${num0c}* 2> /dev/null | head -1`  
 if test "x$listS" != x ; then mv $dir2/pickup*.${num0c}* . ; fi  
340  #---  3rd run ( Nit iter , restart from 2nd )  #---  3rd run ( Nit iter , restart from 2nd )
341  ln -s $dir2/pickup*.$num1c.* .  ln -s $dir2/pickup*.$num1c.* .
342  sed "s/^ nIter0=$num0/ nIter0=$num1/g" data > data.tmp  sed "s/^ nIter0=$num0/ nIter0=$num1/g" data > data.tmp
343  mv -f data.tmp data  mv -f data.tmp data
344  echo '==> START RUN 1iB'  echo '==> START RUN 1iB'
345  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
346  then  then
347       sleep $wait2run       sleep $wait2run
348       $cmdEXE > TTT.out.1iB 2>&1       $cmdEXE > TTT.out.1iB 2>&1
349       mv STDOUT.0000 std_outp.1iB       mv STDOUT.0000 std_outp.1iB
# Line 335  mv STDERR.0000 std__err.1iB Line 354  mv STDERR.0000 std__err.1iB
354  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`
355  if test $out != 0  if test $out != 0
356  then echo "==> RUN 1iB : ABNORMAL END => exit" ; exit 3 ; fi  then echo "==> RUN 1iB : ABNORMAL END => exit" ; exit 3 ; fi
357  if test -f $pref.ckptA.001.001.data  listF=`ls -1 $pref.ckptA*.data 2> /dev/null`
358  then echo "==>  END  RUN 1iB"  if test "x$listF" = x
359  else echo "==> RUN 1iB STOP without writing $pref => exit" ; exit 3 ; fi  then echo "==> RUN 1iB STOP without writing $pref => exit" ; exit 3
360    else echo "==>  END  RUN 1iB" ; fi
361  for xx in $listP  for xx in $listP
362  do  do
363   rnp_loc $xx.ckptA $xx.$num2c   rnp_loc $xx.ckptA $xx.$num2c
364  done  done
365  mv *.0??.0??.* $dir3  # remove pickup*.$mun1c* sym-link:
366  txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`  find . ! -name . -prune -type l -name 'pickup*.'${num1c}'*' -exec rm {} \;
367  mv R?.data R?.meta DR?.data DR?.meta $txtF $dir3  move_outp $dir3
 listS=`ls $dir3/pickup*.${num0c}* 2> /dev/null | head -1`  
 if test "x$listS" != x ; then mv $dir3/pickup*.${num0c}* . ; fi  
 rm $dir3/pickup*.$num1c.*  
368  rm data  rm data
369  #----------------------------------------------------------------------  #----------------------------------------------------------------------
370  fi  fi
371    
372  if test $flag = '2' -o $flag = 'All' ; then  if test $flag = '2' -o $Multi = '1' ; then
373  #----------------------------------------------------------------------  #----------------------------------------------------------------------
374  echo ' ' ; echo '== compare cg2d_init_res :'  listCGini="2"
375  echo ' run 1iA:'  #-- check if using 3-D solver
376   grep "cg2d_init_res" std_outp.1iA \    nn=`grep -i -c "^ *nonHydrostatic *= *\.TRUE\." data.tst`
377        | sed 's/.* cg2d_init_res =//'   if [ $nn -eq 0 ] ; then
378  echo ' run 1iB:'    nn=`grep -i -c "^ *implicitIntGravWave *= *\.TRUE\." data.tst`
379   grep "cg2d_init_res" std_outp.1iB \   fi
380        | sed 's/.* cg2d_init_res =//'  if [ $nn -ge 1 ] ; then listCGini="$listCGini 3"; fi
381  echo ' run 2it:'  for nn in $listCGini
382   grep "cg2d_init_res" std_outp.2it \  do
383        | sed 's/.* cg2d_init_res =//'    echo ' ' ; echo "== compare cg${nn}d_init_res :"
384      echo ' run 1iA:'
385       grep "cg${nn}d_init_res" std_outp.1iA \
386            | sed "s/.* cg${nn}d_init_res =//"
387      echo ' run 1iB:'
388       grep "cg${nn}d_init_res" std_outp.1iB \
389            | sed "s/.* cg${nn}d_init_res =//"
390      echo ' run 2it:'
391       grep "cg${nn}d_init_res" std_outp.2it \
392            | sed "s/.* cg${nn}d_init_res =//"
393    done
394  #----------------------------------------------------------------------  #----------------------------------------------------------------------
395  fi  fi
396    
397  if test $flag = '3' -o $flag = 'All' ; then  if test $flag = '3' -o $Multi = '1' ; then
398  #----------------------------------------------------------------------  #----------------------------------------------------------------------
399  echo ' '  echo ' '
400  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)"
# Line 375  listP=`( cd $dir1 ; ls pickup*.$num2c* | Line 402  listP=`( cd $dir1 ; ls pickup*.$num2c* |
402  chkmeta='Y'  chkmeta='Y'
403  for yy in $listP  for yy in $listP
404  do  do
405   listY=`(cd $dir1 ; ls $yy.$num2c.*.data | sed "s/$yy\.$num2c\.//" | sed "s/\.data//")`   listY=`(cd $dir1 ; ls $yy.$num2c*.data | sed "s/$yy\.$num2c//" | sed "s/data$//")`
406   zz=$yy.$num2c   zz=$yy.$num2c
407   echo '--> file='$zz', listY='$listY   echo '--> file='$zz', listY='$listY
408   for xx in $listY   for xx in $listY
409   do   do
410     echo ' diff' $dir1/$zz.$xx.data $dir3     echo ' diff' $dir1/$zz${xx}data $dir3
411     diff $dir1/$zz.$xx.data $dir3     diff $dir1/$zz${xx}data $dir3
412     out=$?     out=$?
413     if test $out != 0 ; then     if test $out != 0 ; then
414      echo 'Diff outp=' $out ' ==> stop'      echo 'Diff outp=' $out ' ==> stop'
415      exit 4      exit 4
416     fi     fi
417     if test $chkmeta = 'Y' -a -f $dir1/$zz.$xx.meta ; then     if test $chkmeta = 'Y' -a -f $dir1/$zz${xx}meta ; then
418      echo ' diff' $dir1/$zz.$xx.meta $dir3      echo ' diff' $dir1/$zz${xx}meta $dir3
419      diff $dir1/$zz.$xx.meta $dir3      diff $dir1/$zz${xx}meta $dir3
420      out=$?      out=$?
421      if test $out != 0 ; then      if test $out != 0 ; then
422       echo 'Diff outp=' $out ' ==> stop'       echo 'Diff outp=' $out ' ==> stop'
# Line 405  if test $flag = '4' -o $flag = 'All' ; t Line 432  if test $flag = '4' -o $flag = 'All' ; t
432  #-------------  #-------------
433  echo ' '  echo ' '
434  echo "== clean-up and reset :"  echo "== clean-up and reset :"
435     echo '--> remove pickup*.'$num0c'* sym-links:'
436    #find . ! -name . -prune -type l -name 'pickup*.'${num0c}'*' -exec rm {} \;
437     listS=`find . ! -name . -prune -type l -name 'pickup*.'${num0c}'*'`
438     if [ $prt -ge 2 ] ; then echo ' rm' $listS ; fi
439     rm -f $listS
440   echo '--> remove output dir and output files:'   echo '--> remove output dir and output files:'
441   echo ' rm -rf' $dir1 $dir2 $dir3   echo ' rm -rf' $dir1 $dir2 $dir3
442   rm -rf $dir1 $dir2 $dir3   rm -rf $dir1 $dir2 $dir3

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22