Changeset 5144 for LMDZ6/branches/Amaury_dev/libf/phylmd/tilft43.F90
- Timestamp:
- Jul 29, 2024, 11:01:04 PM (8 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/tilft43.F90
r5113 r5144 1 2 1 ! $Header$ 3 2 4 3 SUBROUTINE tlift43(p, t, q, qs, gz, icb, nk, tvp, tpk, clw, nd, nl, kk) 4 USE lmdz_yomcst 5 5 6 IMPLICIT NONE 6 7 REAL gz(nd), tpk(nd), clw(nd), p(nd) 7 8 REAL t(nd), q(nd), qs(nd), tvp(nd), lv0 8 9 INTEGER icb, nk, nd, nl, kk 9 REAL cpd, cpv, 10 REAL cpd, cpv, cl, g, rowl, gravity, cpvmcl, eps, epsi 10 11 REAL ah0, cpp, cpinv, tg, qg, alv, s, ahg, tc, denom, es 11 INTEGER i, nst, nsb, j 12 INTEGER i, nst, nsb, j 12 13 ! *** ASSIGN VALUES OF THERMODYNAMIC CONSTANTS *** 13 14 … … 22 23 ! ROWL=1000.0 23 24 ! ajouts: 24 include "YOMCST.h" 25 25 26 cpd = rcpd 26 27 cpv = rcpv … … 28 29 lv0 = rlvtt 29 30 g = rg 30 rowl = ratm /100.31 rowl = ratm / 100. 31 32 gravity = rg !sb: Pr que gravite ne devienne pas humidite! 32 33 ! sb -- 33 34 34 35 cpvmcl = cl - cpv 35 eps = rd /rv36 epsi = 1. /eps36 eps = rd / rv 37 epsi = 1. / eps 37 38 38 39 ! *** CALCULATE CERTAIN PARCEL QUANTITIES, INCLUDING STATIC ENERGY *** 39 40 40 ah0 = (cpd *(1.-q(nk))+cl*q(nk))*t(nk) + q(nk)*(lv0-cpvmcl*(t(nk)-273.15)) + &41 gz(nk)42 cpp = cpd *(1.-q(nk)) + q(nk)*cpv43 cpinv = 1. /cpp41 ah0 = (cpd * (1. - q(nk)) + cl * q(nk)) * t(nk) + q(nk) * (lv0 - cpvmcl * (t(nk) - 273.15)) + & 42 gz(nk) 43 cpp = cpd * (1. - q(nk)) + q(nk) * cpv 44 cpinv = 1. / cpp 44 45 45 46 IF (kk==1) THEN … … 51 52 END DO 52 53 DO i = nk, icb - 1 53 tpk(i) = t(nk) - (gz(i) -gz(nk))*cpinv54 tvp(i) = tpk(i) *(1.+q(nk)*epsi)54 tpk(i) = t(nk) - (gz(i) - gz(nk)) * cpinv 55 tvp(i) = tpk(i) * (1. + q(nk) * epsi) 55 56 END DO 56 57 END IF … … 67 68 tg = t(i) 68 69 qg = qs(i) 69 alv = lv0 - cpvmcl *(t(i)-273.15)70 alv = lv0 - cpvmcl * (t(i) - 273.15) 70 71 DO j = 1, 2 71 s = cpd + alv *alv*qg/(rv*t(i)*t(i))72 s = 1. /s73 ahg = cpd *tg + (cl-cpd)*q(nk)*t(i) + alv*qg + gz(i)74 tg = tg + s *(ah0-ahg)72 s = cpd + alv * alv * qg / (rv * t(i) * t(i)) 73 s = 1. / s 74 ahg = cpd * tg + (cl - cpd) * q(nk) * t(i) + alv * qg + gz(i) 75 tg = tg + s * (ah0 - ahg) 75 76 tg = max(tg, 35.0) 76 77 tc = tg - 273.15 77 78 denom = 243.5 + tc 78 79 IF (tc>=0.0) THEN 79 es = 6.112 *exp(17.67*tc/denom)80 es = 6.112 * exp(17.67 * tc / denom) 80 81 ELSE 81 es = exp(23.33086 -6111.72784/tg+0.15215*log(tg))82 es = exp(23.33086 - 6111.72784 / tg + 0.15215 * log(tg)) 82 83 END IF 83 qg = eps *es/(p(i)-es*(1.-eps))84 qg = eps * es / (p(i) - es * (1. - eps)) 84 85 END DO 85 alv = lv0 - cpvmcl *(t(i)-273.15)86 tpk(i) = (ah0 -(cl-cpd)*q(nk)*t(i)-gz(i)-alv*qg)/cpd86 alv = lv0 - cpvmcl * (t(i) - 273.15) 87 tpk(i) = (ah0 - (cl - cpd) * q(nk) * t(i) - gz(i) - alv * qg) / cpd 87 88 clw(i) = q(nk) - qg 88 89 clw(i) = max(0.0, clw(i)) 89 rg = qg /(1.-q(nk))90 tvp(i) = tpk(i) *(1.+rg*epsi)90 rg = qg / (1. - q(nk)) 91 tvp(i) = tpk(i) * (1. + rg * epsi) 91 92 END DO 92 93 … … 95 96 ! sb -- 96 97 97 98 98 END SUBROUTINE tlift43 99 99
Note: See TracChangeset
for help on using the changeset viewer.