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

Diff of /MITgcm/verification/testreport

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

revision 1.30 by edhill, Fri Dec 5 17:46:32 2003 UTC revision 1.121 by jmc, Fri Jan 30 20:08:09 2009 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 "  (-gsl)                   compile with \"-gsl\" flag"
19        echo "  (-of=|-optfile=)STRING   list of optfiles to use"
20      echo "  (-a|-addr) STRING        list of email recipients"      echo "  (-a|-addr) STRING        list of email recipients"
21      echo "                             (DEF=\"edhill@mitgcm.org\")"      echo "                             (DEF=\"\" no email is sent)"
22      echo "  (-t|-tdir) STRING        list of test dirs to use"      echo "  (-mpd|-mpackdir) DIR     location of the mpack utility"
23      echo "                             (DEF=\"\" which builds all)"      echo "                             (DEF=\"../tools/mpack-1.6\")"
24        echo "  (-t|-tdir) STRING        list of group and/or exp. dirs to test"
25        echo "                             (recognized groups: basic, tutorials)"
26        echo "                             (DEF=\"\" which test all)"
27        echo "  (-skd|-skipdir) STRING   list of exp. dirs to skip"
28        echo "                             (DEF=\"\" which test all)"
29      echo "  (-b|-bash) STRING        preferred location of a \"bash\" or"      echo "  (-b|-bash) STRING        preferred location of a \"bash\" or"
30      echo "                             Bourne-compatible \"sh\" shell"      echo "                             Bourne-compatible \"sh\" shell"
31      echo "                             (DEF=\"\" for \"bash\")"      echo "                             (DEF=\"\" for \"bash\")"
32      echo "  (-adm|-ad)               perform an adjoint run"      echo "  (-adm|-ad)               perform an adjoint run"
33        echo "  (-oad)                   perform an OpenAD adjoint run"
34      echo "  (-command) STRING        command to run"      echo "  (-command) STRING        command to run"
35      echo "                             (DEF=\"make output.txt\")"      echo "                             (DEF=\"make output.txt\")"
36      echo "  (-m|-make) STRING        command to use for \"make\""      echo "  (-m|-make) STRING        command to use for \"make\""
37      echo "                             (DEF=\"make\")"      echo "                             (DEF=\"make\")"
38        echo "  (-odir) STRING           used to build output directory name"
39        echo "                             (DEF=\"hostname\")"
40        echo "  (-ptr|-ptracers) STRING  specify which ptracers to test"
41        echo "                             (DEF=\"1 2 3 4 5\")"
42        echo "  (-match) NUMBER          Matching Criteria (number of digits)"
43        echo "                             (DEF=\"12\")"
44        echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"
45      echo "  (-clean)                 *ONLY* run \"make CLEAN\""      echo "  (-clean)                 *ONLY* run \"make CLEAN\""
46      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""
47      echo "  (-nogenmake|-ng)         skip the genmake stage"      echo "  (-nogenmake|-ng)         skip the genmake stage"
48      echo "  (-noclean|-nc)           skip the \"make clean\" stage"      echo "  (-noclean|-nc)           skip the \"make clean\" stage"
49      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"
50        echo "  (-deldir|-dd)            on success, delete the output directory"
51        echo "  (-ts)                    provide timing information per timestep"
52        echo "  (-papis)                 provide MFlop/s per timestep using PAPI"
53        echo "  (-pcls)                  provide MFlop/s per timestep using PCL"
54      echo      echo
55      echo "and where STRING follows a whitespace-delimited format"      echo "and where STRING can be a whitespace-delimited list"
56      echo "such as:"      echo "such as:"
57        echo
58      echo "  -t 'exp0 exp2 exp3' "      echo "  -t 'exp0 exp2 exp3' "
59      echo "  -addr='abc@123.com testing@home.org'"      echo "  -addr='abc@123.com testing@home.org'"
60      echo      echo
61        echo "provided that the expression is properly quoted within the current"
62        echo "shell (note the use of single quotes to protect white space)."
63        echo
64      exit 1      exit 1
65  }  }
66    
67  #  build the mpack utility  #  build the mpack utility
68  build_mpack()  build_mpack()
69  {  {
70      echo -n "building the mpack utility...  "      printf "building the mpack utility...  "
71      if test ! -x "$MPACKDIR/mpack" ; then      MPACK="$MPACKDIR/mpack"
72        if test ! -x $MPACK ; then
73          if test ! -d $MPACKDIR ; then          if test ! -d $MPACKDIR ; then
74              echo              echo
75              echo "Error: can't find \"$MPACKDIR\""              echo "Error: can't find \"$MPACKDIR\""
# Line 54  build_mpack() Line 78  build_mpack()
78              echo              echo
79              HAVE_MPACK=f              HAVE_MPACK=f
80          fi          fi
         echo -n "building mpack...  "  
81          if test "x$CC" = x ; then          if test "x$CC" = x ; then
82              export CC=cc              export CC=cc
83          fi          fi
84            printf "building mpack (using CC=$CC)...  "
85          ( cd $MPACKDIR && ./configure && $MAKE ) > tr_build_mpack.out 2>&1          ( cd $MPACKDIR && ./configure && $MAKE ) > tr_build_mpack.out 2>&1
86          RETVAL=$?          RETVAL=$?
87          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
# Line 68  build_mpack() Line 92  build_mpack()
92          else          else
93              rm -f tr_build_mpack.out              rm -f tr_build_mpack.out
94              HAVE_MPACK=t              HAVE_MPACK=t
95                echo "done"
96          fi          fi
97      else      else
98          HAVE_MPACK=t          HAVE_MPACK=t
99            echo "already exist"
100      fi      fi
     echo "OK"  
101  }  }
102    
103  testoutput_for_prop()  testoutput_var()
104  {  {
105      # testoutput_for_prop dir s1 label subdir      # testoutput_var dir s1 label subdir reference_output
106      #      #
107      #  compares files in $dir/$subdir/output.txt and $dir/results/output.txt      #  compares 1 variable output selected from file $dir/$subdir/$OUTPUTFILE
108      #  using search strings s1 and text label      #     with same output from reference file $dir/results/$reference_output
109        #  using search strings s1 and text label
110    
111      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
112          echo testoutput_for_prop: grep "$2" $1/$4/output.txt 1>&2          echo testoutput_var: grep "$2" $1/$4/$OUTPUTFILE 1>&2
113      fi      fi
114      if [ -r $1/$4/output.txt ]; then      if [ -r $1/$4/$OUTPUTFILE ]; then
115          grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt          grep "$2" $1/$4/$OUTPUTFILE | sed 's/.*=//' | cat -n > tmp1.txt
116          lncnt=`wc -l tmp1.txt | awk '{print $1}' `          lncntA=`wc -l tmp1.txt | awk '{print $1}' `
117          if [ $lncnt -lt 3 ]; then          if [ $lncntA -lt 2 ]; then
118              if [ $verbose -gt 0 ]; then              if [ $verbose -gt 0 ]; then
119                  echo Not enough lines of output when searching for "$2" 1>&2                  echo Not enough lines of output when searching for "$2" 1>&2
120              fi              fi
121              return 99              return 99
122          fi          fi
123      else      else
124          echo testoutput_for_prop: output.txt from model run was not readable 1>&2          echo testoutput_var: $OUTPUTFILE from model run was not readable 1>&2
125          return 99          return 99
126      fi      fi
127      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
128          echo testoutput_for_prop: grep "$2" $1/results/output.txt 1>&2          echo testoutput_var: grep "$2" $1/results/$5 1>&2
129      fi      fi
130      grep "$2" $1/results/output.txt | sed 's/.*=//' | cat -n > tmp2.txt      grep "$2" $1/results/$5 | sed 's/.*=//' | cat -n > tmp2.txt
131      lncnt=`wc -l tmp2.txt | awk '{print $1}' `      lncntB=`wc -l tmp2.txt | awk '{print $1}' `
132      if [ $lncnt -lt 3 ]; then      if [ $lncntB -lt 2 ]; then
133          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
134              echo Not enough lines of output when searching for "$2" 1>&2              echo Not enough lines of output when searching for "$2" 1>&2
135          fi          fi
136          return 99          return 99
137      fi      fi
138        if [ $lncntA -ne $lncntB ]; then
139            if [ $verbose -gt 0 ]; then
140                echo Not same Nb of lines when searching for "$2" ":" $lncntA $lncntB 1>&2
141            fi
142            return 99
143        fi
144        has_nan=`cat tmp1.txt | grep -i nan | wc -l`
145        if [ $has_nan -gt 0  ] ; then
146            echo testoutput_var: $OUTPUTFILE contains $has_nan NaN values  1>&2
147            return 99
148        fi
149        has_inf=`cat tmp1.txt | grep -i inf | wc -l`
150        if [ $has_inf -gt 0  ] ; then
151            echo testoutput_var: $OUTPUTFILE contains $has_inf Inf values  1>&2
152            return 99
153        fi
154      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
155          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2          echo testoutput_var: join tmp1.txt tmp2.txt 1>&2
156      fi      fi
157      join tmp1.txt tmp2.txt | awk '{print $1 " " $2 " " $3}' > tmp3.txt      join tmp1.txt tmp2.txt | awk '{print $1 " " $2 " " $3}' > tmp3.txt
158      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
159          echo testoutput_for_prop: compare_lines 1>&2          echo testoutput_var: compare_lines 1>&2
160      fi      fi
161      if [ $verbose -gt 1 ]; then      if [ $verbose -gt 1 ]; then
162          cat tmp3.txt 1>&2          cat tmp3.txt 1>&2
# Line 122  testoutput_for_prop() Line 164  testoutput_for_prop()
164      echo "-1" >> tmp3.txt      echo "-1" >> tmp3.txt
165      # On the SGI O3K (*not* the O2K), "cat -n" inserts a ":" after the line number      # On the SGI O3K (*not* the O2K), "cat -n" inserts a ":" after the line number
166      cat tmp3.txt | sed -e 's|:||g' > tmp4.txt      cat tmp3.txt | sed -e 's|:||g' > tmp4.txt
167      digits_of_similarity=`./tmp_cmpnum < tmp4.txt`      digits_of_similarity=`./tr_cmpnum < tmp4.txt`
168      if [ $digits_of_similarity -eq 99 ]; then      if [ $digits_of_similarity -eq 99 ]; then
169          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
170              echo testoutput_for_prop: No comparison was available for \"$2\" 1>&2              echo testoutput_var: No comparison was available for \"$3\" 1>&2
171          fi          fi
172          digits_of_similarity=99          digits_of_similarity=99
173      else      else
174          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
175              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 \"$3\" 1>&2
176          fi          fi
177      fi      fi
178      rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt      rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt
# Line 138  testoutput_for_prop() Line 180  testoutput_for_prop()
180      return $digits_of_similarity      return $digits_of_similarity
181  }  }
182    
183  dashnum()  testoutput_run()
184  {  {
185      # dashnum n1 n2 n3 ...      # testoutput_run directory subdir reference_output
186      #      #
187      #  print numbers using %3i format or "--" if number = 99      #  test output from 1 run in "directory"
188    # --> same processing for adjoint & forward test
189      for num in $@ ; do          # default list of output variables to be checked:
190          if [ $num = 99 ]; then          #  1rst : main variable used to decide if it pass or FAIL
191              printf ' --'          #  others : number of matching digits to be printed in summary.txt
192          else          listChk=$DEF_CHECK_LIST
193              printf '%3i' $num          #  load experiment-specific list from file "tr_checklist" (if it exist)
194          fi          if test -r $1/$2/tr_checklist ; then listChk=`cat $1/$2/tr_checklist` ; fi
195      done          sVar=`echo $listChk | awk '{print $1}'`
196  }          # remove 1rst var and expand the list: + => min max mean s.d
197            listVar=`echo $listChk | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' \
198  testoutput_ad()                                 | sed 's/+//g' | sed "s/^$sVar//"`
199  {          if [ $debug -gt 0 ]; then echo "testoutput_run: listVar(I)='$listVar'" 1>&2 ; fi
200      grep $3 $1/results_ad/output.txt_adm | awk '{print NR " " $5}' > t05.txt          # check for ptracer output in reference_output file :
201      grep $3 $1/$2/output.txt_adm | awk '{print NR " " $5}' > t15.txt          outpref=$1/results/$3
202      grep $3 $1/results_ad/output.txt_adm | awk '{print NR " " $6}' > t06.txt          ptr_mon="trcstat_ptracerXX_min trcstat_ptracerXX_max"
203      grep $3 $1/$2/output.txt_adm | awk '{print NR " " $6}' > t16.txt          ptr_mon="$ptr_mon trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
204      join t05.txt t15.txt > t5.txt          for ii in $PTRACERS_NUM ; do
205      join t06.txt t16.txt > t6.txt              ptrfound=0
206      echo "-1" >> t5.txt              for jj in $ptr_mon ; do
207      echo "-1" >> t6.txt                  name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
208      digits_5=`./tmp_cmpnum < t5.txt`                  tst=`grep $name $outpref | wc -l | awk '{print $1}'`
209      digits_6=`./tmp_cmpnum < t6.txt`                  if test ! "x$tst" = x0 ; then ptrfound=1 ; fi
210      dashnum $digits_5 $digits_6              done
211      rm -f t[01][56].txt t[56].txt              if test $ptrfound = '1' ; then
212  }                  eval "HAVE_PTR0"$ii"=t"
213                else
214  testoutput()                  eval "HAVE_PTR0"$ii"=f"
215  {                if test "x$ADM" = x -a "x$OADM" = x; then
216      # testoutput directory subdir                # remove this ptr from the list of output variable to check
217      #                # echo "-- ptr test=" $tst "number of var=" `echo $listVar | awk '{print NF}'` 1>&2
218      #  test output in "directory"                  listVar=`echo "$listVar" | sed "s/ pt$ii..//g"`
219      if test "x$ADM" = x ; then                fi
220          if [ $debug -gt 0 ]; then              fi
221              echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2          #   eval 'echo "HAVE_PTR0'$ii' = $HAVE_PTR0'$ii'"' 1>&2
222          fi          done
223          testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2; cg2dres=$?          tst=`echo $sVar $listVar | awk '{ for(i=2;i<=NF;i++){if($i==$1)t+=1}; print t }'`
224          if [ $debug -gt 0 ]; then          if test $tst != 1 ; then
225              echo testoutput: cg2dres=$cg2dres 1>&2            if test $tst = 0 ; then echo "==> WARNING: selected var >$sVar< not found" 1>&2
226          fi                   else echo "==> WARNING: found selected var >$sVar< $tst times" 1>&2 ; fi
227          testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?            echo "==> WARNING: in checked list:" $listVar 1>&2
228          testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?          #- put it back once:
229          testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2; tmean=$?            listVar=" $sVar "`echo "$listVar " | sed "s/ $sVar / /g"`
230          testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2; tsd=$?          fi
231          testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?          if [ $debug -gt 0 ]; then echo "testoutput_run: listVar(M)='$listVar'" 1>&2 ; fi
232          testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?          echo "listVar='$listVar'" > $CDIR"/summary.txt"
233          testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2; smean=$?          allargs=""
234          testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2; ssd=$?          for xx in $listVar
235          testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?          do
236          testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?            case $xx in
237          testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2; umean=$?             'PS')  if [ $debug -gt 0 ]
238          testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2; usd=$?                    then echo testoutput_run: testoutput_var $1 cg2d_init_res 1>&2 ; fi
239          testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?                    testoutput_var $1 "cg2d_init_res" "Press. Solver (cg2d)" $2 $3; yy=$?
240          testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?                    if [ $debug -gt 0 ] ; then echo testoutput_run: cg2dres=$yy 1>&2 ; fi ;;
241          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2; vmean=$?            'Cost') testoutput_var $1 "ADM  precision_derivative_cost" "ADM Cost" $2 $3; yy=$? ;;
242          testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2; vsd=$?            'Grad') testoutput_var $1 "ADM  precision_derivative_grad" "ADM Grad" $2 $3; yy=$? ;;
243          dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \             'Tmn') testoutput_var $1 "dynstat_theta_min"  "Theta minimum"  $2 $3; yy=$? ;;
244              $umin $umax $umean $usd $vmin $vmax $vmean $vsd             'Tmx') testoutput_var $1 "dynstat_theta_max"  "Theta maximum"  $2 $3; yy=$? ;;
245      else             'Tav') testoutput_var $1 "dynstat_theta_mean" "Theta mean"     $2 $3; yy=$? ;;
246          testoutput_ad $1 $2 "precision_grdchk_result"             'Tsd') testoutput_var $1 "dynstat_theta_sd"   "Theta Std.Dev"  $2 $3; yy=$? ;;
247      fi             'Smn') testoutput_var $1 "dynstat_salt_min"  "Salt minimum"    $2 $3; yy=$? ;;
248               'Smx') testoutput_var $1 "dynstat_salt_max"  "Salt maximum"    $2 $3; yy=$? ;;
249               'Sav') testoutput_var $1 "dynstat_salt_mean" "Salt mean"       $2 $3; yy=$? ;;
250               'Ssd') testoutput_var $1 "dynstat_salt_sd"   "Salt Std.Dev"    $2 $3; yy=$? ;;
251               'Umn') testoutput_var $1 "dynstat_uvel_min"  "U minimum"       $2 $3; yy=$? ;;
252               'Umx') testoutput_var $1 "dynstat_uvel_max"  "U maximum"       $2 $3; yy=$? ;;
253               'Uav') testoutput_var $1 "dynstat_uvel_mean" "U mean"          $2 $3; yy=$? ;;
254               'Usd') testoutput_var $1 "dynstat_uvel_sd"   "U Std.Dev"       $2 $3; yy=$? ;;
255               'Vmn') testoutput_var $1 "dynstat_vvel_min"  "V minimum"       $2 $3; yy=$? ;;
256               'Vmx') testoutput_var $1 "dynstat_vvel_max"  "V maximum"       $2 $3; yy=$? ;;
257               'Vav') testoutput_var $1 "dynstat_vvel_mean" "V mean"          $2 $3; yy=$? ;;
258               'Vsd') testoutput_var $1 "dynstat_vvel_sd"   "V Std.Dev"       $2 $3; yy=$? ;;
259            'pt1mn'|'pt2mn'|'pt3mn'|'pt4mn'|'pt5mn') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
260               testoutput_var $1 "trcstat_ptracer0"$ii"_min"  "p0"$ii"_min"   $2 $3; yy=$? ;;
261            'pt1mx'|'pt2mx'|'pt3mx'|'pt4mx'|'pt5mx') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
262               testoutput_var $1 "trcstat_ptracer0"$ii"_max"  "p0"$ii"_max"   $2 $3; yy=$? ;;
263            'pt1av'|'pt2av'|'pt3av'|'pt4av'|'pt5av') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
264               testoutput_var $1 "trcstat_ptracer0"$ii"_mean" "p0"$ii"_mean" $2 $3; yy=$? ;;
265            'pt1sd'|'pt2sd'|'pt3sd'|'pt4sd'|'pt5sd') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
266               testoutput_var $1 "trcstat_ptracer0"$ii"_sd"   "p0"$ii"_StDv"  $2 $3; yy=$? ;;
267             'Qntmn') testoutput_var $1 "extforcing_qnet_min" "Qnet minimum"  $2 $3; yy=$? ;;
268             'Qntmx') testoutput_var $1 "extforcing_qnet_max" "Qnet maximum"  $2 $3; yy=$? ;;
269             'Qntav') testoutput_var $1 "extforcing_qnet_mean" "Qnet mean"    $2 $3; yy=$? ;;
270             'Qntsd') testoutput_var $1 "extforcing_qnet_sd"  "Qnet Std.Dev"  $2 $3; yy=$? ;;
271             'aSImn') testoutput_var $1 "seaice_area_min"   "SIce Area min"   $2 $3; yy=$? ;;
272             'aSImx') testoutput_var $1 "seaice_area_max"   "SIce Area max"   $2 $3; yy=$? ;;
273             'aSIav') testoutput_var $1 "seaice_area_mean"  "SIce Area mean"  $2 $3; yy=$? ;;
274             'aSIsd') testoutput_var $1 "seaice_area_sd"    "SIce Area StDv"  $2 $3; yy=$? ;;
275             'hSImn') testoutput_var $1 "seaice_heff_min"   "SIce Heff min"   $2 $3; yy=$? ;;
276             'hSImx') testoutput_var $1 "seaice_heff_max"   "SIce Hell max"   $2 $3; yy=$? ;;
277             'hSIav') testoutput_var $1 "seaice_heff_mean"  "SIce Hell mean"  $2 $3; yy=$? ;;
278             'hSIsd') testoutput_var $1 "seaice_heff_sd"    "SIce Hell StDv"  $2 $3; yy=$? ;;
279            'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;;
280            'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South"  $2 $3; yy=$? ;;
281            'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North"  $2 $3; yy=$? ;;
282            'HthSiG') testoutput_var $1 "thSI_IceH_ave_G" "thSIc H Global"    $2 $3; yy=$? ;;
283            'HthSiS') testoutput_var $1 "thSI_IceH_ave_S" "thSIc H South"     $2 $3; yy=$? ;;
284            'HthSiN') testoutput_var $1 "thSI_IceH_ave_N" "thSIc H North"     $2 $3; yy=$? ;;
285                  *) yy=99; echo "WARNING: asking for var=$xx : not recognized !" 1>&2 ;;
286              esac
287              if test $xx = $sVar
288              then allargs="$allargs > $yy <"
289              else allargs="$allargs $yy"
290              fi
291            done
292    
293            nbVar=`echo $listVar | awk '{print NF}'`
294            if [ $nbVar -lt $LEN_CHECK_LIST ] ; then
295            #-- fill line (up to standard length) with dot:
296              adNul=`expr $LEN_CHECK_LIST - $nbVar | awk '{for(i=1;i<=$1;i++){print "."}}'`
297              echo $allargs $adNul
298            else
299              echo $allargs
300            fi
301    # <-- same processing for adjoint & forward test
302  }  }
303    
304  genmakemodel()  genmakemodel()
# Line 211  genmakemodel() Line 307  genmakemodel()
307      if test "x$NOGENMAKE" = xt ; then      if test "x$NOGENMAKE" = xt ; then
308          echo "genmake skipped!"          echo "genmake skipped!"
309      else      else
310          GENMAKE2="$BASH ../../../tools/genmake2"          if test "x$BASH" = x ; then
311                GENMAKE2="../../../tools/genmake2"
312            else
313                GENMAKE2="$BASH ../../../tools/genmake2 -bash $BASH"
314            fi
315          (          (
316              cd $1;              cd $1;
317              command="$GENMAKE2  -ds -m $MAKE"              command="$GENMAKE2  -ds -m $MAKE"
318              if test "x$ADM" = x ; then              if test "x$ADM" = xt ; then
                 command="$command --mods=../code"  
             else  
319                  command="$command --mods=../code_ad"                  command="$command --mods=../code_ad"
320                  command="$command -adof=../../../tools/adjoint_options/adjoint_staf"              elif test "x$OADM" = xt ; then
321                    command="$command -adof ../../../tools/adjoint_options/adjoint_oad -mods '../code_oad ../../OpenAD/code_oad_all'"
322                else
323                    command="$command --mods=../code"
324              fi              fi
325              if test "x$OPTFILE" != xNONE ; then              if test "x$OPTFILE" != xNONE ; then
326                  command="$command --optfile=$OPTFILE"                  command="$command --optfile=$OPTFILE"
# Line 227  genmakemodel() Line 328  genmakemodel()
328              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
329                  command="$command -ieee"                  command="$command -ieee"
330              fi              fi
331                if test "x$GSL" = xt ; then
332                    command="$command -gsl"
333                fi
334                if test "x$MPI" = xt ; then
335                    command="$command -mpi"
336                fi
337                if test "x$TS" = xt ; then
338                    command="$command -ts"
339                fi
340                if test "x$PAPIS" = xt ; then
341                    command="$command -papis"
342                else
343                if test "x$PCLS" = xt ; then
344                    command="$command -pcls"
345                fi
346                fi
347              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
348              $command > make.log 2>&1              # $command > make.log 2>&1
349                eval $command > make.log 2>&1
350              RETVAL=$?              RETVAL=$?
351              cp Makefile $CDIR              #  Reduce the size of the testing emails!
352                head -100 Makefile > $CDIR/Makefile_head
353              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
354                  tail make.log                  tail make.log
355                  echo "genmakemodel: genmake failed" 1>&2                  echo "genmakemodel: genmake failed" 1>&2
# Line 247  makeclean() Line 366  makeclean()
366  {  {
367      # makeclean directory      # makeclean directory
368      if test "x$NOCLEAN" = xt ; then      if test "x$NOCLEAN" = xt ; then
369          echo "make CLEAN skipped!"          echo "make Clean skipped!"
370      else      else
371          (          (
372              cd $1;              cd $1;
373              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  
374              if test -r Makefile ; then              if test -r Makefile ; then
375                  $MAKE CLEAN >> make.log 2>&1                  printf 'clean build-dir: make Clean ... ' 2>&1
376                    $MAKE Clean >> make.log 2>&1
377                  RETVAL=$?                  RETVAL=$?
378                  if test "x$RETVAL" != x0 ; then                  if test "x$RETVAL" != x0 ; then
379                      tail make.log                      tail make.log
380                      echo "makeclean: \"make CLEAN\" failed" 1>&2                      echo "makeclean: \"make Clean\" failed" 1>&2
381                      cp make.log $CDIR"/make.log"                      cp make.log $CDIR"/make.log"
382                      return 1                      return 1
383                  fi                  fi
# Line 271  makeclean() Line 388  makeclean()
388      fi      fi
389  }  }
390    
391    run_clean()
392    {
393        # run_clean directory
394        if test "x$NOCLEAN" = xt ; then
395            echo "run_clean skipped!"
396        else
397            (
398                cd $1;
399                printf 'clean run-dir ... ' 2>&1
400                # part of what is done after "make clean" when doing "make CLEAN"
401                find . -name "*.meta" -exec rm {} \;
402                find . -name "*.data" -exec rm {} \;
403                find . -name "fort.*" -exec rm {} \;
404                find . -type l -exec rm {} \;
405                rm -f $EXECUTABLE *.txt STD* *diagnostics.log datetime
406                rm -rf mnc_test_*
407                rm -f *_MIT_CE_000.opt0000 costfunction*0000
408                echo successful 1>&2
409                exit 0
410            )
411        fi
412    }
413    
414  makedependmodel()  makedependmodel()
415  {  {
416      # makedependmodel directory      # makedependmodel directory
# Line 301  makemodel() Line 441  makemodel()
441          cd $1;          cd $1;
442          if test -r Makefile ; then          if test -r Makefile ; then
443              printf 'make ... ' 1>&2              printf 'make ... ' 1>&2
444              if test "x$ADM" = x ; then              if test "x$ADM" = xt ; then
                 $MAKE >> make.log 2>&1  
             else  
445                  $MAKE adall >> make.log 2>&1                  $MAKE adall >> make.log 2>&1
446                elif test "x$OADM" = xt ; then
447                    $MAKE adAll >> make.log 2>&1
448                else
449                    if test "x$JOBS" = x ; then
450                        $MAKE >> make.log 2>&1
451                    else
452                        $MAKE -j $JOBS >> make.log 2>&1
453                    fi
454              fi              fi
455              RETVAL=$?              RETVAL=$?
456              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
# Line 329  symlink_mpifiles() Line 475  symlink_mpifiles()
475      code_dir=$2      code_dir=$2
476      BUILD_DIR=$dir/$3      BUILD_DIR=$dir/$3
477      CODE_DIR=$dir/$code_dir      CODE_DIR=$dir/$code_dir
478        
479      # These are files that should replace their counter-part when using -mpi      # These are files that should replace their counter-part when using -mpi
480      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi" -print)`
481    
482      #  Is this an MPI run?      #  Is this an MPI run?
483      if test "x$MPI" = xt ; then      if test "x$MPI" = xt ; then
# Line 344  symlink_mpifiles() Line 490  symlink_mpifiles()
490              RETVAL=$?              RETVAL=$?
491              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
492                  if ! test -f $BUILD_DIR/$i ; then                  if ! test -f $BUILD_DIR/$i ; then
493                  #echo Linking $name to $i                      #echo Linking $name to $i
494                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)                      (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
495                  fi                  fi
496              fi              fi
497          done          done
498      else      else
499      # NO: We undo any _mpi symbolically linked files          # NO: We undo any _mpi symbolically linked files
500          for ii in $MPI_FILES ; do          for ii in $MPI_FILES ; do
501              i=`echo $ii | sed 's:^\./::'`              i=`echo $ii | sed 's:^\./::'`
502              name=`echo $i | sed 's:_mpi::' `              name=`echo $i | sed 's:_mpi::' `
503              if test -L $BUILD_DIR/$name ; then              if test -L $BUILD_DIR/$name ; then
504                  linktarg=`(cd $BUILD_DIR; readlink $name)`                  cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
505                  if test $linktarg = "../$code_dir/$name"_mpi ; then                  RETVAL=$?
506                  #echo Un-linking $name from $linktarg                  if test "x$RETVAL" = x0 ; then
507                        #echo Un-linking $name from $linktarg
508                      rm -f $BUILD_DIR/$name                      rm -f $BUILD_DIR/$name
509                  fi                  fi
510              fi              fi
# Line 368  symlink_mpifiles() Line 515  symlink_mpifiles()
515    
516  linkdata()  linkdata()
517  {  {
518      # linkdata flag      # linkdata run_dir input_dir_1 input_dir_2 ...
519      #      #
520      # symbolically link data files to run directory      # symbolically link data files to run directory
521      if test "x$1" = x1 ; then      if test -d $1 ; then
522          (          (
523              cd $2              cd $1 ; shift
524              if test "x$ADM" = x ; then              if test -r "../"$1"/eedata.mth" ; then
525                  files=`( cd ../input ; ls -1 | grep -v CVS )`              # found eedata.mth in 1rst input dir and it is readable
526                  for i in $files ; do                  if test "x$MULTI_THREAD" = "xt" ; then
527                      if test ! -d "../input/"$i ; then                  # multi-threaded test: remove symbolic link & link eedata.mth
528                          ln -sf "../input/"$i $i                      if test -h eedata ; then rm -f eedata ; fi
529                      fi                      if test ! -r eedata ; then
530                  done                          ln -sf "../"$1"/eedata.mth" eedata ;
531              else                          printf 'eedata.mth ' 1>&2
                 files=`( cd ../input ; ls -1 *.bin | grep -v CVS )`  
                 for i in $files ; do  
                     if test ! -d "../input/"$i ; then  
                         ln -sf "../input/"$i $i  
532                      fi                      fi
533                  done                  else
534                  files=`( cd ../input_ad ; ls -1 | grep -v CVS )`                  # not multi-threaded test: remove eedata symbolic link
535                  for i in $files ; do                      if test -h eedata ; then rm -f eedata ; fi
536                      if test ! -d "../input_ad/"$i ; then                  fi
                         ln -sf "../input_ad/"$i $i  
                     fi  
                 done  
537              fi              fi
538                prevDir='NONE'
539                for ldir in $* ; do
540                    if test -d "../"$ldir -a $ldir != $prevDir ; then
541                        printf 'ldir='${ldir} 1>&2
542                        files=`( cd "../"$ldir ; ls -1 | grep -v CVS )`
543                        for i in $files ; do
544                            if test ! -d "../"$ldir/$i ; then
545                                if test ! -r $i  ; then
546                                    printf ' '$i 1>&2
547                                    ln -sf "../"$ldir"/"$i $i
548                                fi
549                            fi
550                        done
551                        if test -x "../"$ldir"/"prepare_run ; then
552                            "../"$ldir"/"prepare_run
553                        fi
554                        printf ' ; ' 1>&2
555                    fi
556                    prevDir=$ldir
557                done
558          )          )
559      fi      fi
560  }  }
# Line 407  runmodel() Line 567  runmodel()
567      #  (where "$COMMAND" is relative to "directory")      #  (where "$COMMAND" is relative to "directory")
568      (      (
569          cd $1          cd $1
570          printf 'runmodel ... ' 1>&2          printf 'runmodel in %s ...' $1 1>&2
571          # make output.txt          # make output.txt
572          $COMMAND >> run.log 2>&1          echo
573          RETVAL=$?          if test -L $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then
574          if test "x$RETVAL" = x0 ; then              diff -q $EXECUTABLE "../"$builddir"/"$EXECUTABLE > /dev/null 2>&1
575              echo successful 1>&2              outD=$? ; if test $outD != 0 ; then rm -f $EXECUTABLE ; fi
576              if test "x$ADM" = x ; then          fi
577                  cp output.txt $CDIR"/output.txt"          if test ! -x $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then
578                echo " link" $EXECUTABLE "from dir ../"$builddir > run.log_tmp
579                ln -sf "../"$builddir"/"$EXECUTABLE .
580            fi
581            if test ! -x $EXECUTABLE ; then
582                    rm -f $RUNLOG ; touch $RUNLOG
583                    if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
584                    echo " no executable:" $EXECUTABLE >> $RUNLOG
585                    RETVAL=8
586                    ENDVAL=-1
587            else
588                if test ! -f $OUTPUTFILE -o $OUTPUTFILE -ot $EXECUTABLE ; then
589                  # output do not exist or is older than executable:
590                    rm -f $RUNLOG ; touch $RUNLOG
591                    if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
592                    ( eval $COMMAND ) >> $RUNLOG 2>&1
593                    RETVAL=$?
594              else              else
595                  cp output.txt_adm $CDIR"/output.txt_adm"                  RETVAL=0
596                    if test -f $RUNLOG ; then
597                        if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
598                        echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1
599                    else
600                        touch $RUNLOG
601                        if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
602                        echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1
603                        echo " no previous $RUNLOG: assume NORMAL END" >> $RUNLOG 2>&1
604                    fi
605              fi              fi
606                ENDVAL=`cat $RUNLOG | grep -v 'ABNORMAL END' | grep -c 'NORMAL END'`
607            fi
608            rm -f run.log_tmp
609            #if test "x$RETVAL" = x0 ; then
610            if [ $RETVAL -eq 0 -a $ENDVAL -gt 0 ] ; then
611                tail $RUNLOG
612                echo successful 1>&2
613                # === Reduce the size of the testing emails!
614                #cp $OUTPUTFILE $CDIR"/"$OUTPUTFILE
615                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
616              return 0              return 0
617          else          else
618              tail run.log              tail $RUNLOG
619              echo failed 1>&2              echo failed '(run:' $RETVAL ' end:' $ENDVAL ')' 1>&2
620              cp run.log $CDIR"/run.log"              cp $RUNLOG $CDIR"/"$RUNLOG
621                if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
622              return 1              return 1
623          fi          fi
624      )      )
# Line 432  createcodelet() Line 628  createcodelet()
628  {  {
629      # create codelet for comparing model output      # create codelet for comparing model output
630    
631      echo -n "creating the comparison code...  "      printf "creating the comparison code (using CC=$CC)...  "
632      cat > tmp_cmpnum.c <<EOF      cat > tr_cmpnum.c <<EOF
633  #include <stdio.h>  #include <stdio.h>
634  #include <math.h>  #include <math.h>
635  int main( int argc, char** argv )  {  int main( int argc, char** argv )  {
636    int linnum,best;    int linnum,cmplin,best,lncnt;
637    double a,b,diff;    double a,b,abave,relerr;
638    best = -16;    best = -22;
639    while( 1 )  {    lncnt = 0;
640      while( 1 & ( (lncnt+=1) < 999 ) )  {
641      scanf("%d", &linnum);      scanf("%d", &linnum);
642      if (linnum == -1)  break;      if (linnum == -1)  break;
643      scanf("%lf", &a);  scanf("%lf", &b);      scanf("%lf", &a);  scanf("%lf", &b);
644      diff = 0.5*(fabs(a)+fabs(b));      abave = 0.5*(fabs(a)+fabs(b));
645      if (diff > 1.e-12) {      if ( abave == abave ) {
646        diff=fabs(a-b)/diff;        if (abave > 0.0) {
647        if (diff > 0.0) {          relerr=fabs(a-b)/abave;
648          linnum = (int)log10(diff);          if (relerr > 0.0) { cmplin = (int)rint(log10(relerr)); }
649          best = (best > linnum) ? best : linnum;          else { cmplin = -16 ; }
650        }          best = (best > cmplin) ? best : cmplin; }
651        else {        else { cmplin = -22 ; }
652          if (best == -16 && diff != 0)  best = -22;     /* printf("%d ; %lf ; %lf\n",cmplin,a,b); */
653        }        }
654      }     else {
655       /* printf("%lf ; %lf ; %lf\n",abave,a,b); */
656          break; }
657    }    }
658      if (lncnt == 999) best=-29;
659      if (linnum != -1) best=-99;
660    printf("%d\n", -best);    printf("%d\n", -best);
661    return 0;    return 0;
662  }  }
663  EOF  EOF
664      cc -o tmp_cmpnum tmp_cmpnum.c -lm      $CC -o tr_cmpnum tr_cmpnum.c -lm
665    
666      if [ -x ./tmp_cmpnum ]; then      if [ -x ./tr_cmpnum ]; then
667          echo "OK"          echo "OK"
668          return 0          return 0
669      else      else
670          echo          echo
671          echo "ERROR: failed to compile comparison code"          echo "ERROR: failed to compile comparison code -- please specify"
672            echo "  a C compiler using the CC environment variable."
673          exit 1          exit 1
674      fi      fi
675  }  }
# Line 479  formatresults() Line 681  formatresults()
681      nm=$1      nm=$1
682      printf '%s %s %s %s' $2 $3 $4 $5      printf '%s %s %s %s' $2 $3 $4 $5
683      shift; shift; shift; shift; shift;      shift; shift; shift; shift; shift;
684      printf '%3s' $@      listPrt=$@
685        listRes=`echo $listPrt | sed 's/>//' | sed 's/<//'`
686        xx=`echo $listPrt | sed 's/.*>//' | sed 's/<.*//' | awk '{print $1}'`
687        printf '%3s' $listPrt
688    #   line below does not work on hp-ux_ia64 : do those substitutions later on
689    #   printf '%3s' $listPrt | sed 's/ 99/ --/g' | sed 's/  > />/' | sed 's/  < /</'
690            
691      if [ $1 = '--' ]; then      if [ $xx = '..' ]; then
692            printf ' N/O '
693        elif [ $xx = '--' ]; then
694            printf ' N/O '
695        elif [ $xx = 99 ]; then
696          printf ' N/O '          printf ' N/O '
697      else      else
698          if [ $1 -gt 12 ]; then          if [ $xx -ge $MATCH_CRIT ]; then
699              printf ' pass'              printf ' pass'
700          else          else
701              printf ' FAIL'              printf ' FAIL'
# Line 495  formatresults() Line 706  formatresults()
706            
707  }  }
708    
 show_help()  
 {  
     cat - << EOF  
 $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]  
   
  -help|-h      Show this help message  
  -quiet     Reduce the amount of output  
  -verbose   Produce copious amounts of output  
  -debug     Produce even more output which will mean nothing to most  
  -force     Do "make CLEAN" before compiling. This forces a complete rebuild.  
  -clean     Do "make CLEAN" after compiling and testing.  
  -cleanup   Aggresively removes all model output, executables and object files  
             and then exits. Use with care.  
   
 Normal usage:  
  $0 *       Configure, compile, run and analyze in all experiment directories  
 EOF  
 }  
   
709  scandirs()  scandirs()
710  {  {
711      if [ $# -eq 0 ]; then      if [ $# -eq 1 ]; then
712          for arg in * ; do          for arg in * ; do
713              test -d $arg/input && echo $arg              test -f $arg/$1 && echo $arg
714          done          done
715      else      else
716          echo $*          echo $*
717      fi      fi
718  }  }
719    
# Line 533  scandirs() Line 725  scandirs()
725  debug=0  debug=0
726  verbose=1  verbose=1
727  clean=0  clean=0
 expts=''  
 # ieee=1  
728    
729  IEEE=  IEEE=true
730  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
731      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
732  fi  fi
733    GSL=f
734    
735  CLEANUP=f  CLEANUP=f
736  QUICK=f  QUICK=f
737  NOGENMAKE=f  NOGENMAKE=f
738  NOCLEAN=f  NOCLEAN=f
739  NODEPEND=f  NODEPEND=f
740    POSTCLEAN=f
741    
742  BASH=  BASH=
743  OPTFILE=NONE  OPTFILE=NONE
744  ADDRESSES=  ADDRESSES=
745  TESTDIRS=  TESTDIRS=
746    SKIPDIRS=
747  MPACKDIR="../tools/mpack-1.6"  MPACKDIR="../tools/mpack-1.6"
748  HAVE_MPACK=  HAVE_MPACK=
749  MPACK="$MPACKDIR/mpack"  MPACK=
750  COMMAND=  COMMAND=
751  MAKE=make  if test "x$MAKE" = x ; then
752        MAKE=make
753    fi
754    if test "x$CC" = x ; then
755        CC=cc
756    fi
757    JOBS=
758  MPI=f  MPI=f
759    MULTI_THREAD=f
760    OUTDIR=
761    DELDIR=
762    
763  ADM=  ADM=
764    OADM=
765    
766  echo -n "parsing options...  "  # list of pTracers to check for monitor output
767    PTRACERS_NUM="1 2 3 4 5"
768    
769    MATCH_CRIT=13
770    
771    printf "parsing options...  "
772    
773  ac_prev=  ac_prev=
774  for ac_option ; do  for ac_option ; do
# Line 589  for ac_option ; do Line 796  for ac_option ; do
796              ac_prev=ADDRESSES ;;              ac_prev=ADDRESSES ;;
797          -addr=* | --addr=*)          -addr=* | --addr=*)
798              ADDRESSES=$ac_optarg ;;              ADDRESSES=$ac_optarg ;;
799            -mpackdir | --mpackdir | -mpd | --mpd)
800                ac_prev=MPACKDIR ;;
801            -mpackdir=* | --mpackdir=* | -mpd=* | --mpd=*)
802                MPACKDIR=$ac_optarg ;;
803    
804          -tdir | --tdir | -t | --t)          -tdir | --tdir | -t | --t)
805              ac_prev=TESTDIRS ;;              ac_prev=TESTDIRS ;;
806          -tdir=* | --tdir=*)          -tdir=* | --tdir=*)
807              TESTDIRS=$ac_optarg ;;              TESTDIRS=$ac_optarg ;;
808    
809            -skipdir | --skipdir | -skd | --skd)
810                ac_prev=SKIPDIRS ;;
811            -skipdir=* | --skipdir=*)
812                SKIPDIRS=$ac_optarg ;;
813    
814          -bash | --bash | -b | --b)          -bash | --bash | -b | --b)
815              ac_prev=BASH ;;              ac_prev=BASH ;;
816          -bash=* | --bash=*)          -bash=* | --bash=*)
# Line 610  for ac_option ; do Line 826  for ac_option ; do
826          -make=* | --make=*)          -make=* | --make=*)
827              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
828    
829            -odir | --odir)
830                ac_prev=OUTDIR ;;
831            -odir=* | --odir=*)
832                OUTDIR=$ac_optarg ;;
833    
834            -ptracers | --ptracers | -ptr | --ptr)
835                ac_prev=PTRACERS_NUM ;;
836            -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
837                PTRACERS_NUM=$ac_optarg ;;
838    
839            -match | --match ) ac_prev=MATCH_CRIT ;;
840            -match=* | --match=* ) MATCH_CRIT=$ac_optarg ;;
841    
842            -j) ac_prev=JOBS ;;
843            -j=*) JOBS=$ac_optarg ;;
844    
845          -clean | --clean)          -clean | --clean)
846              CLEANUP=t ;;              CLEANUP=t ; DELDIR=t ;;
847    
848          -quick | --quick | -q | --q)          -quick | --quick | -q | --q)
849              QUICK=t ;;              QUICK=t ;;
# Line 622  for ac_option ; do Line 854  for ac_option ; do
854          -nodepend | --nodepend | -nd | --nd)          -nodepend | --nodepend | -nd | --nd)
855              NODEPEND=t ;;              NODEPEND=t ;;
856    
857            -postclean | --postclean | -pc | --pc)
858                POSTCLEAN=t ;;
859    
860          -mpi) MPI=t ;;          -mpi) MPI=t ;;
861    
862            -mth) MULTI_THREAD=t ;;
863    
864          -adm | -ad) ADM=t ;;          -adm | -ad) ADM=t ;;
865    
866            -oad) OADM=t; NODEPEND=t ;;
867    
868          -ieee) IEEE=true ;;          -ieee) IEEE=true ;;
869          -noieee) IEEE= ;;          -noieee) IEEE= ;;
870            -gsl) GSL=t ;;
871    
872          -verbose) verbose=2 ;;          -verbose) verbose=2 ;;
873          -debug) debug=1 ;;          -debug) debug=1 ;;
874          -quiet) verbose=0 ;;          -quiet) verbose=0 ;;
875    
876            -deldir | -dd) DELDIR=t ;;
877    
878            -ts) TS=t;;
879    
880            -papis) PAPIS=t;;
881    
882            -pcls) PCL=t;;
883    
884          -*)          -*)
885              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
886              usage              usage
# Line 653  if test "x$QUICK" = xt ; then Line 901  if test "x$QUICK" = xt ; then
901      NODEPEND=t      NODEPEND=t
902  fi  fi
903    
904    #- setting for forward or ADM testing
905    if test "x$ADM" = xt ; then
906        code_dir=code_ad
907        inputdir=input_ad
908        ref_outp="output_adm.txt"
909        EXECUTABLE="mitgcmuv_ad"
910    elif test "x$OADM" = xt ; then
911        code_dir=code_oad
912        inputdir=input_oad
913        ref_outp="output_oadm.txt"
914        EXECUTABLE="mitgcmuv_ad"
915    else
916        code_dir=code
917        inputdir=input
918        ref_outp="output.txt"
919        EXECUTABLE="mitgcmuv"
920    fi
921    
922  if test "x$TESTDIRS" = x ; then  if test "x$TESTDIRS" = x ; then
923      TESTDIRS=`scandirs`      LIST=`scandirs results/$ref_outp`
924    else
925        #- expand group of experiments:
926        LIST=" "
927        for xx in $TESTDIRS
928        do
929          case $xx in
930            'basic') LIST=${LIST}" aim.5l_cs hs94.128x64x5 ideal_2D_oce"
931                     LIST=${LIST}" lab_sea tutorial_baroclinic_gyre"
932                     LIST=${LIST}" tutorial_global_oce_latlon tutorial_plume_on_slope"
933                    ;;
934            'tutorials')
935                     LIST=${LIST}" "`ls | grep 'tutorial_'` ;;
936            *)       LIST=${LIST}" "$xx ;;
937          esac
938        done
939  fi  fi
940    #echo 'LIST='${LIST}'<'
941    #- skip dirs, remove duplicate and non-directory:
942    TESTDIRS=" "
943    count=0
944    for xx in $LIST
945    do
946        yy=`echo $SKIPDIRS | grep -c $xx`
947        if test $yy = 0 ; then
948            if test -d $xx ; then
949                yy=`echo $TESTDIRS | grep -c $xx`
950                if test $yy = 0 ; then TESTDIRS=${TESTDIRS}" "$xx ; fi
951            else count=1 ;
952                echo ""; echo -n " -- skip \"$xx\" (not a directory !)"
953            fi
954        else
955            if test $count = 1 ; then echo -n ", \"$xx\""
956            else count=1 ; echo "" ;  echo -n " skip: \"$xx\""
957            fi
958        fi
959    done
960    if test $count = 1 ; then echo "" ; echo -n " ... " ; fi
961    #echo 'TESTDIRS='${TESTDIRS}'<'
962    
963  if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then  if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
964      OPTFILE=$MITGCM_OF      OPTFILE=$MITGCM_OF
965  fi  fi
966    
967  if test "x$ADM" = xt -a "x$COMMAND" = x ; then  RUNLOG="run.log"
968      COMMAND="./mitgcmuv_ad > output.txt_adm 2>&1"  OUTPUTFILE=$ref_outp
 fi  
   
