/[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.72 by edhill, Tue Aug 16 17:50:31 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        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 169  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      # testoutput directory subdir extension
226      #      #
227      #  test output in "directory"      #  test output in "directory"
228      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
229          if [ $debug -gt 0 ]; then          if [ $debug -gt 0 ]; then
230              echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2              echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2
231          fi          fi
232          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=$?
233          if [ $debug -gt 0 ]; then          if [ $debug -gt 0 ]; then
234              echo testoutput: cg2dres=$cg2dres 1>&2              echo testoutput: cg2dres=$cg2dres 1>&2
235          fi          fi
236          testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?          testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2 $3; tmin=$?
237          testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?          testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2 $3; tmax=$?
238          testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2; tmean=$?          testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2 $3; tmean=$?
239          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=$?
240          testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?          testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2 $3; smin=$?
241          testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?          testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2 $3; smax=$?
242          testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2; smean=$?          testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2 $3; smean=$?
243          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=$?
244          testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?          testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2 $3; umin=$?
245          testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?          testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2 $3; umax=$?
246          testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2; umean=$?          testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2 $3; umean=$?
247          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=$?
248          testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?          testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2 $3; vmin=$?
249          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$?
250          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2; 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; 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 211  genmakemodel() Line 292  genmakemodel()
292      if test "x$NOGENMAKE" = xt ; then      if test "x$NOGENMAKE" = xt ; then
293          echo "genmake skipped!"          echo "genmake skipped!"
294      else      else
295          GENMAKE2="$BASH ../../../tools/genmake2"          if test "x$BASH" = x ; then
296                GENMAKE2="../../../tools/genmake2"
297            else
298                GENMAKE2="$BASH ../../../tools/genmake2 -bash $BASH"
299            fi
300          (          (
301              cd $1;              cd $1;
302              command="$GENMAKE2  -ds -m $MAKE"              command="$GENMAKE2  -ds -m $MAKE"
# Line 227  genmakemodel() Line 312  genmakemodel()
312              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
313                  command="$command -ieee"                  command="$command -ieee"
314              fi              fi
315                if test "x$MPI" = xt ; then
316                    command="$command -mpi"
317                fi
318              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
319              $command > make.log 2>&1              $command > make.log 2>&1
320              RETVAL=$?              RETVAL=$?
321              cp Makefile $CDIR              #  Reduce the size of the testing emails!
322                head -100 Makefile > $CDIR/Makefile_head
323              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
324                  tail make.log                  tail make.log
325                  echo "genmakemodel: genmake failed" 1>&2                  echo "genmakemodel: genmake failed" 1>&2
# Line 271  makeclean() Line 360  makeclean()
360      fi      fi
361  }  }
362    
363    postclean()
364    {
365        # postclean directory
366        if test "x$POSTCLEAN" = xt ; then
367            (
368                cd $1;
369                if test -r Makefile ; then
370                    $MAKE CLEAN >> /dev/null 2>&1
371                fi
372                exit 0
373            )
374        fi
375    }
376    
377  makedependmodel()  makedependmodel()
378  {  {
379      # makedependmodel directory      # makedependmodel directory
# Line 302  makemodel() Line 405  makemodel()
405          if test -r Makefile ; then          if test -r Makefile ; then
406              printf 'make ... ' 1>&2              printf 'make ... ' 1>&2
407              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
408                  $MAKE >> make.log 2>&1                  if test "x$JOBS" = x ; then
409                        $MAKE >> make.log 2>&1
410                    else
411                        $MAKE -j $JOBS >> make.log 2>&1
412                    fi
413              else              else
414                  $MAKE adall >> make.log 2>&1                  $MAKE adall >> make.log 2>&1
415              fi              fi
# Line 329  symlink_mpifiles() Line 436  symlink_mpifiles()
436      code_dir=$2      code_dir=$2
437      BUILD_DIR=$dir/$3      BUILD_DIR=$dir/$3
438      CODE_DIR=$dir/$code_dir      CODE_DIR=$dir/$code_dir
439        
440      # These are files that should replace their counter-part when using -mpi      # These are files that should replace their counter-part when using -mpi
441      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`
442    
# Line 344  symlink_mpifiles() Line 451  symlink_mpifiles()
451              RETVAL=$?              RETVAL=$?
452              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
453                  if ! test -f $BUILD_DIR/$i ; then                  if ! test -f $BUILD_DIR/$i ; then
454                  #echo Linking $name to $i                      #echo Linking $name to $i
455                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
456                  fi                  fi
457              fi              fi
458          done          done
459      else      else
460      # NO: We undo any _mpi symbolically linked files          # NO: We undo any _mpi symbolically linked files
461          for ii in $MPI_FILES ; do          for ii in $MPI_FILES ; do
462              i=`echo $ii | sed 's:^\./::'`              i=`echo $ii | sed 's:^\./::'`
463              name=`echo $i | sed 's:_mpi::' `              name=`echo $i | sed 's:_mpi::' `
464              if test -L $BUILD_DIR/$name ; then              if test -L $BUILD_DIR/$name ; then
465                  linktarg=`(cd $BUILD_DIR; readlink $name)`                  cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
466                  if test $linktarg = "../$code_dir/$name"_mpi ; then                  RETVAL=$?
467                  #echo Un-linking $name from $linktarg                  if test "x$RETVAL" = x0 ; then
468                        #echo Un-linking $name from $linktarg
469                      rm -f $BUILD_DIR/$name                      rm -f $BUILD_DIR/$name
470                  fi                  fi
471              fi              fi
# Line 377  linkdata() Line 485  linkdata()
485              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
486                  files=`( cd ../input ; ls -1 | grep -v CVS )`                  files=`( cd ../input ; ls -1 | grep -v CVS )`
487                  for i in $files ; do                  for i in $files ; do
488                      if test ! -d "../input/"$i ; then                      if test ! -d "../input/"$i -a ! -f $i ; then
489                          ln -sf "../input/"$i $i                          ln -sf "../input/"$i $i
490                      fi                      fi
491                  done                  done
# Line 409  runmodel() Line 517  runmodel()
517          cd $1          cd $1
518          printf 'runmodel ... ' 1>&2          printf 'runmodel ... ' 1>&2
519          # make output.txt          # make output.txt
520          $COMMAND >> run.log 2>&1          echo
521            rm -f run.log
522            # echo "COMMAND='$COMMAND'"
523            # echo "pwd='"`pwd`"'"
524            ( eval $COMMAND ) > run.log 2>&1
525          RETVAL=$?          RETVAL=$?
526          if test "x$RETVAL" = x0 ; then          if test "x$RETVAL" = x0 ; then
527                tail run.log
528              echo successful 1>&2              echo successful 1>&2
529              if test "x$ADM" = x ; then              # === Reduce the size of the testing emails!
530                  cp output.txt $CDIR"/output.txt"              # if test "x$ADM" = x ; then
531              else              #   cp output.txt $CDIR"/output.txt"
532                  cp output.txt_adm $CDIR"/output.txt_adm"              # else
533              fi              #   cp output.txt_adm $CDIR"/output.txt_adm"
534                # fi
535                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
536              return 0              return 0
537          else          else
538              tail run.log              tail run.log
539              echo failed 1>&2              echo failed 1>&2
540              cp run.log $CDIR"/run.log"              cp run.log $CDIR"/run.log"
541                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
542              return 1              return 1
543          fi          fi
544      )      )
# Line 432  createcodelet() Line 548  createcodelet()
548  {  {
549      # create codelet for comparing model output      # create codelet for comparing model output
550    
551      echo -n "creating the comparison code...  "      printf "creating the comparison code...  "
552      cat > tmp_cmpnum.c <<EOF      cat > tmp_cmpnum.c <<EOF
553  #include <stdio.h>  #include <stdio.h>
554  #include <math.h>  #include <math.h>
555  int main( int argc, char** argv )  {  int main( int argc, char** argv )  {
556    int linnum,best;    int linnum,best,lncnt;
557    double a,b,diff;    double a,b,abave,relerr;
558    best = -16;    best = -22;
559    while( 1 )  {    lncnt = 0;
560      while( 1 & (lncnt+=1) < 999 )  {
561      scanf("%d", &linnum);      scanf("%d", &linnum);
562      if (linnum == -1)  break;      if (linnum == -1)  break;
563      scanf("%lf", &a);  scanf("%lf", &b);      scanf("%lf", &a);  scanf("%lf", &b);
564      diff = 0.5*(fabs(a)+fabs(b));      abave = 0.5*(fabs(a)+fabs(b));
565      if (diff > 1.e-12) {      if (abave > 0.0) {
566        diff=fabs(a-b)/diff;        relerr=fabs(a-b)/abave;
567        if (diff > 0.0) {        if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); }
568          linnum = (int)log10(diff);        else { linnum = -16 ; }
569          best = (best > linnum) ? best : linnum;        best = (best > linnum) ? best : linnum;
       }  
       else {  
         if (best == -16 && diff != 0)  best = -22;  
       }  
570      }      }
571    }    }
572      if (lncnt == 999) best=-29;
573    printf("%d\n", -best);    printf("%d\n", -best);
574    return 0;    return 0;
575  }  }
576  EOF  EOF
577      cc -o tmp_cmpnum tmp_cmpnum.c -lm      $CC -o tmp_cmpnum tmp_cmpnum.c -lm
578    
579      if [ -x ./tmp_cmpnum ]; then      if [ -x ./tmp_cmpnum ]; then
580          echo "OK"          echo "OK"
581          return 0          return 0
582      else      else
583          echo          echo
584          echo "ERROR: failed to compile comparison code"          echo "ERROR: failed to compile comparison code -- please specify"
585            echo "  a C compiler using the CC environment variable."
586          exit 1          exit 1
587      fi      fi
588  }  }
# Line 536  clean=0 Line 651  clean=0
651  expts=''  expts=''
652  # ieee=1  # ieee=1
653    
654  IEEE=  IEEE=true
655  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
656      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
657  fi  fi
# Line 547  QUICK=f Line 662  QUICK=f
662  NOGENMAKE=f  NOGENMAKE=f
663  NOCLEAN=f  NOCLEAN=f
664  NODEPEND=f  NODEPEND=f
665    POSTCLEAN=f
666    
667  BASH=  BASH=
668  OPTFILE=NONE  OPTFILE=NONE
# Line 556  MPACKDIR="../tools/mpack-1.6" Line 672  MPACKDIR="../tools/mpack-1.6"
672  HAVE_MPACK=  HAVE_MPACK=
673  MPACK="$MPACKDIR/mpack"  MPACK="$MPACKDIR/mpack"
674  COMMAND=  COMMAND=
675  MAKE=make  if test "x$MAKE" = x ; then
676        MAKE=make
677    fi
678    if test "x$CC" = x ; then
679        CC=cc
680    fi
681    JOBS=
682  MPI=f  MPI=f
683    OUTDIR=
684    DELDIR=
685    
686  ADM=  ADM=
687    
688  echo -n "parsing options...  "  # Additional monitor types
689    PTRACERS_NUM="1 2 3 4 5"
690    
691    printf "parsing options...  "
692    
693  ac_prev=  ac_prev=
694  for ac_option ; do  for ac_option ; do
# Line 610  for ac_option ; do Line 737  for ac_option ; do
737          -make=* | --make=*)          -make=* | --make=*)
738              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
739    
740            -odir | --odir)
741                ac_prev=OUTDIR ;;
742            -odir=* | --odir=*)
743                OUTDIR=$ac_optarg ;;
744    
745            -ptracers | --ptracers | -ptr | --ptr)
746                ac_prev=PTRACERS_NUM ;;
747            -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
748                PTRACERS_NUM=$ac_optarg ;;
749    
750            -j) ac_prev=JOBS ;;
751            -j=*) JOBS=$ac_optarg ;;
752    
753          -clean | --clean)          -clean | --clean)
754              CLEANUP=t ;;              CLEANUP=t ; DELDIR=t ;;
755    
756          -quick | --quick | -q | --q)          -quick | --quick | -q | --q)
757              QUICK=t ;;              QUICK=t ;;
# Line 622  for ac_option ; do Line 762  for ac_option ; do
762          -nodepend | --nodepend | -nd | --nd)          -nodepend | --nodepend | -nd | --nd)
763              NODEPEND=t ;;              NODEPEND=t ;;
764    
765            -postclean | --postclean | -pc | --pc)
766                POSTCLEAN=t ;;
767    
768          -mpi) MPI=t ;;          -mpi) MPI=t ;;
769    
770          -adm | -ad) ADM=t ;;          -adm | -ad) ADM=t ;;
# Line 633  for ac_option ; do Line 776  for ac_option ; do
776          -debug) debug=1 ;;          -debug) debug=1 ;;
777          -quiet) verbose=0 ;;          -quiet) verbose=0 ;;
778    
779            -deldir | -dd) DELDIR=t ;;
780    
781          -*)          -*)
782              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
783              usage              usage
# Line 666  if test "x$ADM" = xt -a "x$COMMAND" = x Line 811  if test "x$ADM" = xt -a "x$COMMAND" = x
811  fi  fi
812    
813  if test "x$COMMAND" = x ; then  if test "x$COMMAND" = x ; then
814      COMMAND="make output.txt"      COMMAND="$MAKE output.txt"
815  fi  fi
816    
817  echo "OK"  echo "OK"
# Line 675  echo "OK" Line 820  echo "OK"
820  createcodelet  createcodelet
821    
822  #  build the mpack utility  #  build the mpack utility
823  build_mpack  if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
824        echo "skipping mpack build"
825    else
826        build_mpack
827    fi
828    
829  #  Create a uniquely named directory to store results  #  Create a uniquely named directory to store results
830  MACH=`hostname`  MACH=`hostname`
831  UNAMEA=`uname -a`  UNAMEA=`uname -a`
832  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
833  BASE="tr_"$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
834    if test "x$OUTDIR" != x ; then
835        BASE="tr_"$OUTDIR"_"$DATE"_"
836    fi
837  DNUM=0  DNUM=0
838  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
839  while test -e $DRESULTS ; do  while test -e $DRESULTS ; do
# Line 695  if test "x$RETVAL" != x0 ; then Line 847  if test "x$RETVAL" != x0 ; then
847      exit 1      exit 1
848  fi  fi
849  SUMMARY="$DRESULTS/summary.txt"  SUMMARY="$DRESULTS/summary.txt"
850  echo -n "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
851  start_date=`date`  start_date=`date`
852  echo $start_date > $SUMMARY  echo $start_date > $SUMMARY
853    
# Line 727  fi Line 879  fi
879  echo  echo
880  echo >> $SUMMARY  echo >> $SUMMARY
881  if test "x$ADM" = x ; then  if test "x$ADM" = x ; then
882      cat << EOF | tee -a $SUMMARY      line_0="            ----T-----  ----S-----  ----U-----  ----V-----"
883                  T           S           U           V      line_1="G D M    c        m  s        m  s        m  s        m  s"
884  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  ."
885  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"
886  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  ."
887  2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .      for ii in $PTRACERS_NUM ; do
888            #  tst=`eval 'echo $HAVE_PTR0'$ii`
889  EOF          #  if test "x$tst" = xt ; then
890            line_0="$line_0  --PTR 0"$ii"--"
891            line_1="$line_1        m  s"
892            line_2="$line_2  m  m  e  ."
893            line_3="$line_3  i  a  a  d"
894            line_4="$line_4  n  x  n  ."
895            #  fi
896        done
897        echo "$line_0" | tee -a $SUMMARY
898        echo "$line_1" | tee -a $SUMMARY
899        echo "$line_2" | tee -a $SUMMARY
900        echo "$line_3" | tee -a $SUMMARY
901        echo "$line_4" | tee -a $SUMMARY
902        echo " "       | tee -a $SUMMARY
903  else  else
904      echo "ADJOINT=true" >> $SUMMARY      echo "ADJOINT=true" >> $SUMMARY
905      echo >> $SUMMARY      echo >> $SUMMARY
# Line 758  for dir in $TESTDIRS ; do Line 923  for dir in $TESTDIRS ; do
923          if test -r $dir/input/Makefile ; then          if test -r $dir/input/Makefile ; then
924              ( cd $dir/input ; make CLEAN )              ( cd $dir/input ; make CLEAN )
925          fi          fi
926            (
927                cd $dir
928                rm -rf tr_run.*
929            )
930          continue          continue
931      fi      fi
932    
# Line 773  for dir in $TESTDIRS ; do Line 942  for dir in $TESTDIRS ; do
942          echo "can't read \"$fout\" -- skipping $dir"          echo "can't read \"$fout\" -- skipping $dir"
943          continue          continue
944      fi      fi
945        if test "x$ADM" = x ; then
946            check_for_add_mon_output  $fout
947        fi
948    
949        # Check for additional types of monitor output
950    
951      builddir="input"      builddir="input"
952      rundir="input"      rundir="input"
# Line 784  for dir in $TESTDIRS ; do Line 958  for dir in $TESTDIRS ; do
958          linkdata $use_seperate_build $dir/$rundir          linkdata $use_seperate_build $dir/$rundir
959      fi      fi
960            
961        #  Check whether there are "extra runs" for this testdir
962        extra_runs=
963        if test "x$ADM" = x -a "x$use_seperate_build" = x1 ; then
964            ex_run_dirs=`( cd $dir ; echo input.* )`
965            echo "ex_run_dirs='$ex_run_dirs'"
966            for exd in $ex_run_dirs ; do
967                name=`echo $exd | sed -e 's/input.//g'`
968                outf="$dir/results/output.txt.$name"
969                if test -f $outf -a -r $outf ; then
970                    extra_runs="$extra_runs $name"
971                fi
972            done
973        fi
974    
975      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
976          code_dir=code          code_dir=code
977          CODE_DIR=$dir/code          CODE_DIR=$dir/code
# Line 826  for dir in $TESTDIRS ; do Line 1014  for dir in $TESTDIRS ; do
1014      echo      echo
1015      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
1016          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1017            echo
1018            echo "$fres" >> $SUMMARY
1019            echo "fresults='$fres'" > $CDIR"/summary.txt"
1020            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1021            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1022            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1023            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1024    
1025            for ex in $extra_runs ; do
1026                test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1027                for ldir in input.$ex input ; do
1028                    (
1029                        cd "$dir/$ldir" > /dev/null 2>&1
1030                        ls -1 2>/dev/null \
1031                            | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1032                    ) > tr_exrun_links
1033                    (
1034                        cd "$dir/tr_run.$ex"
1035                        cat ../../tr_exrun_links | while read i ; do
1036                            if test ! "x$i" = x ; then
1037                                test ! -r $i  &&  ln -s "../"$ldir"/"$i $i
1038                            fi
1039                        done
1040                    )
1041                    test -e tr_exrun_links  &&  rm -f tr_exrun_links
1042                done
1043                ldir=build
1044                (
1045                    cd "$dir/$ldir" > /dev/null 2>&1
1046                    ls -1 Makefile *.[fFhco] mitgcmuv  2>/dev/null \
1047                        | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1048                ) > tr_exrun_links
1049                (
1050                    cd "$dir/tr_run.$ex"
1051                        cat ../../tr_exrun_links | while read i ; do
1052                            if test ! "x$i" = x ; then
1053                                test ! -r $i  &&  ln -s "../"$ldir"/"$i $i
1054                            fi
1055                        done
1056                )
1057                test -e tr_exrun_links  &&  rm -f tr_exrun_links
1058                runmodel $dir/tr_run.$ex && run=Y \
1059                    && results=`testoutput $dir tr_run.$ex "."$ex`
1060                fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1061                fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1062                fres="$fres.$ex"
1063                echo
1064                echo "$fres" >> $SUMMARY
1065                echo "fresults='$fres'" > $CDIR"/summary.txt"
1066                echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1067                echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1068                echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1069                echo "tdir='$dir'" >> $CDIR"/summary.txt"
1070            done
1071      else      else
1072          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}`
1073          fres=$fres"$results   $dir"          fres=$fres"$results   $dir"
1074            echo
1075            echo "$fres" >> $SUMMARY
1076            echo "fresults='$fres'" > $CDIR"/summary.txt"
1077            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1078            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1079            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1080            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1081      fi      fi
1082      echo  
1083      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"  
1084            
1085      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1086            
1087  done  done
1088    
1089  echo -n "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
1090  echo $start_date >> $SUMMARY  echo $start_date >> $SUMMARY
1091  echo -n "End time:    " >> $SUMMARY  printf "End time:    " >> $SUMMARY
1092  date >> $SUMMARY  date >> $SUMMARY
1093    
1094  #  If addresses were supplied and mpack built successfully, then try  #  If addresses were supplied and mpack built successfully, then try
# Line 855  else Line 1099  else
1099      if test "x$HAVE_MPACK" = xt ; then      if test "x$HAVE_MPACK" = xt ; then
1100          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1101              && gzip $DRESULTS".tar" \              && gzip $DRESULTS".tar" \
1102              && $MPACK -s MITgcm-test -m 1500000 $DRESULTS".tar.gz" $ADDRESSES              && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1103          RETVAL=$?          RETVAL=$?
1104          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1105              echo              echo
# Line 878  fi Line 1122  fi
1122  rm -f tmp_cmpnum.c tmp_cmpnum  rm -f tmp_cmpnum.c tmp_cmpnum
1123    
1124  if test "x$CLEANUP" != xt ; then  if test "x$CLEANUP" != xt ; then
1125      cat $SUMMARY      cat $SUMMARY | sed 's/ -- -- -- --//g'
1126      if test -e tr_out.txt ; then      if test -e tr_out.txt ; then
1127          mv tr_out.txt tr_out.txt.old          mv tr_out.txt tr_out.txt.old
1128      fi      fi
1129      cat $SUMMARY > tr_out.txt      cat $SUMMARY | sed 's/ -- -- -- --//g' > tr_out.txt
1130    fi
1131    
1132    if test "x$DELDIR" = xt ; then
1133        rm -rf $DRESULTS
1134  fi  fi
1135    

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

  ViewVC Help
Powered by ViewVC 1.1.22