/[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.10 by edhill, Thu Oct 9 04:19:20 2003 UTC revision 1.58 by edhill, Fri Dec 10 17:36:43 2004 UTC
# Line 1  Line 1 
1  #!/bin/bash  #! /usr/bin/env bash
2  #  #
3  #  $Header$  #  $Header$
4    #  $Name$
5  #  #
6    
7  usage()  usage()
# Line 12  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=\"-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\")"
20      echo "  (-t|-tdir)STRING         list of test dirs to use"      echo "  (-t|-tdir) STRING        list of test dirs to use"
21      echo "                             (DEF=\"\" which builds all)"      echo "                             (DEF=\"\" which builds all)"
22      echo "  (-b|-bash)STRING         location of \"bash\" executable"      echo "  (-b|-bash) STRING        preferred location of a \"bash\" or"
23      echo "                             (DEF=\"\" for \"/bin/bash\")"      echo "                             Bourne-compatible \"sh\" shell"
24      echo "  (-command)STRING         command to run"      echo "                             (DEF=\"\" for \"bash\")"
25        echo "  (-adm|-ad)               perform an adjoint run"
26        echo "  (-command) STRING        command to run"
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 "  (-ptracers|-ptr) STRING  specify which ptracers to test"
31        echo "                             (DEF=\"1 2 3 4 5\")"
32        echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"
33      echo "  (-clean)                 *ONLY* run \"make CLEAN\""      echo "  (-clean)                 *ONLY* run \"make CLEAN\""
34      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""
35      echo "  (-nogenmake|-ng)         skip the genmake stage"      echo "  (-nogenmake|-ng)         skip the genmake stage"
36      echo "  (-noclean|-nc)           skip the \"make clean\" stage"      echo "  (-noclean|-nc)           skip the \"make clean\" stage"
37      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"
38        echo "  (-deldir|-dd)            on success, delete the output directory"
39      echo      echo
40      echo "and where STRING follows a whitespace-delimited format"      echo "and where STRING can be a whitespace-delimited list"
41      echo "such as:"      echo "such as:"
42        echo
43      echo "  -t 'exp0 exp2 exp3' "      echo "  -t 'exp0 exp2 exp3' "
44      echo "  -addr='abc@123.com testing@home.org'"      echo "  -addr='abc@123.com testing@home.org'"
45      echo      echo
46        echo "provided that the expression is properly quoted within the current"
47        echo "shell (note the use of single quotes to protect white space)."
48        echo
49      exit 1      exit 1
50  }  }
51    
52  #  build the mpack utility  #  build the mpack utility
53  build_mpack()  build_mpack()
54  {  {
55      echo -n "building the mpack utility...  "      printf "building the mpack utility...  "
56      if test ! -x "$MPACKDIR/mpack" ; then      if test ! -x "$MPACKDIR/mpack" ; then
57          if test ! -d $MPACKDIR ; then          if test ! -d $MPACKDIR ; then
58                echo
59              echo "Error: can't find \"$MPACKDIR\""              echo "Error: can't find \"$MPACKDIR\""
60              echo "  are you sure this program is being run in the correct "              echo "  are you sure this program is being run in the correct "
61              echo "  (that is, \"MITGCM_ROOT\verification\") directory?"              echo "  (that is, \"MITGCM_ROOT\verification\") directory?"
62              exit 1              echo
63                HAVE_MPACK=f
64            fi
65            printf "building mpack...  "
66            if test "x$CC" = x ; then
67                export CC=cc
68          fi          fi
69          echo -n "building mpack...  "          ( cd $MPACKDIR && ./configure && $MAKE ) > tr_build_mpack.out 2>&1
         ( cd $MPACKDIR && ./configure && $MAKE ) > build_mpack.out 2>&1  
70          RETVAL=$?          RETVAL=$?
71          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
72              echo              echo
73              echo "Error building the mpack tools at: $MPACK_DIR"              echo "Error building the mpack tools at: $MPACK_DIR"
74              exit 1              echo
75                HAVE_MPACK=f
76            else
77                rm -f tr_build_mpack.out
78                HAVE_MPACK=t
79          fi          fi
80        else
81            HAVE_MPACK=t
82      fi      fi
83      echo "OK"      echo "OK"
84  }  }
85    
 compare_lines()  
 {  
     # use codelet to compare lines  
     if [ $verbose -gt 1 ]; then  
         cat tmp3.txt 1>&2  
     fi  
     return `./a.out < tmp3.txt`  
 }  
   
