/[lmdze]/trunk/Sources/phylmd/nuage.f
ViewVC logotype

Contents of /trunk/Sources/phylmd/nuage.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 217 - (show annotations)
Thu Mar 30 14:25:18 2017 UTC (7 years, 1 month ago) by guez
File size: 3451 byte(s)
run_off_lic downgraded from variable of module interface_surf to local
variable of fonte_neige.

Code could not work with ok_aie set to true, so removed this
possibility. tauae, piz_ae, cg_ae, topswai, solswai were then
0. cldtaupi was the same as cldtaupd.

In sw and procedures called by sw, flag_aer did not need to be double
precision, changed it to logical.

Downgraded re and fl from arguments of newmicro to local
variables. Added output of re and fl (following LMDZ).

1 module nuage_m
2
3 IMPLICIT none
4
5 contains
6
7 SUBROUTINE nuage (paprs, pplay, t, pqlwp, pclc, pcltau, pclemi, pch, pcl, &
8 pcm, pct, pctlwp)
9
10 ! From LMDZ4/libf/phylmd/nuage.F, version 1.1.1.1, 2004/05/19 12:53:07
11
12 use dimphy, only: klon, klev
13 use SUPHEC_M, only: rg
14
15 ! Author: Z. X. Li (LMD/CNRS)
16 ! Date: 1993/09/10
17 ! Objet: Calculer \'epaisseur optique et \'emissivit\'e des nuages
18
19 ! Arguments:
20
21 REAL, intent(in):: paprs(klon, klev+1)
22 real, intent(in):: pplay(klon, klev)
23 REAL, intent(in):: t(klon, klev) ! temperature
24
25 REAL, intent(in):: pqlwp(klon, klev)
26 ! eau liquide nuageuse dans l'atmosphere (kg/kg)
27
28 REAL, intent(inout):: pclc(klon, klev)
29 ! couverture nuageuse pour le rayonnement (0 \`a 1)
30
31 REAL, intent(out):: pcltau(klon, klev) ! \'epaisseur optique des nuages
32 real pclemi(klon, klev) ! pclemi--output-R-emissivite des nuages (0 a 1)
33 REAL pch(klon), pcl(klon), pcm(klon), pct(klon), pctlwp(klon)
34
35 ! Local:
36
37 LOGICAL lo
38
39 REAL cetahb, cetamb
40 PARAMETER (cetahb = 0.45, cetamb = 0.80)
41
42 INTEGER i, k
43 REAL zflwp, zfice
44
45 REAL radius, rad_froid, rad_chaud, rad_chau1, rad_chau2
46 PARAMETER (rad_chau1=13.0, rad_chau2=9.0, rad_froid=35.0)
47 !cc PARAMETER (rad_chaud=15.0, rad_froid=35.0)
48 ! sintex initial PARAMETER (rad_chaud=10.0, rad_froid=30.0)
49 REAL coef, coef_froi, coef_chau
50 PARAMETER (coef_chau=0.13, coef_froi=0.09)
51 REAL seuil_neb, t_glace
52 PARAMETER (seuil_neb=0.001, t_glace=273.0-15.0)
53 INTEGER nexpo ! exponentiel pour glace/eau
54 PARAMETER (nexpo=6)
55
56 !--------------------------------------------------------------------
57
58 ! Calculer l'epaisseur optique et l'emmissivite des nuages
59
60 DO k = 1, klev
61 DO i = 1, klon
62 rad_chaud = rad_chau1
63 IF (k <= 3) rad_chaud = rad_chau2
64
65 pclc(i, k) = MAX(pclc(i, k), seuil_neb)
66 zflwp = 1000.*pqlwp(i, k)/RG/pclc(i, k) &
67 *(paprs(i, k)-paprs(i, k+1))
68 zfice = 1.0 - (t(i, k)-t_glace) / (273.13-t_glace)
69 zfice = MIN(MAX(zfice, 0.0), 1.0)
70 zfice = zfice**nexpo
71
72 radius = rad_chaud * (1.-zfice) + rad_froid * zfice
73 coef = coef_chau * (1.-zfice) + coef_froi * zfice
74 pcltau(i, k) = 3.0/2.0 * zflwp / radius
75 pclemi(i, k) = 1.0 - EXP(- coef * zflwp)
76 lo = (pclc(i, k) <= seuil_neb)
77 IF (lo) pclc(i, k) = 0.0
78 IF (lo) pcltau(i, k) = 0.0
79 IF (lo) pclemi(i, k) = 0.0
80 END DO
81 END DO
82
83 ! COMPUTE CLOUD LIQUID PATH AND TOTAL CLOUDINESS
84
85 DO i = 1, klon
86 pct(i)=1.0
87 pch(i)=1.0
88 pcm(i) = 1.0
89 pcl(i) = 1.0
90 pctlwp(i) = 0.0
91 END DO
92
93 DO k = klev, 1, -1
94 DO i = 1, klon
95 pctlwp(i) = pctlwp(i) &
96 + pqlwp(i, k)*(paprs(i, k)-paprs(i, k+1))/RG
97 pct(i) = pct(i)*(1.0-pclc(i, k))
98 if (pplay(i, k) <= cetahb*paprs(i, 1)) &
99 pch(i) = pch(i)*(1.0-pclc(i, k))
100 if (pplay(i, k) > cetahb*paprs(i, 1) .AND. &
101 pplay(i, k) <= cetamb*paprs(i, 1)) &
102 pcm(i) = pcm(i)*(1.0-pclc(i, k))
103 if (pplay(i, k) > cetamb*paprs(i, 1)) &
104 pcl(i) = pcl(i)*(1.0-pclc(i, k))
105 END DO
106 END DO
107
108 DO i = 1, klon
109 pct(i)=1.-pct(i)
110 pch(i)=1.-pch(i)
111 pcm(i)=1.-pcm(i)
112 pcl(i)=1.-pcl(i)
113 END DO
114
115 END SUBROUTINE nuage
116
117 end module nuage_m

  ViewVC Help
Powered by ViewVC 1.1.21