/[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.2.2.1 - (hide annotations) (download)
Wed Mar 14 21:40:12 2001 UTC (23 years, 1 month ago) by adcroft
Branch: pre38
Changes since 1.2: +8 -3 lines
Added a "pretty" summary in form of table.

1 adcroft 1.1 #!/bin/csh
2    
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.1 set passaccuracy=7
13 adcroft 1.2.2.1 printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' " " Make " " " " Exact "# of" " " " " > summary.txt
14     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
15 adcroft 1.1
16     # Pass any arguments
17     foreach arg ($argv)
18     switch ($arg)
19     case -clean:
20     echo Cleaning ...
21     foreach dr ([a-zA-Z01-9]*)
22     if (-d $dr/input) then
23     echo Entering $dr
24     cd $dr/input
25     echo ""
26     make CLEAN
27     \rm -f {*output,*high,*low}.txt *.log
28     \rm -f ?ake*
29     cd ../..
30     endif
31     end
32     rm -f summary.txt
33     exit 0
34 adcroft 1.2 breaksw
35     case -nodie:
36     unset on_error_die
37     breaksw
38 adcroft 1.1 default:
39     echo Unknown argument given to $0
40     exit 1
41     endsw
42     end
43    
44     foreach dr ([a-zA-Z01-9]*)
45     if (! -d $dr/input ) continue
46     set config=-
47     set makedepend=-
48     set compile=-
49     set execute=-
50     set exactmatch=-
51     set accuracy=-
52 adcroft 1.2.2.1 set pass=FAIL
53 adcroft 1.1 echo ==============================================================================
54     echo Entering $dr
55     cd $dr
56     echo ""
57     if (! -r results/output.txt) then
58     echo " ***** No results to compare with *****"
59     if (! $?untested) set untested
60     set untested=($untested $dr)
61     else
62     set config=NO
63     cd input
64     echo -n " generating Makefile ..."
65     ../../../tools/genmake -mods=../code >&! make.log
66     if ($status == 0) set config=Yes
67 adcroft 1.2 set makedepend=NO
68 adcroft 1.1 echo " done."
69     echo -n " make depend ..."
70     make cleanlinks depend >>& make.log
71     if ($status == 0) set makedepend=Yes
72     echo " done."
73     echo -n " make ..."
74     make >>& make.log
75     if ($status) then
76     echo " ***** An error occurred during make *****"
77     cat make.log
78 adcroft 1.2 echo The error during compilation occured in \"$dr\"
79     set compile=NO
80     if ($?on_error_die) exit 1
81 adcroft 1.1 else
82     set compile=Yes
83 adcroft 1.2 set execute=NO
84 adcroft 1.1 endif
85     echo " done."
86     echo -n " running model ..."
87 adcroft 1.2 if ($compile == 'Yes') then
88 adcroft 1.1 ./mitgcmuv | & grep "D iters" > output.txt
89     if ($status == 0) then
90     set execute=Yes
91 adcroft 1.2 set exactmatch=NO
92     set accuracy=-
93 adcroft 1.1 echo " done."
94     sed 's/.*D iters, err =//' output.txt \
95     | grep " 0 " \
96     > high.txt
97     grep "D iters" ../results/output.txt \
98     | sed 's/.*D iters, err =//' \
99     | grep " 0 " \
100     > oldhigh.txt
101     diff oldhigh.txt high.txt > /dev/null
102     if ($status) then
103     echo " output differs:"
104     diff oldhigh.txt high.txt
105     echo ""
106     @ lvl=0
107     set accuracy='.'
108     set fail
109     echo -n Trying reduced accuracy
110     while ($lvl <= $passaccuracy)
111     @ lvl+=1
112     echo -n " " $lvl
113     sed s/{$accuracy}E/E/ high.txt > low.txt
114     sed s/{$accuracy}E/E/ oldhigh.txt > oldlow.txt
115     diff oldlow.txt low.txt > /dev/null
116     if ($status == 0) then
117     unset fail
118     break
119     endif
120     set accuracy=`echo $accuracy | sed 's/\./../'`
121     end
122     echo ""
123     if ($?fail ) then
124     if (! $?fails) set fails
125     set fails=($fails $dr)
126 adcroft 1.2.2.1 set pass=FAIL
127 adcroft 1.1 echo " ***** FAIL *****"
128     else
129     if (! $?passes) set passes
130     set passes=($passes $dr)
131 adcroft 1.2.2.1 set pass=Pass
132 adcroft 1.1 echo ""
133     echo " ***** PASS (grade $lvl) *****"
134     endif
135     set accuracy=$lvl
136     else
137     set exactmatch=Yes
138 adcroft 1.2.2.1 set pass=Pass
139 adcroft 1.1 echo ""
140     echo Model passed at highest accuracy.
141     echo ""
142     echo " ***** PASS *****"
143     if (! $?passes) set passes
144     set passes=($passes $dr)
145     endif
146     else
147     echo " error"
148 adcroft 1.2 echo " ***** An error occured running the model *****"
149 adcroft 1.1 tail output.txt
150 adcroft 1.2 echo The runtime error occured in \"$dr\"
151     if ($?on_error_die) exit 1
152 adcroft 1.2.2.1 set pass=-
153 adcroft 1.2 endif
154 adcroft 1.1 endif
155     cd ..
156     endif
157     echo ""
158     cd ..
159     # Pretty summary
160 adcroft 1.2 printresults:
161 adcroft 1.2.2.1 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
162 adcroft 1.1 end
163     echo ==============================================================================
164     echo ""
165    
166     echo "Summary:"
167     echo ""
168     cat summary.txt

  ViewVC Help
Powered by ViewVC 1.1.22