969  if test "x$COMMAND" = x ; then  if test "x$COMMAND" = x ; then
970      COMMAND="make output.txt"      COMMAND="./$EXECUTABLE > $OUTPUTFILE"
971    fi
972    if test "x$MPI" = xt ; then
973        OUTPUTFILE="STDOUT.0000"
974  fi  fi
975    
976  echo "OK"  echo "OK (COMMAND= $COMMAND )"
977    
978    # set the Default List of output variables to be checked:
979    #  (use default or load experiment-specific list from file "tr_checklist")
980    # content : 1rst = main variable used to decide if it pass or FAIL
981    #         others = number of matching digits to be printed in summary.txt
982    if test "x$ADM" = x -a "x$OADM" = x; then
983        DEF_CHECK_LIST='PS PS T+ S+ U+ V+ pt1+ pt2+ pt3+ pt4+ pt5+'
984        EMPTY_RESULTS='.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..'
985        LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'`
986        ii=`echo $EMPTY_RESULTS | awk '{print NF}'`
987        EMPTY_RESULTS=$EMPTY_RESULTS`expr $LEN_CHECK_LIST - $ii | awk 'BEGIN{FS=":"}{for(i=1;i<=$1;i++){printf "  ."}}'`
988    else
989        DEF_CHECK_LIST='Grad Cost Grad'
990        EMPTY_RESULTS='.. ..'
991        LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'`
992    fi
993    
994  #  create the FORTRAN comparison code  #  create the FORTRAN comparison code
995  createcodelet  createcodelet
996    
997  #  build the mpack utility  #  build the mpack utility (if ADDRESSES = NONE, do it to test the build)
998  build_mpack  if test "x$ADDRESSES" = x ; then
999        echo "skipping mpack build"
1000    else
1001        build_mpack
1002    fi
1003    
1004  #  Create a uniquely named directory to store results  #  Create a uniquely named directory to store results
1005    CMDLINE=$0
1006    for xx in "$@" ; do nw=`echo $xx | wc -w`
1007        if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"
1008                            else CMDLINE="$CMDLINE '$xx'" ; fi
1009    done
1010    #for xx in "$@" ; do CMDLINE="$CMDLINE '$xx'" ; done
1011  MACH=`hostname`  MACH=`hostname`
1012  UNAMEA=`uname -a`  UNAMEA=`uname -a`
1013  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
1014  BASE="tr_"$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
1015    if test "x$OUTDIR" != x ; then
1016        BASE="tr_"$OUTDIR"_"$DATE"_"
1017    else
1018        short_name=`hostname | sed 's/\..*$//'`
1019        BASE="tr_"$short_name"_"$DATE"_"
1020    fi
1021  DNUM=0  DNUM=0
1022  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
1023  while test -e $DRESULTS ; do  while test -e $DRESULTS ; do
# Line 695  if test "x$RETVAL" != x0 ; then Line 1031  if test "x$RETVAL" != x0 ; then
1031      exit 1      exit 1
1032  fi  fi
1033  SUMMARY="$DRESULTS/summary.txt"  SUMMARY="$DRESULTS/summary.txt"
 echo -n "Start time:  " >> $SUMMARY  
