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

Contents of /MITgcm_contrib/jmc_script/tst1+1

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


Revision 1.13 - (show annotations) (download)
Sun Nov 25 21:14:57 2007 UTC (16 years, 4 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 #!/bin/sh
2
3 # $Header: /u/gcmpack/MITgcm_contrib/jmc_script/tst1+1,v 1.12 2007/11/07 01:40:47 jmc Exp $
4 # $Name: $
5
6 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
20 #---------------------------
21 #- 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 # Nit = Nb of iter of 2nd & 3rd run (1rst one is 2 x Nit iter long)
28 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
35 case $NbArg in
36 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 echo " where: flag = 1 -> do the 3 runs"
41 echo " flag = 2 -> compare std_outp"
42 echo " flag = 3 -> compare pickup files"
43 exit ;;
44 esac
45 flag=$1
46
47 num0=`sed -n 's/nIter0=//p' data.tst | sed 's/,//g' | sed 's/ //g'`
48 #num0="72000"
49
50 # list of pickup(s) that are needed for a restart :
51 #listP='pickup pickup_cd pickup_nh pickup_ic pickup_land pickup_seaice'
52
53 #- executable:
54 mpi=0
55 if [ $mpi -ge 1 ]
56 then gcmExc=run_ifc_mpi
57 else gcmExc=mitgcmuv
58 fi
59
60 #- dir where to put the results :
61 dir1=res_2it
62 dir2=res_1iA
63 dir3=res_1iB
64
65 #---------------------------
66 Dbl=`expr $Nit + $Nit`
67 num1=`expr $num0 + $Nit`
68 num2=`expr $num0 + $Dbl`
69 num0c=`printf "%10.10i\n" $num0`
70 num1c=`printf "%10.10i\n" $num1`
71 num2c=`printf "%10.10i\n" $num2`
72 echo $num0 $num1 $num2
73 echo $num0c $num1c $num2c
74 echo 'gcmExc='$gcmExc
75 #exit
76 #---------------------------
77
78 if test $flag = 1 ; then
79 #------------
80 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 mkdir $dir1 $dir2 $dir3
88 rm -f STDERR.0000
89
90 cp -p data.tst data
91 numF=`ls temp/pickup*.${num0c}* 2> /dev/null | grep -c pickup`
92 if test $numF != 0 ; then ln -s temp/pickup*.${num0c}* . 2> /dev/null ; fi
93 echo '==> START RUN 2 x' $Nit 'it'
94 if [ $mpi -ge 1 ]
95 then ./$gcmExc std_outp.2it > TTT.out.2it 2>&1
96 else ./$gcmExc > std_outp.2it
97 fi
98 mv STDERR.0000 std__err.2it
99 if test -f pickup.ckptA.001.001.data
100 then out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`
101 else out=9 ; fi
102 if test $out != 0 ; then echo 'RUN 2it STOP before END => exit' ; exit ; fi
103 echo '==> END RUN 2 x' $Nit 'it'
104 listP=`ls pickup*.ckptA* | sed 's/\..*//g' | uniq`
105 echo ' listP=' $listP
106 for xx in $listP
107 do
108 rnp_loc $xx.ckptA $xx.$num2c
109 done
110 mv *.0??.0??.* $dir1
111 txtF=`ls -1 *.txt 2> /dev/null`
112 mv R?.data R?.meta DR?.data DR?.meta $txtF $dir1
113 listS=`ls $dir1/pickup*.${num0c}* 2> /dev/null | head -1`
114 if test "x$listS" != x ; then mv $dir1/pickup*.${num0c}* . ; fi
115 #--
116 sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data
117 echo '==> START RUN 1iA'
118 if [ $mpi -ge 1 ]
119 then ./$gcmExc std_outp.1iA > TTT.out.1iA 2>&1
120 else ./$gcmExc > std_outp.1iA
121 fi
122 mv STDERR.0000 std__err.1iA
123 if test -f pickup.ckptA.001.001.data
124 then out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`
125 else out=9 ; fi
126 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 rnp_loc $xx.ckptA $xx.$num1c
131 done
132 mv *.0??.0??.* $dir2
133 txtF=`ls -1 *.txt 2> /dev/null`
134 mv R?.data R?.meta DR?.data DR?.meta $txtF $dir2
135 listS=`ls $dir2/pickup*.${num0c}* 2> /dev/null | head -1`
136 if test "x$listS" != x ; then rm $dir2/pickup*.${num0c}* ; fi
137 #--
138 ln -s $dir2/pickup*.$num1c.* .
139 sed "s/^ nIter0=$num0/ nIter0=$num1/g" data > data.tmp
140 mv -f data.tmp data
141 echo '==> START RUN 1iB'
142 if [ $mpi -ge 1 ]
143 then ./$gcmExc std_outp.1iB > TTT.out.1iB 2>&1
144 else ./$gcmExc > std_outp.1iB
145 fi
146 mv STDERR.0000 std__err.1iB
147 if test -f pickup.ckptA.001.001.data
148 then out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`
149 else out=9 ; fi
150 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 rnp_loc $xx.ckptA $xx.$num2c
155 done
156 mv *.0??.0??.* $dir3
157 txtF=`ls -1 *.txt 2> /dev/null`
158 mv R?.data R?.meta DR?.data DR?.meta $txtF $dir3
159 rm $dir3/pickup*.$num1c.*
160 exit
161 #------------
162 fi
163
164 if test $flag = 2 ; then
165 #------------
166 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 | sed 's/.* cg2d_init_res =//'
176 exit
177 #------------
178 fi
179
180 if test $flag = 3 ; then
181 #------------
182 listP=`( cd $dir1 ; ls pickup*.$num2c* | sed 's/\..*//g' | uniq )`
183 chkmeta='Y'
184 for yy in $listP
185 do
186 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 done
208 exit
209 #------------
210 fi

  ViewVC Help
Powered by ViewVC 1.1.22