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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 169 - (hide annotations)
Mon Sep 14 17:13:16 2015 UTC (8 years, 8 months ago) by guez
File size: 7327 byte(s)
In inifilr_hemisph, colat0 is necessarily >= 1. / rlamda(iim) (see
notes) so we simplify the definition of jfilt. No need to keep modfrst
values at other latitudes than the current one, and we can have one
loop on latitudes instead of two.

Just encapsulated transp into a module.

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 guez 169 use nr_util, only: pi
14 guez 51 use SUPHEC_M
15     IMPLICIT none
16     !======================================================================
17     ! Auteur(s): Z.X. Li (LMD/CNRS) date: 19930910
18     ! Objet: Calculer epaisseur optique et emmissivite des nuages
19     !======================================================================
20     ! Arguments:
21     ! t-------input-R-temperature
22     ! pqlwp---input-R-eau liquide nuageuse dans l'atmosphere (kg/kg)
23     ! pclc----input-R-couverture nuageuse pour le rayonnement (0 a 1)
24     ! ok_aie--input-L-apply aerosol indirect effect or not
25     ! sulfate-input-R-sulfate aerosol mass concentration [um/m^3]
26     ! sulfate_pi-input-R-dito, pre-industrial value
27     ! bl95_b0-input-R-a parameter, may be varied for tests (s-sea, l-land)
28     ! bl95_b1-input-R-a parameter, may be varied for tests ( -"- )
29     !
30     ! cldtaupi-output-R-pre-industrial value of cloud optical thickness,
31     ! needed for the diagnostics of the aerosol indirect
32     ! radiative forcing (see radlwsw)
33     ! re------output-R-Cloud droplet effective radius multiplied by fl [um]
34     ! fl------output-R-Denominator to re, introduced to avoid problems in
35     ! the averaging of the output. fl is the fraction of liquid
36     ! water clouds within a grid cell
37     !
38     ! pcltau--output-R-epaisseur optique des nuages
39     ! pclemi--output-R-emissivite des nuages (0 a 1)
40     !======================================================================
41     !
42     !
43     REAL, intent(in):: paprs(klon,klev+1)
44     real, intent(in):: pplay(klon,klev)
45 guez 52 REAL, intent(in):: t(klon,klev)
46 guez 51 !
47     REAL pclc(klon,klev)
48     REAL pqlwp(klon,klev)
49     REAL pcltau(klon,klev), pclemi(klon,klev)
50     !
51     REAL pct(klon), pctlwp(klon), pch(klon), pcl(klon), pcm(klon)
52     !
53     LOGICAL lo
54     !
55     REAL cetahb, cetamb
56     PARAMETER (cetahb = 0.45, cetamb = 0.80)
57     !
58     INTEGER i, k
59 guez 105 REAL zflwp, zfice
60 guez 51 !
61     REAL radius, rad_froid, rad_chaud, rad_chau1, rad_chau2
62     PARAMETER (rad_chau1=13.0, rad_chau2=9.0, rad_froid=35.0)
63     !cc PARAMETER (rad_chaud=15.0, rad_froid=35.0)
64     ! sintex initial PARAMETER (rad_chaud=10.0, rad_froid=30.0)
65     REAL coef, coef_froi, coef_chau
66     PARAMETER (coef_chau=0.13, coef_froi=0.09)
67     REAL seuil_neb, t_glace
68     PARAMETER (seuil_neb=0.001, t_glace=273.0-15.0)
69     INTEGER nexpo ! exponentiel pour glace/eau
70     PARAMETER (nexpo=6)
71 guez 3
72 guez 51 !jq for the aerosol indirect effect
73     !jq introduced by Johannes Quaas (quaas@lmd.jussieu.fr), 27/11/2003
74     !jq
75     LOGICAL ok_aie ! Apply AIE or not?
76 guez 3
77 guez 51 REAL sulfate(klon, klev) ! sulfate aerosol mass concentration [ug m-3]
78     REAL cdnc(klon, klev) ! cloud droplet number concentration [m-3]
79     REAL re(klon, klev) ! cloud droplet effective radius [um]
80     REAL sulfate_pi(klon, klev) ! sulfate aerosol mass concentration [ug m-3] (pre-industrial value)
81     REAL cdnc_pi(klon, klev) ! cloud droplet number concentration [m-3] (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 guez 169 / (4./3. * PI * 1000. * cdnc(i,k)) )**(1./3.)
127 guez 51 !
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 guez 169 / (4./3.*PI*1000.*cdnc_pi(i,k)) )**(1./3.), &
152 guez 51 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