1034  start_date=`date`  start_date=`date`
1035  echo $start_date > $SUMMARY  echo $start_date > $SUMMARY
1036    echo 'run:' $CMDLINE >> $SUMMARY
1037    echo 'on :' $UNAMEA  >> $SUMMARY
1038    
1039  of_path=  of_path=
1040  if test "x$OPTFILE" != xNONE ; then  if test "x$OPTFILE" != xNONE ; then
# Line 726  else Line 1063  else
1063  fi  fi
1064  echo  echo
1065  echo >> $SUMMARY  echo >> $SUMMARY
1066  if test "x$ADM" = x ; then  if test "x$ADM" = x -a "x$OADM" = x; then
1067      cat << EOF | tee -a $SUMMARY      if [ $MATCH_CRIT -lt 10 ] ;
1068                  T           S           U           V      then line_0="default  "$MATCH_CRIT ;
1069  G D M    c        m  s        m  s        m  s        m  s      else line_0="default "$MATCH_CRIT ; fi
1070  E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .         line_0="$line_0  ----T-----  ----S-----  ----U-----  ----V-----"
1071  N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d  #   line_0="            ----T-----  ----S-----  ----U-----  ----V-----"
1072  2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .      line_1="G D M    c        m  s        m  s        m  s        m  s"
1073        line_2="E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  ."
1074  EOF      line_3="N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d"
1075        line_4="2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  ."
1076        for ii in $PTRACERS_NUM ; do
1077            line_0="$line_0  --PTR 0"$ii"--"
1078            line_1="$line_1        m  s"
1079            line_2="$line_2  m  m  e  ."
1080            line_3="$line_3  i  a  a  d"
1081            line_4="$line_4  n  x  n  ."
1082        done
1083        echo "$line_0" | tee -a $SUMMARY
1084        echo "$line_1" | tee -a $SUMMARY
1085        echo "$line_2" | tee -a $SUMMARY
1086        echo "$line_3" | tee -a $SUMMARY
1087        echo "$line_4" | tee -a $SUMMARY
1088        echo " "       | tee -a $SUMMARY
1089  else  else
1090      echo "ADJOINT=true" >> $SUMMARY      echo "ADJOINT=true" >> $SUMMARY
1091      echo >> $SUMMARY      echo >> $SUMMARY
1092        if [ $MATCH_CRIT -lt 10 ] ;
1093        then line_0="default     "$MATCH_CRIT ;
1094        else line_0="default    "$MATCH_CRIT ; fi
1095        echo "$line_0" | tee -a $SUMMARY
1096      cat << EOF | tee -a $SUMMARY      cat << EOF | tee -a $SUMMARY
1097  G D M    C  G  G D M    C  G
1098  E p a R  o  r  E p a R  o  r
# Line 750  fi Line 1105  fi
1105  #  ...and each test directory...  #  ...and each test directory...
1106  for dir in $TESTDIRS ; do  for dir in $TESTDIRS ; do
1107            
1108        # set builddir & rundir:
1109        builddir="build"
1110        if test ! -d $dir/$builddir ; then mkdir $dir/$builddir ; fi
1111        rundir="run"
1112        if test ! -d $dir/$rundir ; then
1113            rundir=$builddir
1114        fi
1115        CODE_DIR=$dir/$code_dir
1116        BUILD_DIR=$dir/$builddir
1117    
1118      #  Cleanup only!      #  Cleanup only!
1119      if test "x$CLEANUP" = xt ; then      if test "x$CLEANUP" = xt ; then
1120          if test -r $dir/build/Makefile ; then          if test -r $BUILD_DIR/Makefile ; then
1121              ( cd $dir/build ; make CLEAN )              echo '  ------  clean dir:' $dir/$builddir
1122                ( cd $BUILD_DIR ; make CLEAN )
1123          fi          fi
1124          if test -r $dir/input/Makefile ; then          if test -d $dir/$rundir/CVS ; then
1125              ( cd $dir/input ; make CLEAN )              echo '  ------  clean dir:' $dir/$rundir
1126                run_clean $dir/$rundir
1127          fi          fi
1128            (
1129                cd $dir
1130                rm -rf tr_run.*
1131            )
1132          continue          continue
1133      fi      fi
1134    
1135      #  Verify that the testdir exists and contains previous      #  Verify that the testdir exists and contains previous
1136      #  results in the correct location--or skip this directory!      #  results in the correct location--or skip this directory!
1137      fout=      fout=$dir"/results/"$ref_outp
     if test "x$ADM" = x ; then  
         fout=$dir"/results/output.txt"  
     else  
         fout=$dir"/results_ad/output.txt_adm"  
     fi  
