Changeset 1909 in lmdz_wrf for trunk/tools


Ignore:
Timestamp:
Apr 19, 2018, 7:28:59 PM (7 years ago)
Author:
lfita
Message:

Adding:

  • `fog_FRAML50': fog and visibility following Gultepe and Milbrandt, (2010)
  • `var_hus': relative humidity using August-Roche-Magnus approximation [1]

Fixing: fog_K84' and fog_RUC'

Location:
trunk/tools
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/diag_tools.py

    r1908 r1909  
    3535# Forcompute_fog_K84: Computation of fog and visibility following Kunkel, (1984)
    3636# Forcompute_fog_RUC: Computation of fog and visibility following RUC method Smirnova, (2000)
     37# Forcompute_fog_FRAML50: fog and visibility following Gultepe and Milbrandt, (2010)
    3738# Forcompute_potevap_orPM: Function to compute potential evapotranspiration following
    3839#   Penman-Monteith formulation implemented in ORCHIDEE
     
    11751176    return var1, var2, vardims, varvdims
    11761177
    1177 def Forcompute_fog_RUC(qcloud, qice, dimns, dimvns):
     1178def Forcompute_fog_RUC(qvapor, temp, pres, dimns, dimvns):
    11781179    """ Function to compute fog and visibility following RUC method Smirnova, (2000)
    1179     Forcompute_fog_K84(qcloud, qice, dimns, dimvns)
    1180       [qcloud]= cloud mixing ratio [kgk-1]
    1181       [qice]= ice mixing ratio [kgk-1]
     1180    Forcompute_fog_RUC(qcloud, qice, dimns, dimvns)
     1181      [qvapor]= water vapor mixing ratio [kgk-1]
     1182      [temp]= temperature [K]
     1183      [pres]= pressure [Pa]
    11821184      [dimns]= list of the name of the dimensions of [uas]
    11831185      [dimvns]= list of the name of the variables with the values of the
     
    11891191    varvdims = dimvns[:]
    11901192
    1191     if len(qcloud.shape) == 4:
    1192         var= np.zeros((qcloud.shape[0],qcloud.shape[2],qcloud.shape[3]), dtype=np.float)
    1193 
    1194         dx = qcloud.shape[3]
    1195         dy = qcloud.shape[2]
    1196         dz = qcloud.shape[1]
    1197         dt = qcloud.shape[0]
     1193    if len(qvapor.shape) == 4:
     1194        var= np.zeros((qvapor.shape[0],qvapor.shape[2],qvapor.shape[3]), dtype=np.float)
     1195
     1196        dx = qvapor.shape[3]
     1197        dy = qvapor.shape[2]
     1198        dz = qvapor.shape[1]
     1199        dt = qvapor.shape[0]
    11981200        vardims.pop(1)
    11991201        varvdims.pop(1)
    12001202
    12011203        pvar1, pvar2 = fdin.module_fordiagnostics.compute_fog_ruc(                   \
    1202           qc=qcloud[:,0,:,:].transpose(), qi=qice[:,0,:,:].transpose(), d1=dx, d2=dy,\
    1203           d3=dt)
     1204          qv=qvapor[:,0,:,:].transpose(), ta=temp[:,0,:,:].transpose(),              \
     1205          pres=pres[:,0,:,:].transpose(), d1=dx, d2=dy, d3=dt)
    12041206        var1 = pvar1.transpose()
    12051207        var2 = pvar2.transpose()
     1208    elif len(qvapor.shape) == 3:
     1209        var= np.zeros((qvapor.shape[0],qvapor.shape[1],qvapor.shape[2]), dtype=np.float)
     1210
     1211        dx = qvapor.shape[2]
     1212        dy = qvapor.shape[1]
     1213        dt = qvapor.shape[0]
     1214
     1215        pvar1, pvar2 = fdin.module_fordiagnostics.compute_fog_ruc(                   \
     1216          qv=qvapor[:].transpose(), ta=temp[:].transpose(), pres=pres[:].transpose(),\
     1217          d1=dx, d2=dy, d3=dt)
     1218        var1 = pvar1.transpose()
     1219        var2 = pvar2.transpose()
    12061220    else:
    12071221        print errormsg
    12081222        print '  ' + fname + ': rank', len(qcloud.shape), 'not ready !!'
    1209         print '  it only computes 4D [t,z,y,x] rank values'
     1223        print '  it only computes 4D [t,z,y,x] or 3D [t,z,y,x] rank values'
     1224        quit(-1)
     1225
     1226    return var1, var2, vardims, varvdims
     1227
     1228def Forcompute_fog_FRAML50(qvapor, temp, pres, dimns, dimvns):
     1229    """ Function to compute fog (vis < 1km) and visibility following FRAM-L 50 % prob
     1230         Gultepe, and Milbrandt, (2010), J. Appl. Meteor. Climatol.
     1231    Forcompute_fog_FRAML50(qvapor, temp, pres, dimns, dimvns)
     1232      [qvapor]= vapor mixing ratio [kgk-1]
     1233      [temp]= temperature [K]
     1234      [pres]= pressure [Pa]
     1235      [dimns]= list of the name of the dimensions of [uas]
     1236      [dimvns]= list of the name of the variables with the values of the
     1237        dimensions of [qvapor]
     1238    """
     1239    fname = 'Forcompute_fog_FRAML50'
     1240
     1241    vardims = dimns[:]
     1242    varvdims = dimvns[:]
     1243
     1244    if len(qvapor.shape) == 4:
     1245        var= np.zeros((qvapor.shape[0],qvapor.shape[2],qvapor.shape[3]), dtype=np.float)
     1246
     1247        dx = qvapor.shape[3]
     1248        dy = qvapor.shape[2]
     1249        dz = qvapor.shape[1]
     1250        dt = qvapor.shape[0]
     1251        vardims.pop(1)
     1252        varvdims.pop(1)
     1253
     1254        pvar1, pvar2 = fdin.module_fordiagnostics.compute_fog_framl50(               \
     1255          qv=qvapor[:,0,:,:].transpose(), ta=temp[:,0,:,:].transpose(),              \
     1256          pres=pres[:,0,:,:].transpose(), d1=dx, d2=dy, d3=dt)
     1257        var1 = pvar1.transpose()
     1258        var2 = pvar2.transpose()
     1259    elif len(qvapor.shape) == 3:
     1260        var= np.zeros((qvapor.shape[0],qvapor.shape[1],qvapor.shape[2]), dtype=np.float)
     1261
     1262        dx = qvapor.shape[2]
     1263        dy = qvapor.shape[1]
     1264        dt = qvapor.shape[0]
     1265
     1266        pvar1, pvar2 = fdin.module_fordiagnostics.compute_fog_framl50(               \
     1267          qv=qvapor[:].transpose(), ta=temp[:].transpose(), pres=pres[:].transpose(),\
     1268          d1=dx, d2=dy, d3=dt)
     1269        var1 = pvar1.transpose()
     1270        var2 = pvar2.transpose()
     1271    else:
     1272        print errormsg
     1273        print '  ' + fname + ': rank', len(qvapor.shape), 'not ready !!'
     1274        print '  it only computes 4D [t,z,y,x] or 3D [t,y,x] rank values'
    12101275        quit(-1)
    12111276
  • trunk/tools/diagnostics.inf

    r1908 r1909  
    1111clivi, WRFclivi, WRFdens@QICE@QHAIL@QGRAUPEL
    1212clwvi, WRFclwvi, WRFdens@QCLOUD@QICE@QHAIL@QGRAUPEL
     13fog, fog_FRAML50, QVAPOR@WRFt@WRFp
     14fog, fog_FRAML50, Q2@T2@PSFC
    1315fog, fog_K84, QCLOUD@QICE
    14 fog, fog_RUC, QCLOUD@QICE
     16fog, fog_RUC, QVAPOR@WRFt@WRFp
     17fog, fog_RUC, Q2@T2@PSFC
    1518hur, LMDZrh, pres@t@r
    1619hur, WRFrh, WRFrh@T@P@PB
  • trunk/tools/diagnostics.py

    r1908 r1909  
    536536          newnc)
    537537
    538 # fog_K84: Computation of fog and visibility following Kunkel, (1984)
     538# fog_K84: Computation of fog and visibility following Kunkel, (1984) as QCLOUD, QICE
    539539    elif diagn == 'fog_K84':
    540540
     
    556556        ncvar.insert_variable(ncobj, 'fogvisblty', diag2, diagoutd, diagoutvd, newnc)
    557557
    558 # fog_RUC: Computation of fog and visibility following Kunkel, (1984)
     558# fog_RUC: Computation of fog and visibility following Kunkel, (1984) as QVAPOR,
     559#    WRFt, WRFp or Q2, T2, PSFC
    559560    elif diagn == 'fog_RUC':
    560561
    561562        var0 = ncobj.variables[depvars[0]]
    562         var1 = ncobj.variables[depvars[1]]
     563        print gen.infmsg
     564        if depvars[1] == 'WRFt':
     565            print '  ' + main + ": computing '" + diagn + "' using 3D variables !!"
     566            var1 = WRFt
     567            var2 = WRFp
     568        else:
     569            print '  ' + main + ": computing '" + diagn + "' using 2D variables !!"
     570            var1 = ncobj.variables[depvars[1]]
     571            var2 = ncobj.variables[depvars[2]]
    563572
    564573        dnamesvar = list(var0.dimensions)
    565574        dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames)
    566575
    567         diag1, diag2, diagoutd, diagoutvd = diag.Forcompute_fog_RUC(var0, var1,      \
     576        diag1, diag2, diagoutd, diagoutvd = diag.Forcompute_fog_RUC(var0, var1, var2,\
    568577          dnamesvar, dvnamesvar)
     578        # Removing the nonChecking variable-dimensions from the initial list
     579        varsadd = []
     580        diagoutvd = list(dvnames)
     581        for nonvd in NONchkvardims:
     582            if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd)
     583            varsadd.append(nonvd)
     584        ncvar.insert_variable(ncobj, 'fog', diag1, diagoutd, diagoutvd, newnc)
     585        ncvar.insert_variable(ncobj, 'fogvisblty', diag2, diagoutd, diagoutvd, newnc)
     586
     587# fog_FRAML50: Computation of fog and visibility following Gultepe, I. and
     588#   J.A. Milbrandt, 2010 as QVAPOR, WRFt, WRFp or Q2, T2, PSFC
     589    elif diagn == 'fog_FRAML50':
     590
     591        var0 = ncobj.variables[depvars[0]]
     592        print gen.infmsg
     593        if depvars[1] == 'WRFt':
     594            print '  ' + main + ": computing '" + diagn + "' using 3D variables !!"
     595            var1 = WRFt
     596            var2 = WRFp
     597        else:
     598            print '  ' + main + ": computing '" + diagn + "' using 2D variables !!"
     599            var1 = ncobj.variables[depvars[1]]
     600            var2 = ncobj.variables[depvars[2]]
     601
     602        dnamesvar = list(var0.dimensions)
     603        dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames)
     604
     605        diag1, diag2, diagoutd, diagoutvd = diag.Forcompute_fog_FRAML50(var0, var1,  \
     606          var2, dnamesvar, dvnamesvar)
    569607        # Removing the nonChecking variable-dimensions from the initial list
    570608        varsadd = []
  • trunk/tools/module_ForDiagnostics.f90

    r1908 r1909  
    2626! compute_fog_K84: Computation of fog and visibility following Kunkel, (1984)
    2727! compute_fog_RUC: Computation of fog and visibility following RUC method Smirnova, (2000)
     28! compute_fog_FRAML50: fog and visibility following Gultepe and Milbrandt, (2010)
    2829! compute_psl_ecmwf: Compute sea level pressure using ECMWF method following Mats Hamrud and Philippe Courtier [Pa]
    2930! compute_massvertint1D: Subroutine to vertically integrate a 1D variable in eta vertical coordinates
     
    870871  END SUBROUTINE compute_fog_K84
    871872
    872   SUBROUTINE compute_fog_RUC(d1, d2, d3, qc, qi, fog, vis)
     873  SUBROUTINE compute_fog_RUC(d1, d2, d3, qv, ta, pres, fog, vis)
    873874! Subroutine to compute fog: qcloud + qice /= 0.
    874875! And visibility following RUC method Smirnova, T. G., S. G. Benjamin, and J. M. Brown, 2000: Case
     
    879880
    880881    INTEGER, INTENT(in)                                  :: d1, d2, d3
    881     REAL(r_k), DIMENSION(d1,d2,d3), INTENT(in)           :: qc, qi
     882    REAL(r_k), DIMENSION(d1,d2,d3), INTENT(in)           :: qv, ta, pres
    882883    INTEGER, DIMENSION(d1,d2,d3), INTENT(out)            :: fog
    883884    REAL(r_k), DIMENSION(d1,d2,d3), INTENT(out)          :: vis
     
    887888
    888889!!!!!!! Variables
    889 ! qc: cloud mixing ratio [kgkg-1]
    890 ! qi, ice mixing ratio [kgkg-1]
     890! qv: water vapor mixing ratio [kgkg-1]
     891! ta: temperature [K]
     892! pres: pressure [Pa]
    891893! fog: presence of fog (1: yes, 0: no)
    892894! vis: visibility within fog [km]
    893895
    894     fname = 'compute_fog_K84'
     896    fname = 'compute_fog_RUC'
    895897
    896898    DO i=1, d1
    897899      DO j=1, d2
    898900        DO it=1, d3
    899           CALL var_fog_K84(qc(i,j,it), qi(i,j,it), fog(i,j,it), vis(i,j,it))
     901          CALL var_fog_RUC(qv(i,j,it), ta(i,j,it), pres(i,j,it), fog(i,j,it), vis(i,j,it))
    900902        END DO
    901903      END DO
     
    906908  END SUBROUTINE compute_fog_RUC
    907909
     910  SUBROUTINE compute_fog_FRAML50(d1, d2, d3, qv, ta, pres, fog, vis)
     911! Subroutine to compute fog (vis < 1 km) and visibility following
     912!   Gultepe, I. and J.A. Milbrandt, 2010: Probabilistic Parameterizations of Visibility Using
     913!     Observations of Rain Precipitation Rate, Relative Humidity, and Visibility. J. Appl. Meteor.
     914!     Climatol., 49, 36-46, https://doi.org/10.1175/2009JAMC1927.1
     915!   Interest is focused on a 'general' fog/visibilty approach, thus the fit at 50 % of probability is
     916!     chosen
     917!   Effects from precipitation are not considered
     918
     919    IMPLICIT NONE
     920
     921    INTEGER, INTENT(in)                                  :: d1, d2, d3
     922    REAL(r_k), DIMENSION(d1,d2,d3), INTENT(in)           :: qv, ta, pres
     923    INTEGER, DIMENSION(d1,d2,d3), INTENT(out)            :: fog
     924    REAL(r_k), DIMENSION(d1,d2,d3), INTENT(out)          :: vis
     925 
     926! Local
     927    INTEGER                                              :: i, j, it
     928
     929!!!!!!! Variables
     930! qv: mixing ratio in [kgkg-1]
     931! ta: temperature [K]
     932! pres: pressure field [Pa]
     933! fog: presence of fog (1: yes, 0: no)
     934! vis: visibility within fog [km]
     935
     936    fname = 'compute_fog_FRAML50'
     937
     938    DO i=1, d1
     939      DO j=1, d2
     940        DO it=1, d3
     941          CALL var_fog_FRAML50(qv(i,j,it), ta(i,j,it), pres(i,j,it), fog(i,j,it), vis(i,j,it))
     942        END DO
     943      END DO
     944    END DO
     945
     946    RETURN
     947
     948  END SUBROUTINE compute_fog_FRAML50
     949
    908950END MODULE module_ForDiagnostics
  • trunk/tools/module_ForDiagnosticsVars.f90

    r1908 r1909  
    2929! var_cllmh: low, medium, high-cloud [0,1]
    3030! var_clt: total cloudiness [0,1]
    31 ! var_fog_K84: Computation of fog and visibility following Kunkel, (1984)
    32 ! var_fog_RUC: Computation of fog and visibility following RUC method Smirnova, (2000)
     31! var_hur: relative humidity using August-Roche-Magnus approximation [1]
     32! var_fog_K84: fog and visibility following Kunkel, (1984)
     33! var_fog_RUC: fog and visibility following RUC method Smirnova, (2000)
     34! var_fog_FRAML50: fog and visibility following Gultepe and Milbrandt, (2010)
    3335! var_potevap_orPM: potential evapotranspiration following Penman-Monteith formulation implemented in ORCHIDEE
    3436! var_psl_ecmwf: sea level pressure using ECMWF method following Mats Hamrud and Philippe Courtier [Pa]
     37! var_rh: Subroutine to compute relative humidity following 'Tetens' equation (T,P) ...'
    3538! var_zmla_generic: Subroutine to compute pbl-height following a generic method
    3639! var_zwind: Subroutine to extrapolate the wind at a given height following the 'power law' methodology
     
    14411444
    14421445  SUBROUTINE var_fog_K84(qc, qi, fog, vis)
    1443   ! Computation of fog: qcloud + qice /= 0.
     1446  ! Computation of fog (vis < 1km) only computed where qcloud, qice /= 0.
    14441447  ! And visibility following Kunkel, B. A., (1984): Parameterization of droplet terminal velocity and
    14451448  !   extinction coefficient in fog models. J. Climate Appl. Meteor., 23, 34–41.
     
    14521455
    14531456! Local
    1454   REAL(r_k)                                              :: qfog, visc, visi
     1457  REAL(r_k)                                              :: visc, visi
    14551458
    14561459!!!!!!! Variables
     
    14621465  fname = 'var_fog_K84'
    14631466 
    1464   qfog = (qc + qi)*1000.*oneRK
    1465   IF (qfog /= zeroRK) THEN
    1466     fog = 1
     1467  IF (qi > nullv .OR. qc > nullv) THEN
     1468    visc = 100000.*oneRK
     1469    visi = 100000.*oneRK
    14671470    ! From: Gultepe, 2006, JAM, 45, 1469-1480
    1468     IF (qc /= 0.) visc = 0.027*(qc*1000.)**(-0.88)
    1469     IF (qi /= 0.) visi = 0.024*(qi*1000.)**(-1.0)
     1471    IF (qc > nullv) visc = 0.027*(qc*1000.)**(-0.88)
     1472    IF (qi > nullv) visi = 0.024*(qi*1000.)**(-1.0)
    14701473    vis = MINVAL((/visc, visi/))
     1474    IF (vis <= oneRK) THEN
     1475      fog = 1
     1476    ELSE
     1477      fog = 0
     1478      vis = -oneRK
     1479    END IF
    14711480  ELSE
    14721481    fog = 0
    1473     vis = zeroRK
     1482    vis = -oneRK
    14741483  END IF
    1475   PRINT *,'qc:', qc,'qi:',qi,'qfog:',qfog,'visc:',visc,'visi:',visi,'vis:',vis
    1476 
    14771484
    14781485  END SUBROUTINE var_fog_K84
    14791486
    1480   SUBROUTINE var_fog_RUC(qc, qi, fog, vis)
    1481   ! Computation of fog: qcloud + qice /= 0.
     1487  SUBROUTINE var_fog_RUC(qv, ta, pres, fog, vis)
     1488  ! Computation of fog (vis < 1km) only computed where qcloud, qice /= 0.
    14821489  ! And visibility following RUC method Smirnova, T. G., S. G. Benjamin, and J. M. Brown, 2000: Case
    14831490  !   study verification of RUC/MAPS fog and visibility forecasts. Preprints, 9 th Conference on
     
    14861493  IMPLICIT NONE
    14871494
    1488   REAL(r_k), INTENT(in)                                  :: qc, qi
     1495  REAL(r_k), INTENT(in)                                  :: qv, ta, pres
    14891496  INTEGER, INTENT(out)                                   :: fog
    14901497  REAL(r_k), INTENT(out)                                 :: vis
    14911498
    14921499! Local
    1493   REAL(r_k)                                              :: qfog
     1500  REAL(r_k)                                              :: rh
    14941501
    14951502!!!!!!! Variables
     
    15011508  fname = 'var_fog_RUC'
    15021509
    1503   qfog = (qc + qi)*1000.*oneRK
    1504   IF (qfog /= zeroRK) THEN
    1505     fog = 1
     1510  CALL var_hur(ta, pres, qv, rh)
     1511  ! Avoiding supersaturation
     1512  rh = MINVAL((/1.,rh/))
     1513
     1514  IF (rh > 0.3) THEN
    15061515    ! From: Gultepe, I., and G. Isaac, 2006: Visbility versus precipitation rate and relative
    15071516    !   humidity. Preprints, 12th Cloud Physics Conf, Madison, WI, Amer. Meteor. Soc., P2.55.
    15081517    !   [Available  online  at  http://ams.confex.com/ams/Madison2006/techprogram/paper_l13177.htm]
    1509     vis = 60.*exp(-2.5*(qc*1000.-15.)/80.)
     1518    vis = 60.*EXP(-2.5*(rh*100.-15.)/80.)
     1519    IF (vis <= oneRK) THEN
     1520      fog = 1
     1521    ELSE
     1522      fog = 0
     1523      vis = -oneRK
     1524    END IF
    15101525  ELSE
    15111526    fog = 0
    1512     vis = zeroRK
     1527    vis = -oneRK
    15131528  END IF
    1514   PRINT *,'qc:', qc,'qi:',qi,'qfog:',qfog,'vis:',vis
    15151529
    15161530  END SUBROUTINE var_fog_RUC
    15171531
     1532  SUBROUTINE var_fog_FRAML50(qv, ta, pres, fog, vis)
     1533  ! Computation of fog (vis < 1km)
     1534  ! And visibility following Gultepe, I. and J.A. Milbrandt, 2010: Probabilistic Parameterizations
     1535  !   of Visibility Using Observations of Rain Precipitation Rate, Relative Humidity, and Visibility.
     1536  !   J. Appl. Meteor. Climatol., 49, 36-46, https://doi.org/10.1175/2009JAMC1927.1
     1537  ! Interest is focused on a 'general' fog/visibilty approach, thus the fit at 50 % of probability
     1538  !   is chosen
     1539  ! Effects from precipitation are not considered
     1540
     1541  IMPLICIT NONE
     1542
     1543  REAL(r_k), INTENT(in)                                  :: qv, ta, pres
     1544  INTEGER, INTENT(out)                                   :: fog
     1545  REAL(r_k), INTENT(out)                                 :: vis
     1546
     1547! Local
     1548  REAL(r_k)                                              :: rh
     1549
     1550!!!!!!! Variables
     1551! qv: mixing ratio in [kgkg-1]
     1552! ta: temperature [K]
     1553! pres: pressure field [Pa]
     1554! rh: relative humidity [1]
     1555! fog: presence of fog (1: yes, 0: no)
     1556! vis: visibility within fog [km]
     1557
     1558  fname = 'var_fog_FRAML50'
     1559
     1560  CALL var_hur(ta, pres, qv, rh)
     1561  ! Avoiding supersaturation
     1562  rh = MINVAL((/1.,rh/))
     1563
     1564  IF (rh > 0.3) THEN
     1565    vis = -5.19*10.**(-10)*(rh*100.)**5.44+40.10
     1566    ! Fog definition (vis <= 1. km)
     1567    IF (vis <= oneRK) THEN
     1568      fog = 1
     1569    ELSE
     1570      vis = -oneRK
     1571      fog = 0
     1572    END IF
     1573  ELSE
     1574    vis = -oneRK
     1575    fog = 0
     1576  END IF
     1577
     1578  END SUBROUTINE var_fog_FRAML50
     1579
     1580  SUBROUTINE var_hur(t, press, qv, hur)
     1581! Subroutine to compute relative humidity using August-Roche-Magnus approximation [1]
     1582
     1583    IMPLICIT NONE
     1584
     1585    REAL, INTENT(in)                                     :: t, press, qv
     1586    REAL, INTENT(out)                                    :: hur
     1587
     1588! Local
     1589    REAL                                                 :: tC, es, ws
     1590
     1591!!!!!!! Variables
     1592! t: temperature [K]
     1593! press: pressure [Pa]
     1594! q: mixing ratio [kgkg-1]
     1595! dz: vertical extension
     1596! hur: relative humidity [1]
     1597
     1598    fname = 'var_hur'
     1599
     1600    ! August - Roche - Magnus formula (Avoiding overflow on last level)
     1601    tC = t - SVPT0
     1602   
     1603    es = ARM1 * exp(ARM2*tC/(tC+ARM3))
     1604    ! Saturated mixing ratio
     1605    ws = mol_watdry*es/(0.01*press-es)
     1606
     1607    ! Relative humidity
     1608    hur = qv / ws
     1609 
     1610    RETURN
     1611
     1612  END SUBROUTINE var_hur
     1613
    15181614END MODULE module_ForDiagnosticsVars
  • trunk/tools/module_definitions.f90

    r1783 r1909  
    2323  CHARACTER(len=4)                                       :: numSa, numSb
    2424  CHARACTER(len=10)                                      :: Str10
     25  REAL(r_k)                                              :: nullv = 1.e-7
     26  !REAL(r_k)                                              :: nullv = 1.d-15
    2527
    2628! Scientific constants
    2729!!
     30  ! K --> C temperature transformation
     31  REAL(r_k), PARAMETER                                   :: SVPT0 = 273.15
     32 ! August-Roche-Magnus approximation
     33  REAL(r_k), PARAMETER                                   :: ARM1 = 6.1094
     34  REAL(r_k), PARAMETER                                   :: ARM2 = 17.625
     35  REAL(r_k), PARAMETER                                   :: ARM3 = 243.04
    2836
    29   REAL(r_k), PARAMETER                                   :: ZEPSEC=1.0D-12
     37  REAL(r_k), PARAMETER                                   :: ZEPSEC = 1.0D-12
    3038! Low limit pressure for medium clouds [Pa]
    3139  REAL(r_k), PARAMETER                                   :: prmhc = 44000.d0
Note: See TracChangeset for help on using the changeset viewer.