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

Contents of /MITgcm_contrib/jmc_script/select_MON

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


Revision 1.1 - (show annotations) (download)
Mon Nov 9 17:36:04 2020 UTC (3 years, 6 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 #! /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