/[MITgcm]/MITgcm_contrib/jmc_script/select_MON
ViewVC logotype

Annotation of /MITgcm_contrib/jmc_script/select_MON

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


Revision 1.1 - (hide annotations) (download)
Mon Nov 9 17:36:04 2020 UTC (3 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Add shell & matlab scripts to process MONITOR output from STDOUT files
 and make simple time-serie plots

1 jmc 1.1 #! /usr/bin/env bash
2    
3     # $Header: $
4     # $Name: $
5    
6     #listp0='tim cfu cfv cfw cfW keX keA keV peA scT scS scH scE shT shS'
7     listp0='tim cfu cfv cfw cfW keX keA peA scT scS'
8     listp0="$listp0 amE amU amT"
9     #listp1='et u_ v_ w_ t_ s_ z_'
10     listp1='et u_ v_ w_ t_ s_'
11     listp2='tsice siu_ siv_ sia_ sih_ snw_'
12     listp3='tIm icE icA icH snH iTS iT1 iT2'
13     listp4='Tim ldE lSn ldW lTS lT1 lT2'
14     listp5='tiTr t1_ t2_ ... t#_ '
15     #----------------------------------------------------------
16     # to reduce the size of the output file, keeping the MONITOR output :
17     # egrep '%MON' std_outp.100y | sed 's/(PID.TID 0000.0001) //g' > outp.100y
18     #----------------------------------------------------------
19     if [ $# -le 1 ]
20     then
21     echo 'Usage:'`basename $0`' file_input rac_output [List_selected_var]'
22     echo ' with selected_var in: '$listp0
23     echo ' or (min,Max,Av,StD) in: '$listp1
24     echo ' or (min,Max,Av,StD) in: '$listp2 ' <= take all if arg3=sIce'
25     echo ' or (mn,Mx,Av)*(N,S) in: '$listp3 ' <= take all if arg3=thSI'
26     echo ' or mn,Mx,Av*(N,T,S) in: '$listp4 ' <= take all if arg3=land'
27     echo ' or (min,Max,Av,StD) in: '$listp5 ' <= take all if arg3=pTr'
28     exit
29     else
30     file=$1 ; rac=$2 ; shift ; shift ; nbvar=$#
31     echo 'take MONITOR results out off file='$file
32     SIce=0 ; ThSI=0 ; Land=0 ; pTr=0 ;
33     if test $# != 0 ; then
34     if test $# = 1 -a $1 = 'sIce' ; then shift ; SIce=2 ;
35     elif test $# = 1 -a $1 = 'thSI' ; then shift ; ThSI=2 ;
36     elif test $# = 1 -a $1 = 'land' ; then shift ; Land=2 ;
37     elif test $# = 1 -a $1 = 'pTr' ; then shift ; pTr=2 ;
38     else SIce=1 ; ThSI=1 ; Land=1 ; pTr=1 ; fi
39     fi
40     nbvar=$#
41     if test $pTr != 0 ; then
42     listPtr=`grep 'trcstat_ptracer0._sd' $file | \
43     sed 's/^(PID.TID 0000.0001) %MON trcstat_ptracer0/t/g' | \
44     sed 's/_sd =.*$/_/g' | sort | uniq 2> /dev/null`
45     # echo "listPtr='$listPtr'"
46     if test "x$listPtr" = x
47     then echo 'no ptracer'
48     else listp5="tiTr $listPtr"
49     # echo 'listp5='$listp5
50     fi
51     fi
52     fi
53     #echo "nbvar= $nbvar ; SIce= $SIce ; ThSI= $ThSI ; Land= $Land ; pTr= $pTr"
54     kk1=`expr $SIce '<=' 1`
55     kk2=`expr $ThSI '<=' 1`
56     kk3=`expr $Land '<=' 1`
57     kk4=`expr $pTr '<=' 1`
58     if test $kk1 = 1 -a $kk2 = 1 -a $kk3 = 1 -a $kk4 = 1 ; then
59     #----------------------------------------------------------
60     echo '==> output in :'
61     for ppy in $listp0
62     do
63     case $ppy in
64     'tim') var='time_secondsf' ;;
65     'cfu') var='advcfl_u';;
66     'cfv') var='advcfl_v';;
67     'cfw') var='advcfl_w';;
68     'cfW') var='advcfl_W';;
69     'keX') var='ke_max ' ;;
70     'keA') var='ke_mean' ;;
71     #'keA') var='ke_volmean' ;;
72     'keV') var='ke_vol ' ;;
73     'peA') var='pe_b_mean' ;;
74     'amE') var='am_eta_mean' ;;
75     'amU') var='am_uZo_mean' ;;
76     'amT') var='am_tot_mean' ;;
77     #'scT') var='surf_Corr_theta_mean ' ;;
78     #'scS') var='surf_Corr_salt_mean ' ;;
79     'scT') var='surfExpan_theta_mean ' ;;
80     'scS') var='surfExpan_salt_mean ' ;;
81     'scH') var='surfExpan_Heat_mean ' ;;
82     'scE') var='En_Budget_T2PE_mean ' ;;
83     'shT') var='ShapFilt Temp \(k= 0\)' ;;
84     'shS') var='ShapFilt Salt \(k= 0\)' ;;
85     esac
86     #-
87     pp=0
88     if test $nbvar != 0
89     then
90     for yy in $*
91     do
92     if test $yy = $ppy ; then pp=$ppy ; fi
93     done
94     else
95     pp=$ppy
96     fi
97     #---
98     if test $pp != 0
99     then ppx=$pp ;
100     echo ' '$rac.$ppx '<== Select string= "'$var'"'
101     #if test $ppy = 'scT' -o $ppy = 'scS' -o $ppy = 'scH' -o $ppy = 'scE'
102     #then echo '0.' > $rac.$ppx ;
103     # egrep "MON $var" $file | sed "s/.* *=//g" >> $rac.$ppx
104     #else
105     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$ppx
106     if test ! -s $rac.$ppx ; then rm -f $rac.$ppx ; fi
107     #fi
108     fi
109     done
110     #----------------------------------------------------------
111     echo '==> output in :'
112     #---
113     for ppy in $listp1
114     do
115     case $ppy in
116     'et') vv='eta' ;;
117     'u_') vv='uvel' ;;
118     'v_') vv='vvel' ;;
119     'w_') vv='wvel' ;;
120     't_') vv='theta' ;;
121     's_') vv='salt' ;;
122     'z_') vv='vort' ;;
123     esac
124     #-
125     pp=0 ; flag=0
126     if test $nbvar != 0
127     then
128     for yy in $*
129     do
130     if test $yy = $ppy ; then pp=$ppy ; fi
131     done
132     if test $pp = 0
133     then
134     for xx in N X A S D
135     do
136     ppx=$ppy$xx ;
137     for yy in $*
138     do
139     if test $yy = $ppx ; then pp=$ppx ; flag=1 ; fi
140     done
141     done
142     fi
143     else
144     pp=$ppy
145     fi
146     #-
147     if test $pp != 0
148     then
149     for xx in N X A S D
150     do
151     ppx=$ppy$xx ;
152     if test $flag = 0 -o $pp = $ppx
153     then
154     if test $ppy = 'z_'
155     then
156     case $xx in
157     'N') var=${vv}_r_min ;;
158     'X') var=${vv}_r_max ;;
159     'A') var=${vv}_a_mean ;;
160     'S') var=${vv}_a_sd ;;
161     'V') var=${vv}_p_mean ;;
162     'D') var=${vv}_p_sd ;;
163     esac
164     else
165     case $xx in
166     'N') var=${vv}_min ;;
167     'X') var=${vv}_max ;;
168     'A') var=${vv}_mean ;;
169     'S') var=${vv}_sd ;;
170     'D') var=${vv}_del2 ;;
171     'V') var=${vv}_vol ;;
172     esac
173     var=dynstat_$var
174     fi
175     echo ' '$rac.$ppx '<== Select string= "'$var'"'
176     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$ppx
177     fi
178     done
179     fi
180     #---
181     done
182     #----------------------------------------------------------
183     fi
184     if [ $SIce -ge 1 ]
185     then
186     #----------------------------------------------------------
187     echo '==> output in :'
188     #---
189     for ppy in $listp2
190     do
191     pp=0 ; flag=0
192     if test $nbvar != 0
193     then
194     for yy in $*
195     do
196     if test $yy = $ppy ; then pp=$ppy ; fi
197     done
198     if test $pp = 0
199     then
200     for xx in N X A S D
201     do
202     ppx=$ppy$xx ;
203     for yy in $*
204     do
205     if test $yy = $ppx ; then pp=$ppx ; flag=1 ; fi
206     done
207     done
208     fi
209     else
210     pp=$ppy
211     fi
212     #-
213     listp2='tsi siu siv sia sih snw'
214     listp2='tsice siu_ siv_ sia_ sih_ snw_'
215     if test $pp = 'tsice' ; then
216     var='seaice_time_sec' ;
217     nn=`grep -c "MON $var" $file`
218     echo ' '$rac.$pp '<== Select string= "'$var'"'
219     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$pp
220     elif test $pp != 0 ; then
221     case $ppy in
222     'siu_') vv='uice' ;;
223     'siv_') vv='vice' ;;
224     'sia_') vv='area' ;;
225     'sih_') vv='heff' ;;
226     'snw_') vv='hsnow' ;;
227     esac
228     # echo " vv='$vv'"
229     for xx in N X A S D
230     do
231     ppx=$ppy$xx ;
232     if test $flag = 0 -o $pp = $ppx
233     then
234     case $xx in
235     'N') var=${vv}_min ;;
236     'X') var=${vv}_max ;;
237     'A') var=${vv}_mean ;;
238     'S') var=${vv}_sd ;;
239     'D') var=${vv}_del2 ;;
240     esac
241     var=seaice_$var
242     echo ' '$rac.$ppx '<== Select string= "'$var'"'
243     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$ppx
244     fi
245     done
246     fi
247     #---
248     done
249     #----------------------------------------------------------
250     fi
251     if [ $ThSI -ge 1 ]
252     then
253     #----------------------------------------------------------
254     echo '==> output in :'
255     #---
256     for ppy in $listp3
257     do
258     case $ppy in
259     'tIm') vv='time' ; listZ='Ic' ;;
260     'icE') vv='TotEnerg' ; listZ='n' ;;
261     'icA') vv='Ice_Area' ; listZ='_' ;;
262     #'icV') vv='IceVolum' ; listZ='_' ;;
263     'icH') vv='IceH_' ; listZ='x a' ;;
264     'snH') vv='SnwH_' ; listZ='x a' ;;
265     'iTS') vv='Tsrf_' ; listZ='m x a' ;;
266     'iT1') vv='Tic1_' ; listZ='m x a' ;;
267     'iT2') vv='Tic2_' ; listZ='m x a' ;;
268     esac
269     #-
270     pp=0
271     if test $nbvar != 0
272     then
273     for yy in $*
274     do
275     if test $yy = $ppy ; then pp=$ppy ; fi
276     done
277     else
278     pp=$ppy
279     fi
280     #-
281     if test $pp != 0
282     then
283     for zz in $listZ
284     do
285     case $zz in
286     'Ic') vvr=${vv} ; listX='sec' ;;
287     'n') vvr=${vv} ; listX='G' ;;
288     '_') vvr=${vv} ; listX='S N' ;;
289     'm') vvr=${vv}min ; listX='S N' ;;
290     'x') vvr=${vv}max ; listX='S N' ;;
291     'a') vvr=${vv}ave ; listX='S N G' ;;
292     esac
293     for xx in $listX
294     do
295     var=${vvr}'_'$xx
296     if test $zz = 'Ic' ; then ppx='i_tim' ; else ppx=$pp$zz$xx ; fi
297     var=thSI_$var
298     echo ' '$rac.$ppx '<== Select string= "'$var'"'
299     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$ppx
300     done
301     done
302     fi
303     #---
304     done
305     #----------------------------------------------------------
306     fi
307     if [ $Land -ge 1 ] ; then
308     #----------------------------------------------------------
309     echo '==> output in :'
310     #---
311     for ppy in $listp4
312     do
313     case $ppy in
314     'Tim') vv='time' ; listZ='l_' ;;
315     'ldE') vv='TotEnerg';listZ='a' ;;
316     'lSn') vv='SnwH_' ; listZ='x a' ;;
317     'ldW') vv='grdW_' ; listZ='m a' ;;
318     'lTS') vv='Tsrf_' ; listZ='m x a' ;;
319     'lT1') vv='Tgr1_' ; listZ='m x a' ;;
320     'lT2') vv='Tgr2_' ; listZ='m x a' ;;
321     esac
322     #-
323     pp=0
324     if test $nbvar != 0
325     then
326     for yy in $*
327     do
328     if test $yy = $ppy ; then pp=$ppy ; fi
329     done
330     else
331     pp=$ppy
332     fi
333     #-
334     if test $pp != 0
335     then
336     for zz in $listZ
337     do
338     case $zz in
339     'l_') vvr=${vv} ; listX='sec' ;;
340     'n') vvr=${vv} ; listX='G' ;;
341     '_') vvr=${vv} ; listX='S N' ;;
342     'm') vvr=${vv}min ; listX='S T N' ;;
343     'x') vvr=${vv}max ; listX='S T N' ;;
344     'a') vvr=${vv}ave ; listX='S T N G' ; if test $pp = 'ldE'; then vvr=$vv ; fi ;;
345     esac
346     for xx in $listX
347     do
348     var=${vvr}'_'$xx
349     if test $zz = 'l_' ; then ppx='l_tim' ; else ppx=$pp$zz$xx ; fi
350     var=land_$var
351     echo ' '$rac.$ppx '<== Select string= "'$var'"'
352     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$ppx
353     done
354     done
355     fi
356     #---
357     done
358     #----------------------------------------------------------
359     fi
360     #exit
361     if [ $pTr -ge 1 ] ; then
362     #----------------------------------------------------------
363     echo '==> output in :'
364     #---
365     for ppy in $listp5
366     do
367     pp=0 ; flag=0
368     if test $nbvar != 0
369     then
370     for yy in $*
371     do
372     if test $yy = $ppy ; then pp=$ppy ; fi
373     done
374     if test $pp = 0
375     then
376     for xx in N X A S D
377     do
378     ppx=$ppy$xx ;
379     for yy in $*
380     do
381     if test $yy = $ppx ; then pp=$ppx ; flag=1 ; fi
382     done
383     done
384     fi
385     else
386     pp=$ppy
387     fi
388     #-
389     if test $pp = 'tiTr' ; then
390     var='trctime_secondsf' ;
391     nn=`grep -c "MON $var" $file`
392     if test $nn = 0 ; then var='time_secondsf' ; fi
393     echo ' '$rac.$pp '<== Select string= "'$var'"'
394     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$pp
395     elif test $pp != 0 ; then
396     vv=`echo $ppy | sed 's/^t/ptracer0/'`
397     # echo " vv='$vv'"
398     for xx in N X A S D
399     do
400     ppx=$ppy$xx ;
401     if test $flag = 0 -o $pp = $ppx
402     then
403     case $xx in
404     'N') var=${vv}min ;;
405     'X') var=${vv}max ;;
406     'A') var=${vv}mean ;;
407     'S') var=${vv}sd ;;
408     'D') var=${vv}del2 ;;
409     'V') var=${vv}vol ;;
410     esac
411     var=trcstat_$var
412     echo ' '$rac.$ppx '<== Select string= "'$var'"'
413     egrep "MON $var" $file | sed "s/.* *=//g" > $rac.$ppx
414     fi
415     done
416     fi
417     #---
418     done
419     #----------------------------------------------------------
420     fi
421     exit

  ViewVC Help
Powered by ViewVC 1.1.22