/[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.30 by edhill, Fri Dec 5 17:46:32 2003 UTC revision 1.70 by jmc, Thu Jul 28 21:12:15 2005 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"
38      echo "  (-noclean|-nc)           skip the \"make clean\" stage"      echo "  (-noclean|-nc)           skip the \"make clean\" stage"
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"
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    
54  #  build the mpack utility  #  build the mpack utility
55  build_mpack()  build_mpack()
56  {  {
57      echo -n "building the mpack utility...  "      printf "building the mpack utility...  "
58      if test ! -x "$MPACKDIR/mpack" ; then      if test ! -x "$MPACKDIR/mpack" ; then
59          if test ! -d $MPACKDIR ; then          if test ! -d $MPACKDIR ; then
60              echo              echo
# Line 54  build_mpack() Line 64  build_mpack()
64              echo              echo
65              HAVE_MPACK=f              HAVE_MPACK=f
66          fi          fi
67          echo -n "building mpack...  "          printf "building mpack...  "
68          if test "x$CC" = x ; then          if test "x$CC" = x ; then
69              export CC=cc              export CC=cc
70          fi          fi
# Line 77  build_mpack() Line 87  build_mpack()
87    
88  testoutput_for_prop()  testoutput_for_prop()
89  {  {
90      # testoutput_for_prop dir s1 label subdir      # testoutput_for_prop dir s1 label subdir extension
91      #      #
92      #  compares files in $dir/$subdir/output.txt and $dir/results/output.txt      #  compares files in $dir/$subdir/output.txt and $dir/results/output.txt
93      #  using search strings s1 and text label      #  using search strings s1 and text label
# Line 87  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 99  testoutput_for_prop() Line 109  testoutput_for_prop()
109          return 99          return 99
110      fi      fi
111      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
112          echo testoutput_for_prop: grep "$2" $1/results/output.txt 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 | 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      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
129          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2
130      fi      fi
# Line 169  testoutput_ad() Line 185  testoutput_ad()
185      rm -f t[01][56].txt t[56].txt      rm -f t[01][56].txt t[56].txt
186  }  }
187    
188    check_for_add_mon_output()
189    {
190        # Check for additional types of monitor output
191        if test "x$1" = x ; then
192            return
193        fi
194    
195        for ii in $PTRACERS_NUM ; do
196            eval "HAVE_PTR0"$ii"=f"
197        done
198    
199        ptr_add="trcstat_ptracerXX_min trcstat_ptracerXX_max"
200        ptr_add="$ptr_add trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
201        for ii in $PTRACERS_NUM ; do
202            for jj in $ptr_add ; do
203                name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
204                tst=`grep $name $1 | wc -l | awk '{print $1}'`
205                if test ! "x$tst" = x0 ; then
206                    eval "HAVE_PTR0"$ii"=t"
207                fi
208            done
209            #  eval 'echo "HAVE_PTR0'$ii' = $HAVE_PTR0'$ii'"'
210        done
211    }
212    
213  testoutput()  testoutput()
214  {  {
215      # testoutput directory subdir      # testoutput directory subdir extension
216      #      #
217      #  test output in "directory"      #  test output in "directory"
218      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
219          if [ $debug -gt 0 ]; then          if [ $debug -gt 0 ]; then
220              echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2              echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2
221          fi          fi
222          testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2; cg2dres=$?          testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2 $3; cg2dres=$?
223          if [ $debug -gt 0 ]; then          if [ $debug -gt 0 ]; then
224              echo testoutput: cg2dres=$cg2dres 1>&2              echo testoutput: cg2dres=$cg2dres 1>&2
225          fi          fi
226          testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?          testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2 $3; tmin=$?
227          testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?          testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2 $3; tmax=$?
228          testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2; tmean=$?          testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2 $3; tmean=$?
229          testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2; tsd=$?          testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2 $3; tsd=$?
230          testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?          testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2 $3; smin=$?
231          testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?          testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2 $3; smax=$?
232          testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2; smean=$?          testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2 $3; smean=$?
233          testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2; ssd=$?          testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2 $3; ssd=$?
234          testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?          testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2 $3; umin=$?
235          testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?          testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2 $3; umax=$?
236          testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2; umean=$?          testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2 $3; umean=$?
237          testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2; usd=$?          testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2 $3; usd=$?
238          testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?          testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2 $3; vmin=$?
239          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$?
240          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2; vmean=$?          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?
241          testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2; vsd=$?          testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$?
242          dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \  
243              $umin $umax $umean $usd $vmin $vmax $vmean $vsd          #  This is for PTRACERS
244            for ii in $PTRACERS_NUM ; do
245                eval `echo "p0"$ii"_min=99"`
246                eval `echo "p0"$ii"_max=99"`
247                eval `echo "p0"$ii"_mean=99"`
248                eval `echo "p0"$ii"_sd=99"`
249                tst=`eval 'echo "$HAVE_PTR0'$ii'"'`
250                #echo 'tst = '$tst
251                if test "x$tst" = xt ; then
252                    a="trcstat_ptracer0"
253                    testoutput_for_prop $1 "$a"$ii"_min"  "p0"$ii"_min"  $2 $3
254                    RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL`
255                    testoutput_for_prop $1 "$a"$ii"_max"  "p0"$ii"_max"  $2 $3
256                    RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL`
257                    testoutput_for_prop $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3
258                    RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL`
259                    testoutput_for_prop $1 "$a"$ii"_sd"   "p0"$ii"_sd"   $2 $3
260                    RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL`
261                fi
262            done
263    
264            allargs="$cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd"
265            allargs="$allargs $umin $umax $umean $usd $vmin $vmax $vmean $vsd"
266            allargs="$allargs $p01_min $p01_max $p01_mean $p01_sd"
267            allargs="$allargs $p02_min $p02_max $p02_mean $p02_sd"
268            allargs="$allargs $p03_min $p03_max $p03_mean $p03_sd"
269            allargs="$allargs $p04_min $p04_max $p04_mean $p04_sd"
270            allargs="$allargs $p05_min $p05_max $p05_mean $p05_sd"
271    
272            eval "dashnum $allargs"
273    
274      else      else
275          testoutput_ad $1 $2 "precision_grdchk_result"          testoutput_ad $1 $2 "precision_grdchk_result"
276      fi      fi
# Line 211  genmakemodel() Line 282  genmakemodel()
282      if test "x$NOGENMAKE" = xt ; then      if test "x$NOGENMAKE" = xt ; then
283          echo "genmake skipped!"          echo "genmake skipped!"
284      else      else
285          GENMAKE2="$BASH ../../../tools/genmake2"          if test "x$BASH" = x ; then
286                GENMAKE2="../../../tools/genmake2"
287            else
288                GENMAKE2="$BASH ../../../tools/genmake2 -bash $BASH"
289            fi
290          (          (
291              cd $1;              cd $1;
292              command="$GENMAKE2  -ds -m $MAKE"              command="$GENMAKE2  -ds -m $MAKE"
# Line 227  genmakemodel() Line 302  genmakemodel()
302              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
303                  command="$command -ieee"                  command="$command -ieee"
304              fi              fi
305                if test "x$MPI" = xt ; then
306                    command="$command -mpi"
307                fi
308              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
309              $command > make.log 2>&1              $command > make.log 2>&1
310              RETVAL=$?              RETVAL=$?
311              cp Makefile $CDIR              #  Reduce the size of the testing emails!
312                head -100 Makefile > $CDIR/Makefile_head
313              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
314                  tail make.log                  tail make.log
315                  echo "genmakemodel: genmake failed" 1>&2                  echo "genmakemodel: genmake failed" 1>&2
# Line 271  makeclean() Line 350  makeclean()
350      fi      fi
351  }  }
352    
353    postclean()
354    {
355        # postclean directory
356        if test "x$POSTCLEAN" = xt ; then
357            (
358                cd $1;
359                if test -r Makefile ; then
360                    $MAKE CLEAN >> /dev/null 2>&1
361                fi
362                exit 0
363            )
364        fi
365    }
366    
367  makedependmodel()  makedependmodel()
368  {  {
369      # makedependmodel directory      # makedependmodel directory
# Line 302  makemodel() Line 395  makemodel()
395          if test -r Makefile ; then          if test -r Makefile ; then
396              printf 'make ... ' 1>&2              printf 'make ... ' 1>&2
397              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
398                  $MAKE >> make.log 2>&1                  if test "x$JOBS" = x ; then
399                        $MAKE >> make.log 2>&1
400                    else
401                        $MAKE -j $JOBS >> make.log 2>&1
402                    fi
403              else              else
404                  $MAKE adall >> make.log 2>&1                  $MAKE adall >> make.log 2>&1
405              fi              fi
# Line 329  symlink_mpifiles() Line 426  symlink_mpifiles()
426      code_dir=$2      code_dir=$2
427      BUILD_DIR=$dir/$3      BUILD_DIR=$dir/$3
428      CODE_DIR=$dir/$code_dir      CODE_DIR=$dir/$code_dir
429        
430      # These are files that should replace their counter-part when using -mpi      # These are files that should replace their counter-part when using -mpi
431      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`
432    
# Line 344  symlink_mpifiles() Line 441  symlink_mpifiles()
441              RETVAL=$?              RETVAL=$?
442              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
443                  if ! test -f $BUILD_DIR/$i ; then                  if ! test -f $BUILD_DIR/$i ; then
444                  #echo Linking $name to $i                      #echo Linking $name to $i
445                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
446                  fi                  fi
447              fi              fi
448          done          done
449      else      else
450      # NO: We undo any _mpi symbolically linked files          # NO: We undo any _mpi symbolically linked files
451          for ii in $MPI_FILES ; do          for ii in $MPI_FILES ; do
452              i=`echo $ii | sed 's:^\./::'`              i=`echo $ii | sed 's:^\./::'`
453              name=`echo $i | sed 's:_mpi::' `              name=`echo $i | sed 's:_mpi::' `
454              if test -L $BUILD_DIR/$name ; then              if test -L $BUILD_DIR/$name ; then
455                  linktarg=`(cd $BUILD_DIR; readlink $name)`                  cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
456                  if test $linktarg = "../$code_dir/$name"_mpi ; then                  RETVAL=$?
457                  #echo Un-linking $name from $linktarg                  if test "x$RETVAL" = x0 ; then
458                        #echo Un-linking $name from $linktarg
459                      rm -f $BUILD_DIR/$name                      rm -f $BUILD_DIR/$name
460                  fi                  fi
461              fi              fi
# Line 377  linkdata() Line 475  linkdata()
475              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
476                  files=`( cd ../input ; ls -1 | grep -v CVS )`                  files=`( cd ../input ; ls -1 | grep -v CVS )`
477                  for i in $files ; do                  for i in $files ; do
478                      if test ! -d "../input/"$i ; then                      if test ! -d "../input/"$i -a ! -f $i ; then
479                          ln -sf "../input/"$i $i                          ln -sf "../input/"$i $i
480                      fi                      fi
481                  done                  done
# Line 409  runmodel() Line 507  runmodel()
507          cd $1          cd $1
508          printf 'runmodel ... ' 1>&2          printf 'runmodel ... ' 1>&2
509          # make output.txt          # make output.txt
510          $COMMAND >> run.log 2>&1          echo
511            rm -f run.log
512            # echo "COMMAND='$COMMAND'"
513            # echo "pwd='"`pwd`"'"
514            ( eval $COMMAND ) > run.log 2>&1
515          RETVAL=$?          RETVAL=$?
516          if test "x$RETVAL" = x0 ; then          if test "x$RETVAL" = x0 ; then
517                tail run.log
518              echo successful 1>&2              echo successful 1>&2
519              if test "x$ADM" = x ; then              # === Reduce the size of the testing emails!
520                  cp output.txt $CDIR"/output.txt"              # if test "x$ADM" = x ; then
521              else              #   cp output.txt $CDIR"/output.txt"
522                  cp output.txt_adm $CDIR"/output.txt_adm"              # else
523              fi              #   cp output.txt_adm $CDIR"/output.txt_adm"
524                # fi
525                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
526              return 0              return 0
527          else          else
528              tail run.log              tail run.log
529              echo failed 1>&2              echo failed 1>&2
530              cp run.log $CDIR"/run.log"              cp run.log $CDIR"/run.log"
531                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
532              return 1              return 1
533          fi          fi
534      )      )
# Line 432  createcodelet() Line 538  createcodelet()
538  {  {
539      # create codelet for comparing model output      # create codelet for comparing model output
540    
541      echo -n "creating the comparison code...  "      printf "creating the comparison code...  "
542      cat > tmp_cmpnum.c <<EOF      cat > tmp_cmpnum.c <<EOF
543  #include <stdio.h>  #include <stdio.h>
544  #include <math.h>  #include <math.h>
545  int main( int argc, char** argv )  {  int main( int argc, char** argv )  {
546    int linnum,best;    int linnum,best,lncnt;
547    double a,b,diff;    double a,b,abave,relerr;
548    best = -16;    best = -22;
549    while( 1 )  {    lncnt = 0;
550      while( 1 & (lncnt+=1) < 999 )  {
551      scanf("%d", &linnum);      scanf("%d", &linnum);
552      if (linnum == -1)  break;      if (linnum == -1)  break;
553      scanf("%lf", &a);  scanf("%lf", &b);      scanf("%lf", &a);  scanf("%lf", &b);
554      diff = 0.5*(fabs(a)+fabs(b));      abave = 0.5*(fabs(a)+fabs(b));
555      if (diff > 1.e-12) {      if (abave > 0.0) {
556        diff=fabs(a-b)/diff;        relerr=fabs(a-b)/abave;
557        if (diff > 0.0) {        if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); }
558          linnum = (int)log10(diff);        else { linnum = -16 ; }
559          best = (best > linnum) ? best : linnum;        best = (best > linnum) ? best : linnum;
       }  
       else {  
         if (best == -16 && diff != 0)  best = -22;  
       }  
560      }      }
561    }    }
562      if (lncnt == 999) best=-29;
563    printf("%d\n", -best);    printf("%d\n", -best);
564    return 0;    return 0;
565  }  }
566  EOF  EOF
567      cc -o tmp_cmpnum tmp_cmpnum.c -lm      $CC -o tmp_cmpnum tmp_cmpnum.c -lm
568    
569      if [ -x ./tmp_cmpnum ]; then      if [ -x ./tmp_cmpnum ]; then
570          echo "OK"          echo "OK"
571          return 0          return 0
572      else      else
573          echo          echo
574          echo "ERROR: failed to compile comparison code"          echo "ERROR: failed to compile comparison code -- please specify"
575            echo "  a C compiler using the CC environment variable."
576          exit 1          exit 1
577      fi      fi
578  }  }
# Line 536  clean=0 Line 641  clean=0
641  expts=''  expts=''
642  # ieee=1  # ieee=1
643    
644  IEEE=  IEEE=true
645  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
646      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
647  fi  fi
# Line 547  QUICK=f Line 652  QUICK=f
652  NOGENMAKE=f  NOGENMAKE=f
653  NOCLEAN=f  NOCLEAN=f
654  NODEPEND=f  NODEPEND=f
655    POSTCLEAN=f
656    
657  BASH=  BASH=
658  OPTFILE=NONE  OPTFILE=NONE
# Line 556  MPACKDIR="../tools/mpack-1.6" Line 662  MPACKDIR="../tools/mpack-1.6"
662  HAVE_MPACK=  HAVE_MPACK=
663  MPACK="$MPACKDIR/mpack"  MPACK="$MPACKDIR/mpack"
664  COMMAND=  COMMAND=
665  MAKE=make  if test "x$MAKE" = x ; then
666        MAKE=make
667    fi
668    if test "x$CC" = x ; then
669        CC=cc
670    fi
671    JOBS=
672  MPI=f  MPI=f
673    OUTDIR=
674    DELDIR=
675    
676  ADM=  ADM=
677    
678  echo -n "parsing options...  "  # Additional monitor types
679    PTRACERS_NUM="1 2 3 4 5"
680    
681    printf "parsing options...  "
682    
683  ac_prev=  ac_prev=
684  for ac_option ; do  for ac_option ; do
# Line 610  for ac_option ; do Line 727  for ac_option ; do
727          -make=* | --make=*)          -make=* | --make=*)
728              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
729    
730            -odir | --odir)
731                ac_prev=OUTDIR ;;
732            -odir=* | --odir=*)
733                OUTDIR=$ac_optarg ;;
734    
735            -ptracers | --ptracers | -ptr | --ptr)
736                ac_prev=PTRACERS_NUM ;;
737            -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
738                PTRACERS_NUM=$ac_optarg ;;
739    
740            -j) ac_prev=JOBS ;;
741            -j=*) JOBS=$ac_optarg ;;
742    
743          -clean | --clean)          -clean | --clean)
744              CLEANUP=t ;;              CLEANUP=t ; DELDIR=t ;;
745    
746          -quick | --quick | -q | --q)          -quick | --quick | -q | --q)
747              QUICK=t ;;              QUICK=t ;;
# Line 622  for ac_option ; do Line 752  for ac_option ; do
752          -nodepend | --nodepend | -nd | --nd)          -nodepend | --nodepend | -nd | --nd)
753              NODEPEND=t ;;              NODEPEND=t ;;
754    
755            -postclean | --postclean | -pc | --pc)
756                POSTCLEAN=t ;;
757    
758          -mpi) MPI=t ;;          -mpi) MPI=t ;;
759    
760          -adm | -ad) ADM=t ;;          -adm | -ad) ADM=t ;;
# Line 633  for ac_option ; do Line 766  for ac_option ; do
766          -debug) debug=1 ;;          -debug) debug=1 ;;
767          -quiet) verbose=0 ;;          -quiet) verbose=0 ;;
768    
769            -deldir | -dd) DELDIR=t ;;
770    
771          -*)          -*)
772              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
773              usage              usage
# Line 666  if test "x$ADM" = xt -a "x$COMMAND" = x Line 801  if test "x$ADM" = xt -a "x$COMMAND" = x
801  fi  fi
802    
803  if test "x$COMMAND" = x ; then  if test "x$COMMAND" = x ; then
804      COMMAND="make output.txt"      COMMAND="$MAKE output.txt"
805  fi  fi
806    
807  echo "OK"  echo "OK"
# Line 675  echo "OK" Line 810  echo "OK"
810  createcodelet  createcodelet
811    
812  #  build the mpack utility  #  build the mpack utility
813  build_mpack  if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
814        echo "skipping mpack build"
815    else
816        build_mpack
817    fi
818    
819  #  Create a uniquely named directory to store results  #  Create a uniquely named directory to store results
820  MACH=`hostname`  MACH=`hostname`
821  UNAMEA=`uname -a`  UNAMEA=`uname -a`
822  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
823  BASE="tr_"$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
824    if test "x$OUTDIR" != x ; then
825        BASE="tr_"$OUTDIR"_"$DATE"_"
826    fi
827  DNUM=0  DNUM=0
828  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
829  while test -e $DRESULTS ; do  while test -e $DRESULTS ; do
# Line 695  if test "x$RETVAL" != x0 ; then Line 837  if test "x$RETVAL" != x0 ; then
837      exit 1      exit 1
838  fi  fi
839  SUMMARY="$DRESULTS/summary.txt"  SUMMARY="$DRESULTS/summary.txt"
840  echo -n "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
841  start_date=`date`  start_date=`date`
842  echo $start_date > $SUMMARY  echo $start_date > $SUMMARY
843    
# Line 727  fi Line 869  fi
869  echo  echo
870  echo >> $SUMMARY  echo >> $SUMMARY
871  if test "x$ADM" = x ; then  if test "x$ADM" = x ; then
872      cat << EOF | tee -a $SUMMARY      line_0="            ----T-----  ----S-----  ----U-----  ----V-----"
873                  T           S           U           V      line_1="G D M    c        m  s        m  s        m  s        m  s"
874  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  ."
875  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"
876  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  ."
877  2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .      for ii in $PTRACERS_NUM ; do
878            #  tst=`eval 'echo $HAVE_PTR0'$ii`
879  EOF          #  if test "x$tst" = xt ; then
880            line_0="$line_0  --PTR 0"$ii"--"
881            line_1="$line_1        m  s"
882            line_2="$line_2  m  m  e  ."
883            line_3="$line_3  i  a  a  d"
884            line_4="$line_4  n  x  n  ."
885            #  fi
886        done
887        echo "$line_0" | tee -a $SUMMARY
888        echo "$line_1" | tee -a $SUMMARY
889        echo "$line_2" | tee -a $SUMMARY
890        echo "$line_3" | tee -a $SUMMARY
891        echo "$line_4" | tee -a $SUMMARY
892        echo " "       | tee -a $SUMMARY
893  else  else
894      echo "ADJOINT=true" >> $SUMMARY      echo "ADJOINT=true" >> $SUMMARY
895      echo >> $SUMMARY      echo >> $SUMMARY
# Line 758  for dir in $TESTDIRS ; do Line 913  for dir in $TESTDIRS ; do
913          if test -r $dir/input/Makefile ; then          if test -r $dir/input/Makefile ; then
914              ( cd $dir/input ; make CLEAN )              ( cd $dir/input ; make CLEAN )
915          fi          fi
916            (
917                cd $dir
918                rm -rf tr_run.*
919            )
920          continue          continue
921      fi      fi
922    
# Line 773  for dir in $TESTDIRS ; do Line 932  for dir in $TESTDIRS ; do
932          echo "can't read \"$fout\" -- skipping $dir"          echo "can't read \"$fout\" -- skipping $dir"
933          continue          continue
934      fi      fi
935        if test "x$ADM" = x ; then
936            check_for_add_mon_output  $fout
937        fi
938    
939        # Check for additional types of monitor output
940    
941      builddir="input"      builddir="input"
942      rundir="input"      rundir="input"
# Line 784  for dir in $TESTDIRS ; do Line 948  for dir in $TESTDIRS ; do
948          linkdata $use_seperate_build $dir/$rundir          linkdata $use_seperate_build $dir/$rundir
949      fi      fi
950            
951        #  Check whether there are "extra runs" for this testdir
952        extra_runs=
953        if test "x$ADM" = x -a "x$use_seperate_build" = x1 ; then
954            ex_run_dirs=`( cd $dir ; echo input.* )`
955            echo "ex_run_dirs='$ex_run_dirs'"
956            for exd in $ex_run_dirs ; do
957                name=`echo $exd | sed -e 's/input.//g'`
958                outf="$dir/results/output.txt.$name"
959                if test -f $outf -a -r $outf ; then
960                    extra_runs="$extra_runs $name"
961                fi
962            done
963        fi
964    
965      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
966          code_dir=code          code_dir=code
967          CODE_DIR=$dir/code          CODE_DIR=$dir/code
# Line 826  for dir in $TESTDIRS ; do Line 1004  for dir in $TESTDIRS ; do
1004      echo      echo
1005      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
1006          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1007            echo
1008            echo "$fres" >> $SUMMARY
1009            echo "fresults='$fres'" > $CDIR"/summary.txt"
1010            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1011            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1012            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1013            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1014    
1015            for ex in $extra_runs ; do
1016                test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1017                for ldir in input.$ex input ; do
1018                    (
1019                        cd "$dir/$ldir" > /dev/null 2>&1
1020                        ls -1 2>/dev/null \
1021                            | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1022                    ) > tr_exrun_links
1023                    (
1024                        cd "$dir/tr_run.$ex"
1025                        cat ../../tr_exrun_links | while read i ; do
1026                            if test ! "x$i" = x ; then
1027                                test ! -r $i  &&  ln -s "../"$ldir"/"$i $i
1028                            fi
1029                        done
1030                    )
1031                    test -e tr_exrun_links  &&  rm -f tr_exrun_links
1032                done
1033                ldir=build
1034                (
1035                    cd "$dir/$ldir" > /dev/null 2>&1
1036                    ls -1 Makefile *.[fFhco] mitgcmuv  2>/dev/null \
1037                        | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1038                ) > tr_exrun_links
1039                (
1040                    cd "$dir/tr_run.$ex"
1041                        cat ../../tr_exrun_links | while read i ; do
1042                            if test ! "x$i" = x ; then
1043                                test ! -r $i  &&  ln -s "../"$ldir"/"$i $i
1044                            fi
1045                        done
1046                )
1047                test -e tr_exrun_links  &&  rm -f tr_exrun_links
1048                runmodel $dir/tr_run.$ex && run=Y \
1049                    && results=`testoutput $dir tr_run.$ex "."$ex`
1050                fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1051                fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1052                fres="$fres.$ex"
1053                echo
1054                echo "$fres" >> $SUMMARY
1055                echo "fresults='$fres'" > $CDIR"/summary.txt"
1056                echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1057                echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1058                echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1059                echo "tdir='$dir'" >> $CDIR"/summary.txt"
1060            done
1061      else      else
1062          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}`
1063          fres=$fres"$results   $dir"          fres=$fres"$results   $dir"
1064            echo
1065            echo "$fres" >> $SUMMARY
1066            echo "fresults='$fres'" > $CDIR"/summary.txt"
1067            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1068            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1069            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1070            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1071      fi      fi
1072      echo  
1073      echo "$fres" >> $SUMMARY      postclean $dir/$builddir
     echo "fresults='$fres'" > $CDIR"/summary.txt"  
     echo "MACH='$MACH'" >> $CDIR"/summary.txt"  
     echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"  
     echo "DATE='$DATE'" >> $CDIR"/summary.txt"  
     echo "tdir='$dir'" >> $CDIR"/summary.txt"  
1074            
1075      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1076            
1077  done  done
1078    
1079  echo -n "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
1080  echo $start_date >> $SUMMARY  echo $start_date >> $SUMMARY
1081  echo -n "End time:    " >> $SUMMARY  printf "End time:    " >> $SUMMARY
1082  date >> $SUMMARY  date >> $SUMMARY
1083    
1084  #  If addresses were supplied and mpack built successfully, then try  #  If addresses were supplied and mpack built successfully, then try
# Line 855  else Line 1089  else
1089      if test "x$HAVE_MPACK" = xt ; then      if test "x$HAVE_MPACK" = xt ; then
1090          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1091              && gzip $DRESULTS".tar" \              && gzip $DRESULTS".tar" \
1092              && $MPACK -s MITgcm-test -m 1500000 $DRESULTS".tar.gz" $ADDRESSES              && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1093          RETVAL=$?          RETVAL=$?
1094          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1095              echo              echo
# Line 878  fi Line 1112  fi
1112  rm -f tmp_cmpnum.c tmp_cmpnum  rm -f tmp_cmpnum.c tmp_cmpnum
1113    
1114  if test "x$CLEANUP" != xt ; then  if test "x$CLEANUP" != xt ; then
1115      cat $SUMMARY      cat $SUMMARY | sed 's/ -- -- -- --//g'
1116      if test -e tr_out.txt ; then      if test -e tr_out.txt ; then
1117          mv tr_out.txt tr_out.txt.old          mv tr_out.txt tr_out.txt.old
1118      fi      fi
1119      cat $SUMMARY > tr_out.txt      cat $SUMMARY | sed 's/ -- -- -- --//g' > tr_out.txt
1120    fi
1121    
1122    if test "x$DELDIR" = xt ; then
1123        rm -rf $DRESULTS
1124  fi  fi
1125    

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

  ViewVC Help
Powered by ViewVC 1.1.22