Ingos Page
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: 

Ansprechpartner : Dr. I. Kirchner [e-mail] IfM Zi. 184
Lehre und Projekte / Homepage