1138      if test ! -r $fout ; then      if test ! -r $fout ; then
1139          echo "can't read \"$fout\" -- skipping $dir"          echo "can't read \"$fout\" -- skipping $dir"
1140          continue          continue
1141      fi      fi
1142    
1143      builddir="input"      # Check for specific files for particular type of run
     rundir="input"  
     use_seperate_build=0  
     if test -d $dir/build -a -r $dir/build ; then  
         builddir="build"  
         rundir="build"  
         use_seperate_build=1  
         linkdata $use_seperate_build $dir/$rundir  
     fi  
       
     if test "x$ADM" = x ; then  
         code_dir=code  
         CODE_DIR=$dir/code  
     else  
         code_dir=code_ad  
         CODE_DIR=$dir/code_ad  
     fi  
     BUILD_DIR=$dir/$builddir  
1144    
1145      if test ! -r $CODE_DIR"/SIZE.h_mpi" -a "x$MPI" = "xt" ; then      if test ! -r $CODE_DIR"/SIZE.h_mpi" -a "x$MPI" = "xt" ; then
1146          echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"          echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"
1147          continue          continue
1148      fi      fi
1149        if test ! -r $dir"/input/eedata.mth" -a "x$MULTI_THREAD" = "xt" ; then
1150            echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir"
1151            continue
1152        fi
1153    
1154        #  Check whether there are "extra runs" for this testdir
1155        extra_runs=
1156        ex_run_dirs=`( cd $dir ; echo $inputdir.* )`
1157        #echo "ex_run_dirs='$ex_run_dirs'"
1158        for exd in $ex_run_dirs ; do
1159            name=`echo $exd | sed -e "s/$inputdir\.//"`
1160            refExOut=`echo $ref_outp | sed "s/\./.${name}./"`
1161            outf="$dir/results/$refExOut"
1162            if test -f $outf -a -r $outf ; then
1163                if test "x$MULTI_THREAD" = "xt" ; then
1164                    if test -r $dir"/"$exd"/eedata.mth" ; then
1165                        extra_runs="$extra_runs $name"
1166                    #else echo $dir"/"$exd"/eedata.mth: not found"
1167                    fi
1168                else
1169                    extra_runs="$extra_runs $name"
1170                fi
1171            fi
1172        done
1173    
1174      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1175      echo      echo
1176      echo "Experiment:  $dir"      if test "x$extra_runs" = "x" ; then
1177           echo "Experiment:  $dir"
1178        else
1179           echo "Experiment:  $dir ; extra_runs=$extra_runs"
1180        fi
1181      echo      echo
1182      unset genmake makedepend make run      unset genmake makedepend make run
1183      results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'      results=$EMPTY_RESULTS
1184    
1185      #  Create an output dir for each OPTFILE/tdir combination      #  Create an output dir for each OPTFILE/tdir combination
1186      rel_CDIR=$DRESULTS"/"$dir      rel_CDIR=$DRESULTS"/"$dir
# Line 811  for dir in $TESTDIRS ; do Line 1188  for dir in $TESTDIRS ; do
1188      CDIR=`pwd`"/$rel_CDIR"      CDIR=`pwd`"/$rel_CDIR"
1189            
1190      if test "x$CLEANUP" = xt ; then      if test "x$CLEANUP" = xt ; then
1191          makeclean $dir/$builddir          echo '====>>> this is to check that we never go through this part <<< ==='
1192            makeclean $dir/$builddir \
1193                && run_clean $dir/$rundir
1194      else      else
1195          genmakemodel $dir/$builddir && genmake=Y \          genmakemodel $dir/$builddir && genmake=Y \
1196              && makeclean $dir/$builddir \              && makeclean $dir/$builddir \
1197                && run_clean $dir/$rundir \
1198              && symlink_mpifiles $dir $code_dir $builddir \              && symlink_mpifiles $dir $code_dir $builddir \
1199              && makedependmodel $dir/$builddir && makedepend=Y \              && makedependmodel $dir/$builddir && makedepend=Y \
1200              && makemodel $dir/$builddir && make=Y \              && makemodel $dir/$builddir && make=Y \
1201              && linkdata $use_seperate_build $dir/$rundir \              && linkdata $dir/$rundir $inputdir input \
1202              && runmodel $dir/$rundir && run=Y \              && runmodel $dir/$rundir && run=Y \
1203              && results=`testoutput $dir $rundir`              && results=`testoutput_run $dir $rundir $ref_outp`
1204      fi      fi
1205            
1206      echo      echo
     if test "x$ADM" = x ; then  
