source: branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/SETTE/sette_rpt @ 5600

Last change on this file since 5600 was 5600, checked in by andrewryan, 5 years ago

merged in latest version of trunk alongside changes to SAO_SRC to be compatible with latest OBS

  • Property svn:executable set to *
File size: 16.9 KB
Line 
1#!/bin/csh -f
2#
3# simple SETTE report generator.
4#
5# This version should be run in the SETTE directory.
6# The machine name will be picked up from the sette.sh script but the location of the
7# validation directory needs to be set here (currently assumed to reside in the ../CONFIG directory)
8#
9  set mach = `grep "COMPILER=" ./sette.sh | sed -e 's/COMPILER=//'`
10  set NEMO_VALID = `grep "NEMO_VALIDATION_DIR=" ./param.cfg | sed -e 's/NEMO_VALIDATION_DIR=//'`
11#
12  if ( ! -d $NEMO_VALID ) then
13    echo "$NEMO_VALID validation directory not found"
14  endif
15#
16  set basedir = `pwd`
17  cd $NEMO_VALID
18#
19# The script also needs the date or revision tag. Currently this is taken from the latest sub-directory found in each directory
20#
21#
22# Now loop through all the test directories. On the second pass the user can optionally examine any mismatched
23# outputs
24#
25# This is crude but readable and easily extended for new test configurations
26
27foreach pass (0 1 )
28  if ( -d ./WGYRE_LONG ) then
29    set dorv = `ls -1rtd ./WGYRE_LONG/{$mach}/* | tail -1l `
30    set dorv = $dorv:t
31    set f1o = ./WGYRE_LONG/{$mach}/{$dorv}/LONG/ocean.output
32    set f1s = ./WGYRE_LONG/{$mach}/{$dorv}/LONG/solver.stat
33    set f2o = ./WGYRE_LONG/{$mach}/{$dorv}/SHORT/ocean.output
34    set f2s = ./WGYRE_LONG/{$mach}/{$dorv}/SHORT/solver.stat
35 
36    set nl = `wc -l $f2s`
37    tail -$nl[1] $f1s > f1.tmp$$
38    cmp -s f1.tmp$$ $f2s
39    if ( $status == 0 ) then
40      echo "GYRE        restartability  passed"
41    else
42      echo "GYRE        restartability  FAILED"
43      if ( $pass == 1 ) then
44        echo "<return> to view solver.stat differences"
45        set y = $<
46        sdiff f1.tmp$$ $f2s
47        echo "<return> to view ocean.output differences"
48        set y = $<
49        sdiff $f1o $f2o | grep "|"
50        echo "<return> to continue"
51        set y = $<
52      endif
53    endif
54    rm f1.tmp$$
55  endif
56
57  if ( -d ./WISOMIP_LONG ) then
58    set dorv = `ls -1rtd ./WISOMIP_LONG/{$mach}/* | tail -1l `
59    set dorv = $dorv:t
60    set f1o = ./WISOMIP_LONG/{$mach}/{$dorv}/LONG/ocean.output
61    set f1s = ./WISOMIP_LONG/{$mach}/{$dorv}/LONG/solver.stat
62    set f2o = ./WISOMIP_LONG/{$mach}/{$dorv}/SHORT/ocean.output
63    set f2s = ./WISOMIP_LONG/{$mach}/{$dorv}/SHORT/solver.stat
64
65    set nl = `wc -l $f2s`
66    tail -$nl[1] $f1s > f1.tmp$$
67    cmp -s f1.tmp$$ $f2s
68    if ( $status == 0 ) then
69      echo "ISOMIP      restartability  passed"
70    else
71      echo "ISOMIP      restartability  FAILED"
72      if ( $pass == 1 ) then
73        echo "<return> to view solver.stat differences"
74        set y = $<
75        sdiff f1.tmp$$ $f2s
76        echo "<return> to view ocean.output differences"
77        set y = $<
78        sdiff $f1o $f2o | grep "|"
79        echo "<return> to continue"
80        set y = $<
81      endif
82    endif
83    rm f1.tmp$$
84  endif
85
86 
87  if ( -d ./WORCA2LIMPIS_LONG ) then
88    set dorv = `ls -1rtd ./WORCA2LIMPIS_LONG/{$mach}/* | tail -1l `
89    set dorv = $dorv:t
90    set f1o = ./WORCA2LIMPIS_LONG/{$mach}/{$dorv}/LONG/ocean.output
91    set f1s = ./WORCA2LIMPIS_LONG/{$mach}/{$dorv}/LONG/solver.stat
92    set f2o = ./WORCA2LIMPIS_LONG/{$mach}/{$dorv}/SHORT/ocean.output
93    set f2s = ./WORCA2LIMPIS_LONG/{$mach}/{$dorv}/SHORT/solver.stat
94 
95    set nl = `wc -l $f2s`
96    tail -$nl[1] $f1s > f1.tmp$$
97    cmp -s f1.tmp$$ $f2s
98    if ( $status == 0 ) then
99      echo "ORCA2LIMPIS restartability  passed"
100    else
101      echo "ORCA2LIMPIS restartability  FAILED"
102      if ( $pass == 1 ) then
103        echo "<return> to view solver.stat differences"
104        set y = $<
105        sdiff f1.tmp$$ $f2s
106        echo "<return> to view ocean.output differences"
107        set y = $<
108        sdiff $f1o $f2o | grep "|"
109        echo "<return> to continue"
110        set y = $<
111      endif
112    endif
113    rm f1.tmp$$
114  endif
115
116  if ( -d ./WORCA2OFFPIS_LONG ) then
117    set dorv = `ls -1rtd ./WORCA2OFFPIS_LONG/{$mach}/* | tail -1l `
118    set dorv = $dorv:t
119    set f1o = ./WORCA2OFFPIS_LONG/{$mach}/{$dorv}/LONG/ocean.output
120    set f1s = ./WORCA2OFFPIS_LONG/{$mach}/{$dorv}/LONG/tracer.stat
121    set f2o = ./WORCA2OFFPIS_LONG/{$mach}/{$dorv}/SHORT/ocean.output
122    set f2s = ./WORCA2OFFPIS_LONG/{$mach}/{$dorv}/SHORT/tracer.stat
123
124    set nl = `wc -l $f2s`
125    tail -$nl[1] $f1s > f1.tmp$$
126    cmp -s f1.tmp$$ $f2s
127    if ( $status == 0 ) then
128      echo "ORCA2OFFPIS restartability  passed"
129    else
130      echo "ORCA2OFFPIS restartability  FAILED"
131      if ( $pass == 1 ) then
132        echo "<return> to view tracer.stat differences"
133        set y = $<
134        sdiff f1.tmp$$ $f2s
135        echo "<return> to view ocean.output differences"
136        set y = $<
137        sdiff $f1o $f2o | grep "|"
138        echo "<return> to continue"
139        set y = $<
140      endif
141    endif
142    rm f1.tmp$$
143  endif
144 
145  if ( -d ./WAMM12_LONG ) then
146    set dorv = `ls -1rtd ./WAMM12_LONG/{$mach}/* | tail -1l `
147    set dorv = $dorv:t
148    set f1o = ./WAMM12_LONG/{$mach}/{$dorv}/LONG/ocean.output
149    set f1s = ./WAMM12_LONG/{$mach}/{$dorv}/LONG/solver.stat
150    set f2o = ./WAMM12_LONG/{$mach}/{$dorv}/SHORT/ocean.output
151    set f2s = ./WAMM12_LONG/{$mach}/{$dorv}/SHORT/solver.stat
152
153    set nl = `wc -l $f2s`
154    tail -$nl[1] $f1s > f1.tmp$$
155    cmp -s f1.tmp$$ $f2s
156    if ( $status == 0 ) then
157      echo "AMM12       restartability  passed"
158    else
159      echo "AMM12       restartability  FAILED"
160      if ( $pass == 1 ) then
161        echo "<return> to view solver.stat differences"
162        set y = $<
163        sdiff f1.tmp$$ $f2s
164        echo "<return> to view ocean.output differences"
165        set y = $<
166        sdiff $f1o $f2o | grep "|"
167        echo "<return> to continue"
168        set y = $<
169      endif
170    endif
171    rm f1.tmp$$
172  endif
173  if ( -d ./WORCA2LIM3_LONG ) then
174    set dorv = `ls -1rtd ./WORCA2LIM3_LONG/{$mach}/* | tail -1l `
175    set dorv = $dorv:t
176    set f1o = ./WORCA2LIM3_LONG/{$mach}/{$dorv}/LONG/ocean.output
177    set f1s = ./WORCA2LIM3_LONG/{$mach}/{$dorv}/LONG/solver.stat
178    set f2o = ./WORCA2LIM3_LONG/{$mach}/{$dorv}/SHORT/ocean.output
179    set f2s = ./WORCA2LIM3_LONG/{$mach}/{$dorv}/SHORT/solver.stat
180    set nl = `wc -l $f2s`
181    tail -$nl[1] $f1s > f1.tmp$$
182    cmp -s f1.tmp$$ $f2s
183    if ( $status == 0 ) then
184      echo "ORCA2LIM3   restartability  passed"
185    else
186      echo "ORCA2LIM3   restartability  FAILED"
187      if ( $pass == 1 ) then
188        echo "<return> to view solver.stat differences"
189        set y = $<
190        sdiff f1.tmp$$ $f2s
191        echo "<return> to view ocean.output differences"
192        set y = $<
193        sdiff $f1o $f2o | grep "|"
194        echo "<return> to continue"
195        set y = $<
196      endif
197    endif
198    rm f1.tmp$$
199  endif
200
201  if ( -d ./WSAS_LONG ) then
202    set dorv = `ls -1rtd ./WSAS_LONG/{$mach}/* | tail -1l `
203    set dorv = $dorv:t
204    set f1o = ./WSAS_LONG/{$mach}/{$dorv}/LONG/ocean.output
205    set f1s = ./WSAS_LONG/{$mach}/{$dorv}/LONG/solver.stat
206    set f2o = ./WSAS_LONG/{$mach}/{$dorv}/SHORT/ocean.output
207    set f2s = ./WSAS_LONG/{$mach}/{$dorv}/SHORT/solver.stat
208    foreach f ( $f1o $f1s $f2o $f2s )
209     if ( ! -f $f ) then
210      echo 'SAS         restartability  inconclusive ( ' $f:t ' not found )'
211      goto NEXT1
212     endif
213    end
214
215    set nl = `wc -l $f2s`
216    tail -$nl[1] $f1s > f1.tmp$$
217    cmp -s f1.tmp$$ $f2s
218    if ( $status == 0 ) then
219      echo "SAS         restartability  passed"
220    else
221      echo "SAS         restartability  FAILED"
222      if ( $pass == 1 ) then
223        echo "<return> to view solver.stat differences"
224        set y = $<
225        sdiff f1.tmp$$ $f2s
226        echo "<return> to view ocean.output differences"
227        set y = $<
228        sdiff $f1o $f2o | grep "|"
229        echo "<return> to continue"
230        set y = $<
231      endif
232    endif
233    rm f1.tmp$$
234  endif
235
236NEXT1:
237 
238  if ( -d ./WGYRE_4 ) then
239    set dorv = `ls -1rtd ./WGYRE_4/{$mach}/* | tail -1l `
240    set dorv = $dorv:t
241    set f1o = ./WGYRE_4/{$mach}/{$dorv}/REPRO_1_4/ocean.output
242    set f1s = ./WGYRE_4/{$mach}/{$dorv}/REPRO_1_4/solver.stat
243    set f2o = ./WGYRE_4/{$mach}/{$dorv}/REPRO_2_2/ocean.output
244    set f2s = ./WGYRE_4/{$mach}/{$dorv}/REPRO_2_2/solver.stat
245 
246    cmp -s $f1s $f2s
247    if ( $status == 0 ) then
248      echo "GYRE        reproducibility passed"
249    else
250      echo "GYRE        reproducibility FAILED"
251      if ( $pass == 1 ) then
252        echo "<return> to view solver.stat differences"
253        set y = $<
254        sdiff $f1s $f2s
255        echo "<return> to view ocean.output differences"
256        set y = $<
257        sdiff $f1o $f2o | grep "|"
258        echo "<return> to continue"
259        set y = $<
260      endif
261    endif
262  endif
263
264  if ( -d ./WISOMIP_4 ) then
265    set dorv = `ls -1rtd ./WISOMIP_4/{$mach}/* | tail -1l `
266    set dorv = $dorv:t
267    set f1o = ./WISOMIP_4/{$mach}/{$dorv}/REPRO_1_4/ocean.output
268    set f1s = ./WISOMIP_4/{$mach}/{$dorv}/REPRO_1_4/solver.stat
269    set f2o = ./WISOMIP_4/{$mach}/{$dorv}/REPRO_2_2/ocean.output
270    set f2s = ./WISOMIP_4/{$mach}/{$dorv}/REPRO_2_2/solver.stat
271
272    cmp -s $f1s $f2s
273    if ( $status == 0 ) then
274      echo "ISOMIP      reproducibility passed"
275    else
276      echo "ISOMIP      reproducibility FAILED"
277      if ( $pass == 1 ) then
278        echo "<return> to view solver.stat differences"
279        set y = $<
280        sdiff $f1s $f2s
281        echo "<return> to view ocean.output differences"
282        set y = $<
283        sdiff $f1o $f2o | grep "|"
284        echo "<return> to continue"
285        set y = $<
286      endif
287    endif
288  endif
289 
290  if ( -d ./WORCA2LIMPIS_16 ) then
291    set dorv = `ls -1rtd ./WORCA2LIMPIS_16/{$mach}/* | tail -1l `
292    set dorv = $dorv:t
293    set f1o = ./WORCA2LIMPIS_16/{$mach}/{$dorv}/REPRO_2_8/ocean.output
294    set f1s = ./WORCA2LIMPIS_16/{$mach}/{$dorv}/REPRO_2_8/solver.stat
295    set f2o = ./WORCA2LIMPIS_16/{$mach}/{$dorv}/REPRO_4_4/ocean.output
296    set f2s = ./WORCA2LIMPIS_16/{$mach}/{$dorv}/REPRO_4_4/solver.stat
297 
298    cmp -s $f1s $f2s
299    if ( $status == 0 ) then
300      echo "ORCA2LIMPIS reproducibility passed"
301    else
302      echo "ORCA2LIMPIS reproducibility FAILED"
303      if ( $pass == 1 ) then
304        echo "<return> to view solver.stat differences"
305        set y = $<
306        sdiff $f1s $f2s
307        echo "<return> to view ocean.output differences"
308        set y = $<
309        sdiff $f1o $f2o | grep "|"
310        echo "<return> to continue"
311        set y = $<
312      endif
313    endif
314  endif
315
316  if ( -d ./WORCA2OFFPIS_16 ) then
317    set dorv = `ls -1rtd ./WORCA2OFFPIS_16/{$mach}/* | tail -1l `
318    set dorv = $dorv:t
319    set f1o = ./WORCA2OFFPIS_16/{$mach}/{$dorv}/REPRO_2_8/ocean.output
320    set f1s = ./WORCA2OFFPIS_16/{$mach}/{$dorv}/REPRO_2_8/tracer.stat
321    set f2o = ./WORCA2OFFPIS_16/{$mach}/{$dorv}/REPRO_4_4/ocean.output
322    set f2s = ./WORCA2OFFPIS_16/{$mach}/{$dorv}/REPRO_4_4/tracer.stat
323
324    cmp -s $f1s $f2s
325    if ( $status == 0 ) then
326      echo "ORCA2OFFPIS reproducibility passed"
327    else
328      echo "ORCA2OFFPIS reproducibility FAILED"
329      if ( $pass == 1 ) then
330        echo "<return> to view tracer.stat differences"
331        set y = $<
332        sdiff $f1s $f2s
333        echo "<return> to view ocean.output differences"
334        set y = $<
335        sdiff $f1o $f2o | grep "|"
336        echo "<return> to continue"
337        set y = $<
338      endif
339    endif
340  endif
341 
342  if ( -d ./WAMM12_32 ) then
343    set dorv = `ls -1rtd ./WAMM12_32/{$mach}/* | tail -1l `
344    set dorv = $dorv:t
345    set f1o = ./WAMM12_32/{$mach}/{$dorv}/REPRO_4_8/ocean.output
346    set f1s = ./WAMM12_32/{$mach}/{$dorv}/REPRO_4_8/solver.stat
347    set f2o = ./WAMM12_32/{$mach}/{$dorv}/REPRO_8_4/ocean.output
348    set f2s = ./WAMM12_32/{$mach}/{$dorv}/REPRO_8_4/solver.stat
349
350    cmp -s $f1s $f2s
351    if ( $status == 0 ) then
352      echo "AMM12       reproducibility passed"
353    else
354      echo "AMM12       reproducibility FAILED"
355      if ( $pass == 1 ) then
356        echo "<return> to view solver.stat differences"
357        set y = $<
358        sdiff $f1s $f2s
359        echo "<return> to view ocean.output differences"
360        set y = $<
361        sdiff $f1o $f2o | grep "|"
362        echo "<return> to continue"
363        set y = $<
364      endif
365    endif
366  endif
367
368  if ( -d ./WORCA2LIM3_16 ) then
369    set dorv = `ls -1rtd ./WORCA2LIM3_16/{$mach}/* | tail -1l `
370    set dorv = $dorv:t
371    set f1o = ./WORCA2LIM3_16/{$mach}/{$dorv}/REPRO_2_8/ocean.output
372    set f1s = ./WORCA2LIM3_16/{$mach}/{$dorv}/REPRO_2_8/solver.stat
373    set f2o = ./WORCA2LIM3_16/{$mach}/{$dorv}/REPRO_4_4/ocean.output
374    set f2s = ./WORCA2LIM3_16/{$mach}/{$dorv}/REPRO_4_4/solver.stat
375
376    cmp -s $f1s $f2s
377    if ( $status == 0 ) then
378      echo "ORCA2LIM3   reproducibility passed"
379    else
380      echo "ORCA2LIM3   reproducibility FAILED"
381      if ( $pass == 1 ) then
382        echo "<return> to view solver.stat differences"
383        set y = $<
384        sdiff $f1s $f2s
385        echo "<return> to view ocean.output differences"
386        set y = $<
387        sdiff $f1o $f2o | grep "|"
388        echo "<return> to continue"
389        set y = $<
390      endif
391    endif
392  endif
393
394
395  if ( -d ./WSAS_32 ) then
396    set dorv = `ls -1rtd ./WSAS_32/{$mach}/* | tail -1l `
397    set dorv = $dorv:t
398    set f1o = ./WSAS_32/{$mach}/{$dorv}/REPRO_4_8/ocean.output
399    set f1s = ./WSAS_32/{$mach}/{$dorv}/REPRO_4_8/solver.stat
400    set f2o = ./WSAS_32/{$mach}/{$dorv}/REPRO_8_4/ocean.output
401    set f2s = ./WSAS_32/{$mach}/{$dorv}/REPRO_8_4/solver.stat
402
403    foreach f ( $f1o $f1s $f2o $f2s )
404     if ( ! -f $f ) then
405      echo 'SAS         reproducibility inconclusive ( ' $f:t ' not found )'
406      goto NEXT2
407     endif
408    end
409
410    cmp -s $f1s $f2s
411    if ( $status == 0 ) then
412      echo "SAS reproducibility passed"
413    else
414      echo "SAS reproducibility FAILED"
415      if ( $pass == 1 ) then
416        echo "<return> to view solver.stat differences"
417        set y = $<
418        sdiff $f1s $f2s
419        echo "<return> to view ocean.output differences"
420        set y = $<
421        sdiff $f1o $f2o | grep "|"
422        echo "<return> to continue"
423        set y = $<
424      endif
425    endif
426  endif
427NEXT2:
428
429  if ( -d ./WORCA2AGUL_1_2 ) then
430    set dorv = `ls -1rtd ./WORCA2AGUL_1_2/{$mach}/* | tail -1l `
431    set dorv = $dorv:t
432    set f1o = ./WORCA2AGUL_1_2/{$mach}/{$dorv}/SHORT/ocean.output
433    set f1s = ./WORCA2AGUL_1_2/{$mach}/{$dorv}/SHORT/solver.stat
434
435    if ( -f $f1o && -f  $f1s ) then
436      echo "ORCA2_LIM_AGRIF runability passed"
437    else
438      echo "ORCA2_LIM_AGRIF runability FAILED"
439    endif
440  endif
441
442
443  if ( -d ./WORCA2AGUL_LONG ) then
444    set dorv = `ls -1rtd ./WORCA2AGUL_LONG/{$mach}/* | tail -1l `
445    set dorv = $dorv:t
446    set f1o = ./WORCA2AGUL_LONG/{$mach}/{$dorv}/LONG/ocean.output
447    set f1s = ./WORCA2AGUL_LONG/{$mach}/{$dorv}/LONG/solver.stat
448    set f2o = ./WORCA2AGUL_LONG/{$mach}/{$dorv}/SHORT/ocean.output
449    set f2s = ./WORCA2AGUL_LONG/{$mach}/{$dorv}/SHORT/solver.stat
450 
451    set nl = `wc -l $f2s`
452    tail -$nl[1] $f1s > f1.tmp$$
453    cmp -s f1.tmp$$ $f2s
454    if ( $status == 0 ) then
455      echo "ORCA2_LIM_AGRIF restartability  passed"
456    else
457      echo "ORCA2_LIM_AGRIF restartability  FAILED"
458      if ( $pass == 1 ) then
459        echo "<return> to view solver.stat differences"
460        set y = $<
461        sdiff f1.tmp$$ $f2s
462        echo "<return> to view ocean.output differences"
463        set y = $<
464        sdiff $f1o $f2o | grep "|"
465        echo "<return> to continue"
466        set y = $<
467      endif
468    endif
469    rm f1.tmp$$
470  endif
471
472  if ( -d ./WORCA2AGUL_16 ) then
473    set dorv = `ls -1rtd ./WORCA2AGUL_16/{$mach}/* | tail -1l `
474    set dorv = $dorv:t
475    set f1o = ./WORCA2AGUL_16/{$mach}/{$dorv}/REPRO_2_8/ocean.output
476    set f1s = ./WORCA2AGUL_16/{$mach}/{$dorv}/REPRO_2_8/solver.stat
477    set f2o = ./WORCA2AGUL_16/{$mach}/{$dorv}/REPRO_4_4/ocean.output
478    set f2s = ./WORCA2AGUL_16/{$mach}/{$dorv}/REPRO_4_4/solver.stat
479 
480    cmp -s $f1s $f2s
481    if ( $status == 0 ) then
482      echo "ORCA2_LIM_AGRIF reproducibility passed"
483    else
484      echo "ORCA2_LIM_AGRIF reproducibility FAILED"
485      if ( $pass == 1 ) then
486        echo "<return> to view solver.stat differences"
487        set y = $<
488        sdiff $f1s $f2s
489        echo "<return> to view ocean.output differences"
490        set y = $<
491        sdiff $f1o $f2o | grep "|"
492        echo "<return> to continue"
493        set y = $<
494      endif
495    endif
496  endif
497
498  if ( -d ./WORCA2AGUL_2_2_NAG ) then
499    set dorv = `ls -1rtd ./WORCA2AGUL_2_2_NAG/{$mach}/* | tail -1l `
500    set dorv = $dorv:t
501    set f1o = ./WORCA2AGUL_2_2_NAG/{$mach}/{$dorv}/SHORT_NOAGRIF/ocean.output
502    set f1s = ./WORCA2AGUL_2_2_NAG/{$mach}/{$dorv}/SHORT_NOAGRIF/solver.stat
503    set dorv = `ls -1rtd ./WORCA2AGUL_2_2/{$mach}/* | tail -1l `
504    set dorv = $dorv:t
505    set f2o = ./WORCA2AGUL_2_2/{$mach}/{$dorv}/SHORT_NOZOOM/ocean.output
506    set f2s = ./WORCA2AGUL_2_2/{$mach}/{$dorv}/SHORT_NOZOOM/solver.stat
507 
508    cmp -s $f1s $f2s
509    if ( $status == 0 ) then
510      echo "ORCA2_LIM_AGRIF code corruption test passed"
511    else
512      echo "ORCA2_LIM_AGRIF code corruption test FAILED"
513      if ( $pass == 1 ) then
514        echo "<return> to view solver.stat differences"
515        set y = $<
516        sdiff $f1s $f2s
517        echo "<return> to view ocean.output differences"
518        set y = $<
519        sdiff $f1o $f2o | grep "|"
520        echo "<return> to continue"
521        set y = $<
522      endif
523    endif
524  endif
525
526  echo "<return> for second (more detailed) pass (y/n)"
527  set y = $<
528  if ( $y != "y" ) exit
529end
530cd $basedir
531exit
Note: See TracBrowser for help on using the repository browser.