/[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.32 by edhill, Sun Dec 7 07:06:13 2003 UTC revision 1.87 by jmc, Mon Jul 31 20:48:41 2006 UTC
# Line 11  usage() Line 11  usage()
11      echo      echo
12      echo "where possible OPTIONS are:"      echo "where possible OPTIONS are:"
13      echo "  (-help|-h)               print usage"      echo "  (-help|-h)               print usage"
14      echo "  (-mpi)                   use MPI input files"      echo "  (-mth)                   run multi threaded (using eedata.mth)"
15        echo "  (-mpi)                   compile and run using MPI"
16      echo "  (-ieee|-noieee)          if possible, use IEEE compiler flags"      echo "  (-ieee|-noieee)          if possible, use IEEE compiler flags"
17      echo "                             (DEF=\"noieee\")"      echo "                             (DEF=\"-ieee\")"
18      echo "  (-optfile=|-of=)STRING   list of optfiles to use"      echo "  (-optfile=|-of=)STRING   list of optfiles to use"
19      echo "  (-a|-addr) STRING        list of email recipients"      echo "  (-a|-addr) STRING        list of email recipients"
20      echo "                             (DEF=\"edhill@mitgcm.org\")"      echo "                             (DEF=\"edhill@mitgcm.org\")"
21      echo "  (-t|-tdir) STRING        list of test dirs to use"      echo "  (-t|-tdir) STRING        list of group and/or exp. dirs to test"
22      echo "                             (DEF=\"\" which builds all)"      echo "                             (recognized groups: basic, tutorials)"
23        echo "                             (DEF=\"\" which test all)"
24      echo "  (-b|-bash) STRING        preferred location of a \"bash\" or"      echo "  (-b|-bash) STRING        preferred location of a \"bash\" or"
25      echo "                             Bourne-compatible \"sh\" shell"      echo "                             Bourne-compatible \"sh\" shell"
26      echo "                             (DEF=\"\" for \"bash\")"      echo "                             (DEF=\"\" for \"bash\")"
# Line 27  usage() Line 29  usage()
29      echo "                             (DEF=\"make output.txt\")"      echo "                             (DEF=\"make output.txt\")"
30      echo "  (-m|-make) STRING        command to use for \"make\""      echo "  (-m|-make) STRING        command to use for \"make\""
31      echo "                             (DEF=\"make\")"      echo "                             (DEF=\"make\")"
32        echo "  (-odir) STRING           used to build output directory name"
33        echo "                             (DEF=\"hostname\")"
34        echo "  (-ptracers|-ptr) STRING  specify which ptracers to test"
35        echo "                             (DEF=\"1 2 3 4 5\")"
36        echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"
37      echo "  (-clean)                 *ONLY* run \"make CLEAN\""      echo "  (-clean)                 *ONLY* run \"make CLEAN\""
38      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""
39      echo "  (-nogenmake|-ng)         skip the genmake stage"      echo "  (-nogenmake|-ng)         skip the genmake stage"
40      echo "  (-noclean|-nc)           skip the \"make clean\" stage"      echo "  (-noclean|-nc)           skip the \"make clean\" stage"
41      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"
42        echo "  (-deldir|-dd)            on success, delete the output directory"
43      echo      echo
44      echo "and where STRING follows a whitespace-delimited format"      echo "and where STRING can be a whitespace-delimited list"
45      echo "such as:"      echo "such as:"
46        echo
47      echo "  -t 'exp0 exp2 exp3' "      echo "  -t 'exp0 exp2 exp3' "
48      echo "  -addr='abc@123.com testing@home.org'"      echo "  -addr='abc@123.com testing@home.org'"
49      echo      echo
50        echo "provided that the expression is properly quoted within the current"
51        echo "shell (note the use of single quotes to protect white space)."
52        echo
53      exit 1      exit 1
54  }  }
55    
56  #  build the mpack utility  #  build the mpack utility
57  build_mpack()  build_mpack()
58  {  {
59      echo -n "building the mpack utility...  "      printf "building the mpack utility...  "
60      if test ! -x "$MPACKDIR/mpack" ; then      if test ! -x "$MPACKDIR/mpack" ; then
61          if test ! -d $MPACKDIR ; then          if test ! -d $MPACKDIR ; then
62              echo              echo
# Line 54  build_mpack() Line 66  build_mpack()
66              echo              echo
67              HAVE_MPACK=f              HAVE_MPACK=f
68          fi          fi
69          echo -n "building mpack...  "          printf "building mpack...  "
70          if test "x$CC" = x ; then          if test "x$CC" = x ; then
71              export CC=cc              export CC=cc
72          fi          fi
# Line 77  build_mpack() Line 89  build_mpack()
89    
90  testoutput_for_prop()  testoutput_for_prop()
91  {  {
92      # testoutput_for_prop dir s1 label subdir      # testoutput_for_prop dir s1 label subdir extension
93      #      #
94      #  compares files in $dir/$subdir/output.txt and $dir/results/output.txt      #  compares files $dir/$subdir/$OUTPUTFILE and $dir/results/output.txt
95      #  using search strings s1 and text label      #  using search strings s1 and text label
96    
97      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
98          echo testoutput_for_prop: grep "$2" $1/$4/output.txt 1>&2          echo testoutput_for_prop: grep "$2" $1/$4/$OUTPUTFILE 1>&2
99      fi      fi
100      if [ -r $1/$4/output.txt ]; then      if [ -r $1/$4/$OUTPUTFILE ]; then
101          grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt          grep "$2" $1/$4/$OUTPUTFILE | sed 's/.*=//' | cat -n > tmp1.txt
102          lncnt=`wc -l tmp1.txt | awk '{print $1}' `          lncntA=`wc -l tmp1.txt | awk '{print $1}' `
103          if [ $lncnt -lt 3 ]; then          if [ $lncntA -lt 3 ]; then
104              if [ $verbose -gt 0 ]; then              if [ $verbose -gt 0 ]; then
105                  echo Not enough lines of output when searching for "$2" 1>&2                  echo Not enough lines of output when searching for "$2" 1>&2
106              fi              fi
107              return 99              return 99
108          fi          fi
109      else      else
110          echo testoutput_for_prop: output.txt from model run was not readable 1>&2          echo testoutput_for_prop: $OUTPUTFILE from model run was not readable 1>&2
111          return 99          return 99
112      fi      fi
113      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
114          echo testoutput_for_prop: grep "$2" $1/results/output.txt 1>&2          echo testoutput_for_prop: grep "$2" $1/results/output.$5 1>&2
115      fi      fi
116      grep "$2" $1/results/output.txt | sed 's/.*=//' | cat -n > tmp2.txt      grep "$2" $1/results/output.$5 | sed 's/.*=//' | cat -n > tmp2.txt
117      lncnt=`wc -l tmp2.txt | awk '{print $1}' `      lncntB=`wc -l tmp2.txt | awk '{print $1}' `
118      if [ $lncnt -lt 3 ]; then      if [ $lncntB -lt 3 ]; then
119          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
120              echo Not enough lines of output when searching for "$2" 1>&2              echo Not enough lines of output when searching for "$2" 1>&2
121          fi          fi
122          return 99          return 99
123      fi      fi
124        if [ $lncntA -ne $lncntB ]; then
125            if [ $verbose -gt 0 ]; then
126                echo Not same Nb of lines when searching for "$2" ":" $lncntA $lncntB 1>&2
127            fi
128            return 99
129        fi
130        has_nan=`cat tmp1.txt | grep -i nan | wc -l`
131        if [ $has_nan -gt 0  ] ; then
132            echo testoutput_for_prop: $OUTPUTFILE contains $has_nan NaN values  1>&2
133            return 99
134        fi
135        has_inf=`cat tmp1.txt | grep -i inf | wc -l`
136        if [ $has_inf -gt 0  ] ; then
137            echo testoutput_for_prop: $OUTPUTFILE contains $has_inf Inf values  1>&2
138            return 99
139        fi
140      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
141          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2
142      fi      fi
# Line 155  dashnum() Line 183  dashnum()
183    
184  testoutput_ad()  testoutput_ad()
185  {  {
186      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
187      grep $3 $1/$2/output.txt_adm | awk '{print NR " " $5}' > t15.txt      grep $3 $1/$2/$OUTPUTFILE | awk '{print NR " " $5}' > t15.txt
188      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
189      grep $3 $1/$2/output.txt_adm | awk '{print NR " " $6}' > t16.txt      grep $3 $1/$2/$OUTPUTFILE | awk '{print NR " " $6}' > t16.txt
190      join t05.txt t15.txt > t5.txt      join t05.txt t15.txt > t5.txt
191      join t06.txt t16.txt > t6.txt      join t06.txt t16.txt > t6.txt
192      echo "-1" >> t5.txt      echo "-1" >> t5.txt
# Line 169  testoutput_ad() Line 197  testoutput_ad()
197      rm -f t[01][56].txt t[56].txt      rm -f t[01][56].txt t[56].txt
198  }  }
199    
200    check_for_add_mon_output()
201    {
202        # Check for additional types of monitor output
203        if test "x$1" = x ; then
204            return
205        fi
206    
207        for ii in $PTRACERS_NUM ; do
208            eval "HAVE_PTR0"$ii"=f"
209        done
210    
211        ptr_add="trcstat_ptracerXX_min trcstat_ptracerXX_max"
212        ptr_add="$ptr_add trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
213        for ii in $PTRACERS_NUM ; do
214            for jj in $ptr_add ; do
215                name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
216                tst=`grep $name $1 | wc -l | awk '{print $1}'`
217                if test ! "x$tst" = x0 ; then
218                    eval "HAVE_PTR0"$ii"=t"
219                fi
220            done
221            #  eval 'echo "HAVE_PTR0'$ii' = $HAVE_PTR0'$ii'"'
222        done
223    }
224    
225  testoutput()  testoutput()
226  {  {
227      # testoutput directory subdir      # testoutput directory subdir extension
228      #      #
229      #  test output in "directory"      #  test output in "directory"
230      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
231          if [ $debug -gt 0 ]; then          if [ $debug -gt 0 ]; then
232              echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2              echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2
233          fi          fi
234          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=$?
235          if [ $debug -gt 0 ]; then          if [ $debug -gt 0 ]; then
236              echo testoutput: cg2dres=$cg2dres 1>&2              echo testoutput: cg2dres=$cg2dres 1>&2
237          fi          fi
238          testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?          testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2 $3; tmin=$?
239          testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?          testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2 $3; tmax=$?
240          testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2; tmean=$?          testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2 $3; tmean=$?
241          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=$?
242          testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?          testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2 $3; smin=$?
243          testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?          testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2 $3; smax=$?
244          testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2; smean=$?          testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2 $3; smean=$?
245          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=$?
246          testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?          testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2 $3; umin=$?
247          testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?          testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2 $3; umax=$?
248          testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2; umean=$?          testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2 $3; umean=$?
249          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=$?
250          testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?          testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2 $3; vmin=$?
251          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$?
252          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2; vmean=$?          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?
253          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=$?
254          dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \  
255              $umin $umax $umean $usd $vmin $vmax $vmean $vsd          #  This is for PTRACERS
256            for ii in $PTRACERS_NUM ; do
257                eval `echo "p0"$ii"_min=99"`
258                eval `echo "p0"$ii"_max=99"`
259                eval `echo "p0"$ii"_mean=99"`
260                eval `echo "p0"$ii"_sd=99"`
261                tst=`eval 'echo "$HAVE_PTR0'$ii'"'`
262                #echo 'tst = '$tst
263                if test "x$tst" = xt ; then
264                    a="trcstat_ptracer0"
265                    testoutput_for_prop $1 "$a"$ii"_min"  "p0"$ii"_min"  $2 $3
266                    RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL`
267                    testoutput_for_prop $1 "$a"$ii"_max"  "p0"$ii"_max"  $2 $3
268                    RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL`
269                    testoutput_for_prop $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3
270                    RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL`
271                    testoutput_for_prop $1 "$a"$ii"_sd"   "p0"$ii"_sd"   $2 $3
272                    RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL`
273                fi
274            done
275    
276            allargs="$cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd"
277            allargs="$allargs $umin $umax $umean $usd $vmin $vmax $vmean $vsd"
278            allargs="$allargs $p01_min $p01_max $p01_mean $p01_sd"
279            allargs="$allargs $p02_min $p02_max $p02_mean $p02_sd"
280            allargs="$allargs $p03_min $p03_max $p03_mean $p03_sd"
281            allargs="$allargs $p04_min $p04_max $p04_mean $p04_sd"
282            allargs="$allargs $p05_min $p05_max $p05_mean $p05_sd"
283    
284            eval "dashnum $allargs"
285    
286      else      else
287          testoutput_ad $1 $2 "precision_grdchk_result"          testoutput_ad $1 $2 "precision_grdchk_result"
288      fi      fi
# Line 211  genmakemodel() Line 294  genmakemodel()
294      if test "x$NOGENMAKE" = xt ; then      if test "x$NOGENMAKE" = xt ; then
295          echo "genmake skipped!"          echo "genmake skipped!"
296      else      else
297          GENMAKE2="$BASH ../../../tools/genmake2"          if test "x$BASH" = x ; then
298                GENMAKE2="../../../tools/genmake2"
299            else
300                GENMAKE2="$BASH ../../../tools/genmake2 -bash $BASH"
301            fi
302          (          (
303              cd $1;              cd $1;
304              command="$GENMAKE2  -ds -m $MAKE"              command="$GENMAKE2  -ds -m $MAKE"
# Line 219  genmakemodel() Line 306  genmakemodel()
306                  command="$command --mods=../code"                  command="$command --mods=../code"
307              else              else
308                  command="$command --mods=../code_ad"                  command="$command --mods=../code_ad"
                 command="$command -adof=../../../tools/adjoint_options/adjoint_staf"  
309              fi              fi
310              if test "x$OPTFILE" != xNONE ; then              if test "x$OPTFILE" != xNONE ; then
311                  command="$command --optfile=$OPTFILE"                  command="$command --optfile=$OPTFILE"
# Line 227  genmakemodel() Line 313  genmakemodel()
313              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
314                  command="$command -ieee"                  command="$command -ieee"
315              fi              fi
316                if test "x$MPI" = xt ; then
317                    command="$command -mpi"
318                fi
319              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
320              $command > make.log 2>&1              $command > make.log 2>&1
321              RETVAL=$?              RETVAL=$?
322              cp Makefile $CDIR              #  Reduce the size of the testing emails!
323                head -100 Makefile > $CDIR/Makefile_head
324              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
325                  tail make.log                  tail make.log
326                  echo "genmakemodel: genmake failed" 1>&2                  echo "genmakemodel: genmake failed" 1>&2
# Line 247  makeclean() Line 337  makeclean()
337  {  {
338      # makeclean directory      # makeclean directory
339      if test "x$NOCLEAN" = xt ; then      if test "x$NOCLEAN" = xt ; then
340          echo "make CLEAN skipped!"          echo "make Clean skipped!"
341      else      else
342          (          (
343              cd $1;              cd $1;
344              if test -e output.txt ; then              #if test -e $OUTPUTFILE ; then rm -f $OUTPUTFILE ; fi
                 rm -f output.txt  
             fi  
             printf 'make CLEAN ... ' 2>&1  
345              if test -r Makefile ; then              if test -r Makefile ; then
346                  $MAKE CLEAN >> make.log 2>&1                  printf 'clean build-dir: make Clean ... ' 2>&1
347                    $MAKE Clean >> make.log 2>&1
348                  RETVAL=$?                  RETVAL=$?
349                  if test "x$RETVAL" != x0 ; then                  if test "x$RETVAL" != x0 ; then
350                      tail make.log                      tail make.log
351                      echo "makeclean: \"make CLEAN\" failed" 1>&2                      echo "makeclean: \"make Clean\" failed" 1>&2
352                      cp make.log $CDIR"/make.log"                      cp make.log $CDIR"/make.log"
353                      return 1                      return 1
354                  fi                  fi
# Line 271  makeclean() Line 359  makeclean()
359      fi      fi
360  }  }
361    
362    run_clean()
363    {
364        # run_clean directory
365        if test "x$NOCLEAN" = xt ; then
366            echo "run_clean skipped!"
367        else
368            (
369                cd $1;
370                printf 'clean run-dir ... ' 2>&1
371                # part of what is done after "make clean" when doing "make CLEAN"
372                find . -name "*.meta" -exec rm {} \;
373                find . -name "*.data" -exec rm {} \;
374                find . -name "fort.*" -exec rm {} \;
375                find . -type l -exec rm {} \;
376                rm -f $EXECUTABLE *.txt STD* *diagnostics.log datetime
377                rm -rf mnc_test_*
378                echo successful 1>&2
379                exit 0
380            )
381        fi
382    }
383    
384  makedependmodel()  makedependmodel()
385  {  {
386      # makedependmodel directory      # makedependmodel directory
# Line 302  makemodel() Line 412  makemodel()
412          if test -r Makefile ; then          if test -r Makefile ; then
413              printf 'make ... ' 1>&2              printf 'make ... ' 1>&2
414              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
415                  $MAKE >> make.log 2>&1                  if test "x$JOBS" = x ; then
416                        $MAKE >> make.log 2>&1
417                    else
418                        $MAKE -j $JOBS >> make.log 2>&1
419                    fi
420              else              else
421                  $MAKE adall >> make.log 2>&1                  $MAKE adall >> make.log 2>&1
422              fi              fi
# Line 329  symlink_mpifiles() Line 443  symlink_mpifiles()
443      code_dir=$2      code_dir=$2
444      BUILD_DIR=$dir/$3      BUILD_DIR=$dir/$3
445      CODE_DIR=$dir/$code_dir      CODE_DIR=$dir/$code_dir
446        
447      # These are files that should replace their counter-part when using -mpi      # These are files that should replace their counter-part when using -mpi
448      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`
449    
# Line 344  symlink_mpifiles() Line 458  symlink_mpifiles()
458              RETVAL=$?              RETVAL=$?
459              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
460                  if ! test -f $BUILD_DIR/$i ; then                  if ! test -f $BUILD_DIR/$i ; then
461                  #echo Linking $name to $i                      #echo Linking $name to $i
462                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
463                  fi                  fi
464              fi              fi
465          done          done
466      else      else
467      # NO: We undo any _mpi symbolically linked files          # NO: We undo any _mpi symbolically linked files
468          for ii in $MPI_FILES ; do          for ii in $MPI_FILES ; do
469              i=`echo $ii | sed 's:^\./::'`              i=`echo $ii | sed 's:^\./::'`
470              name=`echo $i | sed 's:_mpi::' `              name=`echo $i | sed 's:_mpi::' `
471              if test -L $BUILD_DIR/$name ; then              if test -L $BUILD_DIR/$name ; then
472                  linktarg=`(cd $BUILD_DIR; readlink $name)`                  cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
473                  if test $linktarg = "../$code_dir/$name"_mpi ; then                  RETVAL=$?
474                  #echo Un-linking $name from $linktarg                  if test "x$RETVAL" = x0 ; then
475                        #echo Un-linking $name from $linktarg
476                      rm -f $BUILD_DIR/$name                      rm -f $BUILD_DIR/$name
477                  fi                  fi
478              fi              fi
# Line 368  symlink_mpifiles() Line 483  symlink_mpifiles()
483    
484  linkdata()  linkdata()
485  {  {
486      # linkdata flag      # linkdata run_dir input_dir_1 input_dir_2 ...
487      #      #
488      # symbolically link data files to run directory      # symbolically link data files to run directory
489      if test "x$1" = x1 ; then      if test -d $1 ; then
490          (          (
491              cd $2              cd $1 ; shift
492              if test "x$ADM" = x ; then              if test -r "../"$1"/eedata.mth" ; then
493                  files=`( cd ../input ; ls -1 | grep -v CVS )`              # found eedata.mth in 1rst input dir and it is readable
494                  for i in $files ; do                  if test "x$MULTI_THREAD" = "xt" ; then
495                      if test ! -d "../input/"$i ; then                  # multi-threaded test: remove symbolic link & link eedata.mth
496                          ln -sf "../input/"$i $i                      if test -h eedata ; then rm -f eedata ; fi
497                        if test ! -r eedata ; then
498                            ln -sf "../"$1"/eedata.mth" eedata ;
499                            printf 'eedata.mth ' 1>&2
500                      fi                      fi
501                  done                  else
502              else                  # not multi-threaded test: remove eedata symbolic link
503                  files=`( cd ../input ; ls -1 *.bin | grep -v CVS )`                      if test -h eedata ; then rm -f eedata ; fi
504                  for i in $files ; do                  fi
                     if test ! -d "../input/"$i ; then  
                         ln -sf "../input/"$i $i  
                     fi  
                 done  
                 files=`( cd ../input_ad ; ls -1 | grep -v CVS )`  
                 for i in $files ; do  
                     if test ! -d "../input_ad/"$i ; then  
                         ln -sf "../input_ad/"$i $i  
                     fi  
                 done  
505              fi              fi
506                for ldir in $* ; do
507                    if test -d "../"$ldir ; then
508                        printf 'ldir='${ldir} 1>&2
509                        files=`( cd "../"$ldir ; ls -1 | grep -v CVS )`
510                        for i in $files ; do
511                            if test ! -d "../"$ldir/$i ; then
512                                if test ! -r $i  ; then
513                                    printf ' '$i 1>&2
514                                    ln -sf "../"$ldir"/"$i $i
515                                fi
516                            fi
517                        done
518                        if test -x "../"$ldir"/"prepare_run ; then
519                            "../"$ldir"/"prepare_run
520                        fi
521                        printf ' ; ' 1>&2
522                    fi
523                done
524          )          )
525      fi      fi
526  }  }
# Line 407  runmodel() Line 533  runmodel()
533      #  (where "$COMMAND" is relative to "directory")      #  (where "$COMMAND" is relative to "directory")
534      (      (
535          cd $1          cd $1
536          printf 'runmodel ... ' 1>&2          printf 'runmodel in %s ...' $1 1>&2
537          # make output.txt          # make output.txt
538          $COMMAND >> run.log 2>&1          echo
539          RETVAL=$?          rm -f run.log
540          if test "x$RETVAL" = x0 ; then          if test ! -x $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then
541              echo successful 1>&2              echo " link" $EXECUTABLE "from dir ../"$builddir > run.log
542              if test "x$ADM" = x ; then              ln -sf "../"$builddir"/"$EXECUTABLE .
543                  cp output.txt $CDIR"/output.txt"          else
544                touch run.log
545            fi
546            if test ! -x $EXECUTABLE ; then
547                    echo " no executable:" $EXECUTABLE >> run.log
548                    RETVAL=8
549            else
550                if test $OUTPUTFILE -ot $EXECUTABLE ; then
551                    ( eval $COMMAND ) >> run.log 2>&1
552                    RETVAL=$?
553              else              else
554                  cp output.txt_adm $CDIR"/output.txt_adm"                  echo " $OUTPUTFILE is up to date " >> run.log 2>&1
555                    RETVAL=0
556              fi              fi
557            fi
558            # echo "COMMAND='$COMMAND'"
559            # echo "pwd='"`pwd`"'"
560            if test "x$RETVAL" = x0 ; then
561                tail run.log
562                echo successful 1>&2
563                # === Reduce the size of the testing emails!
564                #cp $OUTPUTFILE $CDIR"/"$OUTPUTFILE
565                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
566              return 0              return 0
567          else          else
568              tail run.log              tail run.log
569              echo failed 1>&2              echo failed 1>&2
570              cp run.log $CDIR"/run.log"              cp run.log $CDIR"/run.log"
571                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
572              return 1              return 1
573          fi          fi
574      )      )
# Line 432  createcodelet() Line 578  createcodelet()
578  {  {
579      # create codelet for comparing model output      # create codelet for comparing model output
580    
581      echo -n "creating the comparison code...  "      printf "creating the comparison code...  "
582      cat > tmp_cmpnum.c <<EOF      cat > tmp_cmpnum.c <<EOF
583  #include <stdio.h>  #include <stdio.h>
584  #include <math.h>  #include <math.h>
585  int main( int argc, char** argv )  {  int main( int argc, char** argv )  {
586    int linnum,best;    int linnum,best,lncnt;
587    double a,b,diff;    double a,b,abave,relerr;
588    best = -16;    best = -22;
589    while( 1 )  {    lncnt = 0;
590      while( 1 & (lncnt+=1) < 999 )  {
591      scanf("%d", &linnum);      scanf("%d", &linnum);
592      if (linnum == -1)  break;      if (linnum == -1)  break;
593      scanf("%lf", &a);  scanf("%lf", &b);      scanf("%lf", &a);  scanf("%lf", &b);
594      diff = 0.5*(fabs(a)+fabs(b));      abave = 0.5*(fabs(a)+fabs(b));
595      if (diff > 1.e-12) {      if (abave > 0.0) {
596        diff=fabs(a-b)/diff;        relerr=fabs(a-b)/abave;
597        if (diff > 0.0) {        if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); }
598          linnum = (int)log10(diff);        else { linnum = -16 ; }
599          best = (best > linnum) ? best : linnum;        best = (best > linnum) ? best : linnum;
       }  
       else {  
         if (best == -16 && diff != 0)  best = -22;  
       }  
600      }      }
601    }    }
602      if (lncnt == 999) best=-29;
603    printf("%d\n", -best);    printf("%d\n", -best);
604    return 0;    return 0;
605  }  }
606  EOF  EOF
607      cc -o tmp_cmpnum tmp_cmpnum.c -lm      $CC -o tmp_cmpnum tmp_cmpnum.c -lm
608    
609      if [ -x ./tmp_cmpnum ]; then      if [ -x ./tmp_cmpnum ]; then
610          echo "OK"          echo "OK"
611          return 0          return 0
612      else      else
613          echo          echo
614          echo "ERROR: failed to compile comparison code"          echo "ERROR: failed to compile comparison code -- please specify"
615            echo "  a C compiler using the CC environment variable."
616          exit 1          exit 1
617      fi      fi
618  }  }
# Line 516  EOF Line 661  EOF
661    
662  scandirs()  scandirs()
663  {  {
664      if [ $# -eq 0 ]; then      if [ $# -eq 1 ]; then
665          for arg in * ; do          for arg in * ; do
666              test -d $arg/input && echo $arg              test -d $arg/$1 && echo $arg
667          done          done
668      else      else
669          echo $*          echo $*
670      fi      fi
671  }  }
672    
# Line 536  clean=0 Line 681  clean=0
681  expts=''  expts=''
682  # ieee=1  # ieee=1
683    
684  IEEE=  IEEE=true
685  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
686      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
687  fi  fi
# Line 547  QUICK=f Line 692  QUICK=f
692  NOGENMAKE=f  NOGENMAKE=f
693  NOCLEAN=f  NOCLEAN=f
694  NODEPEND=f  NODEPEND=f
695    POSTCLEAN=f
696    
697  BASH=  BASH=
698  OPTFILE=NONE  OPTFILE=NONE
# Line 556  MPACKDIR="../tools/mpack-1.6" Line 702  MPACKDIR="../tools/mpack-1.6"
702  HAVE_MPACK=  HAVE_MPACK=
703  MPACK="$MPACKDIR/mpack"  MPACK="$MPACKDIR/mpack"
704  COMMAND=  COMMAND=
705  MAKE=make  if test "x$MAKE" = x ; then
706        MAKE=make
707    fi
708    if test "x$CC" = x ; then
709        CC=cc
710    fi
711    JOBS=
712  MPI=f  MPI=f
713    MULTI_THREAD=f
714    OUTDIR=
715    DELDIR=
716    
717  ADM=  ADM=
718    
719  echo -n "parsing options...  "  # Additional monitor types
720    PTRACERS_NUM="1 2 3 4 5"
721    
722    printf "parsing options...  "
723    
724  ac_prev=  ac_prev=
725  for ac_option ; do  for ac_option ; do
# Line 610  for ac_option ; do Line 768  for ac_option ; do
768          -make=* | --make=*)          -make=* | --make=*)
769              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
770    
771            -odir | --odir)
772                ac_prev=OUTDIR ;;
773            -odir=* | --odir=*)
774                OUTDIR=$ac_optarg ;;
775    
776            -ptracers | --ptracers | -ptr | --ptr)
777                ac_prev=PTRACERS_NUM ;;
778            -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
779                PTRACERS_NUM=$ac_optarg ;;
780    
781            -j) ac_prev=JOBS ;;
782            -j=*) JOBS=$ac_optarg ;;
783    
784          -clean | --clean)          -clean | --clean)
785              CLEANUP=t ;;              CLEANUP=t ; DELDIR=t ;;
786    
787          -quick | --quick | -q | --q)          -quick | --quick | -q | --q)
788              QUICK=t ;;              QUICK=t ;;
# Line 622  for ac_option ; do Line 793  for ac_option ; do
793          -nodepend | --nodepend | -nd | --nd)          -nodepend | --nodepend | -nd | --nd)
794              NODEPEND=t ;;              NODEPEND=t ;;
795    
796            -postclean | --postclean | -pc | --pc)
797                POSTCLEAN=t ;;
798    
799          -mpi) MPI=t ;;          -mpi) MPI=t ;;
800    
801            -mth) MULTI_THREAD=t ;;
802    
803          -adm | -ad) ADM=t ;;          -adm | -ad) ADM=t ;;
804    
805          -ieee) IEEE=true ;;          -ieee) IEEE=true ;;
# Line 633  for ac_option ; do Line 809  for ac_option ; do
809          -debug) debug=1 ;;          -debug) debug=1 ;;
810          -quiet) verbose=0 ;;          -quiet) verbose=0 ;;
811    
812            -deldir | -dd) DELDIR=t ;;
813    
814          -*)          -*)
815              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
816              usage              usage
# Line 654  if test "x$QUICK" = xt ; then Line 832  if test "x$QUICK" = xt ; then
832  fi  fi
833    
834  if test "x$TESTDIRS" = x ; then  if test "x$TESTDIRS" = x ; then
835      TESTDIRS=`scandirs`      if test "x$ADM" = xt ; then
836            TESTDIRS=`scandirs results_ad`
837        else
838            TESTDIRS=`scandirs results`
839        fi
840    else
841        #- expand group of experiments:
842        LIST=" "
843        for xx in $TESTDIRS
844        do
845          case $xx in
846            'basic') LIST=${LIST}" aim.5l_cs hs94.128x64x5 ideal_2D_oce"
847                     LIST=${LIST}" lab_sea tutorial_baroclinic_gyre"
848                     LIST=${LIST}" tutorial_global_oce_latlon tutorial_plume_on_slope"
849                    ;;
850            'tutorials')
851                     LIST=${LIST}" "`ls | grep 'tutorial_'` ;;
852            *)       LIST=${LIST}" "$xx ;;
853          esac
854        done
855        #echo 'LIST='${LIST}'<'
856        #- remove duplicate and non-directory:
857        TESTDIRS=" "
858        for xx in $LIST
859        do
860            if test -d $xx ; then
861                yy=`echo $TESTDIRS | grep -c $xx`
862                if test $yy = 0 ; then TESTDIRS=${TESTDIRS}" "$xx ; fi
863            else
864                echo " -- skip \"$xx\" : not a directory !"
865            fi
866        done
867  fi  fi
868    #echo 'TESTDIRS='${TESTDIRS}'<'
869    
870  if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then  if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
871      OPTFILE=$MITGCM_OF      OPTFILE=$MITGCM_OF
872  fi  fi
873    
874  if test "x$ADM" = xt -a "x$COMMAND" = x ; then  if test "x$ADM" = xt ; then
875      COMMAND="./mitgcmuv_ad > output.txt_adm 2>&1"      EXECUTABLE="mitgcmuv_ad"
876        OUTPUTFILE="output_adm.txt"
877    else
878        EXECUTABLE="mitgcmuv"
879        OUTPUTFILE="output.txt"
880  fi  fi
881    
882  if test "x$COMMAND" = x ; then  if test "x$COMMAND" = x ; then
883      COMMAND="make output.txt"      COMMAND="./$EXECUTABLE > $OUTPUTFILE"
884    fi
885    if test "x$MPI" = xt ; then
886        OUTPUTFILE="STDOUT.0000"
887  fi  fi
888    
889  echo "OK"  #echo "OK"
890    echo "OK (COMMAND= $COMMAND )"
891    
892  #  create the FORTRAN comparison code  #  create the FORTRAN comparison code
893  createcodelet  createcodelet
# Line 686  MACH=`hostname` Line 904  MACH=`hostname`
904  UNAMEA=`uname -a`  UNAMEA=`uname -a`
905  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
906  BASE="tr_"$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
907    if test "x$OUTDIR" != x ; then
908        BASE="tr_"$OUTDIR"_"$DATE"_"
909    fi
910  DNUM=0  DNUM=0
911  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
912  while test -e $DRESULTS ; do  while test -e $DRESULTS ; do
# Line 699  if test "x$RETVAL" != x0 ; then Line 920  if test "x$RETVAL" != x0 ; then
920      exit 1      exit 1
921  fi  fi
922  SUMMARY="$DRESULTS/summary.txt"  SUMMARY="$DRESULTS/summary.txt"
923  echo -n "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
924  start_date=`date`  start_date=`date`
925  echo $start_date > $SUMMARY  echo $start_date > $SUMMARY
926    
# Line 731  fi Line 952  fi
952  echo  echo
953  echo >> $SUMMARY  echo >> $SUMMARY
954  if test "x$ADM" = x ; then  if test "x$ADM" = x ; then
955      cat << EOF | tee -a $SUMMARY      line_0="            ----T-----  ----S-----  ----U-----  ----V-----"
956                  T           S           U           V      line_1="G D M    c        m  s        m  s        m  s        m  s"
957  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  ."
958  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"
959  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  ."
960  2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .      for ii in $PTRACERS_NUM ; do
961            #  tst=`eval 'echo $HAVE_PTR0'$ii`
962  EOF          #  if test "x$tst" = xt ; then
963            line_0="$line_0  --PTR 0"$ii"--"
964            line_1="$line_1        m  s"
965            line_2="$line_2  m  m  e  ."
966            line_3="$line_3  i  a  a  d"
967            line_4="$line_4  n  x  n  ."
968            #  fi
969        done
970        echo "$line_0" | tee -a $SUMMARY
971        echo "$line_1" | tee -a $SUMMARY
972        echo "$line_2" | tee -a $SUMMARY
973        echo "$line_3" | tee -a $SUMMARY
974        echo "$line_4" | tee -a $SUMMARY
975        echo " "       | tee -a $SUMMARY
976  else  else
977      echo "ADJOINT=true" >> $SUMMARY      echo "ADJOINT=true" >> $SUMMARY
978      echo >> $SUMMARY      echo >> $SUMMARY
# Line 757  for dir in $TESTDIRS ; do Line 991  for dir in $TESTDIRS ; do
991      #  Cleanup only!      #  Cleanup only!
992      if test "x$CLEANUP" = xt ; then      if test "x$CLEANUP" = xt ; then
993          if test -r $dir/build/Makefile ; then          if test -r $dir/build/Makefile ; then
994                echo '  ------  clean dir:' $dir/build
995              ( cd $dir/build ; make CLEAN )              ( cd $dir/build ; make CLEAN )
996          fi          fi
997          if test -r $dir/input/Makefile ; then          if test -d $dir/run/CVS ; then
998              ( cd $dir/input ; make CLEAN )              echo '  ------  clean dir:' $dir/run
999                run_clean $dir/run
1000          fi          fi
1001            (
1002                cd $dir
1003                rm -rf tr_run.*
1004            )
1005          continue          continue
1006      fi      fi
1007    
# Line 771  for dir in $TESTDIRS ; do Line 1011  for dir in $TESTDIRS ; do
1011      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
1012          fout=$dir"/results/output.txt"          fout=$dir"/results/output.txt"
1013      else      else
1014          fout=$dir"/results_ad/output.txt_adm"          fout=$dir"/results_ad/output_adm.txt"
1015      fi      fi
1016      if test ! -r $fout ; then      if test ! -r $fout ; then
1017          echo "can't read \"$fout\" -- skipping $dir"          echo "can't read \"$fout\" -- skipping $dir"
1018          continue          continue
1019      fi      fi
1020        if test "x$ADM" = x ; then
1021            check_for_add_mon_output  $fout
1022        fi
1023    
1024      builddir="input"      # Check for additional types of monitor output
1025      rundir="input"  
1026      use_seperate_build=0      builddir="build"
1027      if test -d $dir/build -a -r $dir/build ; then      if test ! -d $dir/$builddir ; then mkdir $dir/$builddir ; fi
1028          builddir="build"      rundir="run"
1029          rundir="build"     #rundir=$builddir
1030          use_seperate_build=1      if test ! -d $dir/$rundir ; then
1031          linkdata $use_seperate_build $dir/$rundir          rundir=$builddir
1032      fi      fi
1033            
1034      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
1035          code_dir=code          code_dir=code
1036          CODE_DIR=$dir/code          CODE_DIR=$dir/code
1037            input_dirs='input'
1038      else      else
1039          code_dir=code_ad          code_dir=code_ad
1040          CODE_DIR=$dir/code_ad          CODE_DIR=$dir/code_ad
1041            input_dirs='input_ad input'
1042      fi      fi
1043      BUILD_DIR=$dir/$builddir      BUILD_DIR=$dir/$builddir
1044    
# Line 801  for dir in $TESTDIRS ; do Line 1046  for dir in $TESTDIRS ; do
1046          echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"          echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"
1047          continue          continue
1048      fi      fi
1049        if test ! -r $dir"/input/eedata.mth" -a "x$MULTI_THREAD" = "xt" ; then
1050            echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir"
1051            continue
1052        fi
1053    
1054        #  Check whether there are "extra runs" for this testdir
1055        extra_runs=
1056        if test "x$ADM" = x ; then
1057            ex_run_dirs=`( cd $dir ; echo input.* )`
1058            #echo "ex_run_dirs='$ex_run_dirs'"
1059            for exd in $ex_run_dirs ; do
1060                name=`echo $exd | sed -e 's/input.//g'`
1061                outf="$dir/results/output.$name.txt"
1062                if test -f $outf -a -r $outf ; then
1063                    if test "x$MULTI_THREAD" = "xt" ; then
1064                        if test -r $dir"/"$exd"/eedata.mth" ; then
1065                            extra_runs="$extra_runs $name"
1066                        #else echo $dir"/"$exd"/eedata.mth: not found"
1067                        fi
1068                    else
1069                        extra_runs="$extra_runs $name"
1070                    fi
1071                fi
1072            done
1073        fi
1074    
1075      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1076      echo      echo
1077      echo "Experiment:  $dir"      if test "x$extra_runs" = "x" ; then
1078           echo "Experiment:  $dir"
1079        else
1080           echo "Experiment:  $dir ; extra_runs=$extra_runs"
1081        fi
1082      echo      echo
1083      unset genmake makedepend make run      unset genmake makedepend make run
1084      results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'      results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1085    
1086      #  Create an output dir for each OPTFILE/tdir combination      #  Create an output dir for each OPTFILE/tdir combination
1087      rel_CDIR=$DRESULTS"/"$dir      rel_CDIR=$DRESULTS"/"$dir
# Line 815  for dir in $TESTDIRS ; do Line 1089  for dir in $TESTDIRS ; do
1089      CDIR=`pwd`"/$rel_CDIR"      CDIR=`pwd`"/$rel_CDIR"
1090            
1091      if test "x$CLEANUP" = xt ; then      if test "x$CLEANUP" = xt ; then
1092          makeclean $dir/$builddir          echo '====>>> this is to check that we never go through this part <<< ==='
1093            makeclean $dir/$builddir \
1094                && run_clean $dir/$rundir
1095      else      else
1096          genmakemodel $dir/$builddir && genmake=Y \          genmakemodel $dir/$builddir && genmake=Y \
1097              && makeclean $dir/$builddir \              && makeclean $dir/$builddir \
1098                && run_clean $dir/$rundir \
1099              && symlink_mpifiles $dir $code_dir $builddir \              && symlink_mpifiles $dir $code_dir $builddir \
1100              && makedependmodel $dir/$builddir && makedepend=Y \              && makedependmodel $dir/$builddir && makedepend=Y \
1101              && makemodel $dir/$builddir && make=Y \              && makemodel $dir/$builddir && make=Y \
1102              && linkdata $use_seperate_build $dir/$rundir \              && linkdata $dir/$rundir $input_dirs \
1103              && runmodel $dir/$rundir && run=Y \              && runmodel $dir/$rundir && run=Y \
1104              && results=`testoutput $dir $rundir`              && results=`testoutput $dir $rundir "txt"`
1105      fi      fi
1106            
1107      echo      echo
1108      if test "x$ADM" = x ; then      if test "x$ADM" = x ; then
1109          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1110            echo
1111            echo "$fres" >> $SUMMARY
1112            echo "fresults='$fres'" > $CDIR"/summary.txt"
1113            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1114            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1115            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1116            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1117    
1118            for ex in $extra_runs ; do
1119                unset run
1120                results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1121                #  Create an output dir for each OPTFILE/tdir.ex combination
1122                rel_CDIR=$DRESULTS"/"$dir"."$ex
1123                mkdir $rel_CDIR
1124                CDIR=`pwd`"/$rel_CDIR"
1125                test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1126                run_clean $dir/tr_run.$ex
1127                linkdata $dir/tr_run.$ex input.$ex input
1128                runmodel $dir/tr_run.$ex && run=Y \
1129                    && results=`testoutput $dir tr_run.$ex ${ex}".txt"`
1130                fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1131                fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1132                fres="$fres.$ex"
1133                echo
1134                echo "$fres" >> $SUMMARY
1135                echo "fresults='$fres'" > $CDIR"/summary.txt"
1136                echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1137                echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1138                echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1139                echo "tdir='$dir.$ex'" >> $CDIR"/summary.txt"
1140                if test "x$POSTCLEAN" = xt ; then
1141                    run_clean $dir/tr_run.$ex
1142                fi
1143            done
1144      else      else
1145          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}`
1146          fres=$fres"$results   $dir"          fres=$fres"$results   $dir"
1147            echo
1148            echo "$fres" >> $SUMMARY
1149            echo "fresults='$fres'" > $CDIR"/summary.txt"
1150            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1151            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1152            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1153            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1154            grep -A3 'Seconds in section "ALL' $dir/$rundir/$OUTPUTFILE \
1155                               >> $CDIR"/summary.txt"
1156        fi
1157    
1158        #postclean $dir/$builddir
1159        if test "x$POSTCLEAN" = xt ; then
1160            makeclean $dir/$builddir \
1161                && run_clean $dir/$rundir
1162      fi      fi
     echo  
     echo "$fres" >> $SUMMARY  
     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"  
1163            
1164      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1165            
1166  done  done
1167    
1168  echo -n "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
1169  echo $start_date >> $SUMMARY  echo $start_date >> $SUMMARY
1170  echo -n "End time:    " >> $SUMMARY  printf "End time:    " >> $SUMMARY
1171  date >> $SUMMARY  date >> $SUMMARY
1172    
1173  #  If addresses were supplied and mpack built successfully, then try  #  If addresses were supplied and mpack built successfully, then try
# Line 859  else Line 1178  else
1178      if test "x$HAVE_MPACK" = xt ; then      if test "x$HAVE_MPACK" = xt ; then
1179          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1180              && gzip $DRESULTS".tar" \              && gzip $DRESULTS".tar" \
1181              && $MPACK -s MITgcm-test -m 1500000 $DRESULTS".tar.gz" $ADDRESSES              && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1182          RETVAL=$?          RETVAL=$?
1183          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1184              echo              echo
# Line 882  fi Line 1201  fi
1201  rm -f tmp_cmpnum.c tmp_cmpnum  rm -f tmp_cmpnum.c tmp_cmpnum
1202    
1203  if test "x$CLEANUP" != xt ; then  if test "x$CLEANUP" != xt ; then
1204      cat $SUMMARY      cat $SUMMARY | sed 's/ -- -- -- --//g'
1205      if test -e tr_out.txt ; then      if test -e tr_out.txt ; then
1206          mv tr_out.txt tr_out.txt.old          mv tr_out.txt tr_out.txt.old
1207      fi      fi
1208      cat $SUMMARY > tr_out.txt      cat $SUMMARY | sed 's/ -- -- -- --//g' > tr_out.txt
1209    fi
1210    
1211    if test "x$DELDIR" = xt ; then
1212        rm -rf $DRESULTS
1213  fi  fi
1214    

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.87

  ViewVC Help
Powered by ViewVC 1.1.22