/[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.21 - (show annotations) (download)
Thu Nov 27 16:15:39 2003 UTC (20 years, 4 months ago) by edhill
Branch: MAIN
Changes since 1.20: +26 -36 lines
 o cleanup formatting of output

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

  ViewVC Help
Powered by ViewVC 1.1.22