1207          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1208      else          echo
1209          fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`          echo "$fres" | sed 's/ 99/ --/g' | sed 's/  > />/' | sed 's/  < /</' >> $SUMMARY
1210          fres=$fres"$results   $dir"          touch $CDIR"/summary.txt"
1211            echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $CDIR"/summary.txt"
1212            echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1213            echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1214            echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1215            echo "tdir='$dir'" >> $CDIR"/summary.txt"
1216            if test "x$ADM" = xt ; then
1217                head -1 $dir/$builddir/taf_ad.log >> $CDIR"/summary.txt"
1218                grep -A3 'Seconds in section "ALL' $dir/$rundir/$OUTPUTFILE \
1219                                    >> $CDIR"/summary.txt"
1220            fi
1221    
1222            for ex in $extra_runs ; do
1223                unset run
1224                results=$EMPTY_RESULTS
1225                #  reference output file
1226                refExOut=`echo $ref_outp | sed "s/\./.${ex}./g"`
1227                #  Create an output dir for each OPTFILE/tdir.ex combination
1228                rel_CDIR=$DRESULTS"/"$dir"."$ex
1229                mkdir $rel_CDIR
1230                CDIR=`pwd`"/$rel_CDIR"
1231                test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1232                run_clean $dir/tr_run.$ex
1233                linkdata $dir/tr_run.$ex $inputdir.$ex $inputdir input
1234                runmodel $dir/tr_run.$ex && run=Y \
1235                && results=`testoutput_run $dir tr_run.$ex $refExOut`
1236                fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1237                fres="$fres.$ex"
1238                echo
1239                echo "$fres" | sed 's/ 99/ --/g' | sed 's/  > />/' | sed 's/  < /</' >> $SUMMARY
1240                touch $CDIR"/summary.txt"
1241                echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $CDIR"/summary.txt"
1242                echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1243                echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1244                echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1245                echo "tdir='$dir.$ex'" >> $CDIR"/summary.txt"
1246                if test "x$ADM" = xt ; then
1247                    head -1 $dir/$builddir/taf_ad.log >> $CDIR"/summary.txt"
1248                    grep -A3 'Seconds in section "ALL' $dir/tr_run.$ex/$OUTPUTFILE \
1249                                       >> $CDIR"/summary.txt"
1250                fi
1251                if test "x$POSTCLEAN" = xt ; then
1252                    run_clean $dir/tr_run.$ex
1253                fi
1254            done
1255    
1256        #postclean $dir/$builddir
1257        if test "x$POSTCLEAN" = xt ; then
1258            makeclean $dir/$builddir \
1259                && run_clean $dir/$rundir
1260      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"  
1261            
1262      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1263            
1264  done  done
1265    
1266  echo -n "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
1267  echo $start_date >> $SUMMARY  echo "$start_date" >> $SUMMARY
1268  echo -n "End time:    " >> $SUMMARY  printf "End time:    " >> $SUMMARY
1269  date >> $SUMMARY  date >> $SUMMARY
1270    
1271  #  If addresses were supplied and mpack built successfully, then try  #  If addresses were supplied and mpack built successfully, then try
# Line 855  else Line 1276  else
1276      if test "x$HAVE_MPACK" = xt ; then      if test "x$HAVE_MPACK" = xt ; then
1277          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \          tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1278              && gzip $DRESULTS".tar" \              && gzip $DRESULTS".tar" \
1279              && $MPACK -s MITgcm-test -m 1500000 $DRESULTS".tar.gz" $ADDRESSES              && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1280          RETVAL=$?          RETVAL=$?
1281          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1282              echo              echo
# Line 874  else Line 1295  else
1295      fi      fi
1296  fi  fi
1297    
1298  # rm -f tmp_cmpnum.f a.out  rm -f tr_cmpnum.c tr_cmpnum
 rm -f tmp_cmpnum.c tmp_cmpnum  
1299    
1300  if test "x$CLEANUP" != xt ; then  if test "x$CLEANUP" != xt ; then
1301      cat $SUMMARY      cat $SUMMARY | sed 's/ \.  \.  \.  \.  \.  \.  \.  \.  \.  \.  \.  \. //'
1302      if test -e tr_out.txt ; then      if test -e tr_out.txt ; then
1303          mv tr_out.txt tr_out.txt.old          mv tr_out.txt tr_out.txt.old
1304      fi      fi
1305      cat $SUMMARY > tr_out.txt      cat $SUMMARY | sed '/^[YN] [YN] [YN] [YN]/ s/ \. //g' > tr_out.txt
1306    fi
1307    
1308    if test "x$DELDIR" = xt ; then
1309        rm -rf $DRESULTS
1310  fi  fi
1311    

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

  ViewVC Help
Powered by ViewVC 1.1.22