source: LMDZ6/trunk/libf/phylmd/tilft43.f90 @ 5279

Last change on this file since 5279 was 5274, checked in by abarral, 9 months ago

Replace yomcst.h by existing module

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.0 KB
Line 
1
2! $Header$
3
4SUBROUTINE tlift43(p, t, q, qs, gz, icb, nk, tvp, tpk, clw, nd, nl, kk)
5  USE yomcst_mod_h, ONLY: RPI, RCLUM, RHPLA, RKBOL, RNAVO                   &
6          , RDAY, REA, REPSM, RSIYEA, RSIDAY, ROMEGA                  &
7          , R_ecc, R_peri, R_incl                                      &
8          , RA, RG, R1SA                                         &
9          , RSIGMA                                                     &
10          , R, RMD, RMV, RD, RV, RCPD                    &
11          , RMO3, RMCO2, RMC, RMCH4, RMN2O, RMCFC11, RMCFC12        &
12          , RCPV, RCVD, RCVV, RKAPPA, RETV, eps_w                    &
13          , RCW, RCS                                                 &
14          , RLVTT, RLSTT, RLMLT, RTT, RATM                           &
15          , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS            &
16          , RALPD, RBETD, RGAMD
17  IMPLICIT NONE
18  REAL gz(nd), tpk(nd), clw(nd), p(nd)
19  REAL t(nd), q(nd), qs(nd), tvp(nd), lv0
20  INTEGER icb, nk, nd, nl, kk
21  REAL cpd, cpv,  cl, g, rowl, gravity, cpvmcl, eps, epsi
22  REAL ah0, cpp, cpinv, tg, qg, alv, s, ahg, tc, denom, es
23  INTEGER i, nst, nsb, j
24  ! ***   ASSIGN VALUES OF THERMODYNAMIC CONSTANTS     ***
25
26  ! -- sb:
27  ! !      CPD=1005.7
28  ! !      CPV=1870.0
29  ! !      CL=4190.0
30  ! !      RV=461.5
31  ! !      RD=287.04
32  ! !      LV0=2.501E6
33  ! !      G=9.8
34  ! !      ROWL=1000.0
35  ! ajouts:
36  cpd = rcpd
37  cpv = rcpv
38  cl = rcw
39  lv0 = rlvtt
40  g = rg
41  rowl = ratm/100.
42  gravity = rg !sb: Pr que gravite ne devienne pas humidite!
43  ! sb --
44
45  cpvmcl = cl - cpv
46  eps = rd/rv
47  epsi = 1./eps
48
49  ! ***  CALCULATE CERTAIN PARCEL QUANTITIES, INCLUDING STATIC ENERGY   ***
50
51  ah0 = (cpd*(1.-q(nk))+cl*q(nk))*t(nk) + q(nk)*(lv0-cpvmcl*(t(nk)-273.15)) + &
52    gz(nk)
53  cpp = cpd*(1.-q(nk)) + q(nk)*cpv
54  cpinv = 1./cpp
55
56  IF (kk==1) THEN
57
58    ! ***   CALCULATE LIFTED PARCEL QUANTITIES BELOW CLOUD BASE   ***
59
60    DO i = 1, icb - 1
61      clw(i) = 0.0
62    END DO
63    DO i = nk, icb - 1
64      tpk(i) = t(nk) - (gz(i)-gz(nk))*cpinv
65      tvp(i) = tpk(i)*(1.+q(nk)*epsi)
66    END DO
67  END IF
68
69  ! ***  FIND LIFTED PARCEL QUANTITIES ABOVE CLOUD BASE    ***
70
71  nst = icb
72  nsb = icb
73  IF (kk==2) THEN
74    nst = nl
75    nsb = icb + 1
76  END IF
77  DO i = nsb, nst
78    tg = t(i)
79    qg = qs(i)
80    alv = lv0 - cpvmcl*(t(i)-273.15)
81    DO j = 1, 2
82      s = cpd + alv*alv*qg/(rv*t(i)*t(i))
83      s = 1./s
84      ahg = cpd*tg + (cl-cpd)*q(nk)*t(i) + alv*qg + gz(i)
85      tg = tg + s*(ah0-ahg)
86      tg = max(tg, 35.0)
87      tc = tg - 273.15
88      denom = 243.5 + tc
89      IF (tc>=0.0) THEN
90        es = 6.112*exp(17.67*tc/denom)
91      ELSE
92        es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
93      END IF
94      qg = eps*es/(p(i)-es*(1.-eps))
95    END DO
96    alv = lv0 - cpvmcl*(t(i)-273.15)
97    tpk(i) = (ah0-(cl-cpd)*q(nk)*t(i)-gz(i)-alv*qg)/cpd
98    clw(i) = q(nk) - qg
99    clw(i) = max(0.0, clw(i))
100    rg = qg/(1.-q(nk))
101    tvp(i) = tpk(i)*(1.+rg*epsi)
102  END DO
103
104  ! -- sb:
105  rg = gravity ! RG redevient la gravite de YOMCST (sb)
106  ! sb --
107
108  RETURN
109END SUBROUTINE tlift43
110
Note: See TracBrowser for help on using the repository browser.