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

Annotation of /trunk/phylmd/nuage.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 51 - (hide 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 guez 51 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 guez 3
71 guez 51 !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 guez 3
76 guez 51 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