Show File [ analyse_set.sh : text/x-shellscript ] ...
1: #!/bin/bash
2: #
3: # Auswertung der Zirkulation auf dem Aquaplaneten mit PUMA
4: # I.Kirchner, Nov/2019
5:
6: # ==============================================================================
7: # (A) Vorbereitung der Arbeitsumgebung
8: #
9: echo "Starte Auswertung ...."
10: echo
11:
12: # Einbinden der notwendigen Module
13: export MODULE_VERSION=4.1.2
14: export MODULEPATH=/net/opt/system/modules/modulefiles_ifm_stretch:\
15: /net/opt/system/modules/$MODULE_VERSION/modulefiles
16: . /net/opt/system/modules/4.1.2/init/profile.sh
17: module load cdo/1.9.6
18:
19: # dieses Plotprogramm wird verwendet
20: PE=/daten/vast/arch/vast-git/vastnet/plot_engine/bin/plot_engine
21: echo "... use PlotEngine Version $(${PE} --version)"
22:
23: # ==============================================================================
24: # (B) Definition aller notwendigen Shell-Funktionen
25:
26: # erstes Jahr wird nicht mit benutzt
27: SelTime(){
28: INP=${1}
29: OUT=${2}
30: YEARS='-selyear'
31: FIRST=no
32: for YY in $(cdo -s -showyear $INP)
33: do
34: case ${FIRST} in
35: no ) FIRST=yes ;;
36: * ) YEARS="${YEARS},${YY}" ;;
37: esac
38: done
39: cdo -s ${YEARS} ${INP} ${OUT} && echo "... select years OK"
40: }
41:
42: # Aufspaltung in Grundzustand und Eddies
43: SplitCirc(){
44: FILE=${1}
45: RES=${2:-split}
46: # speichere Gitterinformation
47: cdo -s -griddes ${FILE} > $$.gitter
48: cdo -s -zonmean ${FILE} ${RES}_zm && echo '... zonalmean OK'
49: cdo -s -sub ${FILE} -enlarge,$$.gitter ${RES}_zm ${RES}_ed && \
50: echo '... eddies OK'
51: rm -f $$.gitter
52: }
53:
54: # Abschätzung der kinetischen Energie
55: KinEn(){
56: U=${1}
57: V=${2}
58: RES=${3:-kinen}
59: cdo -s -divc,2.0 -add -mul $U $U -mul $V $V $RES && \
60: echo '... kinetische Energie OK'
61: }
62:
63: # Abschätzung der meridionalen Transporte
64: MerTran(){
65: V=${1}
66: X=${2}
67: RES=${3:-mt}
68: cdo -s -mul $V $X $RES && echo '... meridionaler Transport OK'
69: }
70:
71: # Ansteuerung der einzelnen Arbeitsschritte
72: WorkFlowSteps(){
73: while [ "$1" ]
74: do
75: echo "Running Workflowstep ... $1"
76: echo
77: case "$1" in
78: 1 )
79: # Schritt 1 : Zeitraum auswählen, notwenig bei Modelldaten
80: SelTime ${DATA_TA} $$.ta
81: SelTime ${DATA_UA} $$.ua
82: SelTime ${DATA_VA} $$.va
83: ;;
84: 2a)
85: # Schritt 2 : Aufspaltung der Basisdaten in Zonalmittel und Eddies
86: SplitCirc $$.ta ${DATA}ta
87: SplitCirc $$.ua ${DATA}ua
88: SplitCirc $$.va ${DATA}va
89: rm -f $$.[tuv]a
90: ;;
91: 2b )
92: # Schritt 2 : Benutze die direkten Eingangsdaten zur Aufspaltung
93: SplitCirc ${DATA_TA} ${DATA}ta
94: SplitCirc ${DATA_UA} ${DATA}ua
95: SplitCirc ${DATA_VA} ${DATA}va
96: ;;
97: 3 )
98: # Schritt 3 : Berechne kombinierte Größen
99: for TYPE in zm ed
100: do
101: echo "... Berechnung fuer $TYPE"
102: KinEn ${DATA}ua_${TYPE} ${DATA}va_${TYPE} ${DATA}kinen_${TYPE}
103: MerTran ${DATA}va_${TYPE} ${DATA}ta_${TYPE} ${DATA}mt_VT_${TYPE}
104: MerTran ${DATA}va_${TYPE} ${DATA}ua_${TYPE} ${DATA}mt_VU_${TYPE}
105: done
106: ;;
107: 4 )
108: # Schritt 4 : zeitliche Mittel bilden
109: for FILE in ${DATA}kinen_?? ${DATA}mt_??_?? ${DATA}??_??
110: do
111: cdo -s timmean ${FILE} ${FILE}_mean && echo "... Zeitmittel $FILE OK"
112: done
113: ;;
114: 5 )
115: # Schritt 5 : Zonalmittel der Eddies
116: for FILE in ${DATA}*_ed_mean
117: do
118: cdo -s zonmean ${FILE} ${FILE}_zm && echo "... Zonalmittel $FILE OK"
119: done
120: ;;
121: 6 )
122: # Schritt 6 : Plotten der Lon-Lat-Bilder
123: PYCODE='--pycode main:cbar:l:True=pict:type:s:geomap=geomap:type:s:shaded='
124: for FILE in ${DATA}*_ed_mean
125: do
126: for LEVEL in 100000 85000 50000 20000 10000 5000
127: do
128: PREF=$(echo $FILE | sed -e "s=${DATA}==")_${LEVEL}
129: ADD_SPECI="data:levelidx:f:${LEVEL}="
130: ${PE} -v 0 -W ${PYCODE}${ADD_SPECI} \
131: -i ${FILE} -t "${LABEL} / $FILE" -p plots_${LABEL}/${PREF} && \
132: echo "... plotten $PREF OK"
133: done
134: done
135: ;;
136: 7 )
137: # Schritt 7 : Plotten der Crosssections
138: PYCODE='--pycode main:cbar:l:True=yaxis:log:l:True='
139: for FILE in ${DATA}*_ed_mean_zm ${DATA}*_zm_mean
140: do
141: PREF=$(echo $FILE | sed -e "s=${DATA}==")
142: ${PE} -v 0 -W ${PYCODE} -i ${FILE} -t "${LABEL} / $FILE" -p plots_${LABEL}/${PREF} && \
143: echo "... plotten $PREF OK"
144: done
145: ;;
146: esac
147: shift
148: done
149: }
150:
151: # ==============================================================================
152: # (C) Hauptprogrammteil
153:
154: # Bereitstellung der ERA5 Daten zum Vergleich mit PUMA
155: # erfolgt separat hier werden die Felder ... verlangt
156: # ta, ua, va als (*,t) Daten mit gleicher zeitlicher
157: # und räumlicher Auflösung
158: # beim Experiment sind die ersten Zeitschritte zu entfernen
159: # erst ab Jahr 2 Dsten benutzen
160: #LEVELS='-selevel,100000,85000,50000,20000,10000,5000'
161:
162: # jetzt werden die PUMA Experimente ausgewertet
163: VAST_BASE=/daten/vast/work/tmp/daemon-wekuw.poincare.vast/finished
164: VAST_INFIX=ANALYSIS/daily/3d
165:
166: # die benutzen EXP_IDs sind abhängig von dem jeweiligen VAST Experiment
167: for EXP in tg30 tg60 tg90
168: do
169: LABEL="puma_$EXP"
170: case $EXP in
171: tg30 ) EXP_ID=20191122-01574408223080013078 ;;
172: tg60 ) EXP_ID=20191122-01574408380117070185 ;;
173: tg90 ) EXP_ID=20191122-01574408333012247014 ;;
174: esac
175: EXP_BASE=${VAST_BASE}/${EXP_ID}/${VAST_INFIX}
176:
177: DATA=data_${LABEL}/${LABEL}.
178: mkdir -p data_${LABEL}
179:
180: # die Pfade zu den Ausgangsdaten entsprechen der VAST Nomenklatur
181: DATA_TA=${EXP_BASE}/code_130
182: DATA_UA=${EXP_BASE}/code_131
183: DATA_VA=${EXP_BASE}/code_132
184: WorkFlowSteps 1 2a 3 4 5 6 7
185: done
186:
187: # ==============================================================================
188: # EndOfScript
189: