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

Contents of /MITgcm/verification/testreport

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


Revision 1.22 - (show annotations) (download)
Sat Nov 29 00:58:43 2003 UTC (20 years, 4 months ago) by edhill
Branch: MAIN
Changes since 1.21: +37 -30 lines
 o replaced "tmp_cmpnum.f" with "tmp_cmpnum.c" for the SGI O3K

1 #! /usr/bin/env bash
2 #
3 # $Header: /u/u3/gcmpack/MITgcm/verification/testreport,v 1.21 2003/11/27 16:15:39 edhill Exp $
4 # $Name: $
5 #
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 echo " (-mpi) use MPI input files"
15 echo " (-ieee|-noieee) if possible, use IEEE compiler flags"
16 echo " (DEF=\"noieee\")"
17 echo " (-optfile=|-of=)STRING list of optfiles to use"
18 echo " (-a|-addr) STRING list of email recipients"
19 echo " (DEF=\"edhill@mitgcm.org\")"
20 echo " (-t|-tdir) STRING list of test dirs to use"
21 echo " (DEF=\"\" which builds all)"
22 echo " (-b|-bash) STRING preferred location of a \"bash\" or"
23 echo " Bourne-compatible \"sh\" shell"
24 echo " (DEF=\"\" for \"bash\")"
25 echo " (-command) STRING command to run"
26 echo " (DEF=\"make output.txt\")"
27 echo " (-m|-make) STRING command to use for \"make\""
28 echo " (DEF=\"make\")"
29 echo " (-clean) *ONLY* run \"make CLEAN\""
30 echo " (-quick|-q) same as \"-nogenmake -noclean -nodepend\""
31 echo " (-nogenmake|-ng) skip the genmake stage"
32 echo " (-noclean|-nc) skip the \"make clean\" stage"
33 echo " (-nodepend|-nd) skip the \"make depend\" stage"
34 echo
35 echo "and where STRING follows a whitespace-delimited format"
36 echo "such as:"
37 echo " -t 'exp0 exp2 exp3' "
38 echo " -addr='abc@123.com testing@home.org'"
39 echo
40 exit 1
41 }
42
43 # build the mpack utility
44 build_mpack()
45 {
46 echo -n "building the mpack utility... "
47 if test ! -x "$MPACKDIR/mpack" ; then
48 if test ! -d $MPACKDIR ; then
49 echo
50 echo "Error: can't find \"$MPACKDIR\""
51 echo " are you sure this program is being run in the correct "
52 echo " (that is, \"MITGCM_ROOT\verification\") directory?"
53 echo
54 HAVE_MPACK=f
55 fi
56 echo -n "building mpack... "
57 ( cd $MPACKDIR && ./configure && $MAKE ) > build_mpack.out 2>&1
58 RETVAL=$?
59 if test "x$RETVAL" != x0 ; then
60 echo
61 echo "Error building the mpack tools at: $MPACK_DIR"
62 echo
63 HAVE_MPACK=f
64 else
65 HAVE_MPACK=t
66 fi
67 else
68 HAVE_MPACK=t
69 fi
70 echo "OK"
71 }
72
73 compare_lines()
74 {
75 # use codelet to compare lines
76 if [ $verbose -gt 1 ]; then
77 cat tmp3.txt 1>&2
78 fi
79 return `./a.out < tmp3.txt`
80 }
81
82 testoutput_for_prop()
83 {
84 # testoutput_for_prop dir s1 label subdir
85 #
86 # compares files in $dir/$subdir/output.txt and $dir/results/output.txt
87 # using search strings s1 and text label
88
89 if [ $debug -gt 0 ]; then
90 echo testoutput_for_prop: grep "$2" $1/$4/output.txt 1>&2
91 fi
92 if [ -r $1/$4/output.txt ]; then
93 grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt
94 lncnt=`wc -l tmp1.txt | awk '{print $1}' `
95 if [ $lncnt -lt 3 ]; then
96 if [ $verbose -gt 0 ]; then
97 echo Not enough lines of output when searching for "$2" 1>&2
98 fi
99 return 99
100 fi
101 else
102 echo testoutput_for_prop: output.txt from model run was not readable 1>&2
103 return 99
104 fi
105 if [ $debug -gt 0 ]; then
106 echo testoutput_for_prop: grep "$2" $1/results/output.txt 1>&2
107 fi
108 grep "$2" $1/results/output.txt | sed 's/.*=//' | cat -n > tmp2.txt
109 lncnt=`wc -l tmp2.txt | awk '{print $1}' `
110 if [ $lncnt -lt 3 ]; then
111 if [ $verbose -gt 0 ]; then
112 echo Not enough lines of output when searching for "$2" 1>&2
113 fi
114 return 99
115 fi
116 if [ $debug -gt 0 ]; then
117 echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2
118 fi
119 join tmp1.txt tmp2.txt | awk '{print $1 " " $2 " " $3}' > tmp3.txt
120 if [ $debug -gt 0 ]; then
121 echo testoutput_for_prop: compare_lines 1>&2
122 fi
123 if [ $verbose -gt 1 ]; then
124 cat tmp3.txt 1>&2
125 fi
126 echo "-1" >> tmp3.txt
127 digits_of_similarity=`./tmp_cmpnum < tmp3.txt`
128 if [ $digits_of_similarity -eq 99 ]; then
129 if [ $verbose -gt 0 ]; then
130 echo testoutput_for_prop: No comparison was available for \"$2\" 1>&2
131 fi
132 digits_of_similarity=99
133 else
134 if [ $verbose -gt 0 ]; then
135 echo There were $digits_of_similarity decimal places of similarity for \"$2\" 1>&2
136 fi
137 fi
138 rm tmp1.txt tmp2.txt tmp3.txt
139
140 return $digits_of_similarity
141 }
142
143 dashnum()
144 {
145 # dashnum n1 n2 n3 ...
146 #
147 # print numbers using %3i format or "--" if number = 99
148
149 for num in $@ ; do
150 if [ $num = 99 ]; then
151 printf ' --'
152 else
153 printf '%3i' $num
154 fi
155 done
156 }
157
158 testoutput()
159 {
160 # testoutput diretory subdir
161 #
162 # test output in "directory"
163
164 if [ $debug -gt 0 ]; then
165 echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2
166 fi
167 testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2; cg2dres=$?
168 if [ $debug -gt 0 ]; then
169 echo testoutput: cg2dres=$cg2dres 1>&2
170 fi
171 testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2; tmin=$?
172 testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2; tmax=$?
173 testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2; tmean=$?
174 testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2; tsd=$?
175 testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2; smin=$?
176 testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2; smax=$?
177 testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2; smean=$?
178 testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2; ssd=$?
179 testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2; umin=$?
180 testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2; umax=$?
181 testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2; umean=$?
182 testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2; usd=$?
183 testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2; vmin=$?
184 testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2; vmax=$?
185 testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2; vmean=$?
186 testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2; vsd=$?
187
188 dashnum $cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd \
189 $umin $umax $umean $usd $vmin $vmax $vmean $vsd
190 }
191
192 genmakemodel()
193 {
194 # genmakemodel directory
195 if test "x$NOGENMAKE" = xt ; then
196 echo "genmake skipped!"
197 else
198 GENMAKE2="$BASH ../../../tools/genmake2"
199 (
200 cd $1;
201 command="$GENMAKE2 -ds -m $MAKE --mods=../code"
202 if test "x$OPTFILE" != xNONE ; then
203 command="$command --optfile=$OPTFILE"
204 fi
205 if test "x$IEEE" != x ; then
206 command="$command -ieee"
207 fi
208 printf 'genmake ... ' 1>&2
209 $command > make.log 2>&1
210 RETVAL=$?
211 cp Makefile $CDIR
212 if test "x$RETVAL" != x0 ; then
213 tail make.log
214 echo "genmakemodel: genmake failed" 1>&2
215 cp genmake_* make.log $CDIR
216 return 1
217 else
218 echo "successful" 1>&2
219 fi
220 )
221 fi
222 }
223
224 makeclean()
225 {
226 # makeclean directory
227 if test "x$NOCLEAN" = xt ; then
228 echo "make CLEAN skipped!"
229 else
230 (
231 cd $1;
232 if test -e output.txt ; then
233 rm -f output.txt
234 fi
235 printf 'make CLEAN ... ' 2>&1
236 if test -r Makefile ; then
237 $MAKE CLEAN >> make.log 2>&1
238 RETVAL=$?
239 if test "x$RETVAL" != x0 ; then
240 tail make.log
241 echo "makeclean: \"make CLEAN\" failed" 1>&2
242 cp make.log $CDIR"/make.log"
243 return 1
244 fi
245 fi
246 echo successful 1>&2
247 exit 0
248 )
249 fi
250 }
251
252 makedependmodel()
253 {
254 # makedependmodel directory
255 if test "x$NODEPEND" = xt ; then
256 echo "make depend skipped!"
257 else
258 (
259 cd $1;
260 printf 'make depend ... ' 1>&2
261 $MAKE depend >> make.log 2>&1
262 RETVAL=$?
263 if test "x$RETVAL" != x0 ; then
264 tail make.log
265 echo "makedependmodel: make depend failed" 1>&2
266 cp make.log $CDIR"/make.log"
267 return 1
268 else
269 echo successful 1>&2
270 fi
271 )
272 fi
273 }
274
275 makemodel()
276 {
277 # makemodel directory
278 (
279 cd $1;
280 if test -r Makefile ; then
281 printf 'make ... ' 1>&2
282 $MAKE >> make.log 2>&1
283 RETVAL=$?
284 if test "x$RETVAL" != x0 ; then
285 tail make.log
286 echo failed 1>&2
287 cp make.log $CDIR"/make.log"
288 return 1
289 else
290 echo successful 1>&2
291 fi
292 fi
293 )
294 }
295
296 linkdata()
297 {
298 # linkdata flag
299 #
300 # symbolically link data files to run directory
301 if test "x$1" = x1 ; then
302 (
303 cd $2
304 files=`( cd ../input ; ls -1 | grep -v CVS )`
305 for i in $files ; do
306 if test ! -d "../input/"$i ; then
307 ln -sf "../input/"$i $i
308 fi
309 done
310 )
311 fi
312 }
313
314 runmodel()
315 {
316 # runmodel directory
317 #
318 # runs "$COMMAND" in "directory"
319 # (where "$COMMAND" is relative to "directory")
320 (
321 cd $1
322 printf 'runmodel ... ' 1>&2
323 # make output.txt
324 $COMMAND >> run.log 2>&1
325 RETVAL=$?
326 if test "x$RETVAL" = x0 ; then
327 echo successful 1>&2
328 cp output.txt $CDIR"/output.txt"
329 return 0
330 else
331 tail run.log
332 echo failed 1>&2
333 cp run.log $CDIR"/run.log"
334 return 1
335 fi
336 )
337 }
338
339 createcodelet()
340 {
341 # create codelet for comparing model output
342
343 echo -n "creating the comparison code... "
344 cat > tmp_cmpnum.c <<EOF
345 #include <stdio.h>
346 #include <math.h>
347 int main( int argc, char** argv ) {
348 int linnum,best;
349 double a,b,diff;
350 best = -16;
351 while( 1 ) {
352 scanf("%d", &linnum);
353 if (linnum == -1) break;
354 scanf("%lf", &a); scanf("%lf", &b);
355 diff = 0.5*(fabs(a)+fabs(b));
356 if (diff > 1.e-12) {
357 diff=fabs(a-b)/diff;
358 if (diff > 0.0) {
359 linnum = (int)log10(diff);
360 best = (best > linnum) ? best : linnum;
361 }
362 else {
363 if (best == -16 && diff != 0) best = -22;
364 }
365 }
366 }
367 printf("%d\n", -best);
368 return 0;
369 }
370 EOF
371 cc -o tmp_cmpnum tmp_cmpnum.c -lm
372
373 if [ -x ./tmp_cmpnum ]; then
374 echo "OK"
375 return 0
376 else
377 echo
378 echo "ERROR: failed to compile comparison code"
379 exit 1
380 fi
381 }
382
383 formatresults()
384 {
385 # formatresults expt genmake depend make run results*
386
387 nm=$1
388 printf '%s %s %s %s' $2 $3 $4 $5
389 shift; shift; shift; shift; shift;
390 printf '%3s' $@
391
392 if [ $1 = '--' ]; then
393 printf ' N/O '
394 else
395 if [ $1 -gt 12 ]; then
396 printf ' pass'
397 else
398 printf ' FAIL'
399 fi
400 fi
401 printf ' %s' $nm
402 printf '\n'
403
404 }
405
406 show_help()
407 {
408 cat - << EOF
409 $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]
410
411 -help|-h Show this help message
412 -quiet Reduce the amount of output
413 -verbose Produce copious amounts of output
414 -debug Produce even more output which will mean nothing to most
415 -force Do "make CLEAN" before compiling. This forces a complete rebuild.
416 -clean Do "make CLEAN" after compiling and testing.
417 -cleanup Aggresively removes all model output, executables and object files
418 and then exits. Use with care.
419
420 Normal usage:
421 $0 * Configure, compile, run and analyze in all experiment directories
422 EOF
423 }
424
425 scandirs()
426 {
427 if [ $# -eq 0 ]; then
428 for arg in * ; do
429 test -d $arg/input && echo $arg
430 done
431 else
432 echo $*
433 fi
434 }
435
436
437 ###############################################################################
438
439
440 # Default properties
441 debug=0
442 verbose=1
443 clean=0
444 expts=''
445 # ieee=1
446
447 IEEE=
448 if test "x$MITGCM_IEEE" != x ; then
449 IEEE=$MITGCM_IEEE
450 fi
451
452
453 CLEANUP=f
454 QUICK=f
455 NOGENMAKE=f
456 NOCLEAN=f
457 NODEPEND=f
458
459 BASH=
460 OPTFILE=NONE
461 ADDRESSES=
462 TESTDIRS=
463 MPACKDIR="../tools/mpack-1.6"
464 HAVE_MPACK=
465 MPACK="$MPACKDIR/mpack"
466 COMMAND="make output.txt"
467 MAKE=make
468 MPI=f
469
470 echo -n "parsing options... "
471
472 ac_prev=
473 for ac_option ; do
474
475 # If the previous option needs an argument, assign it.
476 if test -n "$ac_prev"; then
477 eval "$ac_prev=\$ac_option"
478 ac_prev=
479 continue
480 fi
481
482 ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
483
484 case $ac_option in
485
486 -help | --help | -h | --h)
487 usage ;;
488
489 -optfile | --optfile | -of | --of)
490 ac_prev=OPTFILE ;;
491 -optfile=* | --optfile=* | -of=* | --of=*)
492 OPTFILE=$ac_optarg ;;
493
494 -addr | --addr | -a | --a)
495 ac_prev=ADDRESSES ;;
496 -addr=* | --addr=*)
497 ADDRESSES=$ac_optarg ;;
498
499 -tdir | --tdir | -t | --t)
500 ac_prev=TESTDIRS ;;
501 -tdir=* | --tdir=*)
502 TESTDIRS=$ac_optarg ;;
503
504 -bash | --bash | -b | --b)
505 ac_prev=BASH ;;
506 -bash=* | --bash=*)
507 BASH=$ac_optarg ;;
508
509 -command | --command | -c | --c)
510 ac_prev=COMMAND ;;
511 -command=* | --command=*)
512 COMMAND=$ac_optarg ;;
513
514 -make | --make | -m | --m)
515 ac_prev=MAKE ;;
516 -make=* | --make=*)
517 MAKE=$ac_optarg ;;
518
519 -clean | --clean)
520 CLEANUP=t ;;
521
522 -quick | --quick | -q | --q)
523 QUICK=t ;;
524 -nogenmake | --nogenmake | -ng | --ng)
525 NOGENMAKE=t ;;
526 -noclean | --noclean | -nc | --nc)
527 NOCLEAN=t ;;
528 -nodepend | --nodepend | -nd | --nd)
529 NODEPEND=t ;;
530
531 -mpi) MPI=t ;;
532
533 -ieee) IEEE=true ;;
534 -noieee) IEEE= ;;
535
536 -verbose) verbose=2 ;;
537 -debug) debug=1 ;;
538 -quiet) verbose=0 ;;
539
540 -*)
541 echo "Error: unrecognized option: "$ac_option
542 usage
543 ;;
544
545 *)
546 echo "Error: unrecognized argument: "$ac_option
547 usage
548 ;;
549
550 esac
551
552 done
553
554 if test "x$QUICK" = xt ; then
555 NOGENMAKE=t
556 NOCLEAN=t
557 NODEPEND=t
558 fi
559
560 if test "x$TESTDIRS" = x ; then
561 TESTDIRS=`scandirs`
562 fi
563
564 if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
565 OPTFILE=$MITGCM_OF
566 fi
567
568 echo "OK"
569
570 # create the FORTRAN comparison code
571 createcodelet
572
573 # build the mpack utility
574 build_mpack
575
576 # Create a uniquely named directory to store results
577 MACH=`hostname`
578 UNAMEA=`uname -a`
579 DATE=`date +%Y%m%d`
580 BASE=$MACH"_"$DATE"_"
581 DNUM=0
582 DRESULTS="$BASE$DNUM"
583 while test -e $DRESULTS ; do
584 DNUM=$(( $DNUM + 1 ))
585 DRESULTS="$BASE$DNUM"
586 done
587 mkdir $DRESULTS
588 RETVAL=$?
589 if test "x$RETVAL" != x0 ; then
590 echo "ERROR: Can't create results directory \"./$DRESULTS\""
591 exit 1
592 fi
593 SUMMARY="$DRESULTS/summary.txt"
594 echo -n "Start time: " >> $SUMMARY
595 start_date=`date`
596 echo $start_date > $SUMMARY
597
598 of_path=
599 if test "x$OPTFILE" != xNONE ; then
600 if test -r $OPTFILE ; then
601 # get the path
602 path=${OPTFILE%/*}
603 if test "x$path" = x ; then
604 of_path=`pwd`
605 else
606 of_path=`( cd $path > /dev/null 2>&1 ; pwd )`
607 fi
608 file=${OPTFILE##*/}
609 OPTFILE=$of_path/$file
610 cp $OPTFILE $DRESULTS
611 echo >> $SUMMARY
612 echo " OPTFILE=$OPTFILE" >> $SUMMARY
613 else
614 echo | tee $SUMMARY
615 echo "ERROR: can't read OPTFILE=\"$OPTFILE\"" | tee $SUMMARY
616 exit 1
617 fi
618 else
619 echo >> $SUMMARY
620 echo "No \"OPTFILE\" was explicitly specified by testreport," >> $SUMMARY
621 echo " so the genmake default will be used." >> $SUMMARY
622 fi
623 echo
624 echo >> $SUMMARY
625 cat << EOF | tee -a $SUMMARY
626 T S U V
627 G D M c m s m s m s m s
628 E p a R g m m e . m m e . m m e . m m e .
629 N n k u 2 i a a d i a a d i a a d i a a d
630 2 d e n d n x n . n x n . n x n . n x n .
631
632 EOF
633
634 # ...and each test directory...
635 for dir in $TESTDIRS ; do
636
637 # Cleanup only!
638 if test "x$CLEANUP" = xt ; then
639 if test -r $dir/build/Makefile ; then
640 ( cd $dir/build ; make CLEAN )
641 fi
642 if test -r $dir/input/Makefile ; then
643 ( cd $dir/input ; make CLEAN )
644 fi
645 continue
646 fi
647
648 # Verify that the testdir exists and contains previous
649 # results in the correct location--or skip this directory!
650 if test ! -r $dir"/results/output.txt" ; then
651 echo "can't read \"$dir/results/output.txt\" -- skipping $dir"
652 continue
653 fi
654
655 echo "-------------------------------------------------------------------------------"
656 echo
657 echo "Experiment: $dir"
658 echo
659 unset genmake makedepend make run
660 results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
661
662 builddir="input"
663 rundir="input"
664 use_seperate_build=0
665 if test -d $dir/build -a -r $dir/build ; then
666 builddir="build"
667 rundir="build"
668 use_seperate_build=1
669 linkdata $use_seperate_build $dir/$rundir
670 fi
671
672 CODE_DIR=$dir/code
673 BUILD_DIR=$dir/$builddir
674 MPI_FILES="CPP_EEOPTIONS.h_mpi SIZE.h_mpi"
675 NOMPI_FILES="CPP_EEOPTIONS.h_nompi SIZE.h_nompi"
676
677 # Is this an MPI run?
678 if test "x$MPI" = xt ; then
679 FILES=$MPI_FILES
680 endings="_mpi"
681 else
682 FILES=$NOMPI_FILES
683 endings="_nompi"
684 fi
685
686 # Check to see that we have the files
687 have_files=t
688 for i in $FILES ; do
689 if test ! -r $CODE_DIR/$i ; then
690 echo "Warning: can't read file $CODE_DIR/$i"
691 have_files=f
692 fi
693 done
694 if test "x$have_files" != xt -a "x$MPI" = xt ; then
695 echo "Skipping $dir due to lack of input files (see above warning)"
696 continue
697 fi
698
699 # If we have the $FILES and they differ, copy the $FILES to $BUILD_DIR
700 if test "x$have_files" = xt ; then
701 for i in $FILES ; do
702 sstr="s|$endings||"
703 name=`echo $i | sed -e $sstr `
704 cmp $CODE_DIR/$i $BUILD_DIR/$name > /dev/null 2>&1
705 RETVAL=$?
706 if test "x$RETVAL" != x0 ; then
707 cp $CODE_DIR/$i $BUILD_DIR/$name
708 fi
709 done
710 fi
711
712 # Create an output dir for each OPTFILE/tdir combination
713 rel_CDIR=$DRESULTS"/"$dir
714 mkdir $rel_CDIR
715 CDIR=`pwd`"/$rel_CDIR"
716
717 if test "x$CLEANUP" = xt ; then
718 makeclean $dir/$builddir
719 else
720 genmakemodel $dir/$builddir && genmake=Y \
721 && makeclean $dir/$builddir \
722 && makedependmodel $dir/$builddir && makedepend=Y \
723 && makemodel $dir/$builddir && make=Y \
724 && linkdata $use_seperate_build $dir/$rundir \
725 && runmodel $dir/$rundir && run=Y \
726 && results=`testoutput $dir $rundir`
727 fi
728
729 echo
730 fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
731 echo
732 echo "$fres" >> $SUMMARY
733 echo "fresults='$fres'" > $CDIR"/summary.txt"
734 echo "MACH='$MACH'" >> $CDIR"/summary.txt"
735 echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
736 echo "DATE='$DATE'" >> $CDIR"/summary.txt"
737 echo "tdir='$dir'" >> $CDIR"/summary.txt"
738
739 echo "-------------------------------------------------------------------------------"
740
741 done
742
743 echo -n "Start time: " >> $SUMMARY
744 echo $start_date >> $SUMMARY
745 echo -n "End time: " >> $SUMMARY
746 date >> $SUMMARY
747
748 # If addresses were supplied and mpack built successfully, then try
749 # to send email using mpack.
750 if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
751 echo "No results email was sent."
752 else
753 if test "x$HAVE_MPACK" = xt ; then
754 tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
755 && gzip $DRESULTS".tar" \
756 && $MPACK -s MITgcm-test -m 1500000 $DRESULTS".tar.gz" $ADDRESSES
757 RETVAL=$?
758 if test "x$RETVAL" != x0 ; then
759 echo
760 echo "Warning: The tar, gzip, & mpack step failed. Please send email"
761 echo " to <MITgcm-support@mitgcm.org> for help. You may copy the "
762 echo " summary of results from the directory \"$DRESULTS\"."
763 echo
764 else
765 echo
766 echo "An email containing results was sent to the following addresses:"
767 echo " \"$ADDRESSES\""
768 echo
769 fi
770 test -f $DRESULTS".tar" && rm -f $DRESULTS".tar"
771 test -f $DRESULTS".tar.gz" && rm -f $DRESULTS".tar.gz"
772 fi
773 fi
774
775 # rm -f tmp_cmpnum.f a.out
776 rm -f tmp_cmpnum.c tmp_cmpnum
777
778 if test "x$CLEANUP" != xt ; then
779 cat $SUMMARY
780 if test -e tr.out ; then
781 mv tr.out tr.out.old
782 fi
783 cat $SUMMARY > tr.out
784 fi

  ViewVC Help
Powered by ViewVC 1.1.22