/[MITgcm]/MITgcm/verification/testscript
ViewVC logotype

Annotation of /MITgcm/verification/testscript

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


Revision 1.7 - (hide annotations) (download)
Fri Jun 29 18:28:44 2001 UTC (20 years, 1 month ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint40pre1, checkpoint40pre3, checkpoint40pre2, checkpoint40pre5, checkpoint40pre4
Changes since 1.6: +51 -51 lines
Across the board regeneration of results/output.txt
 o format of output differs
 o some numbers in some expts were inaccurate/out of date
 o now can test model using more than cg2d_init_res

1 adcroft 1.5 #!/bin/csh -f
2 adcroft 1.1
3     # Run this script from the verification directory
4     # It will automatically configure, compile, run and verify all experiments
5     # in the verification directory for whcih there is an results/output.txt
6     # file.
7    
8     # This is the number of least-significant digits allows to be
9     # in error before the test is classified as a "fail".
10    
11 adcroft 1.2 set on_error_die
12 adcroft 1.7 set digitsOfAccuracy=8
13 adcroft 1.3 set SKIP=( )
14     printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' " " Make " " " " Exact "# of" " " " " > summary.txt
15     printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' Config Depend Compile Execute Match Digits Status Experiment >> summary.txt
16 adcroft 1.1
17     # Pass any arguments
18     foreach arg ($argv)
19     switch ($arg)
20     case -clean:
21     echo Cleaning ...
22     foreach dr ([a-zA-Z01-9]*)
23     if (-d $dr/input) then
24     echo Entering $dr
25     cd $dr/input
26     echo ""
27     make CLEAN
28     \rm -f {*output,*high,*low}.txt *.log
29     \rm -f ?ake*
30     cd ../..
31     endif
32     end
33     rm -f summary.txt
34     exit 0
35 adcroft 1.2 breaksw
36     case -nodie:
37     unset on_error_die
38     breaksw
39 adcroft 1.3 case -skip=*:
40     set SKIP = ( $SKIP `echo $arg | sed 's/-skip=//' | sed 's/,/ /g' `)
41     breaksw
42 adcroft 1.1 default:
43     echo Unknown argument given to $0
44     exit 1
45     endsw
46     end
47    
48 adcroft 1.6 # Need to make sure we don't meet non-model problems ...
49     unlimit
50    
51 adcroft 1.1 foreach dr ([a-zA-Z01-9]*)
52 adcroft 1.7
53 adcroft 1.1 if (! -d $dr/input ) continue
54 adcroft 1.3 foreach skip ($SKIP)
55 adcroft 1.4 if ( `echo $dr | sed s/$skip.'*'//` == '' ) continue;continue
56 adcroft 1.3 end
57 adcroft 1.1 set config=-
58     set makedepend=-
59     set compile=-
60     set execute=-
61     set exactmatch=-
62     set accuracy=-
63 adcroft 1.3 set pass=FAIL
64 adcroft 1.1 echo ==============================================================================
65     echo Entering $dr
66     cd $dr
67     echo ""
68     if (! -r results/output.txt) then
69     echo " ***** No results to compare with *****"
70     if (! $?untested) set untested
71     set untested=($untested $dr)
72     else
73     set config=NO
74     cd input
75     echo -n " generating Makefile ..."
76     ../../../tools/genmake -mods=../code >&! make.log
77     if ($status == 0) set config=Yes
78 adcroft 1.2 set makedepend=NO
79 adcroft 1.1 echo " done."
80     echo -n " make depend ..."
81     make cleanlinks depend >>& make.log
82     if ($status == 0) set makedepend=Yes
83     echo " done."
84     echo -n " make ..."
85     make >>& make.log
86     if ($status) then
87     echo " ***** An error occurred during make *****"
88     cat make.log
89 adcroft 1.2 echo The error during compilation occured in \"$dr\"
90     set compile=NO
91     if ($?on_error_die) exit 1
92 adcroft 1.1 else
93     set compile=Yes
94 adcroft 1.2 set execute=NO
95 adcroft 1.1 endif
96     echo " done."
97     echo -n " running model ..."
98 adcroft 1.2 if ($compile == 'Yes') then
99 adcroft 1.3 ./mitgcmuv > & output.txt
100 adcroft 1.1 if ($status == 0) then
101     set execute=Yes
102 adcroft 1.2 set exactmatch=NO
103     set accuracy=-
104 adcroft 1.1 echo " done."
105 adcroft 1.7
106     # Compare output based on cg2d residual
107     grep "cg2d_init_res" output.txt | sed 's/.*=//' | nl > high.txt
108     grep "cg2d_init_res" ../results/output.txt | sed 's/.*=//' | nl > oldhigh.txt
109     join high.txt oldhigh.txt > low.txt
110     set nlines=`wc -l low.txt | awk '{print $1}'`
111     echo " comparing $nlines lines of output"
112     @ line = 1
113     set bestacc=99;
114     set worstline='Exact match'
115     while ($line <= $nlines)
116     set vals=(`grep "^$line" low.txt | awk '{print $2,$3}'`)
117     @ line += 1
118     unset acc
119     foreach dp (14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)
120     set cmp=(`printf '%23.'$dp'e %23.'$dp'e\n' $vals[1] $vals[2]`)
121     if ($cmp[1] =~ $cmp[2]) then
122     if (! $?acc) then
123     set acc=$dp
124     break
125     endif
126 adcroft 1.1 endif
127 adcroft 1.7 end
128     if (! $?acc) set acc=0
129     if ($acc < $bestacc) then
130     set worstline=($line $vals[1] $vals[2] `printf '%23.'$acc'e' $vals[1]` $acc)
131     set bestacc=$acc
132     endif
133     # echo $line $vals[1] $vals[2] `printf '%23.'$acc'e' $vals[1]` $acc
134     end
135     if ($nlines == 0) then
136     set bestacc=0
137     set worstline="Could find no lines in output.txt to compare"
138     endif
139     if ($bestacc == 14 & $?exactmatch) then
140     set exactmatch=Yes
141     echo " "
142     echo " ***** EXACT MATCH *****"
143     endif
144     if ($bestacc > $digitsOfAccuracy) then
145     set pass=Pass
146     echo " "
147     echo " ***** PASS (digits=$bestacc) *****"
148     echo " "
149     echo " worstline: " $worstline
150 adcroft 1.1 else
151 adcroft 1.7 echo " "
152     echo " ***** FAIL (digits=$bestacc) *****"
153     echo " "
154     echo " worstline: " $worstline
155 adcroft 1.1 endif
156 adcroft 1.7 set accuracy=$bestacc
157 adcroft 1.1 else
158     echo " error"
159 adcroft 1.2 echo " ***** An error occured running the model *****"
160 adcroft 1.1 tail output.txt
161 adcroft 1.2 echo The runtime error occured in \"$dr\"
162     if ($?on_error_die) exit 1
163 adcroft 1.3 set pass=-
164 adcroft 1.2 endif
165 adcroft 1.3 rm -f high.txt oldhigh.txt low.txt oldlow.txt output.txt make.log
166 adcroft 1.1 endif
167     cd ..
168     endif
169     echo ""
170     cd ..
171     # Pretty summary
172 adcroft 1.2 printresults:
173 adcroft 1.3 printf ' %s\t %s\t %s\t %s\t %s\t %s\t %s\t%s\n' $config $makedepend $compile $execute $exactmatch $accuracy $pass $dr >> summary.txt
174 adcroft 1.1 end
175     echo ==============================================================================
176     echo ""
177    
178     echo "Summary:"
179     echo ""
180     cat summary.txt

  ViewVC Help
Powered by ViewVC 1.1.22