/[MITgcm]/MITgcm/verification/testscript
ViewVC logotype

Diff of /MITgcm/verification/testscript

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

revision 1.19.2.2 by dimitri, Thu Dec 5 08:06:18 2002 UTC revision 1.30 by jmc, Thu Aug 30 16:51:50 2007 UTC
# Line 11  compare_lines() Line 11  compare_lines()
11    
12  testoutput_for_prop()  testoutput_for_prop()
13  {  {
14  # testoutput_for_prop dir s1 label  # testoutput_for_prop dir s1 label subdir
15  #  #
16  #  compares files in $dir/input/output.txt and $dir/results.output.txt  #  compares files in $dir/$subdir/output.txt and $dir/results/output.txt
17  #  using search strings s1 and text label  #  using search strings s1 and text label
18    
19   if [ $debug -gt 0 ]; then   if [ $debug -gt 0 ]; then
20    echo testoutput_for_prop: grep "$2" $1/input/output.txt 1>&2    echo testoutput_for_prop: grep "$2" $1/$4/output.txt 1>&2
21   fi   fi
22   if [ -r $1/input/output.txt ]; then   if [ -r $1/$4/output.txt ]; then
23    grep "$2" $1/input/output.txt | sed 's/.*=//' | nl > tmp1.txt    grep "$2" $1/$4/output.txt | sed 's/.*=//' | nl > tmp1.txt
24    lncnt=`wc -l tmp1.txt | awk '{print $1}' `    lncnt=`wc -l tmp1.txt | awk '{print $1}' `
25    if [ $lncnt -lt 3 ]; then    if [ $lncnt -lt 3 ]; then
26     if [ $verbose -gt 0 ]; then     if [ $verbose -gt 0 ]; then
# Line 84  done Line 84  done
84    
85  testoutput()  testoutput()
86  {  {
87  # testoutput diretory  # testoutput diretory subdir
88  #  #
89  #  test output in "directory"  #  test output in "directory"
90    
91  if [ $debug -gt 0 ]; then  if [ $debug -gt 0 ]; then
92   echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2   echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2
93  fi  fi
94  testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual"; cg2dres=$?  testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2; cg2dres=$?
95  if [ $debug -gt 0 ]; then  if [ $debug -gt 0 ]; then
96   echo testoutput: cg2dres=$cg2dres 1>&2   echo testoutput: cg2dres=$cg2dres 1>&2
97  fi  fi
98    
99  if [ $longtest -gt 0 ]; then  if [ $longtest -gt 0 ]; then
100  testoutput_for_prop $1 "dynstat_theta_min" "theta minimum"; tmin=$?  testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?
101  testoutput_for_prop $1 "dynstat_theta_max" "theta maximum"; tmax=$?  testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?
102  testoutput_for_prop $1 "dynstat_theta_mean" "theta mean"; tmean=$?  testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2; tmean=$?
103  testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d."; tsd=$?  testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2; tsd=$?
104  testoutput_for_prop $1 "dynstat_salt_min" "salt minimum"; smin=$?  testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?
105  testoutput_for_prop $1 "dynstat_salt_max" "salt maximum"; smax=$?  testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?
106  testoutput_for_prop $1 "dynstat_salt_mean" "salt mean"; smean=$?  testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2; smean=$?
107  testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d."; ssd=$?  testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2; ssd=$?
108  testoutput_for_prop $1 "dynstat_uvel_min" "U minimum"; umin=$?  testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?
109  testoutput_for_prop $1 "dynstat_uvel_max" "U maximum"; umax=$?  testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?
110  testoutput_for_prop $1 "dynstat_uvel_mean" "U mean"; umean=$?  testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2; umean=$?
111  testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d."; usd=$?  testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2; usd=$?
112  testoutput_for_prop $1 "dynstat_vvel_min" "V minimum"; vmin=$?  testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?
113  testoutput_for_prop $1 "dynstat_vvel_max" "V maximum"; vmax=$?  testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?
114  testoutput_for_prop $1 "dynstat_vvel_mean" "V mean"; vmean=$?  testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2; vmean=$?
115  testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d."; vsd=$?  testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2; vsd=$?
116  else  else
117  testoutput_for_prop $1 "dynstat_theta_min" "theta minimum"; tmin=$?  testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?
118  testoutput_for_prop $1 "dynstat_theta_max" "theta maximum"; tmax=$?  testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?
119  testoutput_for_prop $1 "dynstat_salt_min" "salt minimum"; smin=$?  testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?
120  testoutput_for_prop $1 "dynstat_salt_max" "salt maximum"; smax=$?  testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?
121  testoutput_for_prop $1 "dynstat_uvel_min" "U minimum"; umin=$?  testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?
122  testoutput_for_prop $1 "dynstat_uvel_max" "U maximum"; umax=$?  testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?
123  testoutput_for_prop $1 "dynstat_vvel_min" "V minimum"; vmin=$?  testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?
124  testoutput_for_prop $1 "dynstat_vvel_max" "V maximum"; vmax=$?  testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?
125  fi  fi
126    
127  dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \  dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \
# Line 136  genmakemodel() Line 136  genmakemodel()
136   ( cd $1;   ( cd $1;
137     if [ $quick -eq 0 -o ! -r Makefile ]; then     if [ $quick -eq 0 -o ! -r Makefile ]; then
138      printf 'genmake ... ' 1>&2      printf 'genmake ... ' 1>&2
139        find . -type l -exec rm {} \;
140      if [ $ieee -eq 0 ]; then      if [ $ieee -eq 0 ]; then
141       ../../../tools/genmake -mods=../code > make.log 2>&1       ../../../tools/genmake2 -mods=../code > make.log 2>&1
142      else      else
143       ../../../tools/genmake -ieee -mods=../code > make.log 2>&1       ../../../tools/genmake2 -ieee -mods=../code > make.log 2>&1
144      fi      fi
145      if [ $? -ne 0 ]; then      if [ $? -ne 0 ]; then
146       tail make.log       tail make.log
147       echo genmakemodel: genmake failed 1>&2       echo genmakemodel: $genmake failed 1>&2
148       return 1       return 1
149      else      else
150        echo succesful 1>&2        echo succesful 1>&2
# Line 227  makemodel() Line 228  makemodel()
228   )   )
229  }  }
230    
231    linkdata()
232    {
233        # linkdata flag
234        #
235        # symbolically link data files to run directory
236        if test "x$1" = x1 ; then
237            (
238                cd $2
239                if test "x$ADM" = x ; then
240                    files=`( cd ../input ; ls -1 | grep -v CVS )`
241                    for i in $files ; do
242                        if test ! -d "../input/"$i ; then
243                            ln -sf "../input/"$i $i
244                        fi
245                    done
246                else
247                    files=`( cd ../input ; ls -1 *.bin | grep -v CVS )`
248                    for i in $files ; do
249                        if test ! -d "../input/"$i ; then
250                            ln -sf "../input/"$i $i
251                        fi
252                    done
253                    files=`( cd ../input_ad ; ls -1 | grep -v CVS )`
254                    for i in $files ; do
255                        if test ! -d "../input_ad/"$i ; then
256                            ln -sf "../input_ad/"$i $i
257                        fi
258                    done
259                fi
260            )
261        fi
262    }
263    
264  runmodel()  runmodel()
265  {  {
266  # runmodel directory exe  # runmodel directory exe
# Line 238  runmodel() Line 272  runmodel()
272      if [ $quick -eq 0 ]; then      if [ $quick -eq 0 ]; then
273       rm -f output.txt       rm -f output.txt
274      fi      fi
275       if [ $debug -gt 0 ]; then
276        echo -n runmodel: pwd= 1>&2
277        pwd 1>&2
278       fi
279      printf 'runmodel: ' 1>&2      printf 'runmodel: ' 1>&2
280      make output.txt && return 0       rm -f *.nc
281  #   if [ ! -r output.txt -o $quick -eq 0 ]; then       make output.txt && return 0
282  #    echo runmodel: running... 1>&2       return 1
283  #    ( ./$2 > output.txt 2>&1 ) && return 0     fi
284  #    rm -f output.txt   )
285  #    ( make output.txt ) && return 0  }
286  #    return 1  
287  #   else  copynewresults()
288  #    echo runmodel: output.txt is newer than executable 1>&2  {
289  #    ( make output.txt ) && return 0  # copynewresults directory
290  #    return 0  #
291  #   fi  #  runs the model "exe" in "directory" (exe is relative to directory)
292  #  else  
293  #   echo runmodel: executable \"$1/$2\" is missing 1>&2   ( cd $1
294  #   return 1     if [ $newresults -eq 1 ]; then
295        if [ -r output.txt ]; then
296         cp -f output.txt ../results/
297         return 0
298        fi
299     fi     fi
300   )   )
301  }  }
# Line 323  cat - << EOF Line 365  cat - << EOF
365  $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]  $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]
366   -help      Show this help message   -help      Show this help message
367   -quick     Skip "genmake" and "make depend" if the Makefile exists   -quick     Skip "genmake" and "make depend" if the Makefile exists
368     -newresults Copy the output.txt into results/
369   -quiet     Reduce the amount of output   -quiet     Reduce the amount of output
370   -verbose   Produce copious amounts of output   -verbose   Produce copious amounts of output
371   -debug     Produce even more output which will mean nothing to most   -debug     Produce even more output which will mean nothing to most
# Line 354  clean_up() Line 397  clean_up()
397  {  {
398  # Find all executables, object files, CPP'd source and model output  # Find all executables, object files, CPP'd source and model output
399  # and DELETE it.  # and DELETE it.
400  for opt in '-name mitgcmuv*' '-name *.o' '-name *.f' '-name *.c' '-path *results -prune -o -name *.meta' '-path *results -prune -o -name *.data' '-type l'  for opt in '-name "mitgcmuv*"' '-name "*.o"' '-name "*.f"' '-name "*.c"' '-name "fort.*"' '-name "make.log"' '-path *results -prune -o -name "*.meta"' '-path *results -prune -o -name "*.data"' '-type l'
401   do   do
402     echo Cleaning: find . $opt -exec rm {} \;     echo Cleaning: find . $opt -exec rm {} \;
403     find . $opt -exec rm {} \;     find . $opt -exec rm {} \;
# Line 362  done Line 405  done
405  }  }
406    
407  ###############################################################################  ###############################################################################
408    ###############################################################################
409    ###############################################################################
410    
411  # Main function  # Main function
412    
# Line 369  done Line 414  done
414  debug=0  debug=0
415  verbose=1  verbose=1
416  quick=0  quick=0
417    newresults=0
418  force=0  force=0
419  clean=0  clean=0
420  ieee=1  ieee=1
421  longtest=1  longtest=1
422  expts=''  expts=''
423    genmake=genmake
424    
425  # Process arguments  # Process arguments
426  for arg in $@  for arg in $@
# Line 381  do Line 428  do
428   case $arg in   case $arg in
429     -cleanup) clean_up; exit 0;;     -cleanup) clean_up; exit 0;;
430     -quick) quick=1;;     -quick) quick=1;;
431       -newresults) newresults=1;;
432     -verbose) verbose=2;;     -verbose) verbose=2;;
433     -debug) debug=1;;     -debug) debug=1;;
434     -force) force=1;;     -force) force=1;;
# Line 411  expts=`scandirs $expts` Line 459  expts=`scandirs $expts`
459    
460  createcodelet  createcodelet
461    
462    date > summary.txt
463  if [ $longtest -gt 0 ]; then  if [ $longtest -gt 0 ]; then
464  cat << EOF > summary.txt  cat << EOF >> summary.txt
465                  T           S           U           V                  T           S           U           V
466  C D M    c        m  s        m  s        m  s        m  s  C D M    c        m  s        m  s        m  s        m  s
467  n p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .  n p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .
# Line 421  g d e n  d  n  x  n  .  n  x  n  .  n  x Line 470  g d e n  d  n  x  n  .  n  x  n  .  n  x
470    
471  EOF  EOF
472  else  else
473  cat << EOF > summary.txt  cat << EOF >> summary.txt
474                T     S     U     V                T     S     U     V
475  C D M    c                          C D M    c                        
476  n p a R  g  m  m  m  m  m  m  m  m  n p a R  g  m  m  m  m  m  m  m  m
# Line 439  do Line 488  do
488   echo   echo
489   echo Experiment: $dir   echo Experiment: $dir
490   echo   echo
491   unset genmake makedepend make run   unset genmakepass makedepend make run
492   if [ $longtest -gt 0 ]; then   if [ $longtest -gt 0 ]; then
493    results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'    results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
494   else   else
495    results='-- -- -- -- -- -- -- -- --'    results='-- -- -- -- -- -- -- -- --'
496   fi   fi
497   genmakemodel $dir/input && genmake=Y \   if [ -r $dir/build ]; then
498   && makecleancompile $dir/input \    seperatebuilddir=1
499   && makedependmodel $dir/input && makedepend=Y \    builddir=build
500   && makemodel $dir/input && make=Y \    rundir=build
501   && runmodel $dir/input mitgcmuv && run=Y \    (cd $dir/input; rm -f *.{o,f,c,F,h} work* output.txt Make* make.log; )
502   && results=`testoutput $dir` \   else
503   && makecleanupafter $dir/input    seperatebuilddir=0
504      builddir=input
505      rundir=input
506     fi
507     genmakemodel $dir/$builddir && genmakepass=Y \
508     && makecleancompile $dir/$builddir \
509     && makedependmodel $dir/$builddir && makedepend=Y \
510     && makemodel $dir/$builddir && make=Y \
511     && linkdata $seperatebuilddir $dir/$rundir \
512     && runmodel $dir/$builddir mitgcmuv && run=Y \
513     && results=`testoutput $dir $rundir` \
514     && copynewresults $dir/$rundir \
515     && makecleanupafter $dir/$builddir
516   echo   echo
517   formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results   formatresults $dir ${genmakepass:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results
518   echo   echo
519   formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results >> summary.txt   formatresults $dir ${genmakepass:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results >> summary.txt
520   fi   fi
521  done  done
522    
# Line 463  rm tmp_cmpnum.f a.out Line 524  rm tmp_cmpnum.f a.out
524    
525  echo -------------------------------------------------------------------------------  echo -------------------------------------------------------------------------------
526  echo  echo
527    date >> summary.txt
528  cat summary.txt  cat summary.txt

Legend:
Removed from v.1.19.2.2  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.22