Changeset 1758 in lmdz_wrf


Ignore:
Timestamp:
Jan 17, 2018, 12:42:28 PM (7 years ago)
Author:
lfita
Message:

Adding computation of:

  • 'Forcompute_psl_ptarget': Function to compute the sea-level pressure following target_pressure value found in `p_interp.F'
  • 'compute_tv4d': 4D calculation of virtual temperaure
  • 'VirtualTemp1D': Function for 1D calculation of virtual temperaure
Location:
trunk/tools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/diag_tools.py

    r1726 r1758  
    3232# Forcompute_clt: Function to compute the total cloud fraction following 'newmicro.F90' from LMDZ via a Fortran module
    3333# W_diagnostic: Class to compute WRF diagnostics variables
     34# Forcompute_psl_ptarget: Function to compute the sea-level pressure following target_pressure value found in `p_interp.F'
    3435
    3536# Others just providing variable values
     
    737738                gen.percendone(ix*dy + iy,dx*dy, 5, 'diagnosted')
    738739                if terval[iy,ix] > 0.:
    739                     mslpv[iy,ix] = var_mslp(pressure[:,iy,ix], psurface[iy,ix],          \
     740                    mslpv[iy,ix] = var_mslp(pressure[:,iy,ix], psurface[iy,ix],      \
    740741                      terval[iy,ix], temperature[:,iy,ix], qvapor[:,iy,ix])
    741742                else:
     
    743744
    744745    return mslpv, mslpdims, mslpvdims
     746
     747def Forcompute_psl_ptarget(pa, ps, ta, hgt, qv, target_pressure, dimns, dimvns):
     748    """ Function to compute the sea-level pressure following target_pressure value
     749      found in `p_interp.F'
     750    Forcompute_psl_ptarget(pa, ps, ta, hgt, qv, dimns, dimvns)
     751      [pa]= pressure values (assuming [[t],z,y,x]) [Pa]
     752      [ps]= surface pressure values (assuming [[t],y,x]) [Pa]
     753      [ta]= air-temperature values (assuming [[t],z,y,x]) [K]
     754      [hgt]= opography (assuming [y,x]) [m]
     755      [qv]= water vapour mixing ratio (assuming [[t],z,y,x]) [kgkg-1]
     756      [dimns]= list of the name of the dimensions of [pa]
     757      [dimvns]= list of the name of the variables with the values of the
     758        dimensions of [pa]
     759    """
     760    fname = 'Forcompute_psl_ptarget'
     761
     762    psldims = dimns[:]
     763    pslvdims = dimvns[:]
     764
     765    if len(pa.shape) == 4:
     766        psl = np.zeros((pa.shape[0],pa.shape[2],pa.shape[3]), dtype=np.float)
     767        dx = pa.shape[3]
     768        dy = pa.shape[2]
     769        dz = pa.shape[1]
     770        dt = pa.shape[0]
     771        psldims.pop(1)
     772        pslvdims.pop(1)
     773
     774        pslt= fdin.module_fordiagnostics.compute_psl_ptarget4d2(                     \
     775          press=pa[:].transpose(), ps=ps[:].transpose(), hgt=hgt[:].transpose(),     \
     776          ta=ta[:].transpose(), qv=qv[:].transpose(), ptarget=target_pressure,       \
     777          d1=dx, d2=dy, d3=dz, d4=dt)
     778        psl = pslt.transpose()
     779    else:
     780        print errormsg
     781        print '  ' + fname + ': rank', len(pa.shape), 'not ready !!'
     782        print '  it only computes 4D [t,z,y,x] rank values'
     783        quit(-1)
     784
     785    return psl, psldims, pslvdims
    745786
    746787def compute_OMEGAw(omega, p, t, dimns, dimvns):
  • trunk/tools/diagnostics.inf

    r1582 r1758  
    2222prw, WRFprw, WRFdens@QVAPOR
    2323psl, WRFmslp, WRFp@PSFC@HGT@WRFt@QVAPOR
     24psl, WRFpsl_ptarget, WRFp@PSFC@WRFt@HGT@QVAPOR
    2425rvor, rvor, U@V
    2526rvors, WRFrvors, U10@V10@WRFpos
  • trunk/tools/diagnostics.py

    r1675 r1758  
    3030# def Forcompute_cllmh: Function to compute cllmh: low/medium/hight cloud fraction following newmicro.F90 from LMDZ via Fortran subroutine
    3131# Forcompute_clt: Function to compute the total cloud fraction following 'newmicro.F90' from LMDZ via a Fortran module
     32# Forcompute_psl_ptarget: Function to compute the sea-level pressure following target_pressure value found in `p_interp.F'
    3233
    3334# Others just providing variable values
     
    7879  'OMEGAw', 'RAINTOT',                                                               \
    7980  'rvors', 'td', 'turbulence', 'WRFclivi', 'WRFclwvl', 'WRFgeop', 'WRFp',            \
    80   'WRFrvors', 'ws', 'wds', 'wss', 'WRFheight', 'WRFheightrel', 'WRFua', 'WRFva']
     81  'WRFpsl_ptarget', 'WRFrvors', 'ws', 'wds', 'wss', 'WRFheight', 'WRFheightrel',     \
     82  'WRFua', 'WRFva']
    8183
    8284methods = ['accum', 'deaccum']
     
    331333for idiag in range(Ndiags):
    332334    print '    diagnostic:',diags[idiag]
    333     diag = diags[idiag].split('|')[0]
     335    diagn = diags[idiag].split('|')[0]
    334336    depvars = diags[idiag].split('|')[1].split('@')
    335337    if diags[idiag].split('|')[1].find('@') != -1:
    336338        depvars = diags[idiag].split('|')[1].split('@')
    337         if depvars[0] == 'deaccum': diag='deaccum'
    338         if depvars[0] == 'accum': diag='accum'
     339        if depvars[0] == 'deaccum': diagn='deaccum'
     340        if depvars[0] == 'accum': diagn='accum'
    339341        for depv in depvars:
    340342            if not ncobj.variables.has_key(depv) and not                             \
     
    356358            quit(-1)
    357359
    358     print "\n    Computing '" + diag + "' from: ", depvars, '...'
     360    print "\n    Computing '" + diagn + "' from: ", depvars, '...'
    359361
    360362# acraintot: accumulated total precipitation from WRF RAINC, RAINNC
    361     if diag == 'ACRAINTOT':
     363    if diagn == 'ACRAINTOT':
    362364           
    363365        var0 = ncobj.variables[depvars[0]]
     
    378380# accum: acumulation of any variable as (Variable, time [as [tunits]
    379381#   from/since ....], newvarname)
    380     elif diag == 'accum':
     382    elif diagn == 'accum':
    381383
    382384        var0 = ncobj.variables[depvars[0]]
     
    403405
    404406# cllmh with cldfra, pres
    405     elif diag == 'cllmh':
     407    elif diagn == 'cllmh':
    406408           
    407409        var0 = ncobj.variables[depvars[0]]
     
    428430
    429431# clt with cldfra
    430     elif diag == 'clt':
     432    elif diagn == 'clt':
    431433           
    432434        var0 = ncobj.variables[depvars]
     
    443445# deaccum: deacumulation of any variable as (Variable, time [as [tunits]
    444446#   from/since ....], newvarname)
    445     elif diag == 'deaccum':
     447    elif diagn == 'deaccum':
    446448
    447449        var0 = ncobj.variables[depvars[1]]
     
    465467
    466468# LMDZrh (pres, t, r)
    467     elif diag == 'LMDZrh':
     469    elif diagn == 'LMDZrh':
    468470           
    469471        var0 = ncobj.variables[depvars[0]][:]
     
    475477
    476478# LMDZrhs (psol, t2m, q2m)
    477     elif diag == 'LMDZrhs':
     479    elif diagn == 'LMDZrhs':
    478480           
    479481        var0 = ncobj.variables[depvars[0]][:]
     
    489491
    490492# mslp: mean sea level pressure (pres, psfc, terrain, temp, qv)
    491     elif diag == 'mslp' or diag == 'WRFmslp':
     493    elif diagn == 'mslp' or diagn == 'WRFmslp':
    492494           
    493495        var1 = ncobj.variables[depvars[1]][:]
     
    495497        var4 = ncobj.variables[depvars[4]][:]
    496498
    497         if diag == 'WRFmslp':
     499        if diagn == 'WRFmslp':
    498500            var0 = WRFp
    499501            var3 = WRFt
     
    518520
    519521# OMEGAw (omega, p, t) from NCL formulation (https://www.ncl.ucar.edu/Document/Functions/Contributed/omega_to_w.shtml)
    520     elif diag == 'OMEGAw':
     522    elif diagn == 'OMEGAw':
    521523           
    522524        var0 = ncobj.variables[depvars[0]][:]
     
    532534
    533535# raintot: instantaneous total precipitation from WRF as (RAINC + RAINC) / dTime
    534     elif diag == 'RAINTOT':
     536    elif diagn == 'RAINTOT':
    535537
    536538        var0 = ncobj.variables[depvars[0]]
     
    585587
    586588# rhs (psfc, t, q) from TimeSeries files
    587     elif diag == 'TSrhs':
     589    elif diagn == 'TSrhs':
    588590           
    589591        p0=100000.
     
    600602
    601603# td (psfc, t, q) from TimeSeries files
    602     elif diag == 'TStd' or diag == 'td':
     604    elif diagn == 'TStd' or diagn == 'td':
    603605           
    604606        var0 = ncobj.variables[depvars[0]][:]
     
    614616
    615617# td (psfc, t, q) from TimeSeries files
    616     elif diag == 'TStdC' or diag == 'tdC':
     618    elif diagn == 'TStdC' or diagn == 'tdC':
    617619           
    618620        var0 = ncobj.variables[depvars[0]][:]
     
    629631
    630632# wds (u, v)
    631     elif diag == 'TSwds' or diag == 'wds' :
     633    elif diagn == 'TSwds' or diagn == 'wds' :
    632634 
    633635        var0 = ncobj.variables[depvars[0]][:]
     
    642644
    643645# wss (u, v)
    644     elif diag == 'TSwss' or diag == 'wss':
     646    elif diagn == 'TSwss' or diagn == 'wss':
    645647           
    646648        var0 = ncobj.variables[depvars[0]][:]
     
    655657
    656658# turbulence (var)
    657     elif diag == 'turbulence':
     659    elif diagn == 'turbulence':
    658660
    659661        var0 = ncobj.variables[depvars][:]
     
    677679
    678680# WRFbils fom WRF as HFX + LH
    679     elif diag == 'WRFbils':
     681    elif diagn == 'WRFbils':
    680682           
    681683        var0 = ncobj.variables[depvars[0]][:]
     
    689691
    690692# WRFclivi WRF water vapour path WRFdens, QICE, QGRAUPEL, QHAIL
    691     elif diag == 'WRFclivi':
     693    elif diagn == 'WRFclivi':
    692694           
    693695        var0 = WRFdens
     
    714716
    715717# WRFclwvl WRF water cloud-condensed path WRFdens, QCLOUD, QICE, QGRAUPEL, QHAIL
    716     elif diag == 'WRFclwvl':
     718    elif diagn == 'WRFclwvl':
    717719           
    718720        var0 = WRFdens
     
    739741
    740742# WRFgeop geopotential from WRF as PH + PHB
    741     elif diag == 'WRFgeop':
     743    elif diagn == 'WRFgeop':
    742744        var0 = ncobj.variables[depvars[0]][:]
    743745        var1 = ncobj.variables[depvars[1]][:]
     
    762764        ncvar.insert_variable(ncobj, 'zg', diagout, dnames, diagoutvd, newnc)
    763765
     766# WRFmslp_ptarget sea-level pressure following ptarget method as WRFp, PSFC, WRFt, HGT, QVAPOR
     767    elif diagn == 'WRFpsl_ptarget':
     768        var0 = WRFp
     769        var1 = ncobj.variables[depvars[1]][:]
     770        var2 = WRFt
     771        var3 = ncobj.variables[depvars[3]][0,:,:]
     772        var4 = ncobj.variables[depvars[4]][:]
     773
     774        dnamesvar = list(ncobj.variables[depvars[4]].dimensions)
     775        dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames)
     776
     777        print 'Lluis dnamesvar:', dnamesvar
     778        print 'Lluis dvnamesvar:', dvnamesvar
     779        diagout = np.zeros(var0.shape, dtype=np.float)
     780        diagout, diagoutd, diagoutvd = diag.Forcompute_psl_ptarget(var0, var1, var2, \
     781          var3, var4, 700000., dnamesvar, dvnamesvar)
     782
     783        print 'Lluis diagoutd:', diagoutd
     784        print 'Lluis diagoutvd:', diagoutvd
     785        print 'Lluis shape:', diagout.shape
     786        # Removing the nonChecking variable-dimensions from the initial list
     787        varsadd = []
     788        for nonvd in NONchkvardims:
     789            if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd)
     790            varsadd.append(nonvd)
     791        print 'Lluis after:', diagoutvd
     792        print 'Lluis diagoutd:', diagoutd
     793        print 'Lluis diagoutvd:', diagoutvd
     794        print 'Lluis shape:', diagout.shape
     795
     796        ncvar.insert_variable(ncobj, 'psl', diagout, diagoutd, diagoutvd, newnc)
     797
    764798# WRFp pressure from WRF as P + PB
    765     elif diag == 'WRFp':
     799    elif diagn == 'WRFp':
    766800           
    767801        diagout = WRFp
     
    770804
    771805# WRFpos
    772     elif diag == 'WRFpos':
     806    elif diagn == 'WRFpos':
    773807           
    774808        dnamesvar = ncobj.variables['MAPFAC_M'].dimensions
     
    778812
    779813# WRFprw WRF water vapour path WRFdens, QVAPOR
    780     elif diag == 'WRFprw':
     814    elif diagn == 'WRFprw':
    781815           
    782816        var0 = WRFdens
     
    797831
    798832# WRFrh (P, T, QVAPOR)
    799     elif diag == 'WRFrh':
     833    elif diagn == 'WRFrh':
    800834           
    801835        dnamesvar = list(ncobj.variables[depvars[2]].dimensions)
     
    805839
    806840# WRFrhs (PSFC, T2, Q2)
    807     elif diag == 'WRFrhs':
     841    elif diagn == 'WRFrhs':
    808842           
    809843        var0 = ncobj.variables[depvars[0]][:]
     
    818852
    819853# rvors (u10, v10, WRFpos)
    820     elif diag == 'WRFrvors':
     854    elif diagn == 'WRFrvors':
    821855           
    822856        var0 = ncobj.variables[depvars[0]]
     
    831865
    832866# WRFt (T, P, PB)
    833     elif diag == 'WRFt':
     867    elif diagn == 'WRFt':
    834868        var0 = ncobj.variables[depvars[0]][:]
    835869        var1 = ncobj.variables[depvars[1]][:]
     
    854888
    855889# WRFua (U, V, SINALPHA, COSALPHA) to be rotated !!
    856     elif diag == 'WRFua':
     890    elif diagn == 'WRFua':
    857891        var0 = ncobj.variables[depvars[0]][:]
    858892        var1 = ncobj.variables[depvars[1]][:]
     
    884918
    885919# WRFua (U, V, SINALPHA, COSALPHA) to be rotated !!
    886     elif diag == 'WRFva':
     920    elif diagn == 'WRFva':
    887921        var0 = ncobj.variables[depvars[0]][:]
    888922        var1 = ncobj.variables[depvars[1]][:]
     
    912946
    913947# WRFtime
    914     elif diag == 'WRFtime':
     948    elif diagn == 'WRFtime':
    915949           
    916950        diagout = WRFtime
     
    922956
    923957# ws (U, V)
    924     elif diag == 'ws':
     958    elif diagn == 'ws':
    925959           
    926960        var0 = ncobj.variables[depvars[0]][:]
     
    949983
    950984# wss (u10, v10)
    951     elif diag == 'wss':
     985    elif diagn == 'wss':
    952986           
    953987        var0 = ncobj.variables[depvars[0]][:]
     
    962996
    963997# WRFheight height from WRF geopotential as WRFGeop/g
    964     elif diag == 'WRFheight':
     998    elif diagn == 'WRFheight':
    965999           
    9661000        diagout = WRFgeop/grav
     
    9761010
    9771011# WRFheightrel relative-height from WRF geopotential as WRFgeop(PH + PHB)/g-HGT 'WRFheightrel|PH@PHB@HGT
    978     elif diag == 'WRFheightrel':
     1012    elif diagn == 'WRFheightrel':
    9791013        var0 = ncobj.variables[depvars[0]][:]
    9801014        var1 = ncobj.variables[depvars[1]][:]
     
    9971031    else:
    9981032        print errormsg
    999         print '  ' + main + ": diagnostic '" + diag + "' not ready!!!"
     1033        print '  ' + main + ": diagnostic '" + diagn + "' not ready!!!"
    10001034        print '    available diagnostics: ', availdiags
    10011035        quit(-1)
     
    10241058# Global attributes
    10251059##
    1026 add_global_PyNCplot(newnc, main, None, '2.0')
     1060ncvar.add_global_PyNCplot(newnc, main, None, '2.0')
    10271061
    10281062gorigattrs = ncobj.ncattrs()
  • trunk/tools/module_ForDiagnostics.f90

    r1608 r1758  
    1414
    1515!!!!!!! Calculations
    16 ! compute_cllmh4D3: Computation of low, medium and high cloudiness from a 4D CLDFRA and pressure  being 3rd dimension the z-dim
    17 ! compute_cllmh3D3: Computation of low, medium and high cloudiness from a 3D CLDFRA and pressure  being 3rd dimension the z-dim
     16! compute_cllmh4D3: Computation of low, medium and high cloudiness from a 4D CLDFRA and pressure being
     17!   3rd dimension the z-dim
     18! compute_cllmh3D3: Computation of low, medium and high cloudiness from a 3D CLDFRA and pressure being
     19!   3rd dimension the z-dim
    1820! compute_cllmh: Computation of low, medium and high cloudiness
    1921! compute_clt4D3: Computation of total cloudiness from a 4D CLDFRA being 3rd dimension the z-dim
    2022! compute_clt3D3: Computation of total cloudiness from a 3D CLDFRA being 3rd dimension the z-dim
    2123! compute_clt: Computation of total cloudiness
     24! compute_psl_ptarget4d2: Compute sea level pressure using a target pressure. Similar to the Benjamin
     25!   and Miller (1990). Method found in p_interp.F90
     26! compute_tv4d: 4D calculation of virtual temperaure
     27! VirtualTemp1D: Function for 1D calculation of virtual temperaure
    2228
    2329!!!
     
    449455  END SUBROUTINE compute_clt
    450456
     457  SUBROUTINE compute_psl_ptarget4d2(press, ps, hgt, ta, qv, ptarget, psl, d1, d2, d3, d4)
     458    ! Subroutine to compute sea level pressure using a target pressure. Similar to the Benjamin
     459    !   and Miller (1990). Method found in p_interp.F90
     460
     461    IMPLICIT NONE
     462
     463    INTEGER, INTENT(in)                                  :: d1, d2, d3, d4
     464    REAL(r_k), DIMENSION(d1,d2,d3,d4), INTENT(in)        :: press, ta, qv
     465    REAL(r_k), DIMENSION(d1,d2,d4), INTENT(in)           :: ps
     466    REAL(r_k), DIMENSION(d1,d2), INTENT(in)              :: hgt
     467    REAL(r_k), INTENT(in)                                :: ptarget
     468    REAL(r_k), DIMENSION(d1,d2,d4), INTENT(out)          :: psl
     469
     470! Local
     471    INTEGER                                              :: i, j, it
     472    INTEGER                                              :: kin
     473    INTEGER                                              :: kupper
     474    REAL(r_k)                                            :: dpmin, dp, tbotextrap,   &
     475      tvbotextrap, virtual
     476    ! Exponential related to standard atmosphere lapse rate r_d*gammav/g
     477    REAL(r_k), PARAMETER                                 :: expon=r_d*gammav/grav
     478
     479!!!!!!! Variables
     480! press: Atmospheric pressure [Pa]
     481! ps: surface pressure [Pa]
     482! hgt: surface height
     483! ta: temperature [K]
     484! qv: water vapor mixing ratio
     485! dz: number of vertical levels
     486! psl: sea-level pressure
     487
     488    fname = 'compute_psl_ptarget4d2'
     489
     490    ! Minimal distance between pressures [Pa]
     491    dpmin=1.e4
     492    psl=0.
     493
     494    DO i=1,d1
     495      DO j=1,d2
     496        IF (hgt(i,j) /= 0.) THEN
     497          DO it=1,d4
     498
     499            ! target pressure to be used for the extrapolation [Pa] (defined in namelist.input)
     500            !   ptarget = 70000. default value
     501
     502            ! We are below both the ground and the lowest data level.
     503
     504            !      First, find the model level that is closest to a "target" pressure
     505            !        level, where the "target" pressure is delta-p less that the local
     506            !        value of a horizontally smoothed surface pressure field.  We use
     507            !        delta-p = 150 hPa here. A standard lapse rate temperature profile
     508            !        passing through the temperature at this model level will be used
     509            !        to define the temperature profile below ground.  This is similar
     510            !        to the Benjamin and Miller (1990) method, using 
     511            !        700 hPa everywhere for the "target" pressure.
     512
     513            kupper = 0
     514            loop_kIN: DO kin=d3,1,-1
     515              kupper = kin
     516              dp=abs( press(i,j,kin,it) - ptarget )
     517              IF (dp .GT. dpmin) EXIT loop_kIN
     518              dpmin=min(dpmin,dp)
     519            ENDDO loop_kIN
     520
     521            tbotextrap=ta(i,j,kupper,it)*(ps(i,j,it)/ptarget)**expon
     522            tvbotextrap=virtualTemp1D(tbotextrap,qv(i,j,kupper,it))
     523
     524            psl(i,j,it) = ps(i,j,it)*((tvbotextrap+gammav*hgt(i,j))/tvbotextrap)**(1/expon)
     525          END DO
     526        ELSE
     527          psl(i,j,:) = ps(i,j,:)
     528        END IF
     529      END DO
     530    END DO
     531
     532    RETURN
     533
     534  END SUBROUTINE compute_psl_ptarget4d2
     535
     536  SUBROUTINE compute_tv4d(ta,qv,tv,d1,d2,d3,d4)
     537! 4D calculation of virtual temperaure
     538
     539    IMPLICIT NONE
     540
     541    INTEGER, INTENT(in)                                  :: d1, d2, d3, d4
     542    REAL(r_k), DIMENSION(d1,d2,d3,d4), INTENT(in)        :: ta, qv
     543    REAL(r_k), DIMENSION(d1,d2,d3,d4), INTENT(out)       :: tv
     544
     545! Variables
     546! ta: temperature [K]
     547! qv: mixing ratio [kgkg-1]
     548! tv: virtual temperature
     549
     550    tv = ta*(oneRK+(qv/epsilonv))/(oneRK+qv)
     551
     552  END SUBROUTINE compute_tv4d
     553
     554  FUNCTION VirtualTemp1D (ta,qv) result (tv)
     555! 1D calculation of virtual temperaure
     556
     557    IMPLICIT NONE
     558
     559    REAL(r_k), INTENT(in)                                :: ta, qv
     560    REAL(r_k)                                            :: tv
     561
     562! Variables
     563! ta: temperature [K]
     564! qv: mixing ratio [kgkg-1]
     565
     566    tv = ta*(oneRK+(qv/epsilonv))/(oneRK+qv)
     567
     568  END FUNCTION VirtualTemp1D
     569
     570
    451571END MODULE module_ForDiagnostics
  • trunk/tools/module_definitions.f90

    r1676 r1758  
    2626! Scientific constants
    2727  REAL(r_k), PARAMETER                                   :: grav = 9.81 ! gravity [ms-1]
    28   REAL(r_k), PARAMETER                                   :: Cp = 29.07 ! gravity [Jmol-1K-1]
    29   REAL(r_k), PARAMETER                                   :: Cp_g = 1.0035 ! gravity [Jg-1K-1]
    30   REAL(r_k), PARAMETER                                   :: Rd = 8.3144598 ! gravity [JKgm2s-2K-1mol-1/JK-1mol-1]
    31   REAL(r_k), PARAMETER                                   :: RCp = 0.286 ! gravity [-]
    32   REAL(r_k), PARAMETER                                   :: p0ref = 100000 ! gravity [Pa]
     28  REAL(r_k), PARAMETER                                   :: Cpmol = 29.07 ! Molar gas heat capacity at constant pressure [Jmol-1K-1]
     29  REAL(r_k), PARAMETER                                   :: Cp_g = 1.0035 ! Gas heat capacity [Jg-1K-1]
     30  REAL(r_k), PARAMETER                                   :: Rstar = 8.3144621 ! Universal molar air constant [JKgm2s-2K-1mol-1/JK-1mol-1]
     31  REAL(r_k), PARAMETER                                   :: RCp = 0.286 ! R*Cp [-]
     32  REAL(r_k), PARAMETER                                   :: p0ref = 100000 ! pressure reference [Pa]
     33! Ratio between molecular weights of water and dry air
     34  REAL(r_k), PARAMETER                                   :: mol_watdry = 0.622
     35! Standard atmospheric lapse-rate [Km-1]
     36  REAL, PARAMETER                                        :: gammav = 6.5e-3
     37! WRF Gas constant for dry air [JK-1kg-1]
     38  REAL(r_k), PARAMETER                                   :: r_d = 287.
     39! WRF Gas constant for wet air [JK-1kg-1]
     40  REAL(r_k), PARAMETER                                   :: r_v = 461.6
     41! WRF Dry air heat capacity [JK-1kg-1]
     42  REAL(r_k), PARAMETER                                   :: cp = 7.*r_d/2.
     43! WRF p 1000 mb constant [Pa]
     44  REAL(r_k), PARAMETER                                   :: p1000mb = 100000.
     45! WRF Latent Heat for water vapour [Jkg-1]
     46  REAL(r_k), PARAMETER                                   :: XLV = 2.5E6
     47! epislon r_d/r_v for Virtual temperature
     48  REAL(r_k), PARAMETER                                   :: epsilonv = 0.622
    3349
    3450END MODULE module_definitions
Note: See TracChangeset for help on using the changeset viewer.