source: LMDZ.3.3/branches/rel-LF/libf/phylmd/newmicro.F @ 486

Last change on this file since 486 was 486, checked in by lmdzadmin, 20 years ago

Phasage avec la version de Ionela
IM/LF

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.9 KB
Line 
1      SUBROUTINE newmicro (paprs, pplay,ok_newmicro,
2     .                  t, pqlwp, pclc, pcltau, pclemi,
3cIM    .                  pch, pcl, pcm, pct, pctlwp)
4     .                  pch, pcl, pcm, pct, pctlwp,
5     .                  xflwp, xfiwp, xflwc, xfiwc)
6
7      IMPLICIT none
8c======================================================================
9c Auteur(s): Z.X. Li (LMD/CNRS) date: 19930910
10c Objet: Calculer epaisseur optique et emmissivite des nuages
11c======================================================================
12c Arguments:
13c t-------input-R-temperature
14c pqlwp---input-R-eau liquide nuageuse dans l'atmosphere (kg/kg)
15c pclc----input-R-couverture nuageuse pour le rayonnement (0 a 1)
16c
17c pcltau--output-R-epaisseur optique des nuages
18c pclemi--output-R-emissivite des nuages (0 a 1)
19c======================================================================
20C
21#include "YOMCST.h"
22c
23#include "dimensions.h"
24#include "dimphy.h"
25#include "nuage.h"
26      REAL paprs(klon,klev+1), pplay(klon,klev)
27      REAL t(klon,klev)
28c
29      REAL pclc(klon,klev)
30      REAL pqlwp(klon,klev)
31      REAL pcltau(klon,klev), pclemi(klon,klev)
32c
33      REAL pct(klon), pctlwp(klon), pch(klon), pcl(klon), pcm(klon)
34c
35      LOGICAL lo
36c
37      REAL cetahb, cetamb
38      PARAMETER (cetahb = 0.45, cetamb = 0.80)
39C
40      INTEGER i, k
41cIM: 091003   REAL zflwp, zradef, zfice, zmsac
42      REAL zflwp(klon), zradef, zfice, zmsac
43cIM: 091003 rajout
44      REAL xflwp(klon), xfiwp(klon)
45      REAL xflwc(klon,klev), xfiwc(klon,klev)
46c
47      REAL radius, rad_chaud
48cc      PARAMETER (rad_chau1=13.0, rad_chau2=9.0, rad_froid=35.0)
49ccc      PARAMETER (rad_chaud=15.0, rad_froid=35.0)
50c sintex initial      PARAMETER (rad_chaud=10.0, rad_froid=30.0)
51      REAL coef, coef_froi, coef_chau
52      PARAMETER (coef_chau=0.13, coef_froi=0.09)
53      REAL seuil_neb, t_glace
54      PARAMETER (seuil_neb=0.001, t_glace=273.0-15.0)
55      INTEGER nexpo ! exponentiel pour glace/eau
56      PARAMETER (nexpo=6)
57ccc      PARAMETER (nexpo=1)
58
59c -- sb:
60      logical ok_newmicro
61c     parameter (ok_newmicro=.FALSE.)
62cIM: 091003   real rel, tc, rei, zfiwp
63      real rel, tc, rei, zfiwp(klon)
64      real k_liq, k_ice0, k_ice, DF
65      parameter (k_liq=0.0903, k_ice0=0.005) ! units=m2/g
66      parameter (DF=1.66) ! diffusivity factor
67c sb --
68
69c
70c Calculer l'epaisseur optique et l'emmissivite des nuages
71c
72cIM inversion des DO
73      DO i = 1, klon
74       xflwp(i)=0.
75       xfiwp(i)=0.
76      DO k = 1, klev
77c
78       xflwc(i,k)=0.
79       xfiwc(i,k)=0.
80c
81         rad_chaud = rad_chau1
82         IF (k.LE.3) rad_chaud = rad_chau2
83         pclc(i,k) = MAX(pclc(i,k), seuil_neb)
84         zflwp(i) = 1000.*pqlwp(i,k)/RG/pclc(i,k)
85     .          *(paprs(i,k)-paprs(i,k+1))
86         zfice = 1.0 - (t(i,k)-t_glace) / (273.13-t_glace)
87         zfice = MIN(MAX(zfice,0.0),1.0)
88         zfice = zfice**nexpo
89         radius = rad_chaud * (1.-zfice) + rad_froid * zfice
90         coef = coef_chau * (1.-zfice) + coef_froi * zfice
91         pcltau(i,k) = 3.0/2.0 * zflwp(i) / radius
92         pclemi(i,k) = 1.0 - EXP( - coef * zflwp(i))
93
94         if (ok_newmicro) then
95
96c -- liquid/ice cloud water paths:
97
98         zfice = 1.0 - (t(i,k)-t_glace) / (273.13-t_glace)
99         zfice = MIN(MAX(zfice,0.0),1.0)
100
101         zflwp(i) = 1000.*(1.-zfice)*pqlwp(i,k)/pclc(i,k)
102     :          *(paprs(i,k)-paprs(i,k+1))/RG
103         zfiwp(i) = 1000.*zfice*pqlwp(i,k)/pclc(i,k)
104     :          *(paprs(i,k)-paprs(i,k+1))/RG
105
106         xflwp(i) = xflwp(i)+ (1.-zfice)*pqlwp(i,k)
107     :          *(paprs(i,k)-paprs(i,k+1))/RG
108         xfiwp(i) = xfiwp(i)+ zfice*pqlwp(i,k)
109     :          *(paprs(i,k)-paprs(i,k+1))/RG
110
111cIM Total Liquid/Ice water content
112         xflwc(i,k) = xflwc(i,k)+(1.-zfice)*pqlwp(i,k)
113         xfiwc(i,k) = xfiwc(i,k)+zfice*pqlwp(i,k)
114cIM In-Cloud Liquid/Ice water content
115c        xflwc(i,k) = xflwc(i,k)+(1.-zfice)*pqlwp(i,k)/pclc(i,k)
116c        xfiwc(i,k) = xfiwc(i,k)+zfice*pqlwp(i,k)/pclc(i,k)
117
118c -- effective cloud droplet radius (microns):
119
120c for liquid water clouds:
121         rel = rad_chaud
122
123c for ice clouds: as a function of the ambiant temperature
124c [formula used by Iacobellis and Somerville (2000), with an
125c asymptotical value of 3.5 microns at T<-81.4 C added to be
126c consistent with observations of Heymsfield et al. 1986]:
127         tc = t(i,k)-273.15
128         rei = 0.71*tc + 61.29
129         if (tc.le.-81.4) rei = 3.5
130
131c -- cloud optical thickness :
132
133c [for liquid clouds, traditional formula,
134c  for ice clouds, Ebert & Curry (1992)]
135
136         if (zflwp(i).eq.0.) rel = 1.
137         if (zfiwp(i).eq.0. .or. rei.le.0.) rei = 1.
138         pcltau(i,k) = 3.0/2.0 * ( zflwp(i)/rel )
139     .             + zfiwp(i) * (3.448e-03  + 2.431/rei)
140
141c -- cloud infrared emissivity:
142
143c [the broadband infrared absorption coefficient is parameterized
144c  as a function of the effective cld droplet radius]
145
146c Ebert and Curry (1992) formula as used by Kiehl & Zender (1995):
147         k_ice = k_ice0 + 1.0/rei
148
149         pclemi(i,k) = 1.0
150     .      - EXP( - coef_chau*zflwp(i) - DF*k_ice*zfiwp(i) )
151
152         endif ! ok_newmicro
153
154         lo = (pclc(i,k) .LE. seuil_neb)
155         IF (lo) pclc(i,k) = 0.0
156         IF (lo) pcltau(i,k) = 0.0
157         IF (lo) pclemi(i,k) = 0.0
158      ENDDO
159      ENDDO
160ccc      DO k = 1, klev
161ccc      DO i = 1, klon
162ccc         t(i,k) = t(i,k)
163ccc         pclc(i,k) = MAX( 1.e-5 , pclc(i,k) )
164ccc         lo = pclc(i,k) .GT. (2.*1.e-5)
165ccc         zflwp = pqlwp(i,k)*1000.*(paprs(i,k)-paprs(i,k+1))
166ccc     .          /(rg*pclc(i,k))
167ccc         zradef = 10.0 + (1.-sigs(k))*45.0
168ccc         pcltau(i,k) = 1.5 * zflwp / zradef
169ccc         zfice=1.0-MIN(MAX((t(i,k)-263.)/(273.-263.),0.0),1.0)
170ccc         zmsac = 0.13*(1.0-zfice) + 0.08*zfice
171ccc         pclemi(i,k) = 1.-EXP(-zmsac*zflwp)
172ccc         if (.NOT.lo) pclc(i,k) = 0.0
173ccc         if (.NOT.lo) pcltau(i,k) = 0.0
174ccc         if (.NOT.lo) pclemi(i,k) = 0.0
175ccc      ENDDO
176ccc      ENDDO
177cccccc      print*, 'pas de nuage dans le rayonnement'
178cccccc      DO k = 1, klev
179cccccc      DO i = 1, klon
180cccccc         pclc(i,k) = 0.0
181cccccc         pcltau(i,k) = 0.0
182cccccc         pclemi(i,k) = 0.0
183cccccc      ENDDO
184cccccc      ENDDO
185C
186C COMPUTE CLOUD LIQUID PATH AND TOTAL CLOUDINESS
187C
188      DO i = 1, klon
189         pct(i)=1.0
190         pch(i)=1.0
191         pcm(i) = 1.0
192         pcl(i) = 1.0
193         pctlwp(i) = 0.0
194      ENDDO
195C
196      DO k = klev, 1, -1
197      DO i = 1, klon
198         pctlwp(i) = pctlwp(i)
199     .             + pqlwp(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
200         pct(i) = pct(i)*(1.0-pclc(i,k))
201         if (pplay(i,k).LE.cetahb*paprs(i,1))
202     .      pch(i) = pch(i)*(1.0-pclc(i,k))
203         if (pplay(i,k).GT.cetahb*paprs(i,1) .AND.
204     .       pplay(i,k).LE.cetamb*paprs(i,1))
205     .      pcm(i) = pcm(i)*(1.0-pclc(i,k))
206         if (pplay(i,k).GT.cetamb*paprs(i,1))
207     .      pcl(i) = pcl(i)*(1.0-pclc(i,k))
208      ENDDO
209      ENDDO
210C
211      DO i = 1, klon
212         pct(i)=1.-pct(i)
213         pch(i)=1.-pch(i)
214         pcm(i)=1.-pcm(i)
215         pcl(i)=1.-pcl(i)
216      ENDDO
217C
218      RETURN
219      END
Note: See TracBrowser for help on using the repository browser.