86  testoutput_for_prop()  testoutput_for_prop()
87  {  {
88      # testoutput_for_prop dir s1 label subdir      # testoutput_for_prop dir s1 label subdir extension
89      #      #
90      #  compares files in $dir/$subdir/output.txt and $dir/results/output.txt      #  compares files in $dir/$subdir/output.txt and $dir/results/output.txt
91      #  using search strings s1 and text label      #  using search strings s1 and text label
# Line 80  testoutput_for_prop() Line 94  testoutput_for_prop()
94          echo testoutput_for_prop: grep "$2" $1/$4/output.txt 1>&2          echo testoutput_for_prop: grep "$2" $1/$4/output.txt 1>&2
95      fi      fi
96      if [ -r $1/$4/output.txt ]; then      if [ -r $1/$4/output.txt ]; then
97          grep "$2" $1/$4/output.txt | sed 's/.*=//' | nl > tmp1.txt          grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt
98          lncnt=`wc -l tmp1.txt | awk '{print $1}' `          lncnt=`wc -l tmp1.txt | awk '{print $1}' `
99          if [ $lncnt -lt 3 ]; then          if [ $lncnt -lt 3 ]; then
100              if [ $verbose -gt 0 ]; then              if [ $verbose -gt 0 ]; then
# Line 93  testoutput_for_prop() Line 107  testoutput_for_prop()
107          return 99          return 99
108      fi      fi
109      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
110          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
111      fi      fi
112      grep "$2" $1/results/output.txt | sed 's/.*=//' | nl > tmp2.txt      grep "$2" $1/results/output.txt$5 | sed 's/.*=//' | cat -n > tmp2.txt
113      lncnt=`wc -l tmp2.txt | awk '{print $1}' `      lncnt=`wc -l tmp2.txt | awk '{print $1}' `
114      if [ $lncnt -lt 3 ]; then      if [ $lncnt -lt 3 ]; then
115          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
# Line 110  testoutput_for_prop() Line 124  testoutput_for_prop()
124      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
125          echo testoutput_for_prop: compare_lines 1>&2          echo testoutput_for_prop: compare_lines 1>&2
126      fi      fi
127      compare_lines      if [ $verbose -gt 1 ]; then
128      digits_of_similarity=$?          cat tmp3.txt 1>&2
129        fi
130        echo "-1" >> tmp3.txt
131        # On the SGI O3K (*not* the O2K), "cat -n" inserts a ":" after the line number
132        cat tmp3.txt | sed -e 's|:||g' > tmp4.txt
133        digits_of_similarity=`./tmp_cmpnum < tmp4.txt`
134      if [ $digits_of_similarity -eq 99 ]; then      if [ $digits_of_similarity -eq 99 ]; then
135          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
136              echo testoutput_for_prop: No comparison was available for \"$2\" 1>&2              echo testoutput_for_prop: No comparison was available for \"$2\" 1>&2
# Line 122  testoutput_for_prop() Line 141  testoutput_for_prop()
141              echo There were $digits_of_similarity decimal places of similarity for \"$2\" 1>&2              echo There were $digits_of_similarity decimal places of similarity for \"$2\" 1>&2
142          fi          fi
143      fi      fi
144      rm tmp1.txt tmp2.txt tmp3.txt      rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt
145            
146      return $digits_of_similarity      return $digits_of_similarity
147  }  }
# Line 142  dashnum() Line 161  dashnum()
161      done      done
162  }  }
163    
164    testoutput_ad()
165    {
166        grep $3 $1/results_ad/output.txt_adm | awk '{print NR " " $5}' > t05.txt
167        grep $3 $1/$2/output.txt_adm | awk '{print NR " " $5}' > t15.txt
168        grep $3 $1/results_ad/output.txt_adm | awk '{print NR " " $6}' > t06.txt
169        grep $3 $1/$2/output.txt_adm | awk '{print NR " " $6}' > t16.txt
170        join t05.txt t15.txt > t5.txt
171        join t06.txt t16.txt > t6.txt
172        echo "-1" >> t5.txt
173        echo "-1" >> t6.txt
174        digits_5=`./tmp_cmpnum < t5.txt`
175        digits_6=`./tmp_cmpnum < t6.txt`
176        dashnum $digits_5 $digits_6
177        rm -f t[01][56].txt t[56].txt
178    }
179    
180    check_for_add_mon_output()
181    {
182        # Check for additional types of monitor output
183        if test "x$1" = x ; then
184            return
185        fi
186    
187        for ii in $PTRACERS_NUM ; do
188            eval "HAVE_PTR0"$ii"=f"
189        done
190    
191        ptr_add="trcstat_ptracerXX_min trcstat_ptracerXX_max"
192        ptr_add="$ptr_add trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
193        for ii in $PTRACERS_NUM ; do
194            for jj in $ptr_add ; do
195                name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
196                tst=`grep $name $1 | wc -l | awk '{print $1}'`
197                if test ! "x$tst" = x0 ; then
198                    eval "HAVE_PTR0"$ii"=t"
199                fi
200            done
201            #  eval 'echo "HAVE_PTR0'$ii' = $HAVE_PTR0'$ii'"'
202        done
203    }
204    
205  testoutput()  testoutput()
206  {  {
207      # testoutput diretory subdir      # testoutput directory subdir extension
208      #      #
209      #  test output in "directory"      #  test output in "directory"
210        if test "x$ADM" = x ; then
211            if [ $debug -gt 0 ]; then
212                echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2
213            fi
214            testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2 $3; cg2dres=$?
215            if [ $debug -gt 0 ]; then
216                echo testoutput: cg2dres=$cg2dres 1>&2
217            fi
218            testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2 $3; tmin=$?
219            testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2 $3; tmax=$?
220            testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2 $3; tmean=$?
221            testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2 $3; tsd=$?
222            testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2 $3; smin=$?
223            testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2 $3; smax=$?
224            testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2 $3; smean=$?
225            testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2 $3; ssd=$?
226            testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2 $3; umin=$?
227            testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2 $3; umax=$?
228            testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2 $3; umean=$?
229            testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2 $3; usd=$?
230            testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2 $3; vmin=$?
231            testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$?
232            testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?
233            testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$?
234    
235            #  This is for PTRACERS
236            for ii in $PTRACERS_NUM ; do
237                eval `echo "p0"$ii"_min=99"`
238                eval `echo "p0"$ii"_max=99"`
239                eval `echo "p0"$ii"_mean=99"`
240                eval `echo "p0"$ii"_sd=99"`
241                tst=`eval 'echo "$HAVE_PTR0'$ii'"'`
242                #echo 'tst = '$tst
243                if test "x$tst" = xt ; then
244                    a="trcstat_ptracer0"
245                    testoutput_for_prop $1 "$a"$ii"_min"  "p0"$ii"_min"  $2 $3
246                    RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL`
247                    testoutput_for_prop $1 "$a"$ii"_max"  "p0"$ii"_max"  $2 $3
248                    RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL`
249                    testoutput_for_prop $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3
250                    RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL`
251                    testoutput_for_prop $1 "$a"$ii"_sd"   "p0"$ii"_sd"   $2 $3
252                    RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL`
253                fi
254            done
255    
256      if [ $debug -gt 0 ]; then          allargs="$cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd"
257          echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2          allargs="$allargs $umin $umax $umean $usd $vmin $vmax $vmean $vsd"
258      fi          allargs="$allargs $p01_min $p01_max $p01_mean $p01_sd"
259      testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2; cg2dres=$?          allargs="$allargs $p02_min $p02_max $p02_mean $p02_sd"
260      if [ $debug -gt 0 ]; then          allargs="$allargs $p03_min $p03_max $p03_mean $p03_sd"
261          echo testoutput: cg2dres=$cg2dres 1>&2          allargs="$allargs $p04_min $p04_max $p04_mean $p04_sd"
262            allargs="$allargs $p05_min $p05_max $p05_mean $p05_sd"
263    
264            eval "dashnum $allargs"
265    
266        else
267            testoutput_ad $1 $2 "precision_grdchk_result"
268      fi      fi
       
     testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?  
     testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?  
     testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2; tmean=$?  
     testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2; tsd=$?  
     testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?  
     testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?  
     testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2; smean=$?  
     testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2; ssd=$?  
     testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?  
     testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?  
     testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2; umean=$?  
     testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2; usd=$?  
     testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?  
     testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?  
     testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2; vmean=$?  
     testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2; vsd=$?  
       
     dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \  
         $umin $umax $umean $usd $vmin $vmax $vmean $vsd  
269  }  }
270    
271  genmakemodel()  genmakemodel()
# Line 183  genmakemodel() Line 274  genmakemodel()
274      if test "x$NOGENMAKE" = xt ; then      if test "x$NOGENMAKE" = xt ; then
275          echo "genmake skipped!"          echo "genmake skipped!"
276      else      else
277          GENMAKE2="$BASH ../../../tools/genmake2"          if test "x$BASH" = x ; then
278                GENMAKE2="../../../tools/genmake2"
279            else
280                GENMAKE2="$BASH ../../../tools/genmake2 -bash $BASH"
281            fi
282          (          (
283              cd $1;              cd $1;
284              command="$GENMAKE2  -ds -m $MAKE --mods=../code"              command="$GENMAKE2  -ds -m $MAKE"
285                if test "x$ADM" = x ; then
286                    command="$command --mods=../code"
287                else
288                    command="$command --mods=../code_ad"
289                    command="$command -adof=../../../tools/adjoint_options/adjoint_staf"
290                fi
291              if test "x$OPTFILE" != xNONE ; then              if test "x$OPTFILE" != xNONE ; then
292                  command="$command --optfile=$OPTFILE"                  command="$command --optfile=$OPTFILE"
                 # echo "  command=\"$command\""  
293              fi              fi
294              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
295                  command="$command -ieee"                  command="$command -ieee"
296              fi              fi
             # echo "command: \"$command\""  
297              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
298              $command > make.log 2>&1              $command > make.log 2>&1
299              RETVAL=$?              RETVAL=$?
300              for i in genmake_state genmake_optfile genmake_local Makefile ; do              #  Reduce the size of the testing emails!
301                  if test -r $i ; then              head -100 Makefile > $CDIR/Makefile_head
                     cp $i $CDIR  
                 fi  
             done  
302              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
303                  tail make.log                  tail make.log
304                  echo "genmakemodel: genmake failed" 1>&2                  echo "genmakemodel: genmake failed" 1>&2
305                  cp make.log $CDIR                  cp genmake_* make.log $CDIR
306                  return 1                  return 1
307              else              else
308                  echo "succesful" 1>&2                  echo "successful" 1>&2
309              fi              fi
310          )          )
311      fi      fi
# Line 237  makeclean() Line 333  makeclean()
333                      return 1                      return 1
334                  fi                  fi
335              fi              fi
336              echo succesful 1>&2              echo successful 1>&2
337              exit 0              exit 0
338          )          )
339      fi      fi
# Line 260  makedependmodel() Line 356  makedependmodel()
356                  cp make.log $CDIR"/make.log"                  cp make.log $CDIR"/make.log"
357                  return 1                  return 1
358              else              else
359                  echo succesful 1>&2                  echo successful 1>&2
360              fi              fi
361          )          )
362      fi      fi
# Line 273  makemodel() Line 369  makemodel()
369          cd $1;          cd $1;
370          if test -r Makefile ; then          if test -r Makefile ; then
371              printf 'make ... ' 1>&2              printf 'make ... ' 1>&2
372              $MAKE >> make.log 2>&1              if test "x$ADM" = x ; then
373                    if test "x$JOBS" = x ; then
374                        $MAKE >> make.log 2>&1
375                    else
376                        $MAKE -j $JOBS >> make.log 2>&1
377                    fi
378                else
379                    $MAKE adall >> make.log 2>&1
380                fi
381              RETVAL=$?              RETVAL=$?
382              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
383                  tail make.log                  tail make.log
# Line 281  makemodel() Line 385  makemodel()
385                  cp make.log $CDIR"/make.log"                  cp make.log $CDIR"/make.log"
386                  return 1                  return 1
387              else              else
388                  echo succesful 1>&2                  echo successful 1>&2
389              fi              fi
390          fi          fi
391      )      )
392  }  }
393    
394    symlink_mpifiles()
395    {
396        # Put special links so that MPI specific files are used
397        # This MUST be invoked between makeclean and makelinks because
398        # the Makefile will link to non-mpi files by default
399    
400        dir=$1
401        code_dir=$2
402        BUILD_DIR=$dir/$3
403        CODE_DIR=$dir/$code_dir
404        
405        # These are files that should replace their counter-part when using -mpi
406        MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`
407    
408        #  Is this an MPI run?
409        if test "x$MPI" = xt ; then
410            # YES: We symbolically link these files to the build
411            # dir so long as there is no real file in place
412            for ii in $MPI_FILES ; do
413                i=`echo $ii | sed 's:^\./::'`
414                name=`echo $i | sed 's:_mpi::' `
415                cmp $CODE_DIR/$i $BUILD_DIR/$name > /dev/null 2>&1
416                RETVAL=$?
417                if test "x$RETVAL" != x0 ; then
418                    if ! test -f $BUILD_DIR/$i ; then
419                        #echo Linking $name to $i
420                        (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
421                    fi
422                fi
423            done
424        else
425            # NO: We undo any _mpi symbolically linked files
426            for ii in $MPI_FILES ; do
427                i=`echo $ii | sed 's:^\./::'`
428                name=`echo $i | sed 's:_mpi::' `
429                if test -L $BUILD_DIR/$name ; then
430                    cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
431                    RETVAL=$?
432                    if test "x$RETVAL" = x0 ; then
433                        #echo Un-linking $name from $linktarg
434                        rm -f $BUILD_DIR/$name
435                    fi
436                fi
437            done
438        fi
439        
440    }
441    
442  linkdata()  linkdata()
443  {  {
444      # linkdata flag      # linkdata flag
445      #      #
446      # symbolically link data files to run directory      # symbolically link data files to run directory
447      if [ $1 -ne 0 ]; then      if test "x$1" = x1 ; then
448          ( cd $2 ;  ln -sf ../input/* . )          (
449                cd $2
450                if test "x$ADM" = x ; then
451                    files=`( cd ../input ; ls -1 | grep -v CVS )`
452                    for i in $files ; do
453                        if test ! -d "../input/"$i ; then
454                            ln -sf "../input/"$i $i
455                        fi
456                    done
457                else
458                    files=`( cd ../input ; ls -1 *.bin | grep -v CVS )`
459                    for i in $files ; do
460                        if test ! -d "../input/"$i ; then
461                            ln -sf "../input/"$i $i
462                        fi
463                    done
464                    files=`( cd ../input_ad ; ls -1 | grep -v CVS )`
465                    for i in $files ; do
466                        if test ! -d "../input_ad/"$i ; then
467                            ln -sf "../input_ad/"$i $i
468                        fi
469                    done
470                fi
471            )
472      fi      fi
473  }  }
474    
# Line 301  runmodel() Line 476  runmodel()
476  {  {
477      # runmodel directory      # runmodel directory
478      #      #
479      #  runs "$COMMAND" in "directory"      #  runs "$COMMAND in "directory"
480      #  (where "$COMMAND" is relative to "directory")      #  (where "$COMMAND" is relative to "directory")
481      (      (
482          cd $1          cd $1
483          printf 'runmodel: ' 1>&2          printf 'runmodel ... ' 1>&2
484          # make output.txt          # make output.txt
485          $COMMAND          echo
486            rm -f run.log
487            # echo "COMMAND='$COMMAND'"
488            # echo "pwd='"`pwd`"'"
489            ( eval $COMMAND ) > run.log 2>&1
490          RETVAL=$?          RETVAL=$?
491          if test "x$RETVAL" = x0 ; then          if test "x$RETVAL" = x0 ; then
492              cp output.txt $CDIR"/output.txt"              tail run.log
493                echo successful 1>&2
494                # === Reduce the size of the testing emails!
495                # if test "x$ADM" = x ; then
496                #   cp output.txt $CDIR"/output.txt"
497                # else
498                #   cp output.txt_adm $CDIR"/output.txt_adm"
499                # fi
500                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
501              return 0              return 0
502          else          else
503                tail run.log
504                echo failed 1>&2
505                cp run.log $CDIR"/run.log"
506                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
507              return 1              return 1
508          fi          fi
509      )      )
# Line 322  createcodelet() Line 513  createcodelet()
513  {  {
514      # create codelet for comparing model output      # create codelet for comparing model output
515    
516      echo -n "creating the comparison code...  "      printf "creating the comparison code...  "
517      cat > tmp_cmpnum.f <<EOFA      cat > tmp_cmpnum.c <<EOF
518        program cmpnum  #include <stdio.h>
519        implicit none  #include <math.h>
520        real*8 a,b,diff  int main( int argc, char** argv )  {
521        integer linnum,best    int linnum,best,lncnt;
522        best=-16    double a,b,abave,relerr;
523    99  read(*,*,end=70,err=60) linnum,a,b    best = -22;
524        diff=0.5*(abs(a)+abs(b))    lncnt = 0;
525  c     print *,a,b,diff,abs(a-b)/diff    while( 1 & (lncnt+=1) < 999 )  {
526        if (diff.gt.1.e-12) then      scanf("%d", &linnum);
527          diff=abs(a-b)/diff      if (linnum == -1)  break;
528          if (diff.gt.0.) then      scanf("%lf", &a);  scanf("%lf", &b);
529  c         print *,int(log10(diff)),diff      abave = 0.5*(fabs(a)+fabs(b));
530            linnum=int(log10(diff))      if (abave > 0.0) {
531            best=max(best,linnum)        relerr=fabs(a-b)/abave;
532          endif        if (relerr > 0.0) { linnum = (int)log10(relerr); }
533        else        else { linnum = -16 ; }
534          if (best.eq.-16.and.diff.ne.0.) best=-22        best = (best > linnum) ? best : linnum;
535        endif      }
536        goto 99    }
537    60  stop 'cmpnum: An error occured reading a,b'    if (lncnt == 999) best=-29;
538    70  print *,-best    printf("%d\n", -best);
539        end    return 0;
540  EOFA  }
541    EOF
542        $CC -o tmp_cmpnum tmp_cmpnum.c -lm
543    
544      f77 tmp_cmpnum.f      if [ -x ./tmp_cmpnum ]; then
     if [ -x ./a.out ]; then  
545          echo "OK"          echo "OK"
546          return 0          return 0
547      else      else
548          echo          echo
549          echo "createcodelet: failed to compile codelet"          echo "ERROR: failed to compile comparison code -- please specify"
550            echo "  a C compiler using the CC environment variable."
551          exit 1          exit 1
552      fi      fi
553  }  }
# Line 414  scandirs() Line 607  scandirs()
607    
608    
609  ###############################################################################  ###############################################################################
 ###############################################################################  
 ###############################################################################  
610    
611    
612  #  Default properties  #  Default properties
# Line 425  clean=0 Line 616  clean=0
616  expts=''  expts=''
617  # ieee=1  # ieee=1
618    
619  IEEE=  IEEE=true
620  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
621      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
622  fi  fi
# Line 442  OPTFILE=NONE Line 633  OPTFILE=NONE
633  ADDRESSES=  ADDRESSES=
634  TESTDIRS=  TESTDIRS=
635  MPACKDIR="../tools/mpack-1.6"  MPACKDIR="../tools/mpack-1.6"
636    HAVE_MPACK=
637  MPACK="$MPACKDIR/mpack"  MPACK="$MPACKDIR/mpack"
638  COMMAND="make output.txt"  COMMAND=
639  MAKE=make  MAKE=make
640    JOBS=
641  MPI=f  MPI=f
642    DELDIR=
643    
644    ADM=
645    
646    # Additional monitor types
647    PTRACERS_NUM="1 2 3 4 5"
648    
649  echo -n "parsing options...  "  printf "parsing options...  "
650    
651  ac_prev=  ac_prev=
652  for ac_option ; do  for ac_option ; do
# Line 496  for ac_option ; do Line 695  for ac_option ; do
695          -make=* | --make=*)          -make=* | --make=*)
696              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
697    
698            -ptracers | --ptracers | -ptr | --ptr)
699                ac_prev=PTRACERS_NUM ;;
700            -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
701                PTRACERS_NUM=$ac_optarg ;;
702    
703            -j) ac_prev=JOBS ;;
704            -j=*) JOBS=$ac_optarg ;;
705    
706          -clean | --clean)          -clean | --clean)
707              CLEANUP=t ;;              CLEANUP=t ;;
708    
# Line 508  for ac_option ; do Line 715  for ac_option ; do
715          -nodepend | --nodepend | -nd | --nd)          -nodepend | --nodepend | -nd | --nd)
716              NODEPEND=t ;;              NODEPEND=t ;;
717    
718          -mpi) MPI=true ;;          -mpi) MPI=t ;;
719    
720            -adm | -ad) ADM=t ;;
721    
722          -ieee) IEEE=true ;;          -ieee) IEEE=true ;;
723          -noieee) IEEE= ;;          -noieee) IEEE= ;;
# Line 517  for ac_option ; do Line 726  for ac_option ; do
726          -debug) debug=1 ;;          -debug) debug=1 ;;
727          -quiet) verbose=0 ;;          -quiet) verbose=0 ;;
728    
729            -deldir | -dd) DELDIR=t ;;
730    
731          -*)          -*)
732              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
733              usage              usage
# Line 545  if test "x$OPTFILE" = xNONE -a "x$MITGCM Line 756  if test "x$OPTFILE" = xNONE -a "x$MITGCM
756      OPTFILE=$MITGCM_OF      OPTFILE=$MITGCM_OF
757  fi  fi
758    
759    if test "x$ADM" = xt -a "x$COMMAND" = x ; then
760        COMMAND="./mitgcmuv_ad > output.txt_adm 2>&1"
761    fi
762    
763    if test "x$COMMAND" = x ; then
764        COMMAND="$MAKE output.txt"
765    fi
766    
767  echo "OK"  echo "OK"
768    
769  #  create the FORTRAN comparison code  #  create the FORTRAN comparison code
770  createcodelet  createcodelet
771    
772  #  build the mpack utility  #  build the mpack utility
773  build_mpack  if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
774        echo "skipping mpack build"
775    else
776        build_mpack
777    fi
778    
779  #  Create a uniquely named directory to store results  #  Create a uniquely named directory to store results
780  MACH=`hostname`  MACH=`hostname`
781  UNAMEA=`uname -a`  UNAMEA=`uname -a`
782  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
783  BASE=$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
784  DNUM=0  DNUM=0
785  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
786  while test -e $DRESULTS ; do  while test -e $DRESULTS ; do
# Line 567  done Line 790  done
790  mkdir $DRESULTS  mkdir $DRESULTS
791  RETVAL=$?  RETVAL=$?
792  if test "x$RETVAL" != x0 ; then  if test "x$RETVAL" != x0 ; then
793      echo "Error: can't create results directory \"./$DRESULTS\""      echo "ERROR: Can't create results directory \"./$DRESULTS\""
794      exit 1      exit 1
795  fi  fi
796  SUMMARY="$DRESULTS/summary.txt"  SUMMARY="$DRESULTS/summary.txt"
797  date > $SUMMARY  printf "Start time:  " >> $SUMMARY
798  cat << EOF >> $SUMMARY  start_date=`date`
799                  T           S           U           V  echo $start_date > $SUMMARY
 G D M    c        m  s        m  s        m  s        m  s  
 E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .  
 N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d  
 2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .  
   
 EOF  
   
 NDIR=0  
800    
801    of_path=
802  if test "x$OPTFILE" != xNONE ; then  if test "x$OPTFILE" != xNONE ; then
803      if test -r $OPTFILE ; then      if test -r $OPTFILE ; then
804          OPTFILE=`pwd`"/$OPTFILE"          # get the path
805            path=${OPTFILE%/*}
806            if test "x$path" = x ; then
807                of_path=`pwd`
808            else
809                of_path=`( cd $path > /dev/null 2>&1 ; pwd )`
810            fi
811            file=${OPTFILE##*/}
812            OPTFILE=$of_path/$file
813            cp $OPTFILE $DRESULTS
814            echo >> $SUMMARY
815            echo "  OPTFILE=$OPTFILE" >> $SUMMARY
816        else
817            echo | tee $SUMMARY
818            echo "ERROR: can't read OPTFILE=\"$OPTFILE\"" | tee $SUMMARY
819            exit 1
820      fi      fi
821    else
822        echo >> $SUMMARY
823        echo "No \"OPTFILE\" was explicitly specified by testreport," >> $SUMMARY
824        echo "   so the genmake default will be used." >> $SUMMARY
825  fi  fi
826  echo  echo
 echo "OPTFILE=$OPTFILE" >> $SUMMARY  
827  echo >> $SUMMARY  echo >> $SUMMARY
828    if test "x$ADM" = x ; then
829        line_0="            ----T-----  ----S-----  ----U-----  ----V-----"
830        line_1="G D M    c        m  s        m  s        m  s        m  s"
831        line_2="E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  ."
832        line_3="N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d"
833        line_4="2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  ."
834        for ii in $PTRACERS_NUM ; do
835            #  tst=`eval 'echo $HAVE_PTR0'$ii`
836            #  if test "x$tst" = xt ; then
837            line_0="$line_0  --PTR 0"$ii"--"
838            line_1="$line_1        m  s"
839            line_2="$line_2  m  m  e  ."
840            line_3="$line_3  i  a  a  d"
841            line_4="$line_4  n  x  n  ."
842            #  fi
843        done
844        echo "$line_0" | tee -a $SUMMARY
845        echo "$line_1" | tee -a $SUMMARY
846        echo "$line_2" | tee -a $SUMMARY
847        echo "$line_3" | tee -a $SUMMARY
848        echo "$line_4" | tee -a $SUMMARY
849        echo " "       | tee -a $SUMMARY
850    else
851        echo "ADJOINT=true" >> $SUMMARY
852        echo >> $SUMMARY
853        cat << EOF | tee -a $SUMMARY
854    G D M    C  G
855    E p a R  o  r
856    N n k u  s  a
857    2 d e n  t  d
858    
859    EOF
860    fi
861    
862  #  ...and each test directory...  #  ...and each test directory...
863  for dir in $TESTDIRS ; do  for dir in $TESTDIRS ; do
# Line 608  for dir in $TESTDIRS ; do Line 875  for dir in $TESTDIRS ; do
875    
876      #  Verify that the testdir exists and contains previous      #  Verify that the testdir exists and contains previous
877      #  results in the correct location--or skip this directory!      #  results in the correct location--or skip this directory!
878      if test ! -r $dir"/results/output.txt" ; then      fout=
879          echo "can't read \"$dir/results/output.txt\" -- skipping $dir"      if test "x$ADM" = x ; then
880            fout=$dir"/results/output.txt"
881        else
882            fout=$dir"/results_ad/output.txt_adm"
883        fi
884        if test ! -r $fout ; then
885            echo "can't read \"$fout\" -- skipping $dir"
886          continue          continue
887      fi      fi
888        if test "x$ADM" = x ; then
889            check_for_add_mon_output  $fout
890        fi
891    
892      echo "-------------------------------------------------------------------------------"      # Check for additional types of monitor output
     echo  
     echo "Experiment:  $dir"  
     echo  
     unset genmake makedepend make run  
     results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'  
893    
894      if [ -r $dir/build ]; then      builddir="input"
895          seperatebuilddir=1      rundir="input"
896          builddir=build      use_seperate_build=0
897          rundir=build      if test -d $dir/build -a -r $dir/build ; then
898          ( cd $dir/build; ln -sf ../input/* . )          builddir="build"
899      else          rundir="build"
900          seperatebuilddir=0          use_seperate_build=1
901          builddir=input          linkdata $use_seperate_build $dir/$rundir
         rundir=input  
902      fi      fi
903            
904      CODE_DIR=$dir/code      #  Check whether there are "extra runs" for this testdir
905      BUILD_DIR=$dir/$builddir      extra_runs=
906      MPI_FILES="CPP_EEOPTIONS.h_mpi SIZE.h_mpi"      if test "x$ADM" = x -a "x$use_seperate_build" = x1 ; then
907      NOMPI_FILES="CPP_EEOPTIONS.h_nompi SIZE.h_nompi"          ex_run_dirs=`( cd $dir ; echo input.* )`
908            echo "ex_run_dirs='$ex_run_dirs'"
909            for exd in $ex_run_dirs ; do
910                name=`echo $exd | sed -e 's/input.//g'`
911                outf="$dir/results/output.txt.$name"
912                if test -f $outf -a -r $outf ; then
913                    extra_runs="$extra_runs $name"
914                fi
915            done
916        fi
917    
918      #  Is this an MPI run?      if test "x$ADM" = x ; then
919      if test "x$MPI" = xt ; then          code_dir=code
920          FILES=$MPI_FILES          CODE_DIR=$dir/code
         endings="_mpi"  
921      else      else
922          FILES=$NOMPI_FILES          code_dir=code_ad
923          endings="_nompi"          CODE_DIR=$dir/code_ad
924      fi      fi
925            BUILD_DIR=$dir/$builddir
926      #  Check to see that we have the files  
927      have_files=t      if test ! -r $CODE_DIR"/SIZE.h_mpi" -a "x$MPI" = "xt" ; then
928      for i in $FILES ; do          echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"
         if test ! -r $CODE_DIR/$i ; then  
             echo "Warning: can't read file $CODE_DIR/$i"  
             have_files=f  
         fi  
     done  
     if test "x$have_files" != xt -a "x$MPI" = xt ; then  
         echo "Skipping $dir due to lack of input files (see above warning)"  
929          continue          continue
930      fi      fi
931        
932      #  If we have the $FILES and they differ, copy the $FILES to $BUILD_DIR      echo "-------------------------------------------------------------------------------"
933      if test "x$have_files" = xt ; then      echo
934          for i in $FILES ; do      echo "Experiment:  $dir"
935              sstr="s|$endings||"      echo
936              name=`echo $i | sed -e $sstr `      unset genmake makedepend make run
937              cmp $CODE_DIR/$i $BUILD_DIR/$name > /dev/null 2>&1      results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
938              RETVAL=$?  
             if test "x$RETVAL" != x0 ; then  
                 cp $CODE_DIR/$i $BUILD_DIR/$name  
             fi  
         done  
     fi  
       
939      #  Create an output dir for each OPTFILE/tdir combination      #  Create an output dir for each OPTFILE/tdir combination
940      CDIR=$DRESULTS"/"$DRESULTS"_"$NDIR      rel_CDIR=$DRESULTS"/"$dir
941      mkdir $CDIR      mkdir $rel_CDIR
942      CDIR=`pwd`"/$CDIR"      CDIR=`pwd`"/$rel_CDIR"
943            
944      if test "x$CLEANUP" = xt ; then      if test "x$CLEANUP" = xt ; then
945          makeclean $dir/$builddir          makeclean $dir/$builddir
946      else      else
947          genmakemodel $dir/$builddir && genmake=Y \          genmakemodel $dir/$builddir && genmake=Y \
948              && makeclean $dir/$builddir \              && makeclean $dir/$builddir \
949                && symlink_mpifiles $dir $code_dir $builddir \
950              && makedependmodel $dir/$builddir && makedepend=Y \              && makedependmodel $dir/$builddir && makedepend=Y \
951              && makemodel $dir/$builddir && make=Y \              && makemodel $dir/$builddir && make=Y \
952              && linkdata $seperatebuilddir $dir/$rundir \              && linkdata $use_seperate_build $dir/$rundir \
953              && runmodel $dir/$builddir && run=Y \              && runmodel $dir/$rundir && run=Y \
954              && results=`testoutput $dir $rundir`              && results=`testoutput $dir $rundir`
955      fi      fi
956            
957      echo      echo
958      formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \      if test "x$ADM" = x ; then
959          ${run:-N} $results          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
960      echo          echo
961      formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \          echo "$fres" >> $SUMMARY
962          ${run:-N} $results >> $SUMMARY          echo "fresults='$fres'" > $CDIR"/summary.txt"
963      echo "fresults='" > $CDIR"/summary.txt"          echo "MACH='$MACH'" >> $CDIR"/summary.txt"
964      formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \          echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
965          ${run:-N} $results >> $CDIR"/summary.txt"          echo "DATE='$DATE'" >> $CDIR"/summary.txt"
966      echo "'" >> $CDIR"/summary.txt"          echo "tdir='$dir'" >> $CDIR"/summary.txt"
967      echo "MACH='$MACH'" >> $CDIR"/summary.txt"  
968      echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"          for ex in $extra_runs ; do
969      echo "DATE='$DATE'" >> $CDIR"/summary.txt"              test -e "$dir/tr_run.$ex" && rm -rf "$dir/tr_run.$ex"
970      echo "tdir='$dir'" >> $CDIR"/summary.txt"              mkdir "$dir/tr_run.$ex"
971                links=`( cd "$dir/input" > /dev/null 2>&1 ; ls -1 | grep -v CVS )`
972                (
973                    cd "$dir/tr_run.$ex"
974                    for i in $links; do
975                        ln -s ../input/$i $i
976                    done
977                )
978                links=`( cd "$dir/input.$ex" > /dev/null 2>&1 ; ls -1 | grep -v CVS )`
979                (
980                    cd "$dir/tr_run.$ex"
981                    for i in $links; do
982                        test -e $i  &&  rm -f $i
983                        ln -s ../input.$ex/$i $i
984                    done
985                    ln -s ../$builddir/mitgcmuv mitgcmuv
986                )
987                runmodel $dir/tr_run.$ex && run=Y \
988                    && results=`testoutput $dir tr_run.$ex "."$ex`
989                fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
990                fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
991                fres="$fres.$ex"
992                echo
993                echo "$fres" >> $SUMMARY
994                echo "fresults='$fres'" > $CDIR"/summary.txt"
995                echo "MACH='$MACH'" >> $CDIR"/summary.txt"
996                echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
997                echo "DATE='$DATE'" >> $CDIR"/summary.txt"
998                echo "tdir='$dir'" >> $CDIR"/summary.txt"
999            done
1000        else
1001            fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1002            fres=$fres"$results   $dir"
1003            echo
1004            echo "$fres" >> $SUMMARY
1005            echo "fresults='$fres'" > $CDIR"/summary.txt"
1006            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1007            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1008            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1009            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1010        fi
1011            
1012      (      echo "-------------------------------------------------------------------------------"
         cd $DRESULTS  
         tar -cf $NDIR".tar" $DRESULTS"_"$NDIR > /dev/null 2>&1  
         gzip $NDIR".tar"  
     )  
1013            
1014      if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then  done
1015          echo "No mail sent"  
1016      else  printf "Start time:  " >> $SUMMARY
1017          $MPACK -s MITgcm-test -m 1000000 $DRESULTS"/"$NDIR".tar.gz" $ADDRESSES  echo $start_date >> $SUMMARY
1018    printf "End time:    " >> $SUMMARY
1019    date >> $SUMMARY
1020    
1021    #  If addresses were supplied and mpack built successfully, then try
1022    #  to send email using mpack.
1023    if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
1024        echo "No results email was sent."
1025    else
1026        if test "x$HAVE_MPACK" = xt ; then
1027            tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1028                && gzip $DRESULTS".tar" \
1029                && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1030          RETVAL=$?          RETVAL=$?
1031          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1032              echo "Warning: \"$MPACK\" failed -- please contact <edhill@mitgcm.org>"              echo
1033                echo "Warning: The tar, gzip, & mpack step failed.  Please send email"
1034                echo "  to <MITgcm-support@mitgcm.org> for help.  You may copy the "
1035                echo "  summary of results from the directory \"$DRESULTS\"."
1036                echo
1037          else          else
1038              rm -f $DRESULTS"/"$NDIR".tar*"              echo
1039                echo "An email containing results was sent to the following addresses:"
1040                echo "  \"$ADDRESSES\""
1041                echo
1042          fi          fi
1043            test -f $DRESULTS".tar"  &&  rm -f $DRESULTS".tar"
1044            test -f $DRESULTS".tar.gz"  &&  rm -f $DRESULTS".tar.gz"
1045      fi      fi
1046    fi
1047    
1048      echo "-------------------------------------------------------------------------------"  # rm -f tmp_cmpnum.f a.out
1049        rm -f tmp_cmpnum.c tmp_cmpnum
     NDIR=$(( $NDIR + 1 ))  
       
 done  
1050    
1051  rm tmp_cmpnum.f a.out  if test "x$CLEANUP" != xt ; then
1052        cat $SUMMARY
1053        if test -e tr_out.txt ; then
1054            mv tr_out.txt tr_out.txt.old
1055        fi
1056        cat $SUMMARY > tr_out.txt
1057    fi
1058    
1059  cat $SUMMARY  if test "x$DELDIR" = xt ; then
1060        rm -rf $DRESULTS
1061    fi
1062    

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.58

  ViewVC Help
Powered by ViewVC 1.1.22