Ingos Page
Show File [ analyse_era5.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 :: $(${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 -f nc4 -s -zonmean ${FILE} ${RES}_zm && echo '... zonalmean OK'
   49:     cdo -f nc4 -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 && \
  112:                         echo "... Zeitmittel $FILE OK"
  113:                 done
  114:                 ;;
  115:             5 )
  116:                 # Schritt 5 : Zonalmittel der Eddies
  117:                 for FILE in ${DATA}*_ed_mean
  118:                 do
  119:                     cdo -s zonmean ${FILE} ${FILE}_zm && \
  120:                         echo "... Zonalmittel $FILE OK"
  121:                 done
  122:                 ;;
  123:             6 )
  124:                 # Schritt 6 : Plotten der Lon-Lat-Bilder
  125:                 PYCODE='--pycode main:cbar:l:True=pict:type:s:geomap=geomap:type:s:shaded='
  126:                 for FILE in ${DATA}*_ed_mean
  127:                 do
  128:                     for LEVEL in 100000 85000 50000 20000 10000 5000
  129:                     do
  130:                         PREF=$(echo $FILE | sed -e "s=${DATA}==")_${LEVEL}
  131:                         ADD_SPECI="data:levelidx:f:${LEVEL}="
  132:                         ${PE} -v 0 -W ${PYCODE}${ADD_SPECI}${DRAW_COAST} \
  133:                               -i ${FILE} -t "${LABEL} / $FILE" \
  134:                               -p plots_${LABEL}/${PREF} && \
  135:                             echo "... plotten $PREF OK"
  136:                     done
  137:                 done
  138:                 ;;
  139:             7 )
  140:                 # Schritt 7 : Plotten der Crosssections
  141:                 PYCODE='--pycode main:cbar:l:True=yaxis:log:l:True='
  142:                 for FILE in ${DATA}*_ed_mean_zm ${DATA}*_zm_mean
  143:                 do
  144:                     PREF=$(echo $FILE | sed -e "s=${DATA}==")
  145:                     ${PE} -v 0 -W ${PYCODE} -i ${FILE} \
  146:                           -t "${LABEL} / $FILE" \
  147:                           -p plots_${LABEL}/${PREF} && \
  148:                         echo "... plotten $PREF OK"
  149:                 done
  150:                 ;;
  151:         esac
  152:         shift
  153:     done
  154: }
  155: 
  156: # ==============================================================================
  157: # (C) Hauptprogrammteil
  158: 
  159: # die Daten müssen vorher bereitgestellt werden, es sind
  160: # Gitterpunktsfelder mit np320 und in N->S Ausrichtung notwendig
  161: # wegen der hohen räumllichen Auflösung werden vorerst
  162: # sets mit je 5 Wintern bearbeitet, das ergibt bereits
  163: # Dateigrößen von ca. 10 GB
  164: 
  165: ERA5_BASE=/daten/erafive/work/ingokir/DatenDiagnoseKurs/CIRC-
  166: 
  167: # erst die Zeitsegmente erstellen, dann eddies, dann zeitmittel
  168: # zeitmittel zusammenfügen
  169: # setweise analyse
  170: 
  171: # zusätzliche Funktionen für die Analyse der ERA5 Daten
  172: Era5Step1(){
  173:     for SET in 1 2 3 4
  174:     do
  175:         LABEL=set${SET}
  176: 
  177:         DATA=data_${LABEL}/${LABEL}.
  178:         mkdir -p data_${LABEL}
  179: 
  180:         DATA_TA=${ERA5_BASE}-ta-DAY/ta-set${SET}.nc
  181:         DATA_UA=${ERA5_BASE}-ua-DAY-dkrz/ua-set${SET}.nc
  182:         DATA_VA=${ERA5_BASE}-va-DAY-dkrz/va-set${SET}.nc
  183: 
  184:         #WorkFlowSteps 2b 3
  185:         WorkFlowSteps 3
  186:     done
  187: }
  188: 
  189: Era5Step2(){
  190:     DATA=data_${LABEL}/${LABEL}.
  191:     mkdir -p data_${LABEL}
  192: 
  193:     for TYPE in kinen_ed kinen_zm mt_VT_ed mt_VT_zm mt_VU_ed mt_VU_zm \
  194:                          ta_ed ta_zm ua_ed ua_zm va_ed va_zm
  195:     do
  196:         cdo -s -divc,1715 -add \
  197:             -add \
  198:             -timsum data_set1/set1.${TYPE} -timsum data_set2/set2.${TYPE} \
  199:             -add \
  200:             -timsum data_set3/set3.${TYPE} -timsum data_set4/set4.${TYPE} \
  201:             ${DATA}${TYPE}_mean && echo "... $DATA  $TYPE ... OK"
  202:     done
  203: }
  204: 
  205: # ==============================================================================
  206: # ab hier folgt der Hauptprogrammteil
  207: #Era5Step1
  208: 
  209: # jetzt sind die Sets zu mergen
  210: LABEL=era5djf2
  211: DATA=data_${LABEL}/${LABEL}.
  212: #Era5Step2
  213: 
  214: # jetzt folgte der abschließende Teil der Analyse
  215: DRAW_COAST='geomap:showcoast:l:True='
  216: #WorkFlowSteps 5 6 7
  217: 
  218: # ==============================================================================
  219: # EndOfScript
  220: 

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