Changeset 2036 in lmdz_wrf for trunk/tools


Ignore:
Timestamp:
Aug 7, 2018, 3:28:36 PM (7 years ago)
Author:
lfita
Message:

Adding getting CDX variables on snd point, sfc point and 2D maps

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/get_WRFsounding-surface_data.bash

    r2023 r2036  
    99  echo "************************************"
    1010  echo "get_WRFsounding-surface_data.bash [scratch] [odir] [expl]                    \
    11     [sndid],[sndlon],[sndlat] [sfcid],[sfclon],[sfclat] [infilen] [wrfsnddiags]      \
    12     [wrfsfcdiags] [wrfsfcnodiags]"
     11    [sndid],[sndlon],[sndlat] [sfcid],[sfclon],[sfclat] [infilen]                    \
     12    [wrfsnddiags],[wrfsfcdiags],[wrfsfcnodiags],[wrfcdxdiags],[wrfcdxnodiags]"
    1313else
    1414
     
    3535
    3636infilen=$6
    37 wrfsnddiags=$7
    38 wrfsfcdiags=$8
    39 wrfsfcnodiags=$9
     37
     38if test ! $7 = 'None'; then
     39  wrfsnddiags=`echo $7 | tr ',' ' ' | awk '{print $1}'`
     40  wrfsfcdiags=`echo $7 | tr ',' ' ' | awk '{print $2}'`
     41  wrfsfcnodiags=`echo $7 | tr ',' ' ' | awk '{print $3}'`
     42  wrfcdxdiags=`echo $7 | tr ',' ' ' | awk '{print $4}'`
     43  wrfcdxnodiags=`echo $7 | tr ',' ' ' | awk '{print $5}'`
     44fi
    4045
    4146function isin_list() {
     
    430435}
    431436
     437function get_WRFCDXsurface_data(){
     438# Function to get the WRFCDX data to compute analysis in a surface point
     439#   stlon= longitude value of the station
     440#   stlat= latitude value of the station
     441#   filen= name of the file
     442#   lonvarn= name of the longitude variable
     443#   latvarn= name of the latitude variable
     444#   sfcdiagnames= diagnostics to compute (as ':' separated list)
     445#   nondiagvs= ':' list of variables which are not from a diagnostics ('None' for
     446#     without)
     447
     448  funcvals=$1
     449
     450  stlon=`echo ${funcvals} | tr '#' ' ' | awk '{print $1}'`
     451  stlat=`echo ${funcvals} | tr '#' ' ' | awk '{print $2}'`
     452  filen=`echo ${funcvals} | tr '#' ' ' | awk '{print $3}'`
     453  lonvarn=`echo ${funcvals} | tr '#' ' ' | awk '{print $4}'`
     454  latvarn=`echo ${funcvals} | tr '#' ' ' | awk '{print $5}'`
     455  sfcdiagnames=`echo ${funcvals} | tr '#' ' ' | awk '{print $6}'`
     456  nondiagvs=`echo ${funcvals} | tr '#' ' ' | awk '{print $7}'`
     457
     458  vals=${lonvarn}':'${latvarn}':Time|0'
     459  gridsndv=`python ${pyHOME}/nc_var.py -o get_point -f ${filen} -S ${vals}           \
     460    -v ${stlon},${stlat} | tr ' ' '!'`
     461  echo "* get grid point: "${stlon}", "${stlat} >> ${ofileins}
     462  echo python ${pyHOME}/nc_var.py -o get_point -f ${filen} -S "'"${vals}"'"          \
     463    -v ${stlon},${stlat} >> ${ofileins}
     464  echo " " >> ${ofileins}
     465  xsnd=`echo ${gridsndv} | tr '!' ' ' | awk '{print $1}' | tr ',' ' ' |              \
     466   awk '{print $1}'`
     467  ysnd=`echo ${gridsndv} | tr '!' ' ' | awk '{print $1}' | tr ',' ' ' |              \
     468  awk '{print $2}'`
     469  dsnd=`echo ${gridsndv} | tr '!' ' ' | awk '{print $2}'`
     470
     471  xsnd1=`expr ${xsnd} + 1`
     472  ysnd1=`expr ${ysnd} + 1`
     473
     474  # Getting values
     475  if ${fscratch}; then rm ${simsfcptf} >& /dev/null; fi
     476  if test ! -f ${simsfcptf}; then
     477    values='Time,0,-1,1@south_north,'${ysnd}','${ysnd}',1@'
     478    values=${values}'west_east,'${xsnd}','${xsnd}',1:False'
     479    python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen}               \
     480      -S ${values} -v all
     481    if test $? -ne 0; then
     482      echo ${errmsg}
     483      echo "  python failed!!"
     484      echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen}        \
     485        -S "'"${values}"'" -v all
     486      exit
     487    fi
     488  echo "* get values at sfc point: "${stlon}", "${stlat} >> ${ofileins}
     489  echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen}            \
     490      -S "'"${values}"'" -v all >> ${ofileins}
     491  echo " " >> ${ofileins}
     492
     493    ofilen='newfile_multidims.nc'
     494    mv ${ofilen} ${simsfcptf}
     495  fi
     496   
     497  # Computing sfc diagnostics
     498  sfcdiagd='Time@WRFtime'
     499  diagns=`echo ${sfcdiagnames} | tr ':' ' '`
     500
     501  idiag=1
     502  for diagn in ${diagns}; do
     503    diagv=`cat $pyHOME/diagnostics.inf | grep WRF | grep ${diagn}',' | tr ',' ' ' |  \
     504      awk '{print $2"|"$3}'`
     505    if test ${idiag} -eq 1; then
     506      sfcdiagvals=${diagv}
     507    else
     508      sfcdiagvals=${sfcdiagvals}','${diagv}
     509    fi
     510    idiag=`expr ${idiag} + 1`
     511  done
     512
     513  if ${fscratch}; then rm ${simsfcdiagsf}; fi
     514  if test ! -f ${simsfcdiagsf}; then
     515    python ${pyHOME}/diagnostics.py -f ${simsfcptf} -d ${sfcdiagd} -v ${sfcdiagvals}
     516    if test $? -ne 0; then
     517      echo ${errmsg}
     518      echo "  python failed!!"
     519      echo python ${pyHOME}/diagnostics.py -f ${simsfcptf} -d "'"${sfcdiagd}"'"      \
     520        -v "'"${sfcdiagvals}"'"
     521      exit
     522    fi
     523    echo "* diagnostics at sfc point: "${stlon}", "${stlat} >> ${ofileins}
     524    echo python ${pyHOME}/diagnostics.py -f ${simsfcptf} -d "'"${sfcdiagd}"'"        \
     525      -v "'"${sfcdiagvals}"'" >> ${ofileins}
     526    echo " " >> ${ofileins}
     527    mv diagnostics.nc ${simsfcdiagsf}
     528  fi
     529
     530  #Adding non-diagnostic variables
     531  if test ! ${nondiagvs} = 'None'; then
     532    varsadd=`echo ${nondiagvs} | tr ':' ' '`
     533    for vadd in ${varsadd}; do
     534      python ${pyHOME}/nc_var.py -o fvaradd -S ${simsfcptf},${vadd} -f ${simsfcdiagsf}
     535      if test $? -ne 0; then
     536        echo ${errmsg}
     537        echo "  python failed!!"
     538        echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcptf},${vadd}"'"     \
     539          -f ${simsfcdiagsf}
     540        exit
     541        rm ${simsfcdiagsf}
     542      fi
     543      echo "* adding variable '"${vadd}"' at sfc point: "${stlon}", "${stlat} >> ${ofileins}
     544      echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcptf},${vadd}"'"       \
     545        -f ${simsfcdiagsf} >> ${ofileins}
     546      echo " " >> ${ofileins}
     547      # CF varname
     548      CFvarn=`python $pyHOME/generic.py -o variables_values -S ${vadd} | tr ':' ' ' |\
     549        awk '{print $1}'`
     550      if test $? -ne 0; then
     551        echo ${errmsg}
     552        echo "  python failed!!"
     553        echo python $pyHOME/generic.py -o variables_values -S ${vadd}
     554        exit
     555        rm ${simsfcdiagsf}
     556      fi
     557      python $pyHOME/nc_var.py -o chvarname -S ${CFvarn} -f ${simsfcdiagsf} -v ${vadd}
     558      if test $? -ne 0; then
     559        echo ${errmsg}
     560        echo "  python failed!!"
     561        echo python ${pyHOME}/nc_var.py -o chvarname -S ${CFvarn} -f ${simsfcdiagsf} \
     562          -v ${vadd}
     563        exit
     564        rm ${simsfcdiagsf}
     565      fi
     566    done
     567  fi
     568}
     569
     570function get_WRFCDXsfc2D_data(){
     571# Function to get the data from WRFCDX to compute analysis in a surface map
     572#   filen= name of the file
     573#   sfcdiagnames= diagnostics to compute (as ':' separated list)
     574#   nondiagvs= ':' list of variables which are not from a diagnostics ('None' for
     575#     without)
     576#   sfcmapdiagd= name of the dimensions and dimension variables to use for diagnostics
     577
     578  funcvals=$1
     579
     580  filen=`echo ${funcvals} | tr '#' ' ' | awk '{print $1}'`
     581  sfcdiagnames=`echo ${funcvals} | tr '#' ' ' | awk '{print $2}'`
     582  nondiagvs=`echo ${funcvals} | tr '#' ' ' | awk '{print $3}'`
     583  sfcmapdiagd=`echo ${funcvals} | tr '#' ' ' | awk '{print $4}'`
     584
     585  # Computing sfc diagnostics
     586  diagns=`echo ${sfcdiagnames} | tr ':' ' '`
     587
     588  # getting that variables only required for the diagnostics
     589  vardiags=''
     590  idiag=1
     591  for diagn in ${diagns}; do
     592    diagv=`cat $pyHOME/diagnostics.inf | grep WRF | grep ${diagn}',' | tr ',' ' ' |  \
     593      awk '{print $2"|"$3}'`
     594    if test ${idiag} -eq 1; then
     595      sfcdiagvals=${diagv}
     596      vardiags=`echo ${diagv} | tr '|' ' ' | awk '{print $2}' | tr '@' ':'`
     597    else
     598      sfcdiagvals=${sfcdiagvals}','${diagv}
     599      vardiag=`echo ${diagv} | tr '|' ' ' | awk '{print $2}' | tr '@' ' '`
     600      for vd in ${vardiag}; do
     601        if ! $(isin_list ${vardiags} ${vd}); then vardiags=${vardiags}':'${vd}; fi
     602      done
     603    fi
     604    idiag=`expr ${idiag} + 1`
     605  done
     606
     607  # Inlcuding non-diagnostics
     608  if test ! ${nondiagvs} = 'None'; then
     609    nvns=`echo ${nondiagvs} | tr ':' ' '`
     610    for vn in ${nvns}; do
     611      if ! $(isin_list ${vardiags} ${vn}); then vardiags=${vardiags}':'${vn}; fi
     612    done
     613    if ! $(isin_list ${vardiags} 'time'); then vardiags=${vardiags}':time'; fi
     614  fi
     615  vardiag=`echo ${vardiags} | tr ':' ','`
     616 
     617  # Getting values
     618  if ${fscratch}; then rm ${simsfcmapf} >& /dev/null; fi
     619  if test ! -f ${simsfcmapf}; then
     620    values='Time,0,-1,1@south_north,0,-1,1@west_east,0,-1,1:False'
     621    python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen}               \
     622      -S ${values} -v ${vardiag}
     623    if test $? -ne 0; then
     624      echo ${errmsg}
     625      echo "  python failed!!"
     626      echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen}        \
     627        -S "'"${values}"'"  -v ${vardiag}
     628      exit
     629    fi
     630    echo "* get values for 2D map diagnostics: " >> ${ofileins}
     631    echo python ${pyHOME}/nc_var.py -o DataSetSection_multidims -f ${filen}          \
     632      -S "'"${values}"'" -v ${vardiag} >> ${ofileins}
     633    echo " " >> ${ofileins}
     634
     635    ofilen='newfile_multidims.nc'
     636    mv ${ofilen} ${simsfcmapf}
     637  fi
     638
     639  if ${fscratch}; then rm ${simsfcmapdiagsf}; fi
     640  if test ! -f ${simsfcmapdiagsf}; then
     641    python ${pyHOME}/diagnostics.py -f ${simsfcmapf} -d ${sfcmapdiagd}               \
     642      -v ${sfcdiagvals}
     643    if test $? -ne 0; then
     644      echo ${errmsg}
     645      echo "  python failed!!"
     646      echo python ${pyHOME}/diagnostics.py -f ${simsfcmapf} -d "'"${sfcmapdiagd}"'"  \
     647        -v "'"${sfcdiagvals}"'"
     648      exit
     649    fi
     650    echo "* diagnostics for sfc 2D map: " >> ${ofileins}
     651    echo python ${pyHOME}/diagnostics.py -f ${simsfcmapf} -d "'"${sfcmapdiagd}"'"    \
     652      -v "'"${sfcdiagvals}"'" >> ${ofileins}
     653    echo " " >> ${ofileins}
     654    mv diagnostics.nc ${simsfcmapdiagsf}
     655
     656    #Adding non-diagnostic variables
     657    if test ! ${nondiagvs} = 'None'; then
     658      varsadd=`echo ${nondiagvs} | tr ':' ' '`
     659      for vadd in ${varsadd}; do
     660        python ${pyHOME}/nc_var.py -o fvaradd -S ${simsfcmapf},${vadd}               \
     661          -f ${simsfcmapdiagsf}
     662        if test $? -ne 0; then
     663          echo ${errmsg}
     664          echo "  python failed!!"
     665          echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcmapf},${vadd}"'"  \
     666            -f ${simsfcmapdiagsf}
     667          exit
     668          rm ${simsfcmapdiagsf}
     669        fi
     670        echo "* adding variable '"${vadd}"' at sfc map: " >> ${ofileins}
     671        echo python ${pyHOME}/nc_var.py -o fvaradd -S "'"${simsfcmapf},${vadd}"'"    \
     672          -f ${simsfcmapdiagsf} >> ${ofileins}
     673        echo " " >> ${ofileins}
     674        # CF varname
     675        CFvarn=`python $pyHOME/generic.py -o variables_values -S ${vadd} |           \
     676          tr ':' ' ' | awk '{print $1}'`
     677        if test $? -ne 0; then
     678          echo ${errmsg}
     679          echo "  python failed!!"
     680          echo python $pyHOME/generic.py -o variables_values -S ${vadd}
     681          exit
     682          rm ${simsfcmapdiagsf}
     683        fi
     684        python $pyHOME/nc_var.py -o chvarname -S ${CFvarn} -f ${simsfcmapdiagsf}     \
     685          -v ${vadd}
     686        if test $? -ne 0; then
     687          echo ${errmsg}
     688          echo "  python failed!!"
     689          echo python ${pyHOME}/nc_var.py -o chvarname -S ${CFvarn}                  \
     690            -f ${simsfcmapdiagsf} -v ${vadd}
     691          exit
     692          rm ${simsfcmapdiagsf}
     693        fi
     694      done
     695    fi
     696  fi
     697}
     698
     699
    432700#######    #######
    433701## MAIN
     
    468736
    469737  # Surface maps
    470   if test ! ${sfcmapid} = 'None'; then
    471     simsfcmapf=${odir}'/simout_vars_sfcmap_'${stid}'_'${expl}'_'${fdate}'.nc'
    472     simsfcmapdiagsf=${odir}'/simout_sfcmapdiags_'${stid}'_'${expl}'_'${fdate}'.nc'
    473 
    474     fvals=${infilen}'#'${wrfsfcdiags}'#'${wrfsfcnodiags}
    475     get_WRFsfc2D_data ${fvals}
     738  simsfcmapf=${odir}'/simout_vars_sfcmap_'${expl}'_'${fdate}'.nc'
     739  simsfcmapdiagsf=${odir}'/simout_sfcmapdiags_'${expl}'_'${fdate}'.nc'
     740
     741  fvals=${infilen}'#'${wrfsfcdiags}'#'${wrfsfcnodiags}
     742  get_WRFsfc2D_data ${fvals}
     743
     744  # cdx snd
     745  if test ! ${sndid} = 'None'; then
     746    stid=${sndid}
     747    simsfcptf=${odir}'/simcdx_vars_sfcpt_'${stid}'_'${expl}'_'${fdate}'.nc'
     748    simsfcdiagsf=${odir}'/simcdx_sfcdiags_'${stid}'_'${expl}'_'${fdate}'.nc'
     749 
     750    fvals=${sndlon}'#'${sndlat}'#'${infilen}'#LON#LAT#'${wrfcdxdiags}'#'
     751    fvals=${fvals}${wrfcdxnodiags}
     752    get_WRFsurface_data ${fvals}
     753  fi
     754
     755  # cdx Surface
     756  if test ! ${sfcid} = 'None'; then
     757    stid=${sfcid}
     758    simsfcptf=${odir}'/simcdx_vars_sfcpt_'${stid}'_'${expl}'_'${fdate}'.nc'
     759    simsfcdiagsf=${odir}'/simcdx_sfcdiags_'${stid}'_'${expl}'_'${fdate}'.nc'
     760 
     761    fvals=${sfclon}'#'${sfclat}'#'${infilen}'#LON#LAT#'${wrfcdxdiags}'#'
     762    fvals=${fvals}${wrfcdxnodiags}
     763    get_WRFCDXsurface_data ${fvals}
     764  fi
     765
     766  # cdx Surface maps
     767  simsfcmapf=${odir}'/simcdx_vars_sfcmap_'${expl}'_'${fdate}'.nc'
     768  simsfcmapdiagsf=${odir}'/simcdx_sfcmapdiags_'${expl}'_'${fdate}'.nc'
     769
     770  fvals=${infilen}'#'${wrfcdxdiags}'#'${wrfcdxnodiags}
     771  get_WRFCDXsfc2D_data ${fvals}
    476772
    477773fi
Note: See TracChangeset for help on using the changeset viewer.