9 |
USE dimphy, ONLY : klev, klon |
USE dimphy, ONLY : klev, klon |
10 |
USE suphec_m, ONLY : rcpd, rd, retv, rtt |
USE suphec_m, ONLY : rcpd, rd, retv, rtt |
11 |
USE yoethf_m, ONLY : r2es |
USE yoethf_m, ONLY : r2es |
12 |
USE fcttre, ONLY : foeew, qsatl, qsats, thermcep |
USE fcttre, ONLY : foeew |
13 |
|
|
14 |
! Arguments d'entree: |
! Arguments d'entree: |
15 |
REAL, intent(in):: paprs(klon, klev+1) ! pression (Pa) a inter-couche |
REAL, intent(in):: paprs(klon, klev+1) ! pression (Pa) a inter-couche |
28 |
PARAMETER (RGAMMAS=0.05) |
PARAMETER (RGAMMAS=0.05) |
29 |
REAL CRHL |
REAL CRHL |
30 |
PARAMETER (CRHL=0.15) |
PARAMETER (CRHL=0.15) |
|
REAL t_coup |
|
|
PARAMETER (t_coup=234.0) |
|
31 |
|
|
32 |
! Variables locales: |
! Variables locales: |
33 |
INTEGER i, k, kb, invb(klon) |
INTEGER i, k, kb, invb(klon) |
64 |
|
|
65 |
DO i = 1, klon |
DO i = 1, klon |
66 |
kb=invb(i) |
kb=invb(i) |
67 |
IF (thermcep) THEN |
zqs= R2ES*FOEEW(t(i, kb), RTT >= t(i, kb))/pplay(i, kb) |
68 |
zqs= R2ES*FOEEW(t(i, kb), RTT >= t(i, kb))/pplay(i, kb) |
zqs=MIN(0.5, zqs) |
69 |
zqs=MIN(0.5, zqs) |
zcor=1./(1.-RETV*zqs) |
70 |
zcor=1./(1.-RETV*zqs) |
zqs=zqs*zcor |
|
zqs=zqs*zcor |
|
|
ELSE |
|
|
IF (t(i, kb) < t_coup) THEN |
|
|
zqs = qsats(t(i, kb)) / pplay(i, kb) |
|
|
ELSE |
|
|
zqs = qsatl(t(i, kb)) / pplay(i, kb) |
|
|
ENDIF |
|
|
ENDIF |
|
71 |
zcll = CLOIB * zdthmin(i) + CLOIC |
zcll = CLOIB * zdthmin(i) + CLOIC |
72 |
zcll = MIN(1.0, MAX(0.0, zcll)) |
zcll = MIN(1.0, MAX(0.0, zcll)) |
73 |
zrhb= q(i, kb)/zqs |
zrhb= q(i, kb)/zqs |