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 |