/[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.6 by jmc, Mon Mar 23 23:28:13 2009 UTC revision 1.12 by jmc, Tue May 8 15:09:26 2012 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 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 93  fi Line 117  fi
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 110  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' 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 184  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 209  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 242  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 263  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
297       cat TTT.out.2it       cat TTT.out.2it
298  else $cmdEXE > std_outp.2it  else $cmdEXE > std_outp.2it
299  fi  fi
300    if test ! -s std_outp.2it
301    then echo "empty or no output file: 'std_outp.2it' => exit" ; exit 1 ; fi
302  mv STDERR.0000 std__err.2it  mv STDERR.0000 std__err.2it
303  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`
304  if test $out != 0  if test $out != 0
# Line 284  for xx in $listP Line 313  for xx in $listP
313  do  do
314    rnp_loc $xx.ckptA $xx.$num2c    rnp_loc $xx.ckptA $xx.$num2c
315  done  done
316  mv *.data *.meta $dir1  move_outp $dir1
 txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`  
 if test "x$txtF" != x ; then mv $txtF $dir1 ; fi  
 listS=`ls $dir1/pickup*.${num0c}* 2> /dev/null | head -1`  
 if test "x$listS" != x ; then mv $dir1/pickup*.${num0c}* . ; fi  
317  #---  2nd run ( Nit iter , restart from same Iter = num0 as 1rst run )  #---  2nd run ( Nit iter , restart from same Iter = num0 as 1rst run )
318  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data.tmp  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data.tmp
319  mv -f data.tmp data  mv -f data.tmp data
320  echo '==> START RUN 1iA'  echo '==> START RUN 1iA'
321  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
322  then  then
323       sleep $wait2run       sleep $wait2run
324       $cmdEXE > TTT.out.1iA 2>&1       $cmdEXE > TTT.out.1iA 2>&1
325       mv STDOUT.0000 std_outp.1iA       mv STDOUT.0000 std_outp.1iA
326       cat TTT.out.1iA       cat TTT.out.1iA
327  else $cmdEXE > std_outp.1iA  else $cmdEXE > std_outp.1iA
328  fi  fi
329    if test ! -s std_outp.1iA
330    then echo "empty or no output file: 'std_outp.1iA' => exit" ; exit 2 ; fi
331  mv STDERR.0000 std__err.1iA  mv STDERR.0000 std__err.1iA
332  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`
333  if test $out != 0  if test $out != 0
# Line 313  for xx in $listP Line 340  for xx in $listP
340  do  do
341   rnp_loc $xx.ckptA $xx.$num1c   rnp_loc $xx.ckptA $xx.$num1c
342  done  done
343  mv *.data *.meta $dir2  move_outp $dir2
 txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`  
 if test "x$txtF" != x ; then mv $txtF $dir2 ; fi  
 listS=`ls $dir2/pickup*.${num0c}* 2> /dev/null | head -1`  
 if test "x$listS" != x ; then mv $dir2/pickup*.${num0c}* . ; fi  
344  #---  3rd run ( Nit iter , restart from 2nd )  #---  3rd run ( Nit iter , restart from 2nd )
345  ln -s $dir2/pickup*.$num1c.* .  ln -s $dir2/pickup*.$num1c.* .
346  sed "s/^ nIter0=$num0/ nIter0=$num1/g" data > data.tmp  sed "s/^ nIter0=$num0/ nIter0=$num1/g" data > data.tmp
347  mv -f data.tmp data  mv -f data.tmp data
348  echo '==> START RUN 1iB'  echo '==> START RUN 1iB'
349  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
350  then  then
351       sleep $wait2run       sleep $wait2run
352       $cmdEXE > TTT.out.1iB 2>&1       $cmdEXE > TTT.out.1iB 2>&1
353       mv STDOUT.0000 std_outp.1iB       mv STDOUT.0000 std_outp.1iB
354       cat TTT.out.1iB       cat TTT.out.1iB
355  else $cmdEXE > std_outp.1iB  else $cmdEXE > std_outp.1iB
356  fi  fi
357    if test ! -s std_outp.1iB
358    then echo "empty or no output file: 'std_outp.1iB' => exit" ; exit 3 ; fi
359  mv STDERR.0000 std__err.1iB  mv STDERR.0000 std__err.1iB
360  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`
361  if test $out != 0  if test $out != 0
# Line 343  for xx in $listP Line 368  for xx in $listP
368  do  do
369   rnp_loc $xx.ckptA $xx.$num2c   rnp_loc $xx.ckptA $xx.$num2c
370  done  done
371  mv *.data *.meta $dir3  # remove pickup*.$mun1c* sym-link:
372  txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`  find . ! -name . -prune -type l -name 'pickup*.'${num1c}'*' -exec rm {} \;
373  if test "x$txtF" != x ; then mv $txtF $dir3 ; fi  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.*  
374  rm data  rm data
375  #----------------------------------------------------------------------  #----------------------------------------------------------------------
376  fi  fi
377    
378  if test $flag = '2' -o $flag = 'All' ; then  if test $flag = '2' -o $Multi = '1' ; then
379  #----------------------------------------------------------------------  #----------------------------------------------------------------------
380  echo ' ' ; echo '== compare cg2d_init_res :'  listCGini="2"
381  echo ' run 1iA:'  #-- check if using 3-D solver
382   grep "cg2d_init_res" std_outp.1iA \    nn=`grep -i -c "^ *nonHydrostatic *= *\.TRUE\." data.tst`
383        | sed 's/.* cg2d_init_res =//'   if [ $nn -eq 0 ] ; then
384  echo ' run 1iB:'    nn=`grep -i -c "^ *implicitIntGravWave *= *\.TRUE\." data.tst`
385   grep "cg2d_init_res" std_outp.1iB \   fi
386        | sed 's/.* cg2d_init_res =//'  if [ $nn -ge 1 ] ; then listCGini="$listCGini 3"; fi
387  echo ' run 2it:'  for nn in $listCGini
388   grep "cg2d_init_res" std_outp.2it \  do
389        | sed 's/.* cg2d_init_res =//'    echo ' ' ; echo "== compare cg${nn}d_init_res :"
390      echo ' run 1iA:'
391       grep "cg${nn}d_init_res" std_outp.1iA \
392            | sed "s/.* cg${nn}d_init_res =//"
393      echo ' run 1iB:'
394       grep "cg${nn}d_init_res" std_outp.1iB \
395            | sed "s/.* cg${nn}d_init_res =//"
396      echo ' run 2it:'
397       grep "cg${nn}d_init_res" std_outp.2it \
398            | sed "s/.* cg${nn}d_init_res =//"
399    done
400  #----------------------------------------------------------------------  #----------------------------------------------------------------------
401  fi  fi
402    
403  if test $flag = '3' -o $flag = 'All' ; then  if test $flag = '3' -o $Multi = '1' ; then
404  #----------------------------------------------------------------------  #----------------------------------------------------------------------
405  echo ' '  echo ' '
406  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 406  if test $flag = '4' -o $flag = 'All' ; t Line 438  if test $flag = '4' -o $flag = 'All' ; t
438  #-------------  #-------------
439  echo ' '  echo ' '
440  echo "== clean-up and reset :"  echo "== clean-up and reset :"
441     echo '--> remove pickup*.'$num0c'* sym-links:'
442    #find . ! -name . -prune -type l -name 'pickup*.'${num0c}'*' -exec rm {} \;
443     listS=`find . ! -name . -prune -type l -name 'pickup*.'${num0c}'*'`
444     if [ $prt -ge 2 ] ; then echo ' rm' $listS ; fi
445     rm -f $listS
446   echo '--> remove output dir and output files:'   echo '--> remove output dir and output files:'
447   echo ' rm -rf' $dir1 $dir2 $dir3   echo ' rm -rf' $dir1 $dir2 $dir3
448   rm -rf $dir1 $dir2 $dir3   rm -rf $dir1 $dir2 $dir3

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22