35 |
echo " (DEF=\"hostname\")" |
echo " (DEF=\"hostname\")" |
36 |
echo " (-ptr|-ptracers) STRING specify which ptracers to test" |
echo " (-ptr|-ptracers) STRING specify which ptracers to test" |
37 |
echo " (DEF=\"1 2 3 4 5\")" |
echo " (DEF=\"1 2 3 4 5\")" |
38 |
|
echo " (-match) NUMBER Matching Criteria (number of digits)" |
39 |
|
echo " (DEF=\"12\")" |
40 |
echo " (-j) JOBS use \"make -j JOBS\" for parallel builds" |
echo " (-j) JOBS use \"make -j JOBS\" for parallel builds" |
41 |
echo " (-clean) *ONLY* run \"make CLEAN\"" |
echo " (-clean) *ONLY* run \"make CLEAN\"" |
42 |
echo " (-quick|-q) same as \"-nogenmake -noclean -nodepend\"" |
echo " (-quick|-q) same as \"-nogenmake -noclean -nodepend\"" |
94 |
echo "OK" |
echo "OK" |
95 |
} |
} |
96 |
|
|
97 |
testoutput_for_prop() |
testoutput_var() |
98 |
{ |
{ |
99 |
# testoutput_for_prop dir s1 label subdir extension |
# testoutput_var dir s1 label subdir extension |
100 |
# |
# |
101 |
# compares files $dir/$subdir/$OUTPUTFILE and $dir/results/output.txt |
# compares 1 variable output selected from file $dir/$subdir/$OUTPUTFILE |
102 |
# using search strings s1 and text label |
# with same output from reference file $dir/results/output.$extension |
103 |
|
# using search strings s1 and text label |
104 |
|
|
105 |
if [ $debug -gt 0 ]; then |
if [ $debug -gt 0 ]; then |
106 |
echo testoutput_for_prop: grep "$2" $1/$4/$OUTPUTFILE 1>&2 |
echo testoutput_var: grep "$2" $1/$4/$OUTPUTFILE 1>&2 |
107 |
fi |
fi |
108 |
if [ -r $1/$4/$OUTPUTFILE ]; then |
if [ -r $1/$4/$OUTPUTFILE ]; then |
109 |
grep "$2" $1/$4/$OUTPUTFILE | sed 's/.*=//' | cat -n > tmp1.txt |
grep "$2" $1/$4/$OUTPUTFILE | sed 's/.*=//' | cat -n > tmp1.txt |
115 |
return 99 |
return 99 |
116 |
fi |
fi |
117 |
else |
else |
118 |
echo testoutput_for_prop: $OUTPUTFILE from model run was not readable 1>&2 |
echo testoutput_var: $OUTPUTFILE from model run was not readable 1>&2 |
119 |
return 99 |
return 99 |
120 |
fi |
fi |
121 |
if [ $debug -gt 0 ]; then |
if [ $debug -gt 0 ]; then |
122 |
echo testoutput_for_prop: grep "$2" $1/results/output.$5 1>&2 |
echo testoutput_var: grep "$2" $1/results/output.$5 1>&2 |
123 |
fi |
fi |
124 |
grep "$2" $1/results/output.$5 | sed 's/.*=//' | cat -n > tmp2.txt |
grep "$2" $1/results/output.$5 | sed 's/.*=//' | cat -n > tmp2.txt |
125 |
lncntB=`wc -l tmp2.txt | awk '{print $1}' ` |
lncntB=`wc -l tmp2.txt | awk '{print $1}' ` |
137 |
fi |
fi |
138 |
has_nan=`cat tmp1.txt | grep -i nan | wc -l` |
has_nan=`cat tmp1.txt | grep -i nan | wc -l` |
139 |
if [ $has_nan -gt 0 ] ; then |
if [ $has_nan -gt 0 ] ; then |
140 |
echo testoutput_for_prop: $OUTPUTFILE contains $has_nan NaN values 1>&2 |
echo testoutput_var: $OUTPUTFILE contains $has_nan NaN values 1>&2 |
141 |
return 99 |
return 99 |
142 |
fi |
fi |
143 |
has_inf=`cat tmp1.txt | grep -i inf | wc -l` |
has_inf=`cat tmp1.txt | grep -i inf | wc -l` |
144 |
if [ $has_inf -gt 0 ] ; then |
if [ $has_inf -gt 0 ] ; then |
145 |
echo testoutput_for_prop: $OUTPUTFILE contains $has_inf Inf values 1>&2 |
echo testoutput_var: $OUTPUTFILE contains $has_inf Inf values 1>&2 |
146 |
return 99 |
return 99 |
147 |
fi |
fi |
148 |
if [ $debug -gt 0 ]; then |
if [ $debug -gt 0 ]; then |
149 |
echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2 |
echo testoutput_var: join tmp1.txt tmp2.txt 1>&2 |
150 |
fi |
fi |
151 |
join tmp1.txt tmp2.txt | awk '{print $1 " " $2 " " $3}' > tmp3.txt |
join tmp1.txt tmp2.txt | awk '{print $1 " " $2 " " $3}' > tmp3.txt |
152 |
if [ $debug -gt 0 ]; then |
if [ $debug -gt 0 ]; then |
153 |
echo testoutput_for_prop: compare_lines 1>&2 |
echo testoutput_var: compare_lines 1>&2 |
154 |
fi |
fi |
155 |
if [ $verbose -gt 1 ]; then |
if [ $verbose -gt 1 ]; then |
156 |
cat tmp3.txt 1>&2 |
cat tmp3.txt 1>&2 |
158 |
echo "-1" >> tmp3.txt |
echo "-1" >> tmp3.txt |
159 |
# On the SGI O3K (*not* the O2K), "cat -n" inserts a ":" after the line number |
# On the SGI O3K (*not* the O2K), "cat -n" inserts a ":" after the line number |
160 |
cat tmp3.txt | sed -e 's|:||g' > tmp4.txt |
cat tmp3.txt | sed -e 's|:||g' > tmp4.txt |
161 |
digits_of_similarity=`./tmp_cmpnum < tmp4.txt` |
digits_of_similarity=`./tr_cmpnum < tmp4.txt` |
162 |
if [ $digits_of_similarity -eq 99 ]; then |
if [ $digits_of_similarity -eq 99 ]; then |
163 |
if [ $verbose -gt 0 ]; then |
if [ $verbose -gt 0 ]; then |
164 |
echo testoutput_for_prop: No comparison was available for \"$2\" 1>&2 |
echo testoutput_var: No comparison was available for \"$2\" 1>&2 |
165 |
fi |
fi |
166 |
digits_of_similarity=99 |
digits_of_similarity=99 |
167 |
else |
else |
199 |
join t06.txt t16.txt > t6.txt |
join t06.txt t16.txt > t6.txt |
200 |
echo "-1" >> t5.txt |
echo "-1" >> t5.txt |
201 |
echo "-1" >> t6.txt |
echo "-1" >> t6.txt |
202 |
digits_5=`./tmp_cmpnum < t5.txt` |
digits_5=`./tr_cmpnum < t5.txt` |
203 |
digits_6=`./tmp_cmpnum < t6.txt` |
digits_6=`./tr_cmpnum < t6.txt` |
204 |
dashnum $digits_5 $digits_6 |
dashnum $digits_5 $digits_6 |
205 |
rm -f t[01][56].txt t[56].txt |
rm -f t[01][56].txt t[56].txt |
206 |
} |
} |
230 |
done |
done |
231 |
} |
} |
232 |
|
|
233 |
testoutput() |
testoutput_run() |
234 |
{ |
{ |
235 |
# testoutput directory subdir extension |
# testoutput_run directory subdir extension |
236 |
# |
# |
237 |
# test output in "directory" |
# test output from 1 run in "directory" |
238 |
if test "x$ADM" = x ; then |
if test "x$ADM" = x ; then |
239 |
if [ $debug -gt 0 ]; then |
if [ $debug -gt 0 ]; then |
240 |
echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2 |
echo testoutput_run: testoutput_var $1 cg2d_init_res 1>&2 |
241 |
fi |
fi |
242 |
testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2 $3; cg2dres=$? |
testoutput_var $1 "cg2d_init_res" "cg2d init. residual" $2 $3; cg2dres=$? |
243 |
if [ $debug -gt 0 ]; then |
if [ $debug -gt 0 ]; then |
244 |
echo testoutput: cg2dres=$cg2dres 1>&2 |
echo testoutput_run: cg2dres=$cg2dres 1>&2 |
245 |
fi |
fi |
246 |
testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2 $3; tmin=$? |
testoutput_var $1 "dynstat_theta_min" "theta minimum" $2 $3; tmin=$? |
247 |
testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2 $3; tmax=$? |
testoutput_var $1 "dynstat_theta_max" "theta maximum" $2 $3; tmax=$? |
248 |
testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2 $3; tmean=$? |
testoutput_var $1 "dynstat_theta_mean" "theta mean" $2 $3; tmean=$? |
249 |
testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2 $3; tsd=$? |
testoutput_var $1 "dynstat_theta_sd" "theta s.d." $2 $3; tsd=$? |
250 |
testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2 $3; smin=$? |
testoutput_var $1 "dynstat_salt_min" "salt minimum" $2 $3; smin=$? |
251 |
testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2 $3; smax=$? |
testoutput_var $1 "dynstat_salt_max" "salt maximum" $2 $3; smax=$? |
252 |
testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2 $3; smean=$? |
testoutput_var $1 "dynstat_salt_mean" "salt mean" $2 $3; smean=$? |
253 |
testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2 $3; ssd=$? |
testoutput_var $1 "dynstat_salt_sd" "salt s.d." $2 $3; ssd=$? |
254 |
testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2 $3; umin=$? |
testoutput_var $1 "dynstat_uvel_min" "U minimum" $2 $3; umin=$? |
255 |
testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2 $3; umax=$? |
testoutput_var $1 "dynstat_uvel_max" "U maximum" $2 $3; umax=$? |
256 |
testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2 $3; umean=$? |
testoutput_var $1 "dynstat_uvel_mean" "U mean" $2 $3; umean=$? |
257 |
testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2 $3; usd=$? |
testoutput_var $1 "dynstat_uvel_sd" "U s.d." $2 $3; usd=$? |
258 |
testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2 $3; vmin=$? |
testoutput_var $1 "dynstat_vvel_min" "V minimum" $2 $3; vmin=$? |
259 |
testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$? |
testoutput_var $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$? |
260 |
testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$? |
testoutput_var $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$? |
261 |
testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$? |
testoutput_var $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$? |
262 |
|
|
263 |
# This is for PTRACERS |
# This is for PTRACERS |
264 |
for ii in $PTRACERS_NUM ; do |
for ii in $PTRACERS_NUM ; do |
270 |
#echo 'tst = '$tst |
#echo 'tst = '$tst |
271 |
if test "x$tst" = xt ; then |
if test "x$tst" = xt ; then |
272 |
a="trcstat_ptracer0" |
a="trcstat_ptracer0" |
273 |
testoutput_for_prop $1 "$a"$ii"_min" "p0"$ii"_min" $2 $3 |
testoutput_var $1 "$a"$ii"_min" "p0"$ii"_min" $2 $3 |
274 |
RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL` |
RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL` |
275 |
testoutput_for_prop $1 "$a"$ii"_max" "p0"$ii"_max" $2 $3 |
testoutput_var $1 "$a"$ii"_max" "p0"$ii"_max" $2 $3 |
276 |
RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL` |
RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL` |
277 |
testoutput_for_prop $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3 |
testoutput_var $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3 |
278 |
RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL` |
RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL` |
279 |
testoutput_for_prop $1 "$a"$ii"_sd" "p0"$ii"_sd" $2 $3 |
testoutput_var $1 "$a"$ii"_sd" "p0"$ii"_sd" $2 $3 |
280 |
RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL` |
RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL` |
281 |
fi |
fi |
282 |
done |
done |
608 |
# create codelet for comparing model output |
# create codelet for comparing model output |
609 |
|
|
610 |
printf "creating the comparison code... " |
printf "creating the comparison code... " |
611 |
cat > tmp_cmpnum.c <<EOF |
cat > tr_cmpnum.c <<EOF |
612 |
#include <stdio.h> |
#include <stdio.h> |
613 |
#include <math.h> |
#include <math.h> |
614 |
int main( int argc, char** argv ) { |
int main( int argc, char** argv ) { |
615 |
int linnum,best,lncnt; |
int linnum,cmplin,best,lncnt; |
616 |
double a,b,abave,relerr; |
double a,b,abave,relerr; |
617 |
best = -22; |
best = -22; |
618 |
lncnt = 0; |
lncnt = 0; |
621 |
if (linnum == -1) break; |
if (linnum == -1) break; |
622 |
scanf("%lf", &a); scanf("%lf", &b); |
scanf("%lf", &a); scanf("%lf", &b); |
623 |
abave = 0.5*(fabs(a)+fabs(b)); |
abave = 0.5*(fabs(a)+fabs(b)); |
624 |
if (abave > 0.0) { |
if ( abave == abave ) { |
625 |
relerr=fabs(a-b)/abave; |
if (abave > 0.0) { |
626 |
if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); } |
relerr=fabs(a-b)/abave; |
627 |
else { linnum = -16 ; } |
if (relerr > 0.0) { cmplin = (int)rint(log10(relerr)); } |
628 |
best = (best > linnum) ? best : linnum; |
else { cmplin = -16 ; } |
629 |
} |
best = (best > cmplin) ? best : cmplin; } |
630 |
|
else { cmplin = -22 ; } |
631 |
|
/* printf("%d ; %lf ; %lf\n",cmplin,a,b); */ |
632 |
|
} |
633 |
|
else { |
634 |
|
/* printf("%lf ; %lf ; %lf\n",abave,a,b); */ |
635 |
|
break; } |
636 |
} |
} |
637 |
if (lncnt == 999) best=-29; |
if (lncnt == 999) best=-29; |
638 |
|
if (linnum != -1) best=-99; |
639 |
printf("%d\n", -best); |
printf("%d\n", -best); |
640 |
return 0; |
return 0; |
641 |
} |
} |
642 |
EOF |
EOF |
643 |
$CC -o tmp_cmpnum tmp_cmpnum.c -lm |
$CC -o tr_cmpnum tr_cmpnum.c -lm |
644 |
|
|
645 |
if [ -x ./tmp_cmpnum ]; then |
if [ -x ./tr_cmpnum ]; then |
646 |
echo "OK" |
echo "OK" |
647 |
return 0 |
return 0 |
648 |
else |
else |
665 |
if [ $1 = '--' ]; then |
if [ $1 = '--' ]; then |
666 |
printf ' N/O ' |
printf ' N/O ' |
667 |
else |
else |
668 |
if [ $1 -gt 12 ]; then |
if [ $1 -ge $MATCH_CRIT ]; then |
669 |
printf ' pass' |
printf ' pass' |
670 |
else |
else |
671 |
printf ' FAIL' |
printf ' FAIL' |
737 |
# Additional monitor types |
# Additional monitor types |
738 |
PTRACERS_NUM="1 2 3 4 5" |
PTRACERS_NUM="1 2 3 4 5" |
739 |
|
|
740 |
|
MATCH_CRIT=13 |
741 |
|
|
742 |
printf "parsing options... " |
printf "parsing options... " |
743 |
|
|
744 |
ac_prev= |
ac_prev= |
803 |
-ptracers=* | --ptracers=* | -ptr=* | --ptr=*) |
-ptracers=* | --ptracers=* | -ptr=* | --ptr=*) |
804 |
PTRACERS_NUM=$ac_optarg ;; |
PTRACERS_NUM=$ac_optarg ;; |
805 |
|
|
806 |
|
-match | --match ) ac_prev=MATCH_CRIT ;; |
807 |
|
-match=* | --match=* ) MATCH_CRIT=$ac_optarg ;; |
808 |
|
|
809 |
-j) ac_prev=JOBS ;; |
-j) ac_prev=JOBS ;; |
810 |
-j=*) JOBS=$ac_optarg ;; |
-j=*) JOBS=$ac_optarg ;; |
811 |
|
|
995 |
echo |
echo |
996 |
echo >> $SUMMARY |
echo >> $SUMMARY |
997 |
if test "x$ADM" = x ; then |
if test "x$ADM" = x ; then |
998 |
line_0=" ----T----- ----S----- ----U----- ----V-----" |
if [ $MATCH_CRIT -lt 10 ] ; |
999 |
|
then line_0=" "$MATCH_CRIT ; |
1000 |
|
else line_0=" "$MATCH_CRIT ; fi |
1001 |
|
line_0=" $line_0 ----T----- ----S----- ----U----- ----V-----" |
1002 |
|
# line_0=" ----T----- ----S----- ----U----- ----V-----" |
1003 |
line_1="G D M c m s m s m s m s" |
line_1="G D M c m s m s m s m s" |
1004 |
line_2="E p a R g m m e . m m e . m m e . m m e ." |
line_2="E p a R g m m e . m m e . m m e . m m e ." |
1005 |
line_3="N n k u 2 i a a d i a a d i a a d i a a d" |
line_3="N n k u 2 i a a d i a a d i a a d i a a d" |
1148 |
&& makemodel $dir/$builddir && make=Y \ |
&& makemodel $dir/$builddir && make=Y \ |
1149 |
&& linkdata $dir/$rundir $input_dirs \ |
&& linkdata $dir/$rundir $input_dirs \ |
1150 |
&& runmodel $dir/$rundir && run=Y \ |
&& runmodel $dir/$rundir && run=Y \ |
1151 |
&& results=`testoutput $dir $rundir "txt"` |
&& results=`testoutput_run $dir $rundir "txt"` |
1152 |
fi |
fi |
1153 |
|
|
1154 |
echo |
echo |
1173 |
run_clean $dir/tr_run.$ex |
run_clean $dir/tr_run.$ex |
1174 |
linkdata $dir/tr_run.$ex input.$ex input |
linkdata $dir/tr_run.$ex input.$ex input |
1175 |
runmodel $dir/tr_run.$ex && run=Y \ |
runmodel $dir/tr_run.$ex && run=Y \ |
1176 |
&& results=`testoutput $dir tr_run.$ex ${ex}".txt"` |
&& results=`testoutput_run $dir tr_run.$ex ${ex}".txt"` |
1177 |
fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}` |
fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}` |
1178 |
fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results` |
fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results` |
1179 |
fres="$fres.$ex" |
fres="$fres.$ex" |
1244 |
fi |
fi |
1245 |
fi |
fi |
1246 |
|
|
1247 |
# rm -f tmp_cmpnum.f a.out |
rm -f tr_cmpnum.c tr_cmpnum |
|
rm -f tmp_cmpnum.c tmp_cmpnum |
|
1248 |
|
|
1249 |
if test "x$CLEANUP" != xt ; then |
if test "x$CLEANUP" != xt ; then |
1250 |
cat $SUMMARY | sed 's/ -- -- -- --//g' |
cat $SUMMARY | sed 's/ -- -- -- --//g' |