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

Contents of /trunk/phylmd/nuage.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 51 - (show annotations)
Tue Sep 20 09:14:34 2011 UTC (12 years, 8 months ago) by guez
Original Path: trunk/libf/phylmd/nuage.f90
File size: 7386 byte(s)
Split "getincom.f90" into "getincom.f90" and "getincom2.f90". Split
"nuage.f" into "nuage.f90", "diagcld1.f90" and "diagcld2.f90". Created
module "chem" from included file "chem.h". Moved "YOEGWD.f90" to
directory "Orography".

In "physiq", for evaporation of water, "zlsdcp" was equal to
"zlvdc". Removed useless variables.

1 SUBROUTINE nuage (paprs, pplay, &
2 t, pqlwp, pclc, pcltau, pclemi, &
3 pch, pcl, pcm, pct, pctlwp, &
4 ok_aie, &
5 sulfate, sulfate_pi, &
6 bl95_b0, bl95_b1, &
7 cldtaupi, re, fl)
8 !
9 ! From LMDZ4/libf/phylmd/nuage.F, version 1.1.1.1 2004/05/19 12:53:07
10 !
11 use dimens_m
12 use dimphy
13 use SUPHEC_M
14 IMPLICIT none
15 !======================================================================
16 ! Auteur(s): Z.X. Li (LMD/CNRS) date: 19930910
17 ! Objet: Calculer epaisseur optique et emmissivite des nuages
18 !======================================================================
19 ! Arguments:
20 ! t-------input-R-temperature
21 ! pqlwp---input-R-eau liquide nuageuse dans l'atmosphere (kg/kg)
22 ! pclc----input-R-couverture nuageuse pour le rayonnement (0 a 1)
23 ! ok_aie--input-L-apply aerosol indirect effect or not
24 ! sulfate-input-R-sulfate aerosol mass concentration [um/m^3]
25 ! sulfate_pi-input-R-dito, pre-industrial value
26 ! bl95_b0-input-R-a parameter, may be varied for tests (s-sea, l-land)
27 ! bl95_b1-input-R-a parameter, may be varied for tests ( -"- )
28 !
29 ! cldtaupi-output-R-pre-industrial value of cloud optical thickness,
30 ! needed for the diagnostics of the aerosol indirect
31 ! radiative forcing (see radlwsw)
32 ! re------output-R-Cloud droplet effective radius multiplied by fl [um]
33 ! fl------output-R-Denominator to re, introduced to avoid problems in
34 ! the averaging of the output. fl is the fraction of liquid
35 ! water clouds within a grid cell
36 !
37 ! pcltau--output-R-epaisseur optique des nuages
38 ! pclemi--output-R-emissivite des nuages (0 a 1)
39 !======================================================================
40 !
41 !
42 REAL, intent(in):: paprs(klon,klev+1)
43 real, intent(in):: pplay(klon,klev)
44 REAL t(klon,klev)
45 !
46 REAL pclc(klon,klev)
47 REAL pqlwp(klon,klev)
48 REAL pcltau(klon,klev), pclemi(klon,klev)
49 !
50 REAL pct(klon), pctlwp(klon), pch(klon), pcl(klon), pcm(klon)
51 !
52 LOGICAL lo
53 !
54 REAL cetahb, cetamb
55 PARAMETER (cetahb = 0.45, cetamb = 0.80)
56 !
57 INTEGER i, k
58 REAL zflwp, zradef, zfice, zmsac
59 !
60 REAL radius, rad_froid, rad_chaud, rad_chau1, rad_chau2
61 PARAMETER (rad_chau1=13.0, rad_chau2=9.0, rad_froid=35.0)
62 !cc PARAMETER (rad_chaud=15.0, rad_froid=35.0)
63 ! sintex initial PARAMETER (rad_chaud=10.0, rad_froid=30.0)
64 REAL coef, coef_froi, coef_chau
65 PARAMETER (coef_chau=0.13, coef_froi=0.09)
66 REAL seuil_neb, t_glace
67 PARAMETER (seuil_neb=0.001, t_glace=273.0-15.0)
68 INTEGER nexpo ! exponentiel pour glace/eau
69 PARAMETER (nexpo=6)
70
71 !jq for the aerosol indirect effect
72 !jq introduced by Johannes Quaas (quaas@lmd.jussieu.fr), 27/11/2003
73 !jq
74 LOGICAL ok_aie ! Apply AIE or not?
75
76 REAL sulfate(klon, klev) ! sulfate aerosol mass concentration [ug m-3]
77 REAL cdnc(klon, klev) ! cloud droplet number concentration [m-3]
78 REAL re(klon, klev) ! cloud droplet effective radius [um]
79 REAL sulfate_pi(klon, klev) ! sulfate aerosol mass concentration [ug m-3] (pre-industrial value)
80 REAL cdnc_pi(klon, klev) ! cloud droplet number concentration [m-3] (pi value)
81 REAL re_pi(klon, klev) ! cloud droplet effective radius [um] (pi value)
82
83 REAL fl(klon, klev) ! xliq * rneb (denominator to re ; fraction of liquid water clouds within the grid cell)
84
85 REAL bl95_b0, bl95_b1 ! Parameter in B&L 95-Formula
86
87 REAL cldtaupi(klon, klev) ! pre-industrial cloud opt thickness for diag
88
89 !cc PARAMETER (nexpo=1)
90 !
91 ! Calculer l'epaisseur optique et l'emmissivite des nuages
92 !
93 DO k = 1, klev
94 DO i = 1, klon
95 rad_chaud = rad_chau1
96 IF (k.LE.3) rad_chaud = rad_chau2
97
98 pclc(i,k) = MAX(pclc(i,k), seuil_neb)
99 zflwp = 1000.*pqlwp(i,k)/RG/pclc(i,k) &
100 *(paprs(i,k)-paprs(i,k+1))
101 zfice = 1.0 - (t(i,k)-t_glace) / (273.13-t_glace)
102 zfice = MIN(MAX(zfice,0.0),1.0)
103 zfice = zfice**nexpo
104
105 IF (ok_aie) THEN
106 ! Formula "D" of Boucher and Lohmann, Tellus, 1995
107 !
108 cdnc(i,k) = 10.**(bl95_b0+bl95_b1* &
109 log(MAX(sulfate(i,k),1.e-4))/log(10.))*1.e6 !-m-3
110 ! Cloud droplet number concentration (CDNC) is restricted
111 ! to be within [20, 1000 cm^3]
112 !
113 cdnc(i,k)=MIN(1000.e6,MAX(20.e6,cdnc(i,k)))
114 cdnc_pi(i,k) = 10.**(bl95_b0+bl95_b1* &
115 log(MAX(sulfate_pi(i,k),1.e-4))/log(10.))*1.e6 !-m-3
116 cdnc_pi(i,k)=MIN(1000.e6,MAX(20.e6,cdnc_pi(i,k)))
117 !
118 !
119 ! air density: pplay(i,k) / (RD * zT(i,k))
120 ! factor 1.1: derive effective radius from volume-mean radius
121 ! factor 1000 is the water density
122 ! _chaud means that this is the CDR for liquid water clouds
123 !
124 rad_chaud = &
125 1.1 * ( (pqlwp(i,k) * pplay(i,k) / (RD * T(i,k)) ) &
126 / (4./3. * RPI * 1000. * cdnc(i,k)) )**(1./3.)
127 !
128 ! Convert to um. CDR shall be at least 3 um.
129 !
130 rad_chaud = MAX(rad_chaud*1.e6, 3.)
131
132 ! For output diagnostics
133 !
134 ! Cloud droplet effective radius [um]
135 !
136 ! we multiply here with f * xl (fraction of liquid water
137 ! clouds in the grid cell) to avoid problems in the
138 ! averaging of the output.
139 ! In the output of IOIPSL, derive the real cloud droplet
140 ! effective radius as re/fl
141 !
142 fl(i,k) = pclc(i,k)*(1.-zfice)
143 re(i,k) = rad_chaud*fl(i,k)
144
145 ! Pre-industrial cloud opt thickness
146 !
147 ! "radius" is calculated as rad_chaud above (plus the
148 ! ice cloud contribution) but using cdnc_pi instead of
149 ! cdnc.
150 radius = MAX(1.1e6 * ( (pqlwp(i,k)*pplay(i,k)/(RD*T(i,k))) &
151 / (4./3.*RPI*1000.*cdnc_pi(i,k)) )**(1./3.), &
152 3.) * (1.-zfice) + rad_froid * zfice
153 cldtaupi(i,k) = 3.0/2.0 * zflwp / radius
154
155 END IF ! ok_aie
156
157 radius = rad_chaud * (1.-zfice) + rad_froid * zfice
158 coef = coef_chau * (1.-zfice) + coef_froi * zfice
159 pcltau(i,k) = 3.0/2.0 * zflwp / radius
160 pclemi(i,k) = 1.0 - EXP( - coef * zflwp)
161 lo = (pclc(i,k) .LE. seuil_neb)
162 IF (lo) pclc(i,k) = 0.0
163 IF (lo) pcltau(i,k) = 0.0
164 IF (lo) pclemi(i,k) = 0.0
165
166 IF (.NOT.ok_aie) cldtaupi(i,k)=pcltau(i,k)
167 END DO
168 END DO
169 !
170 ! COMPUTE CLOUD LIQUID PATH AND TOTAL CLOUDINESS
171 !
172 DO i = 1, klon
173 pct(i)=1.0
174 pch(i)=1.0
175 pcm(i) = 1.0
176 pcl(i) = 1.0
177 pctlwp(i) = 0.0
178 END DO
179 !
180 DO k = klev, 1, -1
181 DO i = 1, klon
182 pctlwp(i) = pctlwp(i) &
183 + pqlwp(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
184 pct(i) = pct(i)*(1.0-pclc(i,k))
185 if (pplay(i,k).LE.cetahb*paprs(i,1)) &
186 pch(i) = pch(i)*(1.0-pclc(i,k))
187 if (pplay(i,k).GT.cetahb*paprs(i,1) .AND. &
188 pplay(i,k).LE.cetamb*paprs(i,1)) &
189 pcm(i) = pcm(i)*(1.0-pclc(i,k))
190 if (pplay(i,k).GT.cetamb*paprs(i,1)) &
191 pcl(i) = pcl(i)*(1.0-pclc(i,k))
192 END DO
193 END DO
194 !
195 DO i = 1, klon
196 pct(i)=1.-pct(i)
197 pch(i)=1.-pch(i)
198 pcm(i)=1.-pcm(i)
199 pcl(i)=1.-pcl(i)
200 END DO
201 !
202 END SUBROUTINE nuage

  ViewVC Help
Powered by ViewVC 1.1.21