/[MITgcm]/MITgcm/verification/testreport
ViewVC logotype

Diff of /MITgcm/verification/testreport

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

revision 1.40 by edhill, Tue Jul 6 19:53:34 2004 UTC revision 1.81 by jmc, Thu Jun 15 20:31:09 2006 UTC
# Line 13  usage() Line 13  usage()
13      echo "  (-help|-h)               print usage"      echo "  (-help|-h)               print usage"
14      echo "  (-mpi)                   use MPI input files"      echo "  (-mpi)                   use MPI input files"
15      echo "  (-ieee|-noieee)          if possible, use IEEE compiler flags"      echo "  (-ieee|-noieee)          if possible, use IEEE compiler flags"
16      echo "                             (DEF=\"noieee\")"      echo "                             (DEF=\"-ieee\")"
17      echo "  (-optfile=|-of=)STRING   list of optfiles to use"      echo "  (-optfile=|-of=)STRING   list of optfiles to use"
18      echo "  (-a|-addr) STRING        list of email recipients"      echo "  (-a|-addr) STRING        list of email recipients"
19      echo "                             (DEF=\"edhill@mitgcm.org\")"      echo "                             (DEF=\"edhill@mitgcm.org\")"
# Line 27  usage() Line 27  usage()
27      echo "                             (DEF=\"make output.txt\")"      echo "                             (DEF=\"make output.txt\")"
28      echo "  (-m|-make) STRING        command to use for \"make\""      echo "  (-m|-make) STRING        command to use for \"make\""
29      echo "                             (DEF=\"make\")"      echo "                             (DEF=\"make\")"
30        echo "  (-odir) STRING           used to build output directory name"
31        echo "                             (DEF=\"hostname\")"
32        echo "  (-ptracers|-ptr) STRING  specify which ptracers to test"
33        echo "                             (DEF=\"1 2 3 4 5\")"
34        echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"
35      echo "  (-clean)                 *ONLY* run \"make CLEAN\""      echo "  (-clean)                 *ONLY* run \"make CLEAN\""
36      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""
37      echo "  (-nogenmake|-ng)         skip the genmake stage"      echo "  (-nogenmake|-ng)         skip the genmake stage"
# Line 34  usage() Line 39  usage()
39      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"
40      echo "  (-deldir|-dd)            on success, delete the output directory"      echo "  (-deldir|-dd)            on success, delete the output directory"
41      echo      echo
42      echo "and where STRING follows a whitespace-delimited format"      echo "and where STRING can be a whitespace-delimited list"
43      echo "such as:"      echo "such as:"
44        echo
45      echo "  -t 'exp0 exp2 exp3' "      echo "  -t 'exp0 exp2 exp3' "
46      echo "  -addr='abc@123.com testing@home.org'"      echo "  -addr='abc@123.com testing@home.org'"
47      echo      echo
48        echo "provided that the expression is properly quoted within the current"
49        echo "shell (note the use of single quotes to protect white space)."
50        echo
51      exit 1      exit 1
52  }  }
53    
# Line 88  testoutput_for_prop() Line 97  testoutput_for_prop()
97      fi      fi
98      if [ -r $1/$4/output.txt ]; then      if [ -r $1/$4/output.txt ]; then
99          grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt          grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt
100          lncnt=`wc -l tmp1.txt | awk '{print $1}' `          lncntA=`wc -l tmp1.txt | awk '{print $1}' `
101          if [ $lncnt -lt 3 ]; then          if [ $lncntA -lt 3 ]; then
102              if [ $verbose -gt 0 ]; then              if [ $verbose -gt 0 ]; then
103                  echo Not enough lines of output when searching for "$2" 1>&2                  echo Not enough lines of output when searching for "$2" 1>&2
104              fi              fi
# Line 103  testoutput_for_prop() Line 112  testoutput_for_prop()
112          echo testoutput_for_prop: grep "$2" $1/results/output.txt$5 1>&2          echo testoutput_for_prop: grep "$2" $1/results/output.txt$5 1>&2
113      fi      fi
114      grep "$2" $1/results/output.txt$5 | sed 's/.*=//' | cat -n > tmp2.txt      grep "$2" $1/results/output.txt$5 | sed 's/.*=//' | cat -n > tmp2.txt
115      lncnt=`wc -l tmp2.txt | awk '{print $1}' `      lncntB=`wc -l tmp2.txt | awk '{print $1}' `
116      if [ $lncnt -lt 3 ]; then      if [ $lncntB -lt 3 ]; then
117          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
118              echo Not enough lines of output when searching for "$2" 1>&2              echo Not enough lines of output when searching for "$2" 1>&2
119          fi          fi
120          return 99          return 99
121      fi      fi
122        if [ $lncntA -ne $lncntB ]; then
123            if [ $verbose -gt 0 ]; then
124                echo Not same Nb of lines when searching for "$2" ":" $lncntA $lncntB 1>&2
125            fi
126            return 99
127        fi
128        has_nan=`cat tmp1.txt | grep -i nan | wc -l`
129        if [ $has_nan -gt 0  ] ; then
130            echo testoutput_for_prop: output.txt contains $has_nan NaN values  1>&2
131            return 99
132        fi
133        has_inf=`cat tmp1.txt | grep -i inf | wc -l`
134        if [ $has_inf -gt 0  ] ; then
135            echo testoutput_for_prop: output.txt contains $has_inf Inf values  1>&2
136            return 99
137        fi
138      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
139          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2
140      fi      fi
# Line 156  dashnum() Line 181  dashnum()
181    
182  testoutput_ad()  testoutput_ad()
183  {  {
184      grep $3 $1/results_ad/output.txt_adm | awk '{print NR " " $5}' > t05.txt      grep $3 $1/results_ad/output_adm.txt | awk '{print NR " " $5}' > t05.txt
185      grep $3 $1/$2/output.txt_adm | awk '{print NR " " $5}' > t15.txt      grep $3 $1/$2/output_adm.txt | awk '{print NR " " $5}' > t15.txt
186      grep $3 $1/results_ad/output.txt_adm | awk '{print NR " " $6}' > t06.txt      grep $3 $1/results_ad/output_adm.txt | awk '{print NR " " $6}' > t06.txt
187      grep $3 $1/$2/output.txt_adm | awk '{print NR " " $6}' > t16.txt      grep $3 $1/$2/output_adm.txt | awk '{print NR " " $6}' > t16.txt
188      join t05.txt t15.txt > t5.txt      join t05.txt t15.txt > t5.txt
189      join t06.txt t16.txt > t6.txt      join t06.txt t16.txt > t6.txt
190      echo "-1" >> t5.txt      echo "-1" >> t5.txt
# Line 170  testoutput_ad() Line 195  testoutput_ad()
195      rm -f t[01][56].txt t[56].txt      rm -f t[01][56].txt t[56].txt
196  }  }
197    
198    check_for_add_mon_output()
199    {
200        # Check for additional types of monitor output
201        if test "x$1" = x ; then
202            return
203        fi
204    
205        for ii in $PTRACERS_NUM ; do
206            eval "HAVE_PTR0"$ii"=f"
207        done
208    
209        ptr_add="trcstat_ptracerXX_min trcstat_ptracerXX_max"
210        ptr_add="$ptr_add trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
211        for ii in $PTRACERS_NUM ; do
212            for jj in $ptr_add ; do
213                name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
214                tst=`grep $name $1 | wc -l | awk '{print $1}'`
215                if test ! "x$tst" = x0 ; then
216                    eval "HAVE_PTR0"$ii"=t"
217                fi
218            done
219            #  eval 'echo "HAVE_PTR0'$ii' = $HAVE_PTR0'$ii'"'
220        done
221    }
222    
223  testoutput()  testoutput()
224  {  {
225      # testoutput directory subdir extension      # testoutput directory subdir extension
# Line 199  testoutput() Line 249  testoutput()
249          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$?          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$?
250          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?
251          testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$?          testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$?
252          dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \  
253              $umin $umax $umean $usd $vmin $vmax $vmean $vsd          #  This is for PTRACERS
254            for ii in $PTRACERS_NUM ; do
255                eval `echo "p0"$ii"_min=99"`
256                eval `echo "p0"$ii"_max=99"`
257                eval `echo "p0"$ii"_mean=99"`
258                eval `echo "p0"$ii"_sd=99"`
259                tst=`eval 'echo "$HAVE_PTR0'$ii'"'`
260                #echo 'tst = '$tst
261                if test "x$tst" = xt ; then
262                    a="trcstat_ptracer0"
263                    testoutput_for_prop $1 "$a"$ii"_min"  "p0"$ii"_min"  $2 $3
264                    RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL`
265                    testoutput_for_prop $1 "$a"$ii"_max"  "p0"$ii"_max"  $2 $3
266                    RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL`
267                    testoutput_for_prop $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3
268                    RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL`
269                    testoutput_for_prop $1 "$a"$ii"_sd"   "p0"$ii"_sd"   $2 $3
270                    RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL`
271                fi
272            done
273    
274            allargs="$cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd"
275            allargs="$allargs $umin $umax $umean $usd $vmin $vmax $vmean $vsd"
276            allargs="$allargs $p01_min $p01_max $p01_mean $p01_sd"
277            allargs="$allargs $p02_min $p02_max $p02_mean $p02_sd"
278            allargs="$allargs $p03_min $p03_max $p03_mean $p03_sd"
279            allargs="$allargs $p04_min $p04_max $p04_mean $p04_sd"
280            allargs="$allargs $p05_min $p05_max $p05_mean $p05_sd"
281    
282            eval "dashnum $allargs"
283    
284      else      else
285          testoutput_ad $1 $2 "precision_grdchk_result"          testoutput_ad $1 $2 "precision_grdchk_result"
286      fi      fi
# Line 224  genmakemodel() Line 304  genmakemodel()
304                  command="$command --mods=../code"                  command="$command --mods=../code"
305              else              else
306                  command="$command --mods=../code_ad"                  command="$command --mods=../code_ad"
                 command="$command -adof=../../../tools/adjoint_options/adjoint_staf"  
307              fi              fi
308              if test "x$OPTFILE" != xNONE ; then              if test "x$OPTFILE" != xNONE ; then
309                  command="$command --optfile=$OPTFILE"                  command="$command --optfile=$OPTFILE"
# Line 232  genmakemodel() Line 311  genmakemodel()
311              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
312                  command="$command -ieee"                  command="$command -ieee"
313              fi              fi
314                if test "x$MPI" = xt ; then
315                    command="$command -mpi"
316                fi
317              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
318              $command > make.log 2>&1              $command > make.log 2>&1
319              RETVAL=$?              RETVAL=$?
320              cp Makefile $CDIR              #  Reduce the size of the testing emails!
321                head -100 Makefile > $CDIR/Makefile_head
322              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
323                  tail make.log                  tail make.log
324                  echo "genmakemodel: genmake failed" 1>&2                  echo "genmakemodel: genmake failed" 1>&2
# Line 276  makeclean() Line 359  makeclean()
359      fi      fi
360  }  }
361    
362    postclean()
363    {
364        # postclean directory
365        if test "x$POSTCLEAN" = xt ; then
366            (
367                cd $1;
368                if test -r Makefile ; then
369                    $MAKE CLEAN >> /dev/null 2>&1
370                fi
371                exit 0
372            )
373        fi
374    }
375    
376  makedependmodel()  makedependmodel()
377  {  {
378      # makedependmodel directory      # makedependmodel directory
# Line 307  makemodel() Line 404  makemodel()
404          if test -r Makefile ; then          if test -r Makefile ; then
405              printf 'make ... ' 1>&2              printf 'make ... ' 1>&2
406              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
407                  $MAKE >> make.log 2>&1                  if test "x$JOBS" = x ; then
408                        $MAKE >> make.log 2>&1
409                    else
410                        $MAKE -j $JOBS >> make.log 2>&1
411                    fi
412              else              else
413                  $MAKE adall >> make.log 2>&1                  $MAKE adall >> make.log 2>&1
414              fi              fi
# Line 334  symlink_mpifiles() Line 435  symlink_mpifiles()
435      code_dir=$2      code_dir=$2
436      BUILD_DIR=$dir/$3      BUILD_DIR=$dir/$3
437      CODE_DIR=$dir/$code_dir      CODE_DIR=$dir/$code_dir
438        
439      # These are files that should replace their counter-part when using -mpi      # These are files that should replace their counter-part when using -mpi
440      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`
441    
# Line 349  symlink_mpifiles() Line 450  symlink_mpifiles()
450              RETVAL=$?              RETVAL=$?
451              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
452                  if ! test -f $BUILD_DIR/$i ; then                  if ! test -f $BUILD_DIR/$i ; then
453                  #echo Linking $name to $i                      #echo Linking $name to $i
454                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
455                  fi                  fi
456              fi              fi
457          done          done
458      else      else
459      # NO: We undo any _mpi symbolically linked files          # NO: We undo any _mpi symbolically linked files
460          for ii in $MPI_FILES ; do          for ii in $MPI_FILES ; do
461              i=`echo $ii | sed 's:^\./::'`              i=`echo $ii | sed 's:^\./::'`
462              name=`echo $i | sed 's:_mpi::' `              name=`echo $i | sed 's:_mpi::' `
463              if test -L $BUILD_DIR/$name ; then              if test -L $BUILD_DIR/$name ; then
464                  linktarg=`(cd $BUILD_DIR; readlink $name)`                  cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
465                  if test $linktarg = "../$code_dir/$name"_mpi ; then                  RETVAL=$?
466                  #echo Un-linking $name from $linktarg                  if test "x$RETVAL" = x0 ; then
467                        #echo Un-linking $name from $linktarg
468                      rm -f $BUILD_DIR/$name                      rm -f $BUILD_DIR/$name
469                  fi                  fi
470              fi              fi
# Line 382  linkdata() Line 484  linkdata()
484              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
485                  files=`( cd ../input ; ls -1 | grep -v CVS )`                  files=`( cd ../input ; ls -1 | grep -v CVS )`
486                  for i in $files ; do                  for i in $files ; do
487                      if test ! -d "../input/"$i ; then                      if test ! -d "../input/"$i -a ! -f $i ; then
488                          ln -sf "../input/"$i $i                          ln -sf "../input/"$i $i
489                      fi                      fi
490                  done                  done
491              else              else
                 files=`( cd ../input ; ls -1 *.bin | grep -v CVS )`  
                 for i in $files ; do  
                     if test ! -d "../input/"$i ; then  
                         ln -sf "../input/"$i $i  
                     fi  
                 done  
492                  files=`( cd ../input_ad ; ls -1 | grep -v CVS )`                  files=`( cd ../input_ad ; ls -1 | grep -v CVS )`
493                  for i in $files ; do                  for i in $files ; do
494                      if test ! -d "../input_ad/"$i ; then                      if test ! -d "../input_ad/"$i ; then
495                          ln -sf "../input_ad/"$i $i                          ln -sf "../input_ad/"$i $i
496                      fi                      fi
497                  done                  done
498                    files=`( cd ../input ; ls -1 | grep -v CVS )`
499                    for i in $files ; do
500                        if test ! -d "../input/"$i ; then
501                         if test ! -r $i  ; then
502                            ln -sf "../input/"$i $i
503                         fi
504                        fi
505                    done
506              fi              fi
507          )          )
508      fi      fi
# Line 412  runmodel() Line 516  runmodel()
516      #  (where "$COMMAND" is relative to "directory")      #  (where "$COMMAND" is relative to "directory")
517      (      (
518          cd $1          cd $1
519          printf 'runmodel ... ' 1>&2          printf 'runmodel in %s ...' $1 1>&2
520          # make output.txt          # make output.txt
521          echo          echo
522            rm -f run.log
523            if test $OUTPUTFILE -ot $EXECUTABLE ; then
524               ( eval $COMMAND ) > run.log 2>&1
525               RETVAL=$?
526            else
527               echo " $OUTPUTFILE is up to date " > run.log 2>&1
528               RETVAL=0
529            fi
530          # echo "COMMAND='$COMMAND'"          # echo "COMMAND='$COMMAND'"
531          # echo "pwd='"`pwd`"'"          # echo "pwd='"`pwd`"'"
         ( eval $COMMAND ) >> run.log 2>&1  
         RETVAL=$?  
532          if test "x$RETVAL" = x0 ; then          if test "x$RETVAL" = x0 ; then
533                tail run.log
534              echo successful 1>&2              echo successful 1>&2
535              if test "x$ADM" = x ; then              # === Reduce the size of the testing emails!
536                  cp output.txt $CDIR"/output.txt"              # if test "x$ADM" = x ; then
537              else              #   cp output.txt $CDIR"/output.txt"
538                  cp output.txt_adm $CDIR"/output.txt_adm"              # else
539              fi              #   cp output_adm.txt $CDIR"/output_adm.txt"
540                # fi
541                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
542              return 0              return 0
543          else          else
544              tail run.log              tail run.log
545              echo failed 1>&2              echo failed 1>&2
546              cp run.log $CDIR"/run.log"              cp run.log $CDIR"/run.log"
547                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
548              return 1              return 1
549          fi          fi
550      )      )
# Line 446  createcodelet() Line 560  createcodelet()
560  #include <math.h>  #include <math.h>
561  int main( int argc, char** argv )  {  int main( int argc, char** argv )  {
562    int linnum,best,lncnt;    int linnum,best,lncnt;
563    double a,b,diff;    double a,b,abave,relerr;
564    best = -16;    best = -22;
565    lncnt = 0;    lncnt = 0;
566    while( 1 & (lncnt+=1) < 999 )  {    while( 1 & (lncnt+=1) < 999 )  {
567      scanf("%d", &linnum);      scanf("%d", &linnum);
568      if (linnum == -1)  break;      if (linnum == -1)  break;
569      scanf("%lf", &a);  scanf("%lf", &b);      scanf("%lf", &a);  scanf("%lf", &b);
570      diff = 0.5*(fabs(a)+fabs(b));      abave = 0.5*(fabs(a)+fabs(b));
571      if (diff > 1.e-12) {      if (abave > 0.0) {
572        diff=fabs(a-b)/diff;        relerr=fabs(a-b)/abave;
573        if (diff > 0.0) {        if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); }
574          linnum = (int)log10(diff);        else { linnum = -16 ; }
575          best = (best > linnum) ? best : linnum;        best = (best > linnum) ? best : linnum;
       }  
       else {  
         if (best == -16 && diff != 0)  best = -22;  
       }  
576      }      }
577    }    }
578    if (lncnt == 999) best=-29;    if (lncnt == 999) best=-29;
# Line 470  int main( int argc, char** argv )  { Line 580  int main( int argc, char** argv )  {
580    return 0;    return 0;
581  }  }
582  EOF  EOF
583      cc -o tmp_cmpnum tmp_cmpnum.c -lm      $CC -o tmp_cmpnum tmp_cmpnum.c -lm
584    
585      if [ -x ./tmp_cmpnum ]; then      if [ -x ./tmp_cmpnum ]; then
586          echo "OK"          echo "OK"
587          return 0          return 0
588      else      else
589          echo          echo
590          echo "ERROR: failed to compile comparison code"          echo "ERROR: failed to compile comparison code -- please specify"
591            echo "  a C compiler using the CC environment variable."
592          exit 1          exit 1
593      fi      fi
594  }  }
# Line 526  EOF Line 637  EOF
637    
638  scandirs()  scandirs()
639  {  {
640      if [ $# -eq 0 ]; then      if [ $# -eq 1 ]; then
641          for arg in * ; do          for arg in * ; do
642              test -d $arg/input && echo $arg              test -d $arg/$1 && echo $arg
643          done          done
644      else      else
645          echo $*          echo $*
646      fi      fi
647  }  }
648    
# Line 557  QUICK=f Line 668  QUICK=f
668  NOGENMAKE=f  NOGENMAKE=f
669  NOCLEAN=f  NOCLEAN=f
670  NODEPEND=f  NODEPEND=f
671    POSTCLEAN=f
672    
673  BASH=  BASH=
674  OPTFILE=NONE  OPTFILE=NONE
# Line 566  MPACKDIR="../tools/mpack-1.6" Line 678  MPACKDIR="../tools/mpack-1.6"
678  HAVE_MPACK=  HAVE_MPACK=
679  MPACK="$MPACKDIR/mpack"  MPACK="$MPACKDIR/mpack"
680  COMMAND=  COMMAND=
681  MAKE=make  if test "x$MAKE" = x ; then
682        MAKE=make
683    fi
684    if test "x$CC" = x ; then
685        CC=cc
686    fi
687    JOBS=
688  MPI=f  MPI=f
689    OUTDIR=
690  DELDIR=  DELDIR=
691    
692  ADM=  ADM=
693    
694    # Additional monitor types
695    PTRACERS_NUM="1 2 3 4 5"
696    
697  printf "parsing options...  "  printf "parsing options...  "
698    
699  ac_prev=  ac_prev=
# Line 621  for ac_option ; do Line 743  for ac_option ; do
743          -make=* | --make=*)          -make=* | --make=*)
744              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
745    
746            -odir | --odir)
747                ac_prev=OUTDIR ;;
748            -odir=* | --odir=*)
749                OUTDIR=$ac_optarg ;;
750    
751            -ptracers | --ptracers | -ptr | --ptr)
752                ac_prev=PTRACERS_NUM ;;
753            -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
754                PTRACERS_NUM=$ac_optarg ;;
755    
756            -j) ac_prev=JOBS ;;
757            -j=*) JOBS=$ac_optarg ;;
758    
759          -clean | --clean)          -clean | --clean)
760              CLEANUP=t ;;              CLEANUP=t ; DELDIR=t ;;
761    
762          -quick | --quick | -q | --q)          -quick | --quick | -q | --q)
763              QUICK=t ;;              QUICK=t ;;
# Line 633  for ac_option ; do Line 768  for ac_option ; do
768          -nodepend | --nodepend | -nd | --nd)          -nodepend | --nodepend | -nd | --nd)
769              NODEPEND=t ;;              NODEPEND=t ;;
770    
771            -postclean | --postclean | -pc | --pc)
772                POSTCLEAN=t ;;
773    
774          -mpi) MPI=t ;;          -mpi) MPI=t ;;
775    
776          -adm | -ad) ADM=t ;;          -adm | -ad) ADM=t ;;
# Line 667  if test "x$QUICK" = xt ; then Line 805  if test "x$QUICK" = xt ; then
805  fi  fi
806    
807  if test "x$TESTDIRS" = x ; then  if test "x$TESTDIRS" = x ; then
808      TESTDIRS=`scandirs`      if test "x$ADM" = xt ; then
809            TESTDIRS=`scandirs results_ad`
810        else
811            TESTDIRS=`scandirs results`
812        fi
813  fi  fi
814    
815  if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then  if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
816      OPTFILE=$MITGCM_OF      OPTFILE=$MITGCM_OF
817  fi  fi
818    
819    if test "x$ADM" = xt ; then
820        EXECUTABLE="mitgcmuv_ad"
821        OUTPUTFILE="output_adm.txt"
822    else
823        EXECUTABLE="mitgcmuv"
824        OUTPUTFILE="output.txt"
825    fi
826    
827  if test "x$ADM" = xt -a "x$COMMAND" = x ; then  if test "x$ADM" = xt -a "x$COMMAND" = x ; then
828      COMMAND="./mitgcmuv_ad > output.txt_adm 2>&1"      COMMAND="./$EXECUTABLE > $OUTPUTFILE"
829  fi  fi
830    
831  if test "x$COMMAND" = x ; then  if test "x$COMMAND" = x ; then
832      COMMAND="make output.txt"      COMMAND="./$EXECUTABLE > $OUTPUTFILE"
833  fi  fi
834    
835  echo "OK"  #echo "OK"
836    echo "OK (COMMAND= $COMMAND )"
837    
838  #  create the FORTRAN comparison code  #  create the FORTRAN comparison code
839  createcodelet  createcodelet
# Line 699  MACH=`hostname` Line 850  MACH=`hostname`
850  UNAMEA=`uname -a`  UNAMEA=`uname -a`
851  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
852  BASE="tr_"$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
853    if test "x$OUTDIR" != x ; then
854        BASE="tr_"$OUTDIR"_"$DATE"_"
855    fi
856  DNUM=0  DNUM=0
857  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
858  while test -e $DRESULTS ; do  while test -e $DRESULTS ; do
# Line 744  fi Line 898  fi
898  echo  echo
899  echo >> $SUMMARY  echo >> $SUMMARY
900  if test "x$ADM" = x ; then  if test "x$ADM" = x ; then
901      cat << EOF | tee -a $SUMMARY      line_0="            ----T-----  ----S-----  ----U-----  ----V-----"
902                  T           S           U           V      line_1="G D M    c        m  s        m  s        m  s        m  s"
903  G D M    c        m  s        m  s        m  s        m  s      line_2="E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  ."
904  E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .      line_3="N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d"
905  N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d      line_4="2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  ."
906  2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .      for ii in $PTRACERS_NUM ; do
907            #  tst=`eval 'echo $HAVE_PTR0'$ii`
908  EOF          #  if test "x$tst" = xt ; then
909            line_0="$line_0  --PTR 0"$ii"--"
910            line_1="$line_1        m  s"
911            line_2="$line_2  m  m  e  ."
912            line_3="$line_3  i  a  a  d"
913            line_4="$line_4  n  x  n  ."
914            #  fi
915        done
916        echo "$line_0" | tee -a $SUMMARY
917        echo "$line_1" | tee -a $SUMMARY
918        echo "$line_2" | tee -a $SUMMARY
919        echo "$line_3" | tee -a $SUMMARY
920        echo "$line_4" | tee -a $SUMMARY
921        echo " "       | tee -a $SUMMARY
922  else  else
923      echo "ADJOINT=true" >> $SUMMARY      echo "ADJOINT=true" >> $SUMMARY
924      echo >> $SUMMARY      echo >> $SUMMARY
# Line 775  for dir in $TESTDIRS ; do Line 942  for dir in $TESTDIRS ; do
942          if test -r $dir/input/Makefile ; then          if test -r $dir/input/Makefile ; then
943              ( cd $dir/input ; make CLEAN )              ( cd $dir/input ; make CLEAN )
944          fi          fi
945            (
946                cd $dir
947                rm -rf tr_run.*
948            )
949          continue          continue
950      fi      fi
951    
# Line 784  for dir in $TESTDIRS ; do Line 955  for dir in $TESTDIRS ; do
955      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
956          fout=$dir"/results/output.txt"          fout=$dir"/results/output.txt"
957      else      else
958          fout=$dir"/results_ad/output.txt_adm"          fout=$dir"/results_ad/output_adm.txt"
959      fi      fi
960      if test ! -r $fout ; then      if test ! -r $fout ; then
961          echo "can't read \"$fout\" -- skipping $dir"          echo "can't read \"$fout\" -- skipping $dir"
962          continue          continue
963      fi      fi
964        if test "x$ADM" = x ; then
965            check_for_add_mon_output  $fout
966        fi
967    
968        # Check for additional types of monitor output
969    
970      builddir="input"      builddir="input"
971      rundir="input"      rundir="input"
# Line 834  for dir in $TESTDIRS ; do Line 1010  for dir in $TESTDIRS ; do
1010      echo "Experiment:  $dir"      echo "Experiment:  $dir"
1011      echo      echo
1012      unset genmake makedepend make run      unset genmake makedepend make run
1013      results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'      results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1014    
1015      #  Create an output dir for each OPTFILE/tdir combination      #  Create an output dir for each OPTFILE/tdir combination
1016      rel_CDIR=$DRESULTS"/"$dir      rel_CDIR=$DRESULTS"/"$dir
# Line 865  for dir in $TESTDIRS ; do Line 1041  for dir in $TESTDIRS ; do
1041          echo "DATE='$DATE'" >> $CDIR"/summary.txt"          echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1042          echo "tdir='$dir'" >> $CDIR"/summary.txt"          echo "tdir='$dir'" >> $CDIR"/summary.txt"
1043    
         OLD_COMMAND=$COMMAND  
         COMMAND="./mitgcmuv > output.txt"  
1044          for ex in $extra_runs ; do          for ex in $extra_runs ; do
1045              test -e "$dir/tr_run" && rm -rf "$dir/tr_run"              unset run
1046              mkdir "$dir/tr_run"              results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1047              links=`( cd "$dir/input" > /dev/null 2>&1 ; ls -1 | grep -v CVS )`              #  Create an output dir for each OPTFILE/tdir.ex combination
1048                rel_CDIR=$DRESULTS"/"$dir"."$ex
1049                mkdir $rel_CDIR
1050                CDIR=`pwd`"/$rel_CDIR"
1051                test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1052                for ldir in input.$ex input ; do
1053                    (
1054                        cd "$dir/$ldir" > /dev/null 2>&1
1055                        ls -1 2>/dev/null \
1056                            | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1057                    ) > tr_exrun_links
1058                    (
1059                        cd "$dir/tr_run.$ex"
1060                        cat ../../tr_exrun_links | while read i ; do
1061                            if test ! "x$i" = x ; then
1062                                test ! -r $i  &&  ln -s "../"$ldir"/"$i $i
1063                            fi
1064                        done
1065                    )
1066                    test -e tr_exrun_links  &&  rm -f tr_exrun_links
1067                done
1068                ldir=build
1069              (              (
1070                  cd "$dir/tr_run"                  cd $dir/tr_run.$ex
1071                  for i in $links; do                  test ! -e mitgcmuv  &&  ln -s "../"$ldir"/"mitgcmuv .
                     ln -s ../input/$i $i  
                 done  
1072              )              )
1073              links=`( cd "$dir/input.$ex" > /dev/null 2>&1 ; ls -1 | grep -v CVS )`              runmodel $dir/tr_run.$ex && run=Y \
1074              (                  && results=`testoutput $dir tr_run.$ex "."$ex`
                 cd "$dir/tr_run"  
                 for i in $links; do  
                     test -e $i  &&  rm -f $i  
                     ln -s ../input.$ex/$i $i  
                 done  
                 ln -s ../$builddir/mitgcmuv mitgcmuv  
             )  
             runmodel $dir/tr_run && run=Y \  
                 && results=`testoutput $dir tr_run "."$ex`  
1075              fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`              fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1076              fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`              fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1077              fres="$fres.$ex"              fres="$fres.$ex"
# Line 897  for dir in $TESTDIRS ; do Line 1081  for dir in $TESTDIRS ; do
1081              echo "MACH='$MACH'" >> $CDIR"/summary.txt"              echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1082              echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"              echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1083              echo "DATE='$DATE'" >> $CDIR"/summary.txt"              echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1084              echo "tdir='$dir'" >> $CDIR"/summary.txt"              echo "tdir='$dir.$ex'" >> $CDIR"/summary.txt"
1085          done          done
         COMMAND=$OLD_COMMAND  
1086      else      else
1087          fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`          fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1088          fres=$fres"$results   $dir"          fres=$fres"$results   $dir"
# Line 910  for dir in $TESTDIRS ; do Line 1093  for dir in $TESTDIRS ; do
1093          echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"          echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1094          echo "DATE='$DATE'" >> $CDIR"/summary.txt"          echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1095          echo "tdir='$dir'" >> $CDIR"/summary.txt"          echo "tdir='$dir'" >> $CDIR"/summary.txt"
1096            grep -A3 'Seconds in section "ALL' $dir/$rundir/$OUTPUTFILE \
1097                               >> $CDIR"/summary.txt"
1098      fi      fi
1099    
1100        postclean $dir/$builddir
1101            
1102      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1103            
# Line 929  else Line 1116  else
1116      if test "x$HAVE_MPACK" = xt ; then      if test "x$HAVE_MPACK" = xt ; then
1117          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1118              && gzip $DRESULTS".tar" \              && gzip $DRESULTS".tar" \
1119              && $MPACK -s MITgcm-test -m 1500000 $DRESULTS".tar.gz" $ADDRESSES              && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1120          RETVAL=$?          RETVAL=$?
1121          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1122              echo              echo
# Line 952  fi Line 1139  fi
1139  rm -f tmp_cmpnum.c tmp_cmpnum  rm -f tmp_cmpnum.c tmp_cmpnum
1140    
1141  if test "x$CLEANUP" != xt ; then  if test "x$CLEANUP" != xt ; then
1142      cat $SUMMARY      cat $SUMMARY | sed 's/ -- -- -- --//g'
1143      if test -e tr_out.txt ; then      if test -e tr_out.txt ; then
1144          mv tr_out.txt tr_out.txt.old          mv tr_out.txt tr_out.txt.old
1145      fi      fi
1146      cat $SUMMARY > tr_out.txt      cat $SUMMARY | sed 's/ -- -- -- --//g' > tr_out.txt
1147  fi  fi
1148    
1149  if test "x$DELDIR" = xt ; then  if test "x$DELDIR" = xt ; then

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.81

  ViewVC Help
Powered by ViewVC 1.1.22