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

Annotation of /MITgcm_contrib/jmc_script/tst_2+2_cpl

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


Revision 1.2 - (hide annotations) (download)
Tue Oct 30 22:55:04 2007 UTC (16 years, 6 months ago) by jmc
Branch: MAIN
Changes since 1.1: +28 -9 lines
forgot cvs $Header:$ & $Name:$

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

  ViewVC Help
Powered by ViewVC 1.1.22