/[MITgcm]/MITgcm_contrib/jmc_script/tst1+1
ViewVC logotype

Annotation of /MITgcm_contrib/jmc_script/tst1+1

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


Revision 1.13 - (hide annotations) (download)
Sun Nov 25 21:14:57 2007 UTC (17 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.12: +1 -1 lines
FILE REMOVED
new version of the script to test the restart (tst_2+2 replace tst1+1)
 + script to test multiple experiments (do_test_2+2)

1 jmc 1.1 #!/bin/sh
2    
3 jmc 1.13 # $Header: /u/gcmpack/MITgcm_contrib/jmc_script/tst1+1,v 1.12 2007/11/07 01:40:47 jmc Exp $
4 jmc 1.6 # $Name: $
5    
6 jmc 1.12 rnp_loc()
7     {
8     # rnp_loc arg_1 arg_2
9     # rename files with prefix = 'arg_1' to files with prefix = 'arg_2'
10     echo 'rnp_loc:' $1 $2
11     # rnp -s $1 $2
12     listY=`ls -1 $1*`
13     for yy in $listY
14     do
15     zz=`echo $yy | sed "s/^$1/$2/"`
16     mv $yy $zz
17     done
18     }
19 jmc 1.11
20 jmc 1.12 #---------------------------
21 jmc 1.11 #- input :
22     # 1) data.tst = parameter file "data" for 2.Nit iter run
23     # 2) here or in dir temp : pickup(_cd).0..0{num0}.001.001.data
24    
25     NbArg=$#
26     if test -r data.tst ; then
27 jmc 1.2 # Nit = Nb of iter of 2nd & 3rd run (1rst one is 2 x Nit iter long)
28 jmc 1.11 Dbl=`sed -n 's/nTimeSteps=//p' data.tst | sed 's/,//g'`
29     Nit=`expr $Dbl / 2`
30     else
31     echo '=> Need a readable "data.tst" file for the 2 x Nit iterations run'
32     Nit=2 ; NbArg=0;
33     fi
34 jmc 1.2
35 jmc 1.11 case $NbArg in
36 jmc 1.2 1) ;;
37     *) echo "Usage: `basename $0` flag"
38     echo " Check restart: compare 1 run of 2 x $Nit it long"
39     echo " with 2 consecutive runs of $Nit it long each"
40 jmc 1.11 echo " where: flag = 1 -> do the 3 runs"
41 jmc 1.2 echo " flag = 2 -> compare std_outp"
42     echo " flag = 3 -> compare pickup files"
43     exit ;;
44     esac
45     flag=$1
46    
47 jmc 1.4 num0=`sed -n 's/nIter0=//p' data.tst | sed 's/,//g' | sed 's/ //g'`
48     #num0="72000"
49 jmc 1.1
50 jmc 1.2 # list of pickup(s) that are needed for a restart :
51 jmc 1.7 #listP='pickup pickup_cd pickup_nh pickup_ic pickup_land pickup_seaice'
52 jmc 1.5
53 jmc 1.11 #- executable:
54 jmc 1.5 mpi=0
55     if [ $mpi -ge 1 ]
56     then gcmExc=run_ifc_mpi
57     else gcmExc=mitgcmuv
58     fi
59 jmc 1.1
60     #- dir where to put the results :
61     dir1=res_2it
62     dir2=res_1iA
63     dir3=res_1iB
64 jmc 1.5
65 jmc 1.11 #---------------------------
66 jmc 1.2 Dbl=`expr $Nit + $Nit`
67     num1=`expr $num0 + $Nit`
68     num2=`expr $num0 + $Dbl`
69 jmc 1.12 num0c=`printf "%10.10i\n" $num0`
70     num1c=`printf "%10.10i\n" $num1`
71     num2c=`printf "%10.10i\n" $num2`
72 jmc 1.1 echo $num0 $num1 $num2
73 jmc 1.5 echo $num0c $num1c $num2c
74 jmc 1.2 echo 'gcmExc='$gcmExc
75 jmc 1.12 #exit
76 jmc 1.11 #---------------------------
77 jmc 1.2
78     if test $flag = 1 ; then
79     #------------
80 jmc 1.9 if test -d $dir1 -o -d $dir2 -o -d $dir3
81     then echo -n 'remove dir: '
82     if test -d $dir1 ; then echo -n $dir1 ' , ' ; rm -r $dir1 ; fi
83     if test -d $dir2 ; then echo -n $dir2 ' , ' ; rm -r $dir2 ; fi
84     if test -d $dir3 ; then echo -n $dir3 ' , ' ; rm -r $dir3 ; fi
85     echo ' '
86     fi
87 jmc 1.2 mkdir $dir1 $dir2 $dir3
88 jmc 1.9 rm -f STDERR.0000
89 jmc 1.2
90 jmc 1.1 cp -p data.tst data
91 jmc 1.7 numF=`ls temp/pickup*.${num0c}* 2> /dev/null | grep -c pickup`
92 jmc 1.11 if test $numF != 0 ; then ln -s temp/pickup*.${num0c}* . 2> /dev/null ; fi
93 jmc 1.2 echo '==> START RUN 2 x' $Nit 'it'
94 jmc 1.5 if [ $mpi -ge 1 ]
95     then ./$gcmExc std_outp.2it > TTT.out.2it 2>&1
96 jmc 1.9 else ./$gcmExc > std_outp.2it
97 jmc 1.5 fi
98 jmc 1.9 mv STDERR.0000 std__err.2it
99 jmc 1.5 if test -f pickup.ckptA.001.001.data
100 jmc 1.2 then out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`
101     else out=9 ; fi
102 jmc 1.1 if test $out != 0 ; then echo 'RUN 2it STOP before END => exit' ; exit ; fi
103 jmc 1.2 echo '==> END RUN 2 x' $Nit 'it'
104 jmc 1.9 listP=`ls pickup*.ckptA* | sed 's/\..*//g' | uniq`
105     echo ' listP=' $listP
106 jmc 1.1 for xx in $listP
107     do
108 jmc 1.12 rnp_loc $xx.ckptA $xx.$num2c
109 jmc 1.1 done
110 jmc 1.3 mv *.0??.0??.* $dir1
111 jmc 1.8 txtF=`ls -1 *.txt 2> /dev/null`
112     mv R?.data R?.meta DR?.data DR?.meta $txtF $dir1
113 jmc 1.9 listS=`ls $dir1/pickup*.${num0c}* 2> /dev/null | head -1`
114     if test "x$listS" != x ; then mv $dir1/pickup*.${num0c}* . ; fi
115 jmc 1.1 #--
116 jmc 1.2 sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data
117 jmc 1.5 echo '==> START RUN 1iA'
118     if [ $mpi -ge 1 ]
119     then ./$gcmExc std_outp.1iA > TTT.out.1iA 2>&1
120 jmc 1.9 else ./$gcmExc > std_outp.1iA
121 jmc 1.5 fi
122 jmc 1.9 mv STDERR.0000 std__err.1iA
123 jmc 1.5 if test -f pickup.ckptA.001.001.data
124 jmc 1.2 then out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`
125     else out=9 ; fi
126 jmc 1.1 if test $out != 0 ; then echo 'RUN 1iA STOP before END => exit' ; exit ; fi
127     echo '==> END RUN 1iA'
128     for xx in $listP
129     do
130 jmc 1.12 rnp_loc $xx.ckptA $xx.$num1c
131 jmc 1.1 done
132 jmc 1.3 mv *.0??.0??.* $dir2
133 jmc 1.8 txtF=`ls -1 *.txt 2> /dev/null`
134     mv R?.data R?.meta DR?.data DR?.meta $txtF $dir2
135 jmc 1.9 listS=`ls $dir2/pickup*.${num0c}* 2> /dev/null | head -1`
136 jmc 1.10 if test "x$listS" != x ; then rm $dir2/pickup*.${num0c}* ; fi
137 jmc 1.1 #--
138 jmc 1.5 ln -s $dir2/pickup*.$num1c.* .
139 jmc 1.10 sed "s/^ nIter0=$num0/ nIter0=$num1/g" data > data.tmp
140     mv -f data.tmp data
141 jmc 1.5 echo '==> START RUN 1iB'
142     if [ $mpi -ge 1 ]
143     then ./$gcmExc std_outp.1iB > TTT.out.1iB 2>&1
144 jmc 1.9 else ./$gcmExc > std_outp.1iB
145 jmc 1.5 fi
146 jmc 1.9 mv STDERR.0000 std__err.1iB
147 jmc 1.5 if test -f pickup.ckptA.001.001.data
148 jmc 1.2 then out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`
149     else out=9 ; fi
150 jmc 1.1 if test $out != 0 ; then echo 'RUN 1iB STOP before END => exit' ; exit ; fi
151     echo '==> END RUN 1iB'
152     for xx in $listP
153     do
154 jmc 1.12 rnp_loc $xx.ckptA $xx.$num2c
155 jmc 1.1 done
156 jmc 1.3 mv *.0??.0??.* $dir3
157 jmc 1.8 txtF=`ls -1 *.txt 2> /dev/null`
158     mv R?.data R?.meta DR?.data DR?.meta $txtF $dir3
159 jmc 1.1 rm $dir3/pickup*.$num1c.*
160 jmc 1.2 exit
161     #------------
162     fi
163    
164     if test $flag = 2 ; then
165     #------------
166 jmc 1.1 echo ' ' ; echo '-- compare cg2d_init_res :'
167     echo ' run 1iA:'
168     grep "cg2d_init_res" std_outp.1iA \
169     | sed 's/.* cg2d_init_res =//'
170     echo ' run 1iB:'
171     grep "cg2d_init_res" std_outp.1iB \
172     | sed 's/.* cg2d_init_res =//'
173     echo ' run 2it:'
174     grep "cg2d_init_res" std_outp.2it \
175 jmc 1.5 | sed 's/.* cg2d_init_res =//'
176 jmc 1.1 exit
177 jmc 1.2 #------------
178     fi
179    
180     if test $flag = 3 ; then
181     #------------
182 jmc 1.9 listP=`( cd $dir1 ; ls pickup*.$num2c* | sed 's/\..*//g' | uniq )`
183 jmc 1.12 chkmeta='Y'
184     for yy in $listP
185 jmc 1.2 do
186 jmc 1.12 listY=`(cd $dir1 ; ls $yy.$num2c.*.data | sed "s/$yy\.$num2c\.//" | sed "s/\.data//")`
187     zz=$yy.$num2c
188     echo '--> file='$zz', listY='$listY
189     for xx in $listY
190     do
191     echo diff $dir1/$zz.$xx.data $dir3
192     diff $dir1/$zz.$xx.data $dir3
193     out=$?
194     if test $out != 0
195     then echo 'Diff outp=' $out ' ==> stop'
196     exit ; fi
197     if test $chkmeta = 'Y'
198     then
199     echo diff $dir1/$zz.$xx.meta $dir3
200     diff $dir1/$zz.$xx.meta $dir3
201     out=$?
202     if test $out != 0
203     then echo 'Diff outp=' $out ' ==> stop'
204     exit ; fi
205     fi
206     done
207 jmc 1.2 done
208     exit
209     #------------
210     fi

  ViewVC Help
Powered by ViewVC 1.1.22