/[MITgcm]/MITgcm_contrib/jmc_script/tst_2+2_cpl
ViewVC logotype

Contents of /MITgcm_contrib/jmc_script/tst_2+2_cpl

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


Revision 1.4 - (show annotations) (download)
Mon Nov 26 23:23:51 2007 UTC (16 years, 5 months ago) by jmc
Branch: MAIN
Changes since 1.3: +15 -17 lines
fix previous check-in

1 #!/bin/sh
2
3 # $Header: /u/gcmpack/MITgcm_contrib/jmc_script/tst_2+2_cpl,v 1.3 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 dif_tiles()
21 {
22 # dif_data_loc dd1 dd2 file
23 # for all tiles ==> do diff dd1/file dd2/file'
24 dd1=$1 ; dd2=$2 ; zz=$3
25 chkmeta='Y'
26 listY=`(cd $dd1 ; ls $zz.*.data | sed "s/$zz\.//" | sed "s/\.data//")`
27 echo '--> file='$zz', listY='$listY
28 for yy in $listY
29 do
30 echo diff $dd1/$zz.$yy.data $dd2
31 diff $dd1/$zz.$yy.data $dd2
32 out=$?
33 if test $out != 0
34 then echo 'Diff outp=' $out ' ==> stop'
35 exit ; fi
36 if test $chkmeta = 'Y'
37 then
38 echo diff $dd1/$zz.$yy.meta $dd2
39 diff $dd1/$zz.$yy.meta $dd2
40 out=$?
41 if test $out != 0
42 then echo 'Diff outp=' $out ' ==> stop'
43 exit ; fi
44 fi
45 done
46 }
47
48 if test -f input_ocn/data.tst
49 then
50 noc0=`sed -n 's/nIter0=//p' input_ocn/data.tst | sed 's/,//g' | sed 's/ //g'`
51 Dbl=`sed -n 's/nTimeSteps=//p' input_ocn/data.tst | sed 's/,//g'`
52 NiOc=`expr $Dbl / 2`
53 Nit=$NiOc
54 else
55 echo " file: 'input_ocn/data.tst' not found"
56 NiOc=0 ; Nit=2
57 fi
58 if test -f input_atm/data.tst
59 then
60 nat0=`sed -n 's/nIter0=//p' input_atm/data.tst | sed 's/,//g' | sed 's/ //g'`
61 Dbl=`sed -n 's/nTimeSteps=//p' input_atm/data.tst | sed 's/,//g'`
62 NiAt=`expr $Dbl / 2`
63 else
64 echo " file: 'input_atm/data.tst' not found"
65 NiAt=0
66 fi
67
68 case $# in
69 1) ;;
70 *) echo "Usage: `basename $0` flag"
71 echo " Check restart of coupled set-up: compare 1 run of 2 x $Nit it long"
72 echo " with 2 consecutive runs of $Nit it long each"
73 echo " where: flag = 0 -> prepare for 1rst run"
74 echo " flag = 1 -> move res. after 1rst run & prepare for 2nd"
75 echo " flag = 2 -> move res. after 2nd run & prepare for 3rd"
76 echo " flag = 3 -> move res. after 3rd run"
77 echo " flag = 4 -> compare Ocean results"
78 echo " flag = 5 -> compare Atmos results"
79 echo " flag = 6 -> diff pickup files"
80 exit ;;
81 esac
82 if test $NiAt = 0 -o $NiOc = 0
83 then
84 echo " needs 2 data files: 'input_ocn/data.tst' & 'input_atm/data.tst'"
85 echo " (corresponding to 1rst run) to continue"
86 exit
87 fi
88 ksel=$1
89
90 #make sure that local dir & ~jmc/bin is in the path:
91 #export PATH=${PATH}:.
92
93 Nit=$NiOc
94 Dbl=`expr $Nit + $Nit`
95 noc1=`expr $noc0 + $Nit`
96 noc2=`expr $noc0 + $Dbl`
97 noc0c=`printf "%10.10i\n" $noc0`
98 noc1c=`printf "%10.10i\n" $noc1`
99 noc2c=`printf "%10.10i\n" $noc2`
100 echo 'Oce (rank_1):' $noc0 $noc1 $noc2
101 echo $noc0c $noc1c $noc2c
102
103 Nit=$NiAt
104 Dbl=`expr $Nit + $Nit`
105 nat1=`expr $nat0 + $Nit`
106 nat2=`expr $nat0 + $Dbl`
107 nat0c=`printf "%10.10i\n" $nat0`
108 nat1c=`printf "%10.10i\n" $nat1`
109 nat2c=`printf "%10.10i\n" $nat2`
110 echo 'Atm (rank_2):' $nat0 $nat1 $nat2
111 echo $nat0c $nat1c $nat2c
112
113 listOc="pickup pickup_cpl"
114 listAt="pickup pickup_cpl pickup_ic pickup_land"
115
116 #- dir where to put the results :
117 dir1=res_2it
118 dir2=res_1iA
119 dir3=res_1iB
120
121 #-- after a run, rename pickup file to restart
122 if test $ksel = 0
123 then
124 echo ' '
125 cd rank_1
126 for xx in $listOc
127 do rnp_loc $xx.ckptA $xx.$noc0c
128 done
129 cd ../rank_2
130 for xx in $listAt
131 do rnp_loc $xx.ckptA $xx.$nat0c
132 done
133 cd ..
134 #-- prepare for running Dbl
135 echo ' prepare for running Dbl:'
136 Dbl=`expr $NiOc + $NiOc`
137 sed "1 s/[0-9]*/$Dbl/" input_cpl/data > rank_0/data
138 cp -p input_ocn/data.tst rank_1/data
139 cp -p input_atm/data.tst rank_2/data
140 echo 'rank_0/data:' `head -1 rank_0/data`
141 egrep 'nIter0|nTimeSteps' rank_?/data
142 fi
143
144 #-- after running Dbl:
145 if test $ksel = 1
146 then
147 rm -rf $dir1
148 mkdir $dir1
149 echo ' ' ; echo 'move STDOUT to' $dir1
150 mv rank_1/STDOUT* $dir1/ocnSTDOUT.2it
151 mv rank_2/STDOUT* $dir1/atmSTDOUT.2it
152
153 mkdir $dir1/ocn
154 cd rank_1
155 for xx in $listOc
156 do
157 rnp_loc $xx.ckptA $xx.$noc2c
158 done
159 echo 'move pickups to' $dir1/ocn
160 mv pickup*.$noc2c.* ../$dir1/ocn
161 cd ..
162
163 mkdir $dir1/atm
164 cd rank_2
165 for xx in $listAt
166 do
167 rnp_loc $xx.ckptA $xx.$nat2c
168 done
169 echo 'move pickups to' $dir1/atm
170 mv pickup*.$nat2c.* ../$dir1/atm
171 cd ..
172
173 #-- prepare for running 1iA
174 echo ' prepare for running 1iA:'
175 Nit=$NiOc
176 Dbl=`expr $Nit + $Nit`
177 sed "1 s/[0-9]*/$Nit/" input_cpl/data > rank_0/data
178 sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" input_ocn/data.tst > rank_1/data
179 Nit=$NiAt
180 Dbl=`expr $Nit + $Nit`
181 sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" input_atm/data.tst > rank_2/data
182 echo 'rank_0/data:' `head -1 rank_0/data`
183 egrep 'nIter0|nTimeSteps' rank_?/data
184 fi
185
186 #-- after running 1iA
187 if test $ksel = 2
188 then
189 rm -rf $dir2
190 mkdir $dir2
191 echo ' ' ; echo 'move STDOUT to' $dir2
192 mv rank_1/STDOUT* $dir2/ocnSTDOUT.1iA
193 mv rank_2/STDOUT* $dir2/atmSTDOUT.1iA
194
195 mkdir $dir2/ocn
196 cd rank_1
197 for xx in $listOc
198 do
199 rnp_loc $xx.ckptA $xx.$noc1c
200 done
201 echo 'move pickups to' $dir2/ocn
202 mv pickup*.$noc1c.* ../$dir2/ocn
203 cd ..
204
205 mkdir $dir2/atm
206 cd rank_2
207 for xx in $listAt
208 do
209 rnp_loc $xx.ckptA $xx.$nat1c
210 done
211 echo 'move pickups to' $dir2/atm
212 mv pickup*.$nat1c.* ../$dir2/atm
213 cd ..
214
215 #-- prepare for running 1iB
216 echo ' prepare for running 1iB:'
217 cd rank_1
218 sed "s/^ nIter0=$noc0/ nIter0=$noc1/g" data > data.tmp
219 mv -f data.tmp data
220 ln -s ../$dir2/ocn/* .
221 cd ../rank_2
222 sed "s/^ nIter0=$nat0/ nIter0=$nat1/g" data > data.tmp
223 mv -f data.tmp data
224 ln -s ../$dir2/atm/* .
225 cd ..
226 echo 'rank_0/data:' `head -1 rank_0/data`
227 egrep 'nIter0|nTimeSteps' rank_?/data
228 fi
229
230 #-- after running 1iB
231 if test $ksel = 3
232 then
233 rm -rf $dir3
234 mkdir $dir3
235 echo ' ' ; echo 'move STDOUT to' $dir3
236 mv rank_1/STDOUT* $dir3/ocnSTDOUT.1iB
237 mv rank_2/STDOUT* $dir3/atmSTDOUT.1iB
238
239 mkdir $dir3/ocn
240 cd rank_1
241 for xx in $listOc
242 do rnp_loc $xx.ckptA $xx.$noc2c
243 done
244 echo 'move pickups to' $dir3/ocn
245 mv pickup*.$noc2c.* ../$dir3/ocn
246 cd ..
247
248 mkdir $dir3/atm
249 cd rank_2
250 for xx in $listAt
251 do rnp_loc $xx.ckptA $xx.$nat2c
252 done
253 echo 'move pickups to' $dir3/atm
254 mv pickup*.$nat2c.* ../$dir3/atm
255 cd ..
256 echo 'restore std data files'
257 cp -p input_cpl/data rank_0
258 cp -p input_ocn/data rank_1
259 cp -p input_atm/data rank_2
260 fi
261
262 #-- compare output:
263 if test $ksel = 4
264 then
265 rm -f ocn.txt
266 echo ' run 2it: ---------- ' > tmp1.txt
267 grep "cg2d_init_res" $dir1/ocnSTDOUT.2it \
268 | sed 's/.* cg2d_init_res =//' >> tmp1.txt
269 Nit=`expr $NiOc + 2`
270 sed "$Nit i \ ... 2it continue ..." tmp1.txt > tmp2.txt
271 rm -f tmp1.txt
272 echo ' run 1iA: ---------- ' > tmp1.txt
273 grep "cg2d_init_res" $dir2/ocnSTDOUT.1iA \
274 | sed 's/.* cg2d_init_res =//' >> tmp1.txt
275 echo ' run 1iB: ---------- ' >> tmp1.txt
276 grep "cg2d_init_res" $dir3/ocnSTDOUT.1iB \
277 | sed 's/.* cg2d_init_res =//' >> tmp1.txt
278 nl tmp1.txt > tmp1.ttt
279 nl tmp2.txt > tmp2.ttt
280 join tmp1.ttt tmp2.ttt | sed 's/[0-9]*//' > ocn.txt
281 rm -f tmp1.ttt tmp2.ttt tmp1.txt tmp2.txt
282 echo ' ' ; echo '-- compare cg2d_init_res (Ocean):'
283 cat ocn.txt
284 exit
285 fi
286
287 if test $ksel = 5
288 then
289 rm -f atm.txt
290 echo ' run 2it: ---------- ' > tmp1.txt
291 grep "cg2d_init_res" $dir1/atmSTDOUT.2it \
292 | sed 's/.* cg2d_init_res =//' >> tmp1.txt
293 Nit=`expr $NiAt + 2`
294 sed "$Nit i \ ... 2it continue ..." tmp1.txt > tmp2.txt
295 rm -f tmp1.txt
296 echo ' run 1iA: ---------- ' > tmp1.txt
297 grep "cg2d_init_res" $dir2/atmSTDOUT.1iA \
298 | sed 's/.* cg2d_init_res =//' >> tmp1.txt
299 echo ' run 1iB: ---------- ' >> tmp1.txt
300 grep "cg2d_init_res" $dir3/atmSTDOUT.1iB \
301 | sed 's/.* cg2d_init_res =//' >> tmp1.txt
302 nl tmp1.txt > tmp1.ttt
303 nl tmp2.txt > tmp2.ttt
304 join tmp1.ttt tmp2.ttt | sed 's/[0-9]*//' > atm.txt
305 rm -f tmp1.ttt tmp2.ttt tmp1.txt tmp2.txt
306 echo ' ' ; echo '-- compare cg2d_init_res (Atmos):'
307 cat atm.txt
308 exit
309 fi
310
311 #- compare pickup file:
312 if test $ksel = 6
313 then
314 echo ' ' ; echo '=== compare Ocn pickups: =============='
315 for xx in $listOc
316 do
317 dif_tiles $dir1/ocn $dir3/ocn $xx.$noc2c
318 done
319 echo ' ' ; echo '=== compare Atm pickups: =============='
320 for xx in $listAt
321 do
322 dif_tiles $dir1/atm $dir3/atm $xx.$nat2c
323 done
324 exit
325 fi

  ViewVC Help
Powered by ViewVC 1.1.22