New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
sette_rpt.sh in branches/2017/dev_r7832_HPC08_lbclnk_3rd_dim/NEMOGCM/SETTE – NEMO

source: branches/2017/dev_r7832_HPC08_lbclnk_3rd_dim/NEMOGCM/SETTE/sette_rpt.sh @ 7929

Last change on this file since 7929 was 7929, checked in by flavoni, 7 years ago

update sette report

  • Property svn:executable set to *
File size: 6.9 KB
Line 
1#!/bin/bash -f
2#
3#set -vx
4# simple SETTE report generator.
5#
6# This version should be run in the SETTE directory.
7# The machine name will be picked up from the sette.sh script but the location of the
8# validation directory needs to be set here (currently assumed to reside in the ../CONFIG directory)
9#
10#########################################################################################
11######################### Start of function definitions #################################
12##
13function resttest() { 
14#
15# Restartability checks. Expects LONG and SHORT run directories
16# Compares end of LONG stat files with equivalent entries from the SHORT stat files.
17#
18  vdir=$1
19  nam=$2
20  pass=$3
21#
22  if [ -d $vdir/$nam ]; then
23    dorv=`ls -1rt $vdir/$nam/$mach/ | tail -1l `
24    dorv=`echo $dorv | sed -e 's:.*/::'`
25    f1o=$vdir/$nam/$mach/$dorv/LONG/ocean.output
26    f1s=$vdir/$nam/$mach/$dorv/LONG/run.stat
27    f1t=$vdir/$nam/$mach/$dorv/LONG/tracer.stat
28    f2o=$vdir/$nam/$mach/$dorv/SHORT/ocean.output
29    f2s=$vdir/$nam/$mach/$dorv/SHORT/run.stat
30    f2t=$vdir/$nam/$mach/$dorv/SHORT/tracer.stat
31
32    if  [ ! -f $f1s ] &&  [ ! -f $f1t ] ; then
33      printf "%-20s %s\n" $nam " incomplete test";
34      return;
35    fi
36    if  [ ! -f $f2s ] &&  [ ! -f $f2t ] ; then
37      printf "%-20s %s\n" $nam " incomplete test";
38      return;
39    fi
40#
41    done_oce=0
42
43    if  [  -f $f1s ] && [  -f $f2s ]; then
44      nl=(`wc -l $f2s`)
45      tail -${nl[0]} $f1s > f1.tmp$$
46      cmp -s f1.tmp$$ $f2s
47      if [ $? == 0 ]; then
48        if [ $pass == 0 ]; then
49          printf "%-20s %s %s\n" $nam  " run.stat restartability  passed : " $dorv
50        fi
51      else
52        printf "%-20s %s %s\n" $nam  " run.stat restartability  FAILED : " $dorv 
53#
54# Offer view of differences on the second pass
55#
56        if [ $pass == 1 ]; then
57          echo "<return> to view run.stat differences"
58          read y
59          sdiff f1.tmp$$ $f2s
60          echo "<return> to view ocean.output differences"
61          read y
62          sdiff $f1o $f2o | grep "|"
63          done_oce=1
64          echo "<return> to continue"
65          read y
66        fi
67      fi
68    fi
69#
70# Check tracer.stat files (if they exist)
71#
72    if  [  -f $f1t ] && [  -f $f2t ]; then
73      nl=(`wc -l $f2t`)
74      tail -${nl[0]} $f1t > f1.tmp$$
75      cmp -s f1.tmp$$ $f2t
76      if [ $? == 0 ]; then
77        if [ $pass == 0 ]; then
78          printf "%-20s %s %s\n" $nam  " tracer.stat restartability  passed : " $dorv
79        fi
80      else
81        printf "%-20s %s %s\n" $nam  " tracer.stat restartability  FAILED : " $dorv 
82#
83# Offer view of differences on the second pass
84#
85        if [ $pass == 1 ]; then
86          echo "<return> to view tracer.stat differences"
87          read y
88          sdiff f1.tmp$$ $f2t
89#
90# Only offer ocean.output view if it has not been viewed previously
91#
92          if [ $done_oce == 0 ]; then
93            echo "<return> to view ocean.output differences"
94            read y
95            sdiff $f1o $f2o | grep "|"
96          fi
97          echo "<return> to continue"
98          read y
99        fi
100      fi
101    fi
102    rm f1.tmp$$
103  fi
104}
105
106function reprotest(){
107#
108# Reproducibility checks. Expects REPRO_N_M and REPRO_I_J run directories
109# Compares end of stat files from each
110#
111  vdir=$1
112  nam=$2
113  pass=$3
114#
115  if [ -d $vdir/$nam ]; then
116    dorv=`ls -1rt $vdir/$nam/$mach/ | tail -1l `
117    dorv=`echo $dorv | sed -e 's:.*/::'`
118    rep1=`ls -1rt $vdir/$nam/$mach/$dorv/ | tail -2l | head -1 `
119    rep2=`ls -1rt $vdir/$nam/$mach/$dorv/ | tail -1l`
120    f1o=$vdir/$nam/$mach/$dorv/$rep1/ocean.output
121    f1s=$vdir/$nam/$mach/$dorv/$rep1/run.stat
122    f1t=$vdir/$nam/$mach/$dorv/$rep1/tracer.stat
123    f2o=$vdir/$nam/$mach/$dorv/$rep2/ocean.output
124    f2s=$vdir/$nam/$mach/$dorv/$rep2/run.stat
125    f2t=$vdir/$nam/$mach/$dorv/$rep2/tracer.stat
126
127    if  [ ! -f $f1s ] && [ ! -f $f1t ] ; then
128      printf "%-20s %s\n" $nam " incomplete test";
129      return;
130    fi
131    if  [ ! -f $f2s ] && [ ! -f $f2t ] ; then
132      printf "%-20s %s\n" $nam " incomplete test";
133      return;
134    fi
135#
136    done_oce=0
137
138    if  [ -f $f1s ] && [ -f $f2s ] ; then
139      cmp -s $f1s $f2s
140      if [ $? == 0 ]; then
141        if [ $pass == 0 ]; then
142          printf "%-20s %s %s\n" $nam  " run.stat reproducibility passed : " $dorv
143        fi
144      else
145        printf "%-20s %s %s\n" $nam  " run.stat reproducibility FAILED : " $dorv 
146#
147# Offer view of differences on the second pass
148#
149        if [ $pass == 1 ]; then
150          echo "<return> to view run.stat differences"
151          read y
152          sdiff f1.tmp$$ $f2s
153          echo "<return> to view ocean.output differences"
154          read y
155          sdiff $f1o $f2o | grep "|"
156          done_oce=1
157          echo "<return> to continue"
158          read y
159        fi
160      fi
161    fi
162#
163# Check tracer.stat files (if they exist)
164#
165    if  [ -f $f1t ] && [ -f $f2t ] ; then
166      cmp -s $f1t $f2t
167      if [ $? == 0 ]; then
168        if [ $pass == 0 ]; then           printf "%-20s %s %s\n" $nam  " tracer.stat reproducibility passed : " $dorv
169        fi
170      else
171        printf "%-20s %s %s\n" $nam  " tracer.stat reproducibility  FAILED : " $dorv
172#
173# Offer view of differences on the second pass
174#
175        if [ $pass == 1 ]; then
176          echo "<return> to view tracer.stat differences"
177          read y
178          sdiff $f1t $f2t
179#
180# Only offer ocean.output view if it has not been viewed previously
181#
182          if [ $done_oce == 0 ]; then
183            echo "<return> to view ocean.output differences"
184            read y
185            sdiff $f1o $f2o | grep "|"
186          fi
187          echo "<return> to continue"
188          read y
189        fi
190      fi
191    fi
192  fi
193}
194########################### END of function definitions #################################
195##                                                                                     ##
196##    Main script                                                                      ##
197##                                                                                     ##
198#########################################################################################
199#
200  mach=`grep "COMPILER=" ./sette.sh | sed -e 's/COMPILER=//'`
201  NEMO_VALID=`grep "NEMO_VALIDATION_DIR=" ./param.cfg | sed -e 's/NEMO_VALIDATION_DIR=//'`
202#
203  if [ ! -d $NEMO_VALID ]; then
204    echo "$NEMO_VALID validation directory not found"
205    exit
206  fi
207#
208# The script also needs the date or revision tag. Currently this is taken from the latest sub-directory found in each directory
209
210for pass in  0 1
211do
212#
213 if [ $pass == 1 ]; then echo "---------------2nd pass------------------";fi
214#
215# Restartability test
216#
217 for restart_test in WGYREPIS_LONG WORCA2LIM3PIS_LONG WORCA2OFFPIS_LONG WAMM12_LONG WSAS_LONG WISOMIP_LONG WORCA2AGUL_LONG
218 do
219   resttest $NEMO_VALID $restart_test $pass
220 done
221#
222# Reproducibility tests
223#
224 for repro_test in WGYREPIS_32 WORCA2LIM3PIS_32 WORCA2OFFPIS_32 WAMM12_32 WISOMIP_32 WORCA2_LIM3_OBS WORCA2AGUL_1_2 WORCA2AGUL_16 WORCA2AGUL_2_2_NAG
225 do
226   reprotest $NEMO_VALID $repro_test $pass
227 done
228#
229done
230exit
Note: See TracBrowser for help on using the repository browser.