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

Last change on this file since 436 was 418, checked in by (none), 22 years ago

This commit was manufactured by cvs2svn to create branch 'rel-LF'.

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