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

Annotation of /MITgcm/verification/testreport

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


Revision 1.139 - (hide annotations) (download)
Thu Apr 29 16:58:40 2010 UTC (13 years, 11 months ago) by jmc
Branch: MAIN
Changes since 1.138: +39 -39 lines
switch few printing between std-out (1) and std-err (2) (more consistent).

1 edhill 1.19 #! /usr/bin/env bash
2 edhill 1.1 #
3 jmc 1.139 # $Header: /u/gcmpack/MITgcm/verification/testreport,v 1.138 2010/03/30 16:40:03 jmc Exp $
4 edhill 1.12 # $Name: $
5 edhill 1.1 #
6    
7     usage()
8     {
9     echo
10     echo "Usage: $0 [OPTIONS]"
11     echo
12     echo "where possible OPTIONS are:"
13     echo " (-help|-h) print usage"
14 jmc 1.122 echo " (-mth) run multi-threaded (using eedata.mth)"
15 jmc 1.83 echo " (-mpi) compile and run using MPI"
16 jmc 1.136 echo " (-ieee/-noieee) if possible, use IEEE compiler flags"
17 edhill 1.41 echo " (DEF=\"-ieee\")"
18 jmc 1.109 echo " (-gsl) compile with \"-gsl\" flag"
19 jmc 1.136 echo " (-use_r4|-ur4) if allowed, use real*4 type for '_RS' variable"
20     echo " (-optfile|-of) STRING list of optfiles to use"
21     echo " (-addr|-a) STRING list of email recipients"
22 jmc 1.108 echo " (DEF=\"\" no email is sent)"
23 jmc 1.136 echo " (-mpackdir|-mpd) DIR location of the mpack utility"
24 jmc 1.113 echo " (DEF=\"../tools/mpack-1.6\")"
25 jmc 1.136 echo " (-tdir|-t) STRING list of group and/or exp. dirs to test"
26 jmc 1.84 echo " (recognized groups: basic, tutorials)"
27     echo " (DEF=\"\" which test all)"
28 jmc 1.136 echo " (-skipdir|-skd) STRING list of exp. dirs to skip"
29 jmc 1.89 echo " (DEF=\"\" which test all)"
30 jmc 1.136 echo " (-bash|-b) STRING preferred location of a \"bash\" or"
31 edhill 1.20 echo " Bourne-compatible \"sh\" shell"
32     echo " (DEF=\"\" for \"bash\")"
33 edhill 1.24 echo " (-adm|-ad) perform an adjoint run"
34 utke 1.120 echo " (-oad) perform an OpenAD adjoint run"
35 jmc 1.136 echo " (-command|-c) STRING command to run"
36     echo " (-make|-m) STRING command to use for \"make\""
37 edhill 1.8 echo " (DEF=\"make\")"
38 jmc 1.70 echo " (-odir) STRING used to build output directory name"
39     echo " (DEF=\"hostname\")"
40 jmc 1.136 echo " (-ptracers|-ptr) STRING specify which ptracers to test"
41 edhill 1.50 echo " (DEF=\"1 2 3 4 5\")"
42 jmc 1.92 echo " (-match) NUMBER Matching Criteria (number of digits)"
43     echo " (DEF=\"12\")"
44 edhill 1.43 echo " (-j) JOBS use \"make -j JOBS\" for parallel builds"
45 edhill 1.10 echo " (-clean) *ONLY* run \"make CLEAN\""
46 jmc 1.133 echo " (-norun|-nr) skip the \"runmodel\" stage (stop after make)"
47 jmc 1.136 echo " (-runonly|-ro) *ONLY* run stage (=\"-quick\" without make)"
48 ce107 1.90 echo " (-quick|-q) same as \"-nogenmake -noclean -nodepend\""
49     echo " (-nogenmake|-ng) skip the genmake stage"
50     echo " (-noclean|-nc) skip the \"make clean\" stage"
51     echo " (-nodepend|-nd) skip the \"make depend\" stage"
52     echo " (-deldir|-dd) on success, delete the output directory"
53     echo " (-ts) provide timing information per timestep"
54     echo " (-papis) provide MFlop/s per timestep using PAPI"
55     echo " (-pcls) provide MFlop/s per timestep using PCL"
56 edhill 1.6 echo
57 edhill 1.50 echo "and where STRING can be a whitespace-delimited list"
58 edhill 1.6 echo "such as:"
59 edhill 1.50 echo
60 edhill 1.6 echo " -t 'exp0 exp2 exp3' "
61     echo " -addr='abc@123.com testing@home.org'"
62 edhill 1.1 echo
63 edhill 1.50 echo "provided that the expression is properly quoted within the current"
64     echo "shell (note the use of single quotes to protect white space)."
65     echo
66 edhill 1.1 exit 1
67     }
68    
69     # build the mpack utility
70     build_mpack()
71     {
72 edhill 1.34 printf "building the mpack utility... "
73 jmc 1.113 MPACK="$MPACKDIR/mpack"
74     if test ! -x $MPACK ; then
75 edhill 1.1 if test ! -d $MPACKDIR ; then
76 edhill 1.20 echo
77 edhill 1.1 echo "Error: can't find \"$MPACKDIR\""
78     echo " are you sure this program is being run in the correct "
79     echo " (that is, \"MITGCM_ROOT\verification\") directory?"
80 edhill 1.20 echo
81     HAVE_MPACK=f
82 edhill 1.1 fi
83 edhill 1.26 if test "x$CC" = x ; then
84     export CC=cc
85     fi
86 jmc 1.112 printf "building mpack (using CC=$CC)... "
87 edhill 1.25 ( cd $MPACKDIR && ./configure && $MAKE ) > tr_build_mpack.out 2>&1
88 edhill 1.1 RETVAL=$?
89     if test "x$RETVAL" != x0 ; then
90     echo
91     echo "Error building the mpack tools at: $MPACK_DIR"
92 edhill 1.20 echo
93     HAVE_MPACK=f
94     else
95 edhill 1.25 rm -f tr_build_mpack.out
96 edhill 1.20 HAVE_MPACK=t
97 jmc 1.113 echo "done"
98 edhill 1.1 fi
99 edhill 1.20 else
100     HAVE_MPACK=t
101 jmc 1.113 echo "already exist"
102 edhill 1.1 fi
103     }
104    
105 jmc 1.93 testoutput_var()
106 edhill 1.1 {
107 jmc 1.99 # testoutput_var dir s1 label subdir reference_output
108 edhill 1.1 #
109 jmc 1.135 # compares 1 variable output selected from file $dir/$subdir/$OUTPUTFILE
110 jmc 1.99 # with same output from reference file $dir/results/$reference_output
111 jmc 1.93 # using search strings s1 and text label
112 edhill 1.1
113     if [ $debug -gt 0 ]; then
114 jmc 1.93 echo testoutput_var: grep "$2" $1/$4/$OUTPUTFILE 1>&2
115 edhill 1.1 fi
116 jmc 1.87 if [ -r $1/$4/$OUTPUTFILE ]; then
117     grep "$2" $1/$4/$OUTPUTFILE | sed 's/.*=//' | cat -n > tmp1.txt
118 jmc 1.67 lncntA=`wc -l tmp1.txt | awk '{print $1}' `
119 jmc 1.100 if [ $lncntA -lt 2 ]; then
120 edhill 1.1 if [ $verbose -gt 0 ]; then
121     echo Not enough lines of output when searching for "$2" 1>&2
122     fi
123     return 99
124     fi
125     else
126 jmc 1.93 echo testoutput_var: $OUTPUTFILE from model run was not readable 1>&2
127 edhill 1.1 return 99
128     fi
129     if [ $debug -gt 0 ]; then
130 jmc 1.99 echo testoutput_var: grep "$2" $1/results/$5 1>&2
131 edhill 1.1 fi
132 jmc 1.99 grep "$2" $1/results/$5 | sed 's/.*=//' | cat -n > tmp2.txt
133 jmc 1.67 lncntB=`wc -l tmp2.txt | awk '{print $1}' `
134 jmc 1.100 if [ $lncntB -lt 2 ]; then
135 edhill 1.1 if [ $verbose -gt 0 ]; then
136     echo Not enough lines of output when searching for "$2" 1>&2
137     fi
138     return 99
139     fi
140 jmc 1.67 if [ $lncntA -ne $lncntB ]; then
141     if [ $verbose -gt 0 ]; then
142     echo Not same Nb of lines when searching for "$2" ":" $lncntA $lncntB 1>&2
143     fi
144     return 99
145     fi
146 edhill 1.72 has_nan=`cat tmp1.txt | grep -i nan | wc -l`
147     if [ $has_nan -gt 0 ] ; then
148 jmc 1.93 echo testoutput_var: $OUTPUTFILE contains $has_nan NaN values 1>&2
149 edhill 1.72 return 99
150     fi
151     has_inf=`cat tmp1.txt | grep -i inf | wc -l`
152     if [ $has_inf -gt 0 ] ; then
153 jmc 1.93 echo testoutput_var: $OUTPUTFILE contains $has_inf Inf values 1>&2
154 jmc 1.71 return 99
155     fi
156 edhill 1.1 if [ $debug -gt 0 ]; then
157 jmc 1.93 echo testoutput_var: join tmp1.txt tmp2.txt 1>&2
158 edhill 1.1 fi
159     join tmp1.txt tmp2.txt | awk '{print $1 " " $2 " " $3}' > tmp3.txt
160     if [ $debug -gt 0 ]; then
161 jmc 1.93 echo testoutput_var: compare_lines 1>&2
162 edhill 1.1 fi
163 edhill 1.22 if [ $verbose -gt 1 ]; then
164     cat tmp3.txt 1>&2
165     fi
166     echo "-1" >> tmp3.txt
167 edhill 1.23 # On the SGI O3K (*not* the O2K), "cat -n" inserts a ":" after the line number
168     cat tmp3.txt | sed -e 's|:||g' > tmp4.txt
169 jmc 1.91 digits_of_similarity=`./tr_cmpnum < tmp4.txt`
170 edhill 1.1 if [ $digits_of_similarity -eq 99 ]; then
171     if [ $verbose -gt 0 ]; then
172 jmc 1.99 echo testoutput_var: No comparison was available for \"$3\" 1>&2
173 edhill 1.1 fi
174     digits_of_similarity=99
175     else
176     if [ $verbose -gt 0 ]; then
177 jmc 1.99 echo There were $digits_of_similarity decimal places of similarity for \"$3\" 1>&2
178 edhill 1.1 fi
179     fi
180 edhill 1.23 rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt
181 jmc 1.135
182 edhill 1.1 return $digits_of_similarity
183     }
184    
185 jmc 1.93 testoutput_run()
186 edhill 1.1 {
187 jmc 1.99 # testoutput_run directory subdir reference_output
188 edhill 1.1 #
189 jmc 1.93 # test output from 1 run in "directory"
190 jmc 1.103 # --> same processing for adjoint & forward test
191 jmc 1.94 # default list of output variables to be checked:
192     # 1rst : main variable used to decide if it pass or FAIL
193     # others : number of matching digits to be printed in summary.txt
194     listChk=$DEF_CHECK_LIST
195     # load experiment-specific list from file "tr_checklist" (if it exist)
196     if test -r $1/$2/tr_checklist ; then listChk=`cat $1/$2/tr_checklist` ; fi
197     sVar=`echo $listChk | awk '{print $1}'`
198     # remove 1rst var and expand the list: + => min max mean s.d
199 jmc 1.97 listVar=`echo $listChk | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' \
200     | sed 's/+//g' | sed "s/^$sVar//"`
201 jmc 1.94 if [ $debug -gt 0 ]; then echo "testoutput_run: listVar(I)='$listVar'" 1>&2 ; fi
202 jmc 1.117 # check for ptracer output in reference_output file :
203     outpref=$1/results/$3
204     ptr_mon="trcstat_ptracerXX_min trcstat_ptracerXX_max"
205     ptr_mon="$ptr_mon trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
206     for ii in $PTRACERS_NUM ; do
207     ptrfound=0
208     for jj in $ptr_mon ; do
209     name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
210     tst=`grep $name $outpref | wc -l | awk '{print $1}'`
211     if test ! "x$tst" = x0 ; then ptrfound=1 ; fi
212     done
213     if test $ptrfound = '1' ; then
214     eval "HAVE_PTR0"$ii"=t"
215     else
216     eval "HAVE_PTR0"$ii"=f"
217 utke 1.120 if test "x$ADM" = x -a "x$OADM" = x; then
218 jmc 1.117 # remove this ptr from the list of output variable to check
219     # echo "-- ptr test=" $tst "number of var=" `echo $listVar | awk '{print NF}'` 1>&2
220     listVar=`echo "$listVar" | sed "s/ pt$ii..//g"`
221     fi
222     fi
223     # eval 'echo "HAVE_PTR0'$ii' = $HAVE_PTR0'$ii'"' 1>&2
224     done
225 mlosch 1.116 tst=`echo $sVar $listVar | awk '{ for(i=2;i<=NF;i++){if($i==$1)t+=1}; print t }'`
226 jmc 1.94 if test $tst != 1 ; then
227     if test $tst = 0 ; then echo "==> WARNING: selected var >$sVar< not found" 1>&2
228     else echo "==> WARNING: found selected var >$sVar< $tst times" 1>&2 ; fi
229     echo "==> WARNING: in checked list:" $listVar 1>&2
230     #- put it back once:
231     listVar=" $sVar "`echo "$listVar " | sed "s/ $sVar / /g"`
232     fi
233     if [ $debug -gt 0 ]; then echo "testoutput_run: listVar(M)='$listVar'" 1>&2 ; fi
234 jmc 1.138 echo "listVar='$listVar'" > $locDIR"/summary.txt"
235 jmc 1.94 allargs=""
236     for xx in $listVar
237     do
238     case $xx in
239     'PS') if [ $debug -gt 0 ]
240     then echo testoutput_run: testoutput_var $1 cg2d_init_res 1>&2 ; fi
241 jmc 1.99 testoutput_var $1 "cg2d_init_res" "Press. Solver (cg2d)" $2 $3; yy=$?
242 jmc 1.94 if [ $debug -gt 0 ] ; then echo testoutput_run: cg2dres=$yy 1>&2 ; fi ;;
243 jmc 1.101 'Cost') testoutput_var $1 "ADM precision_derivative_cost" "ADM Cost" $2 $3; yy=$? ;;
244     'Grad') testoutput_var $1 "ADM precision_derivative_grad" "ADM Grad" $2 $3; yy=$? ;;
245 jmc 1.99 'Tmn') testoutput_var $1 "dynstat_theta_min" "Theta minimum" $2 $3; yy=$? ;;
246     'Tmx') testoutput_var $1 "dynstat_theta_max" "Theta maximum" $2 $3; yy=$? ;;
247     'Tav') testoutput_var $1 "dynstat_theta_mean" "Theta mean" $2 $3; yy=$? ;;
248     'Tsd') testoutput_var $1 "dynstat_theta_sd" "Theta Std.Dev" $2 $3; yy=$? ;;
249     'Smn') testoutput_var $1 "dynstat_salt_min" "Salt minimum" $2 $3; yy=$? ;;
250     'Smx') testoutput_var $1 "dynstat_salt_max" "Salt maximum" $2 $3; yy=$? ;;
251     'Sav') testoutput_var $1 "dynstat_salt_mean" "Salt mean" $2 $3; yy=$? ;;
252     'Ssd') testoutput_var $1 "dynstat_salt_sd" "Salt Std.Dev" $2 $3; yy=$? ;;
253 jmc 1.94 'Umn') testoutput_var $1 "dynstat_uvel_min" "U minimum" $2 $3; yy=$? ;;
254     'Umx') testoutput_var $1 "dynstat_uvel_max" "U maximum" $2 $3; yy=$? ;;
255     'Uav') testoutput_var $1 "dynstat_uvel_mean" "U mean" $2 $3; yy=$? ;;
256 jmc 1.99 'Usd') testoutput_var $1 "dynstat_uvel_sd" "U Std.Dev" $2 $3; yy=$? ;;
257 jmc 1.94 'Vmn') testoutput_var $1 "dynstat_vvel_min" "V minimum" $2 $3; yy=$? ;;
258     'Vmx') testoutput_var $1 "dynstat_vvel_max" "V maximum" $2 $3; yy=$? ;;
259     'Vav') testoutput_var $1 "dynstat_vvel_mean" "V mean" $2 $3; yy=$? ;;
260 jmc 1.99 'Vsd') testoutput_var $1 "dynstat_vvel_sd" "V Std.Dev" $2 $3; yy=$? ;;
261 jmc 1.94 'pt1mn'|'pt2mn'|'pt3mn'|'pt4mn'|'pt5mn') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
262     testoutput_var $1 "trcstat_ptracer0"$ii"_min" "p0"$ii"_min" $2 $3; yy=$? ;;
263     'pt1mx'|'pt2mx'|'pt3mx'|'pt4mx'|'pt5mx') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
264     testoutput_var $1 "trcstat_ptracer0"$ii"_max" "p0"$ii"_max" $2 $3; yy=$? ;;
265     'pt1av'|'pt2av'|'pt3av'|'pt4av'|'pt5av') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
266     testoutput_var $1 "trcstat_ptracer0"$ii"_mean" "p0"$ii"_mean" $2 $3; yy=$? ;;
267     'pt1sd'|'pt2sd'|'pt3sd'|'pt4sd'|'pt5sd') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
268 jmc 1.99 testoutput_var $1 "trcstat_ptracer0"$ii"_sd" "p0"$ii"_StDv" $2 $3; yy=$? ;;
269 jmc 1.130 'Qntmn') testoutput_var $1 "forcing_qnet_min" "Qnet minimum" $2 $3; yy=$? ;;
270     'Qntmx') testoutput_var $1 "forcing_qnet_max" "Qnet maximum" $2 $3; yy=$? ;;
271     'Qntav') testoutput_var $1 "forcing_qnet_mean" "Qnet mean" $2 $3; yy=$? ;;
272     'Qntsd') testoutput_var $1 "forcing_qnet_sd" "Qnet Std.Dev" $2 $3; yy=$? ;;
273 jmc 1.101 'aSImn') testoutput_var $1 "seaice_area_min" "SIce Area min" $2 $3; yy=$? ;;
274     'aSImx') testoutput_var $1 "seaice_area_max" "SIce Area max" $2 $3; yy=$? ;;
275     'aSIav') testoutput_var $1 "seaice_area_mean" "SIce Area mean" $2 $3; yy=$? ;;
276     'aSIsd') testoutput_var $1 "seaice_area_sd" "SIce Area StDv" $2 $3; yy=$? ;;
277     'hSImn') testoutput_var $1 "seaice_heff_min" "SIce Heff min" $2 $3; yy=$? ;;
278 jmc 1.126 'hSImx') testoutput_var $1 "seaice_heff_max" "SIce Heff max" $2 $3; yy=$? ;;
279     'hSIav') testoutput_var $1 "seaice_heff_mean" "SIce Heff mean" $2 $3; yy=$? ;;
280     'hSIsd') testoutput_var $1 "seaice_heff_sd" "SIce Heff StDv" $2 $3; yy=$? ;;
281 jmc 1.101 'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;;
282     'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South" $2 $3; yy=$? ;;
283     'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North" $2 $3; yy=$? ;;
284     'HthSiG') testoutput_var $1 "thSI_IceH_ave_G" "thSIc H Global" $2 $3; yy=$? ;;
285     'HthSiS') testoutput_var $1 "thSI_IceH_ave_S" "thSIc H South" $2 $3; yy=$? ;;
286     'HthSiN') testoutput_var $1 "thSI_IceH_ave_N" "thSIc H North" $2 $3; yy=$? ;;
287 jmc 1.94 *) yy=99; echo "WARNING: asking for var=$xx : not recognized !" 1>&2 ;;
288     esac
289     if test $xx = $sVar
290     then allargs="$allargs > $yy <"
291     else allargs="$allargs $yy"
292     fi
293     done
294    
295     nbVar=`echo $listVar | awk '{print NF}'`
296 jmc 1.135 if [ $nbVar -lt $LEN_CHECK_LIST ] ; then
297 jmc 1.94 #-- fill line (up to standard length) with dot:
298 jmc 1.97 adNul=`expr $LEN_CHECK_LIST - $nbVar | awk '{for(i=1;i<=$1;i++){print "."}}'`
299 jmc 1.94 echo $allargs $adNul
300     else
301     echo $allargs
302 jmc 1.135 fi
303 jmc 1.103 # <-- same processing for adjoint & forward test
304 edhill 1.1 }
305    
306     genmakemodel()
307     {
308     # genmakemodel directory
309 edhill 1.10 if test "x$NOGENMAKE" = xt ; then
310     echo "genmake skipped!"
311     else
312 edhill 1.34 if test "x$BASH" = x ; then
313     GENMAKE2="../../../tools/genmake2"
314     else
315     GENMAKE2="$BASH ../../../tools/genmake2 -bash $BASH"
316     fi
317 edhill 1.10 (
318     cd $1;
319 edhill 1.24 command="$GENMAKE2 -ds -m $MAKE"
320 utke 1.120 if test "x$ADM" = xt ; then
321     command="$command --mods=../code_ad"
322     elif test "x$OADM" = xt ; then
323     command="$command -adof ../../../tools/adjoint_options/adjoint_oad -mods '../code_oad ../../OpenAD/code_oad_all'"
324     else
325 jmc 1.124 command="$command -mods=../code"
326 edhill 1.24 fi
327 edhill 1.10 if test "x$OPTFILE" != xNONE ; then
328 jmc 1.124 command="$command -optfile=$OPTFILE"
329 edhill 1.10 fi
330     if test "x$IEEE" != x ; then
331     command="$command -ieee"
332     fi
333 jmc 1.109 if test "x$GSL" = xt ; then
334     command="$command -gsl"
335     fi
336 edhill 1.66 if test "x$MPI" = xt ; then
337     command="$command -mpi"
338     fi
339 jmc 1.122 if test "x$MULTI_THREAD" = xt ; then
340     #- run multi-threaded using OpenMP:
341     command="$command -omp"
342     fi
343 jmc 1.135 if test "x$USE_R4" = xt ; then
344     command="$command -use_r4"
345     fi
346 ce107 1.90 if test "x$TS" = xt ; then
347     command="$command -ts"
348     fi
349     if test "x$PAPIS" = xt ; then
350     command="$command -papis"
351 jmc 1.135 else
352 ce107 1.90 if test "x$PCLS" = xt ; then
353     command="$command -pcls"
354     fi
355     fi
356 jmc 1.139 printf 'genmake ... '
357 utke 1.120 eval $command > make.log 2>&1
358 edhill 1.10 RETVAL=$?
359 edhill 1.44 # Reduce the size of the testing emails!
360 edhill 1.47 head -100 Makefile > $CDIR/Makefile_head
361 edhill 1.10 if test "x$RETVAL" != x0 ; then
362     tail make.log
363 jmc 1.139 echo "genmakemodel: genmake failed"
364 edhill 1.21 cp genmake_* make.log $CDIR
365 edhill 1.10 return 1
366     else
367 jmc 1.139 echo "successful"
368 edhill 1.1 fi
369 edhill 1.10 )
370     fi
371 edhill 1.1 }
372    
373     makeclean()
374     {
375     # makeclean directory
376 edhill 1.10 if test "x$NOCLEAN" = xt ; then
377 jmc 1.83 echo "make Clean skipped!"
378 edhill 1.10 else
379     (
380     cd $1;
381 jmc 1.87 #if test -e $OUTPUTFILE ; then rm -f $OUTPUTFILE ; fi
382 edhill 1.10 if test -r Makefile ; then
383 jmc 1.139 printf 'clean build-dir: make Clean ... '
384 jmc 1.83 $MAKE Clean >> make.log 2>&1
385 edhill 1.10 RETVAL=$?
386     if test "x$RETVAL" != x0 ; then
387     tail make.log
388 jmc 1.139 echo "makeclean: \"make Clean\" failed"
389 edhill 1.10 cp make.log $CDIR"/make.log"
390     return 1
391     fi
392 jmc 1.139 echo successful
393 jmc 1.127 else
394     echo ''
395 edhill 1.10 fi
396     exit 0
397     )
398     fi
399     }
400    
401 jmc 1.83 run_clean()
402 edhill 1.68 {
403 jmc 1.83 # run_clean directory
404     if test "x$NOCLEAN" = xt ; then
405     echo "run_clean skipped!"
406     else
407 edhill 1.68 (
408     cd $1;
409 jmc 1.139 printf 'clean run-dir ... '
410 jmc 1.83 # part of what is done after "make clean" when doing "make CLEAN"
411     find . -name "*.meta" -exec rm {} \;
412     find . -name "*.data" -exec rm {} \;
413     find . -name "fort.*" -exec rm {} \;
414     find . -type l -exec rm {} \;
415     rm -f $EXECUTABLE *.txt STD* *diagnostics.log datetime
416     rm -rf mnc_test_*
417 jmc 1.107 rm -f *_MIT_CE_000.opt0000 costfunction*0000
418 jmc 1.139 echo successful
419 edhill 1.68 exit 0
420     )
421     fi
422     }
423    
424 edhill 1.10 makedependmodel()
425     {
426     # makedependmodel directory
427     if test "x$NODEPEND" = xt ; then
428     echo "make depend skipped!"
429     else
430     (
431     cd $1;
432 jmc 1.139 printf 'make depend ... '
433 edhill 1.10 $MAKE depend >> make.log 2>&1
434 edhill 1.1 RETVAL=$?
435     if test "x$RETVAL" != x0 ; then
436     tail make.log
437 jmc 1.139 echo "makedependmodel: make depend failed"
438 edhill 1.1 cp make.log $CDIR"/make.log"
439     return 1
440 edhill 1.10 else
441 jmc 1.139 echo successful
442 edhill 1.1 fi
443 edhill 1.10 )
444     fi
445 edhill 1.1 }
446    
447     makemodel()
448     {
449     # makemodel directory
450     (
451 jmc 1.136 if test "x$NOMAKE" = xt ; then
452     cd $1;
453     if test -x $EXECUTABLE ; then
454     echo "make skipped!"
455     else
456     echo "no executable!"
457     return 2
458     fi
459     else
460 edhill 1.1 cd $1;
461     if test -r Makefile ; then
462 jmc 1.139 printf 'make ... '
463 utke 1.120 if test "x$ADM" = xt ; then
464     $MAKE adall >> make.log 2>&1
465     elif test "x$OADM" = xt ; then
466     $MAKE adAll >> make.log 2>&1
467     else
468 edhill 1.43 if test "x$JOBS" = x ; then
469     $MAKE >> make.log 2>&1
470     else
471     $MAKE -j $JOBS >> make.log 2>&1
472     fi
473 edhill 1.24 fi
474 edhill 1.1 RETVAL=$?
475     if test "x$RETVAL" != x0 ; then
476     tail make.log
477 jmc 1.139 echo failed
478 edhill 1.1 cp make.log $CDIR"/make.log"
479 jmc 1.131 rm -f $EXECUTABLE
480 edhill 1.1 return 1
481     else
482 jmc 1.139 echo successful
483 edhill 1.1 fi
484     fi
485 jmc 1.136 fi
486 edhill 1.1 )
487     }
488    
489 edhill 1.27 symlink_mpifiles()
490     {
491     # Put special links so that MPI specific files are used
492     # This MUST be invoked between makeclean and makelinks because
493     # the Makefile will link to non-mpi files by default
494    
495     dir=$1
496     code_dir=$2
497     BUILD_DIR=$dir/$3
498     CODE_DIR=$dir/$code_dir
499 jmc 1.135
500 edhill 1.27 # These are files that should replace their counter-part when using -mpi
501 mlosch 1.111 MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi" -print)`
502 edhill 1.27
503     # Is this an MPI run?
504     if test "x$MPI" = xt ; then
505     # YES: We symbolically link these files to the build
506     # dir so long as there is no real file in place
507     for ii in $MPI_FILES ; do
508     i=`echo $ii | sed 's:^\./::'`
509     name=`echo $i | sed 's:_mpi::' `
510     cmp $CODE_DIR/$i $BUILD_DIR/$name > /dev/null 2>&1
511     RETVAL=$?
512     if test "x$RETVAL" != x0 ; then
513     if ! test -f $BUILD_DIR/$i ; then
514 edhill 1.45 #echo Linking $name to $i
515 edhill 1.27 (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
516     fi
517     fi
518     done
519     else
520 edhill 1.45 # NO: We undo any _mpi symbolically linked files
521 edhill 1.27 for ii in $MPI_FILES ; do
522     i=`echo $ii | sed 's:^\./::'`
523     name=`echo $i | sed 's:_mpi::' `
524     if test -L $BUILD_DIR/$name ; then
525 edhill 1.45 cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
526     RETVAL=$?
527     if test "x$RETVAL" = x0 ; then
528     #echo Un-linking $name from $linktarg
529 edhill 1.27 rm -f $BUILD_DIR/$name
530     fi
531     fi
532     done
533     fi
534 jmc 1.135
535 edhill 1.27 }
536    
537 edhill 1.1 linkdata()
538     {
539 jmc 1.83 # linkdata run_dir input_dir_1 input_dir_2 ...
540 edhill 1.1 #
541     # symbolically link data files to run directory
542 jmc 1.83 if test -d $1 ; then
543 edhill 1.12 (
544 jmc 1.83 cd $1 ; shift
545 jmc 1.139 echo 'linkdata from dirs:' $*
546 jmc 1.125 inpMPI=`(cd ../$1 ; find . -name "*.mpi" -print | sed 's:^\./::')`
547     for xx in $inpMPI ; do
548     if test -r "../"$1"/"$xx ; then
549     # found 1 _mpi sfx file in 1rst input dir and it is readable
550     yy=`echo $xx | sed 's:\.mpi$::'`
551     if test "x$MPI" = "xt" ; then
552     # mpi test: remove symbolic link & link _mpi sfx file
553     if test -h $yy ; then rm -f $yy ; fi
554 jmc 1.135 if test ! -r $yy ; then
555 jmc 1.125 ln -sf "../"$1"/"$xx $yy ;
556 jmc 1.139 printf " $xx" 1>&2
557 jmc 1.125 fi
558     else
559     # not mpi test: remove symbolic link
560     if test -h $yy ; then rm -f $yy ; fi
561     fi
562     fi
563     done
564 jmc 1.83 if test -r "../"$1"/eedata.mth" ; then
565     # found eedata.mth in 1rst input dir and it is readable
566     if test "x$MULTI_THREAD" = "xt" ; then
567     # multi-threaded test: remove symbolic link & link eedata.mth
568     if test -h eedata ; then rm -f eedata ; fi
569 jmc 1.135 if test ! -r eedata ; then
570 jmc 1.83 ln -sf "../"$1"/eedata.mth" eedata ;
571 jmc 1.139 printf ' eedata.mth' 1>&2
572 edhill 1.24 fi
573 jmc 1.83 else
574     # not multi-threaded test: remove eedata symbolic link
575     if test -h eedata ; then rm -f eedata ; fi
576     fi
577     fi
578 jmc 1.108 prevDir='NONE'
579 jmc 1.83 for ldir in $* ; do
580 jmc 1.108 if test -d "../"$ldir -a $ldir != $prevDir ; then
581 jmc 1.139 printf " ldir=${ldir}:" 1>&2
582 jmc 1.83 files=`( cd "../"$ldir ; ls -1 | grep -v CVS )`
583     for i in $files ; do
584     if test ! -d "../"$ldir/$i ; then
585     if test ! -r $i ; then
586     printf ' '$i 1>&2
587     ln -sf "../"$ldir"/"$i $i
588     fi
589     fi
590     done
591 jmc 1.139 printf ' ;' 1>&2
592 jmc 1.83 if test -x "../"$ldir"/"prepare_run ; then
593 jmc 1.139 "../"$ldir"/"prepare_run 1>&2
594     else
595     echo '' 1>&2
596 edhill 1.24 fi
597 jmc 1.82 fi
598 jmc 1.108 prevDir=$ldir
599 jmc 1.83 done
600 edhill 1.12 )
601 edhill 1.1 fi
602     }
603    
604     runmodel()
605     {
606 edhill 1.6 # runmodel directory
607 edhill 1.1 #
608 jmc 1.135 # runs "$COMMAND in "directory"
609 edhill 1.6 # (where "$COMMAND" is relative to "directory")
610 edhill 1.1 (
611     cd $1
612 jmc 1.139 printf 'runmodel in %s ... ' $1
613 jmc 1.134 if test -L $EXECUTABLE ; then
614     if test -x "../"$builddir"/"$EXECUTABLE ; then
615 jmc 1.106 diff -q $EXECUTABLE "../"$builddir"/"$EXECUTABLE > /dev/null 2>&1
616 jmc 1.119 outD=$? ; if test $outD != 0 ; then rm -f $EXECUTABLE ; fi
617 jmc 1.134 else rm -f $EXECUTABLE
618     fi
619 jmc 1.106 fi
620 jmc 1.83 if test ! -x $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then
621 jmc 1.119 echo " link" $EXECUTABLE "from dir ../"$builddir > run.log_tmp
622 jmc 1.83 ln -sf "../"$builddir"/"$EXECUTABLE .
623     fi
624     if test ! -x $EXECUTABLE ; then
625 jmc 1.119 rm -f $RUNLOG ; touch $RUNLOG
626     if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
627     echo " no executable:" $EXECUTABLE >> $RUNLOG
628 jmc 1.83 RETVAL=8
629 jmc 1.88 ENDVAL=-1
630 jmc 1.75 else
631 jmc 1.98 if test ! -f $OUTPUTFILE -o $OUTPUTFILE -ot $EXECUTABLE ; then
632     # output do not exist or is older than executable:
633 jmc 1.119 rm -f $RUNLOG ; touch $RUNLOG
634     if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
635     ( eval $COMMAND ) >> $RUNLOG 2>&1
636 jmc 1.83 RETVAL=$?
637     else
638     RETVAL=0
639 jmc 1.119 if test -f $RUNLOG ; then
640     if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
641     echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1
642 jmc 1.135 else
643 jmc 1.119 touch $RUNLOG
644     if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
645     echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1
646     echo " no previous $RUNLOG: assume NORMAL END" >> $RUNLOG 2>&1
647 jmc 1.88 fi
648 jmc 1.83 fi
649 jmc 1.119 ENDVAL=`cat $RUNLOG | grep -v 'ABNORMAL END' | grep -c 'NORMAL END'`
650 jmc 1.75 fi
651 jmc 1.119 rm -f run.log_tmp
652 jmc 1.88 if [ $RETVAL -eq 0 -a $ENDVAL -gt 0 ] ; then
653 jmc 1.139 echo successful
654     printf '=> output from running in %s :\n' $1 1>&2
655     tail $RUNLOG | sed 's/^.*/> &/g' 1>&2
656 edhill 1.44 # === Reduce the size of the testing emails!
657 jmc 1.87 #cp $OUTPUTFILE $CDIR"/"$OUTPUTFILE
658 jmc 1.48 if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
659 edhill 1.6 return 0
660 jmc 1.132 elif [ $RETVAL -ne 0 -a $ENDVAL -gt 0 ] ; then
661     #-- for some weird cases (run is finihed but with error code)
662 jmc 1.139 echo 'finished with error (run:' $RETVAL ' end:' $ENDVAL ')'
663     printf '=> output from running in %s :\n' $1 1>&2
664     tail $RUNLOG | sed 's/^.*/> &/g' 1>&2
665 jmc 1.132 return 0
666 edhill 1.6 else
667 jmc 1.139 echo 'failed (run:' $RETVAL ' end:' $ENDVAL ')'
668     printf '=> output from running in %s :\n' $1 1>&2
669     tail $RUNLOG | sed 's/^.*/> &/g' 1>&2
670 jmc 1.119 cp $RUNLOG $CDIR"/"$RUNLOG
671 jmc 1.48 if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
672 edhill 1.6 return 1
673 edhill 1.1 fi
674     )
675     }
676    
677     createcodelet()
678     {
679     # create codelet for comparing model output
680    
681 jmc 1.112 printf "creating the comparison code (using CC=$CC)... "
682 jmc 1.91 cat > tr_cmpnum.c <<EOF
683 edhill 1.22 #include <stdio.h>
684     #include <math.h>
685     int main( int argc, char** argv ) {
686 jmc 1.91 int linnum,cmplin,best,lncnt;
687 edhill 1.52 double a,b,abave,relerr;
688 jmc 1.57 best = -22;
689 adcroft 1.33 lncnt = 0;
690 jmc 1.96 while( 1 & ( (lncnt+=1) < 999 ) ) {
691 edhill 1.22 scanf("%d", &linnum);
692     if (linnum == -1) break;
693     scanf("%lf", &a); scanf("%lf", &b);
694 edhill 1.52 abave = 0.5*(fabs(a)+fabs(b));
695 jmc 1.91 if ( abave == abave ) {
696     if (abave > 0.0) {
697     relerr=fabs(a-b)/abave;
698     if (relerr > 0.0) { cmplin = (int)rint(log10(relerr)); }
699     else { cmplin = -16 ; }
700     best = (best > cmplin) ? best : cmplin; }
701     else { cmplin = -22 ; }
702     /* printf("%d ; %lf ; %lf\n",cmplin,a,b); */
703     }
704     else {
705     /* printf("%lf ; %lf ; %lf\n",abave,a,b); */
706     break; }
707 edhill 1.22 }
708 adcroft 1.33 if (lncnt == 999) best=-29;
709 jmc 1.91 if (linnum != -1) best=-99;
710 edhill 1.22 printf("%d\n", -best);
711     return 0;
712     }
713     EOF
714 jmc 1.91 $CC -o tr_cmpnum tr_cmpnum.c -lm
715 edhill 1.1
716 jmc 1.91 if [ -x ./tr_cmpnum ]; then
717 edhill 1.1 echo "OK"
718     return 0
719     else
720     echo
721 jmc 1.135 echo "ERROR: failed to compile comparison code -- please specify"
722 edhill 1.58 echo " a C compiler using the CC environment variable."
723 edhill 1.1 exit 1
724     fi
725     }
726    
727     formatresults()
728     {
729     # formatresults expt genmake depend make run results*
730    
731     nm=$1
732     printf '%s %s %s %s' $2 $3 $4 $5
733     shift; shift; shift; shift; shift;
734 jmc 1.94 listPrt=$@
735     listRes=`echo $listPrt | sed 's/>//' | sed 's/<//'`
736     xx=`echo $listPrt | sed 's/.*>//' | sed 's/<.*//' | awk '{print $1}'`
737 jmc 1.97 printf '%3s' $listPrt
738 jmc 1.98 # line below does not work on hp-ux_ia64 : do those substitutions later on
739 jmc 1.95 # printf '%3s' $listPrt | sed 's/ 99/ --/g' | sed 's/ > />/' | sed 's/ < /</'
740 jmc 1.135
741 jmc 1.94 if [ $xx = '..' ]; then
742     printf ' N/O '
743     elif [ $xx = '--' ]; then
744     printf ' N/O '
745     elif [ $xx = 99 ]; then
746 edhill 1.1 printf ' N/O '
747     else
748 jmc 1.94 if [ $xx -ge $MATCH_CRIT ]; then
749 edhill 1.1 printf ' pass'
750     else
751     printf ' FAIL'
752     fi
753     fi
754     printf ' %s' $nm
755     printf '\n'
756 jmc 1.135
757 edhill 1.1 }
758    
759     scandirs()
760     {
761 jmc 1.81 if [ $# -eq 1 ]; then
762     for arg in * ; do
763 jmc 1.99 test -f $arg/$1 && echo $arg
764 jmc 1.81 done
765 edhill 1.1 else
766 jmc 1.81 echo $*
767 edhill 1.1 fi
768     }
769    
770    
771 jmc 1.123 check_eedata()
772     {
773     # check_eedata size.h eedata
774     if [ $# -eq 2 ] ; then
775     if test -f $1 -a -f $2 ; then
776     sx=`grep "^ & *nSx *=" $1 | sed "s/^ & *nSx *=//" | sed 's/, *$//'`
777     nx=`grep "^ *nTx *=" $2 | tail -1 | sed 's/^ *nTx *= *//' | sed "s/, *$//"`
778     if test "x$nx" = x ; then
779     rx=10
780     else
781     rx=`expr $sx % $nx`
782     fi
783     sy=`grep "^ & *nSy *=" $1 | sed "s/^ & *nSy *=//" | sed 's/, *$//'`
784     ny=`grep "^ *nTy *=" $2 | tail -1 | sed 's/^ *nTy *= *//' | sed "s/, *$//"`
785     if test "x$ny" = x ; then
786     ry=20
787     else
788     ry=`expr $sy % $ny`
789     fi
790     echo `expr $rx + $ry`
791     else
792     echo '-1'
793     fi
794     else
795     echo '-2'
796     fi
797    
798     }
799    
800 edhill 1.1 ###############################################################################
801    
802    
803     # Default properties
804     debug=0
805     verbose=1
806     clean=0
807 edhill 1.10
808 edhill 1.40 IEEE=true
809 edhill 1.10 if test "x$MITGCM_IEEE" != x ; then
810     IEEE=$MITGCM_IEEE
811     fi
812 jmc 1.109 GSL=f
813 edhill 1.10
814     CLEANUP=f
815 jmc 1.133 NORUN=f
816 edhill 1.10 QUICK=f
817 jmc 1.136 NOMAKE=f
818 edhill 1.10 NOGENMAKE=f
819     NOCLEAN=f
820     NODEPEND=f
821 edhill 1.68 POSTCLEAN=f
822 edhill 1.1
823 edhill 1.4 BASH=
824 edhill 1.10 OPTFILE=NONE
825     ADDRESSES=
826 edhill 1.1 TESTDIRS=
827 jmc 1.89 SKIPDIRS=
828 edhill 1.1 MPACKDIR="../tools/mpack-1.6"
829 edhill 1.20 HAVE_MPACK=
830 jmc 1.113 MPACK=
831 edhill 1.24 COMMAND=
832 edhill 1.59 if test "x$MAKE" = x ; then
833     MAKE=make
834     fi
835     if test "x$CC" = x ; then
836     CC=cc
837     fi
838 edhill 1.43 JOBS=
839 edhill 1.7 MPI=f
840 jmc 1.83 MULTI_THREAD=f
841 jmc 1.70 OUTDIR=
842 edhill 1.40 DELDIR=
843 jmc 1.135 USE_R4=
844 edhill 1.1
845 edhill 1.24 ADM=
846 utke 1.120 OADM=
847 edhill 1.24
848 jmc 1.117 # list of pTracers to check for monitor output
849 edhill 1.50 PTRACERS_NUM="1 2 3 4 5"
850 edhill 1.49
851 jmc 1.92 MATCH_CRIT=13
852    
853 edhill 1.34 printf "parsing options... "
854 edhill 1.1
855     ac_prev=
856     for ac_option ; do
857    
858     # If the previous option needs an argument, assign it.
859     if test -n "$ac_prev"; then
860     eval "$ac_prev=\$ac_option"
861     ac_prev=
862     continue
863     fi
864    
865     ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
866 jmc 1.135
867 edhill 1.1 case $ac_option in
868    
869     -help | --help | -h | --h)
870     usage ;;
871    
872 edhill 1.2 -optfile | --optfile | -of | --of)
873 edhill 1.10 ac_prev=OPTFILE ;;
874 edhill 1.2 -optfile=* | --optfile=* | -of=* | --of=*)
875 edhill 1.10 OPTFILE=$ac_optarg ;;
876 edhill 1.1
877     -addr | --addr | -a | --a)
878     ac_prev=ADDRESSES ;;
879 jmc 1.136 -addr=* | --addr=* | -a=* | --a=*)
880 edhill 1.1 ADDRESSES=$ac_optarg ;;
881 jmc 1.113 -mpackdir | --mpackdir | -mpd | --mpd)
882     ac_prev=MPACKDIR ;;
883     -mpackdir=* | --mpackdir=* | -mpd=* | --mpd=*)
884     MPACKDIR=$ac_optarg ;;
885 edhill 1.1
886     -tdir | --tdir | -t | --t)
887     ac_prev=TESTDIRS ;;
888 jmc 1.136 -tdir=* | --tdir=* | -t=* | --t=*)
889 edhill 1.1 TESTDIRS=$ac_optarg ;;
890 edhill 1.4
891 jmc 1.89 -skipdir | --skipdir | -skd | --skd)
892     ac_prev=SKIPDIRS ;;
893 jmc 1.136 -skipdir=* | --skipdir=* | -skd=* | --skd=*)
894 jmc 1.89 SKIPDIRS=$ac_optarg ;;
895    
896 edhill 1.4 -bash | --bash | -b | --b)
897     ac_prev=BASH ;;
898 jmc 1.136 -bash=* | --bash=* | -b=* | --b=*)
899 edhill 1.4 BASH=$ac_optarg ;;
900 edhill 1.5
901 edhill 1.6 -command | --command | -c | --c)
902     ac_prev=COMMAND ;;
903 jmc 1.136 -command=* | --command=* | -c=* | --c=*)
904 edhill 1.6 COMMAND=$ac_optarg ;;
905 edhill 1.8
906     -make | --make | -m | --m)
907     ac_prev=MAKE ;;
908 jmc 1.136 -make=* | --make=* | -m=* | --m=*)
909 edhill 1.8 MAKE=$ac_optarg ;;
910 edhill 1.1
911 jmc 1.70 -odir | --odir)
912     ac_prev=OUTDIR ;;
913     -odir=* | --odir=*)
914     OUTDIR=$ac_optarg ;;
915    
916 edhill 1.50 -ptracers | --ptracers | -ptr | --ptr)
917     ac_prev=PTRACERS_NUM ;;
918     -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
919     PTRACERS_NUM=$ac_optarg ;;
920    
921 jmc 1.92 -match | --match ) ac_prev=MATCH_CRIT ;;
922     -match=* | --match=* ) MATCH_CRIT=$ac_optarg ;;
923    
924 jmc 1.136 -j | --j) ac_prev=JOBS ;;
925     -j=* | --j=*) JOBS=$ac_optarg ;;
926 edhill 1.43
927 edhill 1.10 -clean | --clean)
928 jmc 1.69 CLEANUP=t ; DELDIR=t ;;
929 edhill 1.10
930 jmc 1.133 -norun | --norun | -nr | --nr)
931     NORUN=t ;;
932 jmc 1.136 -runonly | --runonly | -ro | --ro)
933     QUICK=t ; NOMAKE=t ;;
934 edhill 1.10 -quick | --quick | -q | --q)
935     QUICK=t ;;
936     -nogenmake | --nogenmake | -ng | --ng)
937     NOGENMAKE=t ;;
938     -noclean | --noclean | -nc | --nc)
939     NOCLEAN=t ;;
940     -nodepend | --nodepend | -nd | --nd)
941     NODEPEND=t ;;
942    
943 edhill 1.68 -postclean | --postclean | -pc | --pc)
944     POSTCLEAN=t ;;
945    
946 edhill 1.18 -mpi) MPI=t ;;
947 edhill 1.10
948 jmc 1.83 -mth) MULTI_THREAD=t ;;
949    
950 edhill 1.24 -adm | -ad) ADM=t ;;
951    
952 utke 1.120 -oad) OADM=t; NODEPEND=t ;;
953    
954 edhill 1.10 -ieee) IEEE=true ;;
955     -noieee) IEEE= ;;
956 jmc 1.109 -gsl) GSL=t ;;
957 edhill 1.10
958 edhill 1.1 -verbose) verbose=2 ;;
959     -debug) debug=1 ;;
960     -quiet) verbose=0 ;;
961    
962 edhill 1.40 -deldir | -dd) DELDIR=t ;;
963    
964 jmc 1.136 -use_r4|-ur4) USE_R4=t ;;
965 jmc 1.135
966 ce107 1.90 -ts) TS=t;;
967     -papis) PAPIS=t;;
968     -pcls) PCL=t;;
969    
970 edhill 1.1 -*)
971     echo "Error: unrecognized option: "$ac_option
972     usage
973     ;;
974 jmc 1.135
975 edhill 1.1 *)
976     echo "Error: unrecognized argument: "$ac_option
977     usage
978     ;;
979 jmc 1.135
980 edhill 1.1 esac
981 jmc 1.135
982 edhill 1.1 done
983    
984 edhill 1.10 if test "x$QUICK" = xt ; then
985     NOGENMAKE=t
986     NOCLEAN=t
987     NODEPEND=t
988     fi
989    
990 jmc 1.99 #- setting for forward or ADM testing
991     if test "x$ADM" = xt ; then
992     code_dir=code_ad
993 jmc 1.108 inputdir=input_ad
994 jmc 1.99 ref_outp="output_adm.txt"
995     EXECUTABLE="mitgcmuv_ad"
996 utke 1.120 elif test "x$OADM" = xt ; then
997     code_dir=code_oad
998     inputdir=input_oad
999     ref_outp="output_oadm.txt"
1000     EXECUTABLE="mitgcmuv_ad"
1001 jmc 1.99 else
1002     code_dir=code
1003 jmc 1.108 inputdir=input
1004 jmc 1.99 ref_outp="output.txt"
1005     EXECUTABLE="mitgcmuv"
1006     fi
1007    
1008 edhill 1.1 if test "x$TESTDIRS" = x ; then
1009 jmc 1.103 LIST=`scandirs results/$ref_outp`
1010 jmc 1.84 else
1011     #- expand group of experiments:
1012     LIST=" "
1013     for xx in $TESTDIRS
1014     do
1015     case $xx in
1016 jmc 1.86 'basic') LIST=${LIST}" aim.5l_cs hs94.128x64x5 ideal_2D_oce"
1017     LIST=${LIST}" lab_sea tutorial_baroclinic_gyre"
1018     LIST=${LIST}" tutorial_global_oce_latlon tutorial_plume_on_slope"
1019 jmc 1.84 ;;
1020     'tutorials')
1021     LIST=${LIST}" "`ls | grep 'tutorial_'` ;;
1022     *) LIST=${LIST}" "$xx ;;
1023     esac
1024 jmc 1.135 done
1025 jmc 1.89 fi
1026     #echo 'LIST='${LIST}'<'
1027     #- skip dirs, remove duplicate and non-directory:
1028     TESTDIRS=" "
1029     count=0
1030     for xx in $LIST
1031     do
1032     yy=`echo $SKIPDIRS | grep -c $xx`
1033     if test $yy = 0 ; then
1034 jmc 1.84 if test -d $xx ; then
1035     yy=`echo $TESTDIRS | grep -c $xx`
1036     if test $yy = 0 ; then TESTDIRS=${TESTDIRS}" "$xx ; fi
1037 jmc 1.89 else count=1 ;
1038     echo ""; echo -n " -- skip \"$xx\" (not a directory !)"
1039     fi
1040     else
1041     if test $count = 1 ; then echo -n ", \"$xx\""
1042     else count=1 ; echo "" ; echo -n " skip: \"$xx\""
1043 jmc 1.84 fi
1044 jmc 1.89 fi
1045 jmc 1.135 done
1046 jmc 1.89 if test $count = 1 ; then echo "" ; echo -n " ... " ; fi
1047 jmc 1.84 #echo 'TESTDIRS='${TESTDIRS}'<'
1048 edhill 1.1
1049 edhill 1.10 if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
1050     OPTFILE=$MITGCM_OF
1051     fi
1052    
1053 jmc 1.119 RUNLOG="run.log"
1054 jmc 1.99 OUTPUTFILE=$ref_outp
1055 jmc 1.87 if test "x$COMMAND" = x ; then
1056 jmc 1.77 COMMAND="./$EXECUTABLE > $OUTPUTFILE"
1057 edhill 1.24 fi
1058 jmc 1.87 if test "x$MPI" = xt ; then
1059     OUTPUTFILE="STDOUT.0000"
1060 edhill 1.24 fi
1061    
1062 jmc 1.76 echo "OK (COMMAND= $COMMAND )"
1063 edhill 1.1
1064 jmc 1.94 # set the Default List of output variables to be checked:
1065     # (use default or load experiment-specific list from file "tr_checklist")
1066     # content : 1rst = main variable used to decide if it pass or FAIL
1067     # others = number of matching digits to be printed in summary.txt
1068 utke 1.120 if test "x$ADM" = x -a "x$OADM" = x; then
1069 jmc 1.94 DEF_CHECK_LIST='PS PS T+ S+ U+ V+ pt1+ pt2+ pt3+ pt4+ pt5+'
1070     EMPTY_RESULTS='.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..'
1071 jmc 1.97 LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'`
1072 jmc 1.94 ii=`echo $EMPTY_RESULTS | awk '{print NF}'`
1073 jmc 1.97 EMPTY_RESULTS=$EMPTY_RESULTS`expr $LEN_CHECK_LIST - $ii | awk 'BEGIN{FS=":"}{for(i=1;i<=$1;i++){printf " ."}}'`
1074 jmc 1.99 else
1075 jmc 1.103 DEF_CHECK_LIST='Grad Cost Grad'
1076 jmc 1.99 EMPTY_RESULTS='.. ..'
1077     LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'`
1078 jmc 1.94 fi
1079    
1080 edhill 1.1 # create the FORTRAN comparison code
1081 jmc 1.133 if test -x tr_cmpnum ; then
1082     echo "skipping comparison code build"
1083     else
1084     createcodelet
1085     fi
1086 edhill 1.1
1087 jmc 1.112 # build the mpack utility (if ADDRESSES = NONE, do it to test the build)
1088     if test "x$ADDRESSES" = x ; then
1089 edhill 1.32 echo "skipping mpack build"
1090     else
1091 edhill 1.31 build_mpack
1092     fi
1093 edhill 1.1
1094     # Create a uniquely named directory to store results
1095 jmc 1.110 CMDLINE=$0
1096 jmc 1.118 for xx in "$@" ; do nw=`echo $xx | wc -w`
1097     if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"
1098     else CMDLINE="$CMDLINE '$xx'" ; fi
1099     done
1100     #for xx in "$@" ; do CMDLINE="$CMDLINE '$xx'" ; done
1101 edhill 1.1 MACH=`hostname`
1102 edhill 1.2 UNAMEA=`uname -a`
1103 edhill 1.1 DATE=`date +%Y%m%d`
1104 edhill 1.25 BASE="tr_"$MACH"_"$DATE"_"
1105 jmc 1.70 if test "x$OUTDIR" != x ; then
1106     BASE="tr_"$OUTDIR"_"$DATE"_"
1107 jmc 1.121 else
1108     short_name=`hostname | sed 's/\..*$//'`
1109     BASE="tr_"$short_name"_"$DATE"_"
1110 jmc 1.70 fi
1111 edhill 1.1 DNUM=0
1112     DRESULTS="$BASE$DNUM"
1113     while test -e $DRESULTS ; do
1114     DNUM=$(( $DNUM + 1 ))
1115     DRESULTS="$BASE$DNUM"
1116     done
1117     mkdir $DRESULTS
1118     RETVAL=$?
1119     if test "x$RETVAL" != x0 ; then
1120 edhill 1.20 echo "ERROR: Can't create results directory \"./$DRESULTS\""
1121 edhill 1.1 exit 1
1122     fi
1123     SUMMARY="$DRESULTS/summary.txt"
1124 edhill 1.16 start_date=`date`
1125 edhill 1.17 echo $start_date > $SUMMARY
1126 jmc 1.110 echo 'run:' $CMDLINE >> $SUMMARY
1127     echo 'on :' $UNAMEA >> $SUMMARY
1128 edhill 1.1
1129 edhill 1.11 of_path=
1130 edhill 1.10 if test "x$OPTFILE" != xNONE ; then
1131     if test -r $OPTFILE ; then
1132 edhill 1.11 # get the path
1133     path=${OPTFILE%/*}
1134     if test "x$path" = x ; then
1135     of_path=`pwd`
1136     else
1137     of_path=`( cd $path > /dev/null 2>&1 ; pwd )`
1138     fi
1139     file=${OPTFILE##*/}
1140     OPTFILE=$of_path/$file
1141 edhill 1.21 cp $OPTFILE $DRESULTS
1142     echo >> $SUMMARY
1143     echo " OPTFILE=$OPTFILE" >> $SUMMARY
1144 edhill 1.11 else
1145 edhill 1.21 echo | tee $SUMMARY
1146     echo "ERROR: can't read OPTFILE=\"$OPTFILE\"" | tee $SUMMARY
1147     exit 1
1148 edhill 1.10 fi
1149 edhill 1.21 else
1150     echo >> $SUMMARY
1151     echo "No \"OPTFILE\" was explicitly specified by testreport," >> $SUMMARY
1152     echo " so the genmake default will be used." >> $SUMMARY
1153 edhill 1.10 fi
1154     echo
1155     echo >> $SUMMARY
1156 utke 1.120 if test "x$ADM" = x -a "x$OADM" = x; then
1157 jmc 1.135 if [ $MATCH_CRIT -lt 10 ] ;
1158     then line_0="default "$MATCH_CRIT ;
1159 jmc 1.94 else line_0="default "$MATCH_CRIT ; fi
1160     line_0="$line_0 ----T----- ----S----- ----U----- ----V-----"
1161 edhill 1.49 line_1="G D M c m s m s m s m s"
1162     line_2="E p a R g m m e . m m e . m m e . m m e ."
1163     line_3="N n k u 2 i a a d i a a d i a a d i a a d"
1164     line_4="2 d e n d n x n . n x n . n x n . n x n ."
1165 edhill 1.50 for ii in $PTRACERS_NUM ; do
1166 edhill 1.49 line_0="$line_0 --PTR 0"$ii"--"
1167     line_1="$line_1 m s"
1168     line_2="$line_2 m m e ."
1169     line_3="$line_3 i a a d"
1170     line_4="$line_4 n x n ."
1171     done
1172     echo "$line_0" | tee -a $SUMMARY
1173     echo "$line_1" | tee -a $SUMMARY
1174     echo "$line_2" | tee -a $SUMMARY
1175     echo "$line_3" | tee -a $SUMMARY
1176     echo "$line_4" | tee -a $SUMMARY
1177     echo " " | tee -a $SUMMARY
1178 edhill 1.24 else
1179     echo "ADJOINT=true" >> $SUMMARY
1180     echo >> $SUMMARY
1181 jmc 1.135 if [ $MATCH_CRIT -lt 10 ] ;
1182     then line_0="default "$MATCH_CRIT ;
1183 jmc 1.103 else line_0="default "$MATCH_CRIT ; fi
1184 jmc 1.100 echo "$line_0" | tee -a $SUMMARY
1185 edhill 1.24 cat << EOF | tee -a $SUMMARY
1186     G D M C G
1187     E p a R o r
1188     N n k u s a
1189     2 d e n t d
1190    
1191     EOF
1192     fi
1193 jmc 1.139 echo "-------------------------------------------------------------------------------"
1194 edhill 1.1
1195 edhill 1.10 # ...and each test directory...
1196     for dir in $TESTDIRS ; do
1197 jmc 1.135
1198 jmc 1.106 # set builddir & rundir:
1199     builddir="build"
1200     if test ! -d $dir/$builddir ; then mkdir $dir/$builddir ; fi
1201     rundir="run"
1202     if test ! -d $dir/$rundir ; then
1203     rundir=$builddir
1204     fi
1205     CODE_DIR=$dir/$code_dir
1206     BUILD_DIR=$dir/$builddir
1207    
1208 edhill 1.10 # Cleanup only!
1209     if test "x$CLEANUP" = xt ; then
1210 jmc 1.127 echo -n ' --- dir:' $BUILD_DIR ': '
1211     makeclean $BUILD_DIR
1212 jmc 1.128 rm -f $BUILD_DIR/$EXECUTABLE
1213 jmc 1.106 if test -d $dir/$rundir/CVS ; then
1214 jmc 1.127 echo -n ' --- dir:' $dir/$rundir ': '
1215 jmc 1.106 run_clean $dir/$rundir
1216 edhill 1.10 fi
1217 jmc 1.127 trdir=`( cd $dir ; find . -type d -name "tr_run.*" -print | sed 's/^.\///')`
1218     ttd=`echo $trdir | wc -w`
1219     if test $ttd != 0 ; then
1220     echo ' --- rm dir:' $trdir
1221     ( cd $dir ; rm -rf $trdir )
1222     fi
1223 edhill 1.10 continue
1224 edhill 1.1 fi
1225 edhill 1.3
1226 jmc 1.135 # Verify that the testdir exists and contains previous
1227 edhill 1.10 # results in the correct location--or skip this directory!
1228 jmc 1.104 fout=$dir"/results/"$ref_outp
1229 edhill 1.24 if test ! -r $fout ; then
1230     echo "can't read \"$fout\" -- skipping $dir"
1231 edhill 1.10 continue
1232     fi
1233 edhill 1.7
1234 jmc 1.117 # Check for specific files for particular type of run
1235 edhill 1.49
1236 edhill 1.30 if test ! -r $CODE_DIR"/SIZE.h_mpi" -a "x$MPI" = "xt" ; then
1237 edhill 1.28 echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"
1238     continue
1239     fi
1240 jmc 1.83 if test ! -r $dir"/input/eedata.mth" -a "x$MULTI_THREAD" = "xt" ; then
1241     echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir"
1242     continue
1243     fi
1244 jmc 1.123 if test "x$MPI" = "xt" -a "x$MULTI_THREAD" = "xt" ; then
1245     retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/input/eedata.mth"`
1246     if test $retv != 0 ; then
1247     echo "input/eedata.mth tiling misfit -- skipping $dir"
1248     continue
1249     fi
1250     fi
1251 jmc 1.83
1252     # Check whether there are "extra runs" for this testdir
1253     extra_runs=
1254 jmc 1.133 if test "x$NORUN" = xf ; then
1255     ex_run_dirs=`( cd $dir ; echo $inputdir.* )`
1256     fi
1257 jmc 1.108 #echo "ex_run_dirs='$ex_run_dirs'"
1258     for exd in $ex_run_dirs ; do
1259     name=`echo $exd | sed -e "s/$inputdir\.//"`
1260     refExOut=`echo $ref_outp | sed "s/\./.${name}./"`
1261     outf="$dir/results/$refExOut"
1262     if test -f $outf -a -r $outf ; then
1263 jmc 1.135 if test "x$MULTI_THREAD" = "xt" ; then
1264 jmc 1.123 if test -r $dir"/"$exd"/eedata.mth" ; then
1265     if test "x$MPI" = "xt" ; then
1266     retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/"$exd"/eedata.mth"`
1267     if test $retv = 0 ; then
1268 jmc 1.83 extra_runs="$extra_runs $name"
1269 jmc 1.123 else
1270     echo $exd"/eedata.mth tiling misfit -- skipping $dir"
1271 jmc 1.83 fi
1272 jmc 1.123 else
1273 jmc 1.108 extra_runs="$extra_runs $name"
1274 jmc 1.123 fi
1275     #else echo $dir"/"$exd"/eedata.mth: not found"
1276 jmc 1.83 fi
1277 jmc 1.123 else
1278     extra_runs="$extra_runs $name"
1279     fi
1280 jmc 1.108 fi
1281     done
1282 edhill 1.28
1283     echo
1284 jmc 1.135 if test "x$extra_runs" = "x" ; then
1285 jmc 1.83 echo "Experiment: $dir"
1286     else
1287     echo "Experiment: $dir ; extra_runs=$extra_runs"
1288     fi
1289 edhill 1.28 echo
1290     unset genmake makedepend make run
1291 jmc 1.94 results=$EMPTY_RESULTS
1292 edhill 1.10
1293     # Create an output dir for each OPTFILE/tdir combination
1294 jmc 1.138 locDIR=$DRESULTS"/"$dir
1295     mkdir $locDIR
1296     CDIR=`pwd`"/$locDIR"
1297 jmc 1.135
1298 jmc 1.133 if test "x$NORUN" = xt ; then
1299     run=N
1300     genmakemodel $dir/$builddir && genmake=Y \
1301     && makeclean $dir/$builddir \
1302     && symlink_mpifiles $dir $code_dir $builddir \
1303     && makedependmodel $dir/$builddir && makedepend=Y \
1304     && makemodel $dir/$builddir && make=Y
1305 edhill 1.10 else
1306 edhill 1.1 genmakemodel $dir/$builddir && genmake=Y \
1307     && makeclean $dir/$builddir \
1308 edhill 1.27 && symlink_mpifiles $dir $code_dir $builddir \
1309 edhill 1.1 && makedependmodel $dir/$builddir && makedepend=Y \
1310     && makemodel $dir/$builddir && make=Y \
1311 jmc 1.139 && run_clean $dir/$rundir \
1312 jmc 1.108 && linkdata $dir/$rundir $inputdir input \
1313 edhill 1.12 && runmodel $dir/$rundir && run=Y \
1314 jmc 1.99 && results=`testoutput_run $dir $rundir $ref_outp`
1315 edhill 1.10 fi
1316 jmc 1.139 #echo "results='$results'"
1317 jmc 1.135
1318 edhill 1.24 fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1319 jmc 1.139 echo 1>&2
1320 jmc 1.98 echo "$fres" | sed 's/ 99/ --/g' | sed 's/ > />/' | sed 's/ < /</' >> $SUMMARY
1321 jmc 1.138 touch $locDIR"/summary.txt"
1322     echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $locDIR"/summary.txt"
1323     echo "MACH='$MACH'" >> $locDIR"/summary.txt"
1324     echo "UNAMEA='$UNAMEA'" >> $locDIR"/summary.txt"
1325     echo "DATE='$DATE'" >> $locDIR"/summary.txt"
1326     echo "tdir='$dir'" >> $locDIR"/summary.txt"
1327 jmc 1.108 if test "x$ADM" = xt ; then
1328 jmc 1.138 head -1 $dir/$builddir/taf_ad.log >> $locDIR"/summary.txt"
1329 jmc 1.108 grep -A3 'Seconds in section "ALL' $dir/$rundir/$OUTPUTFILE \
1330 jmc 1.138 >> $locDIR"/summary.txt"
1331 jmc 1.108 fi
1332 edhill 1.34
1333     for ex in $extra_runs ; do
1334 jmc 1.73 unset run
1335 jmc 1.94 results=$EMPTY_RESULTS
1336 jmc 1.106 # reference output file
1337     refExOut=`echo $ref_outp | sed "s/\./.${ex}./g"`
1338 jmc 1.73 # Create an output dir for each OPTFILE/tdir.ex combination
1339 jmc 1.138 locDIR=$DRESULTS"/"$dir"."$ex
1340     mkdir $locDIR
1341     CDIR=`pwd`"/$locDIR"
1342 edhill 1.61 test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1343 jmc 1.106 run_clean $dir/tr_run.$ex
1344 jmc 1.108 linkdata $dir/tr_run.$ex $inputdir.$ex $inputdir input
1345 jmc 1.42 runmodel $dir/tr_run.$ex && run=Y \
1346 jmc 1.106 && results=`testoutput_run $dir tr_run.$ex $refExOut`
1347 edhill 1.34 fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1348     fres="$fres.$ex"
1349 jmc 1.139 echo 1>&2
1350 jmc 1.100 echo "$fres" | sed 's/ 99/ --/g' | sed 's/ > />/' | sed 's/ < /</' >> $SUMMARY
1351 jmc 1.138 touch $locDIR"/summary.txt"
1352     echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $locDIR"/summary.txt"
1353     echo "MACH='$MACH'" >> $locDIR"/summary.txt"
1354     echo "UNAMEA='$UNAMEA'" >> $locDIR"/summary.txt"
1355     echo "DATE='$DATE'" >> $locDIR"/summary.txt"
1356     echo "tdir='$dir.$ex'" >> $locDIR"/summary.txt"
1357 jmc 1.108 if test "x$ADM" = xt ; then
1358 jmc 1.138 head -1 $dir/$builddir/taf_ad.log >> $locDIR"/summary.txt"
1359 jmc 1.108 grep -A3 'Seconds in section "ALL' $dir/tr_run.$ex/$OUTPUTFILE \
1360 jmc 1.138 >> $locDIR"/summary.txt"
1361 jmc 1.108 fi
1362 jmc 1.83 if test "x$POSTCLEAN" = xt ; then
1363 jmc 1.100 run_clean $dir/tr_run.$ex
1364 jmc 1.83 fi
1365 edhill 1.34 done
1366 edhill 1.68
1367 jmc 1.139 if test -f $DRESULTS"/"genmake_state ; then : ; else
1368 jmc 1.137 if test -f $dir/$builddir/Makefile ; then
1369     mkOpt=`grep '^# OPTFILE=' $dir/$builddir/Makefile 2>/dev/null | head -1 | sed 's/^# //'`
1370     echo "from '$dir/$builddir/Makefile', extract:" > $DRESULTS/genmake_state
1371     sed -n '/^# executed by:/,+1 p' $dir/$builddir/Makefile >> $DRESULTS/genmake_state
1372     echo $mkOpt >> $DRESULTS/genmake_state
1373     fi
1374     fi
1375 jmc 1.83 #postclean $dir/$builddir
1376     if test "x$POSTCLEAN" = xt ; then
1377     makeclean $dir/$builddir \
1378     && run_clean $dir/$rundir
1379     fi
1380 jmc 1.135
1381 edhill 1.10 echo "-------------------------------------------------------------------------------"
1382 jmc 1.135
1383 edhill 1.1 done
1384    
1385 edhill 1.34 printf "Start time: " >> $SUMMARY
1386 jmc 1.114 echo "$start_date" >> $SUMMARY
1387 edhill 1.34 printf "End time: " >> $SUMMARY
1388 edhill 1.13 date >> $SUMMARY
1389 edhill 1.20
1390     # If addresses were supplied and mpack built successfully, then try
1391     # to send email using mpack.
1392     if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
1393     echo "No results email was sent."
1394     else
1395     if test "x$HAVE_MPACK" = xt ; then
1396     tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1397     && gzip $DRESULTS".tar" \
1398 edhill 1.44 && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1399 edhill 1.20 RETVAL=$?
1400     if test "x$RETVAL" != x0 ; then
1401     echo
1402     echo "Warning: The tar, gzip, & mpack step failed. Please send email"
1403     echo " to <MITgcm-support@mitgcm.org> for help. You may copy the "
1404     echo " summary of results from the directory \"$DRESULTS\"."
1405     echo
1406     else
1407     echo
1408     echo "An email containing results was sent to the following addresses:"
1409     echo " \"$ADDRESSES\""
1410     echo
1411 jmc 1.129 test -f $DRESULTS".tar" && rm -f $DRESULTS".tar"
1412     test -f $DRESULTS".tar.gz" && rm -f $DRESULTS".tar.gz"
1413 edhill 1.20 fi
1414     fi
1415     fi
1416 edhill 1.13
1417 jmc 1.133 if test "x$QUICK" = xf -a "x$NORUN" = xf ; then
1418     rm -f tr_cmpnum.c tr_cmpnum
1419     fi
1420 edhill 1.1
1421 edhill 1.12 if test "x$CLEANUP" != xt ; then
1422 jmc 1.102 cat $SUMMARY | sed 's/ \. \. \. \. \. \. \. \. \. \. \. \. //'
1423 edhill 1.25 if test -e tr_out.txt ; then
1424     mv tr_out.txt tr_out.txt.old
1425 edhill 1.14 fi
1426 jmc 1.103 cat $SUMMARY | sed '/^[YN] [YN] [YN] [YN]/ s/ \. //g' > tr_out.txt
1427 edhill 1.12 fi
1428 edhill 1.1
1429 edhill 1.40 if test "x$DELDIR" = xt ; then
1430     rm -rf $DRESULTS
1431     fi
1432    

  ViewVC Help
Powered by ViewVC 1.1.22