LMDZ
radlsw.F90
Go to the documentation of this file.
1 SUBROUTINE radlsw &
2  & ( kidia, kfdia , klon , klev , kmode, kaer,&
3  & prii0,&
4  & paer , palbd , palbp, paph , pap,&
5  & pccnl, pccno,&
6  & pcco2, pclfr , pdp , pemis, pemiw , plsm , pmu0, pozon,&
7  & pq , pqiwp , pqlwp, pqs , pqrain, praint,&
8  & pth , pt , pts , pnbas, pntop,&
9  & pref_liq, pref_ice,&
10  & pemit, pfct , pflt , pfcs , pfls,&
11  & pfrsod,psudu , puvdf, pparf, pparcf, ptincf,&
12  & psfswdir, psfswdif,pfsdnn,pfsdnv ,&
13  & lrdust,ppiza_dst,pcga_dst,ptaurel_dst,&
14  & ptau_lw,&
15  & pflux,pfluc,pfsdn ,pfsup , pfscdn , pfscup)
16 
18 
19 !**** *RADLSW* - INTERFACE TO ECMWF LW AND SW RADIATION SCHEMES
20 
21 ! PURPOSE.
22 ! --------
23 ! CONTROLS RADIATION COMPUTATIONS
24 
25 !** INTERFACE.
26 ! ----------
27 
28 ! EXPLICIT ARGUMENTS :
29 ! --------------------
30 ! PAER : (KLON,6,KLEV) ; OPTICAL THICKNESS OF THE AEROSOLS
31 ! PALBD : (KLON,NSW) ; SURF. SW ALBEDO FOR DIFFUSE RADIATION
32 ! PALBP : (KLON,NSW) ; SURF. SW ALBEDO FOR PARALLEL RADIATION
33 ! PAPH : (KLON,KLEV+1) ; HALF LEVEL PRESSURE
34 ! PAP : (KLON,KLEV) ; FULL LEVEL PRESSURE
35 ! PCCNL : (KLON) ; CCN CONCENTRATION OVER LAND
36 ! PCCNO : (KLON) ; CCN CONCENTRATION OVER OCEAN
37 ! PCCO2 : ; CONCENTRATION IN CO2 (KG/KG)
38 ! PCLFR : (KLON,KLEV) ; CLOUD FRACTIONAL COVER
39 ! PDP : (KLON,KLEV) ; LAYER PRESSURE THICKNESS
40 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
41 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
42 ! PLSM : (KLON) ; LAND-SEA MASK
43 ! PMU0 : (KLON) ; SOLAR ANGLE
44 ! PNBAS : (KLON) ; INDEX OF BASE OF CONVECTIVE LAYER
45 ! PNTOP : (KLON) ; INDEX OF TOP OF CONVECTIVE LAYER
46 ! POZON : (KLON,KLEV) ; OZONE AMOUNT in LAYER (KG/KG*PA)
47 ! PQ : (KLON,KLEV) ; SPECIFIC HUMIDITY KG/KG
48 ! PQIWP : (KLON,KLEV) ; SOLID WATER KG/KG
49 ! PQLWP : (KLON,KLEV) ; LIQUID WATER KG/KG
50 ! PQS : (KLON,KLEV) ; SATURATION WATER VAPOR KG/KG
51 ! PQRAIN : (KLON,KLEV) ; RAIN WATER KG/KG
52 ! PRAINT : (KLON,KLEV) ; RAIN RATE (m/s)
53 ! PTH : (KLON,KLEV+1) ; HALF LEVEL TEMPERATURE
54 ! PT : (KLON,KLEV) ; FULL LEVEL TEMPERATURE
55 ! PTS : (KLON) ; SURFACE TEMPERATURE
56 ! LDDUST ; Dust properties switch
57 ! PPIZA_DST : (KPROMA,KLEV,NSW); Single scattering albedo of dust
58 ! PCGA_DST : (KPROMA,KLEV,NSW); Assymetry factor for dust
59 ! PTAUREL_DST: (KPROMA,KLEV,NSW); Optical depth of dust relative to at 550nm
60 ! PTAU_LW (KPROMA,KLEV,NLW); LW Optical depth of aerosols
61 ! PREF_LIQ (KPROMA,KLEV) ; Liquid droplet radius (um)
62 ! PREF_ICE (KPROMA,KLEV) ; Ice crystal radius (um)
63 ! ==== OUTPUTS ===
64 ! PFCT : (KLON,KLEV+1) ; CLEAR-SKY LW NET FLUXES
65 ! PFLT : (KLON,KLEV+1) ; TOTAL LW NET FLUXES
66 ! PFCS : (KLON,KLEV+1) ; CLEAR-SKY SW NET FLUXES
67 ! PFLS : (KLON,KLEV+1) ; TOTAL SW NET FLUXES
68 ! PFRSOD : (KLON) ; TOTAL-SKY SURFACE SW DOWNWARD FLUX
69 ! PEMIT : (KLON) ; SURFACE TOTAL LONGWAVE EMISSIVITY
70 ! PSUDU : (KLON) ; SOLAR RADIANCE IN SUN'S DIRECTION
71 ! PPARF : (KLON) ; PHOTOSYNTHETICALLY ACTIVE RADIATION
72 ! PUVDF : (KLON) ; UV(-B) RADIATION
73 ! PPARCF : (KLON) ; CLEAR-SKY PHOTOSYNTHETICALLY ACTIVE RADIATION
74 ! PTINCF : (KLON) ; TOA INCIDENT SOLAR RADIATION
75 ! Ajout flux LW et SW montants et descendants, et ciel clair (MPL 19.12.08)
76 ! PFLUX : (KLON,2,KLEV+1) ; LW total sky flux (1=up, 2=down)
77 ! PFLUC : (KLON,2,KLEV+1) ; LW clear sky flux (1=up, 2=down)
78 ! PFSDN(KLON,KLEV+1) ; SW total sky flux down
79 ! PFSUP(KLON,KLEV+1) ; SW total sky flux up
80 ! PFSCDN(KLON,KLEV+1) ; SW clear sky flux down
81 ! PFSCUP(KLON,KLEV+1) ; SW clear sky flux up
82 
83 
84 
85 ! IMPLICIT ARGUMENTS : NONE
86 ! --------------------
87 
88 ! METHOD.
89 ! -------
90 ! SEE DOCUMENTATION
91 
92 ! EXTERNALS.
93 ! ----------
94 
95 ! REFERENCE.
96 ! ----------
97 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
98 
99 ! AUTHORS.
100 ! --------
101 ! J.-J. MORCRETTE *ECMWF*
102 
103 ! MODIFICATIONS.
104 ! --------------
105 ! ORIGINAL : 88-02-04
106 ! J.-J. MORCRETTE 94-11-15 DIRECT/DIFFUSE SURFACE ALBEDO
107 ! 08/96: J.-J. Morcrette/Ph. Dandin: tests of eff. radius param.
108 ! 9909 : JJMorcrette effect.radius + inhomogeneity factors
109 ! JJMorcrette 990128 : sunshine duration
110 ! JJMorcrette : 990831 RRTM-140gp
111 ! JJMorcrette : 010112 Sun-Rikus ice particle Diameter
112 ! JJMorcrette : 010301 cleaning liq/ice cloud optical properties
113 ! JJMorcrette : 011005 CCN --> Re liquid water clouds
114 ! JJMorcrette : 011108 Safety checks
115 ! JJMorcrette : 011108 Safety checks
116 ! DJSalmond : 020211 Check before R-To-R
117 ! JJMorcrette : 020901 PAR & UV
118 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
119 ! JJMorcrette : 050402 New sets of optical properties (NB: inactive)
120 ! Y.Seity 04-11-18 : add 4 arguments for AROME externalized surface
121 ! Y.Seity 05-10-10 : add 3 optional arg. for dust SW properties
122 ! JJMorcrette 20060721 PP of clear-sky PAR and TOA incident solar radiation
123 !-----------------------------------------------------------------------
124 
125 USE parkind1 ,ONLY : jpim ,jprb
126 USE yomhook ,ONLY : lhook, dr_hook
127 
128 USE yomcst , ONLY : rg ,rd ,rtt ,rpi
129 !USE YOERAD , ONLY : NSW ,LRRTM ,LCCNL ,LCCNO, LDIFFC, &
130 ! NSW mis dans .def MPL 20140211
131 USE yoerad , ONLY : nlw, lrrtm ,lccnl ,lccno, ldiffc, &
134  & ledbug
135 USE yoelw , ONLY : nsil ,ntra ,nua ,tstand ,xp
136 USE yoesw , ONLY : ryfwca ,ryfwcb ,ryfwcc ,ryfwcd ,&
137  & ryfwce ,ryfwcf ,rebcua ,rebcub ,rebcuc ,&
138  & rebcud ,rebcue ,rebcuf ,rebcui ,rebcuj ,&
139  & rebcug ,rebcuh ,rhsavi ,rfulio ,rflaa0 ,&
140  & rflaa1 ,rflbb0 ,rflbb1 ,rflbb2 ,rflbb3 ,&
141  & rflcc0 ,rflcc1 ,rflcc2 ,rflcc3 ,rfldd0 ,&
143  & raswcb ,raswcc ,raswcd ,raswce ,raswcf ,&
144  & rfuaa0 ,rfuaa1 ,rfubb0 ,rfubb1 ,rfubb2 ,&
145  & rfubb3 ,rfucc0 ,rfucc1 ,rfucc2 ,rfucc3 ,&
146  & rlilia ,rlilib
147 USE yoerdu , ONLY : nuaer ,ntraer ,replog ,repsc ,repscw ,diff
148 !USE YOETHF , ONLY : RTICE
149 USE yoephli , ONLY : lphylin
150 USE yoerrtwn , ONLY : delwave ,totplnk
151 
152 USE yomlun_ifsaux , ONLY : nulout
153 USE yomct3 , ONLY : nstep
154 
155 IMPLICIT NONE
156 
157 include "clesphys.h"
158 !!include "clesrrtm.h"
159 include "YOETHF.h"
160 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
161 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
162 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
163 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
164 INTEGER(KIND=JPIM),INTENT(IN) :: KMODE
165 INTEGER(KIND=JPIM),INTENT(IN) :: KAER
166 REAL(KIND=JPRB) ,INTENT(IN) :: PRII0
167 REAL(KIND=JPRB) ,INTENT(IN) :: PAER(klon,6,klev)
168 REAL(KIND=JPRB) ,INTENT(IN) :: PALBD(klon,nsw)
169 REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(klon,nsw)
170 REAL(KIND=JPRB) ,INTENT(IN) :: PAPH(klon,klev+1)
171 REAL(KIND=JPRB) ,INTENT(IN) :: PAP(klon,klev)
172 REAL(KIND=JPRB) ,INTENT(IN) :: PCCNL(klon)
173 REAL(KIND=JPRB) ,INTENT(IN) :: PCCNO(klon)
174 REAL(KIND=JPRB) ,INTENT(IN) :: PCCO2
175 REAL(KIND=JPRB) ,INTENT(IN) :: PCLFR(klon,klev)
176 REAL(KIND=JPRB) ,INTENT(IN) :: PDP(klon,klev)
177 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(klon)
178 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(klon)
179 REAL(KIND=JPRB) ,INTENT(IN) :: PLSM(klon)
180 REAL(KIND=JPRB) ,INTENT(IN) :: PMU0(klon)
181 REAL(KIND=JPRB) ,INTENT(IN) :: POZON(klon,klev)
182 REAL(KIND=JPRB) ,INTENT(IN) :: PQ(klon,klev)
183 REAL(KIND=JPRB) ,INTENT(IN) :: PQIWP(klon,klev)
184 REAL(KIND=JPRB) ,INTENT(IN) :: PQLWP(klon,klev)
185 REAL(KIND=JPRB) ,INTENT(IN) :: PQS(klon,klev)
186 REAL(KIND=JPRB) :: PQRAIN(klon,klev) ! Argument NOT used
187 REAL(KIND=JPRB) :: PRAINT(klon,klev) ! Argument NOT used
188 REAL(KIND=JPRB) ,INTENT(IN) :: PTH(klon,klev+1)
189 REAL(KIND=JPRB) ,INTENT(IN) :: PT(klon,klev)
190 REAL(KIND=JPRB) ,INTENT(IN) :: PTS(klon)
191 REAL(KIND=JPRB) ,INTENT(IN) :: PNBAS(klon)
192 REAL(KIND=JPRB) ,INTENT(IN) :: PNTOP(klon)
193 LOGICAL ,INTENT(IN) :: LRDUST
194 REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(klon,klev,nsw)
195 REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(klon,klev,nsw)
196 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(klon,klev,nsw)
197 !--C.Kleinschmitt
198 REAL(KIND=JPRB) ,INTENT(IN) :: PTAU_LW(klon,klev,nlw)
199 !--end
200 REAL(KIND=JPRB) ,INTENT(IN) :: PREF_LIQ(klon,klev)
201 REAL(KIND=JPRB) ,INTENT(IN) :: PREF_ICE(klon,klev)
202 REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(klon)
203 REAL(KIND=JPRB) ,INTENT(OUT) :: PFCT(klon,klev+1)
204 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLT(klon,klev+1)
205 REAL(KIND=JPRB) ,INTENT(OUT) :: PFCS(klon,klev+1)
206 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLS(klon,klev+1)
207 REAL(KIND=JPRB) ,INTENT(OUT) :: PFRSOD(klon)
208 REAL(KIND=JPRB) ,INTENT(OUT) :: PSUDU(klon)
209 REAL(KIND=JPRB) ,INTENT(OUT) :: PUVDF(klon)
210 REAL(KIND=JPRB) ,INTENT(OUT) :: PPARF(klon)
211 REAL(KIND=JPRB) ,INTENT(OUT) :: PPARCF(klon), PTINCF(klon)
212 REAL(KIND=JPRB) ,INTENT(OUT) :: PSFSWDIR(klon,nsw)
213 REAL(KIND=JPRB) ,INTENT(OUT) :: PSFSWDIF(klon,nsw)
214 REAL(KIND=JPRB) ,INTENT(OUT) :: PFSDNN(klon)
215 REAL(KIND=JPRB) ,INTENT(OUT) :: PFSDNV(klon)
216 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUX(klon,2,klev+1) ! LW total sky flux (1=up, 2=down)
217 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUC(klon,2,klev+1) ! LW clear sky flux (1=up, 2=down)
218 REAL(KIND=JPRB) ,INTENT(OUT) :: PFSDN(klon,klev+1) ! SW total sky flux down
219 REAL(KIND=JPRB) ,INTENT(OUT) :: PFSUP(klon,klev+1) ! SW total sky flux up
220 REAL(KIND=JPRB) ,INTENT(OUT) :: PFSCDN(klon,klev+1) ! SW clear sky flux down
221 REAL(KIND=JPRB) ,INTENT(OUT) :: PFSCUP(klon,klev+1) ! SW clear sky flux up
222 
223 
224 ! -----------------------------------------------------------------
225 
226 !* 0.1 ARGUMENTS.
227 ! ----------
228 ! ==== COMPUTED IN RADLSW ===
229 ! -----------------------------------------------------------------
230 
231 !* 0.2 LOCAL ARRAYS.
232 ! -------------
233 ! -----------------------------------------------------------------
234 
235 !-- ARRAYS FOR LOCAL VARIABLES -----------------------------------------
236 
237 INTEGER(KIND=JPIM) :: IBAS(klon) , ITOP(klon)
238 
239 REAL(KIND=JPRB) ::&
240  & ZALBD(KLON,NSW) , ZALBP(KLON,NSW)&
241  & , ZCG(KLON,NSW,KLEV) , ZOMEGA(KLON,NSW,KLEV)&
242  & , ZTAU (KLON,NSW,KLEV) &
243  & , ZTAUCLD(KLON,KLEV,16), ZTCLEAR(KLON)
244 REAL(KIND=JPRB) ::&
245  & ZCLDLD(KLON,KLEV) , ZCLDLU(KLON,KLEV)&
246  & , ZCLDSW(KLON,KLEV) , ZCLD0(KLON,KLEV)&
247  & , ZDT0(KLON) &
248  & , ZEMIS(KLON) , ZEMIW(KLON)&
249  & , ZFIWP(KLON) , ZFLWP(KLON) , ZFRWP(KLON)&
250  & , ZIWC(KLON) , ZLWC(KLON)&
251  !cc , ZRWC(KLON)
252  & , zmu0(klon) , zoz(klon,klev) , zozn(klon,klev)&
253  & , zpmb(klon,klev+1) , zpsol(klon)&
254  & , ztave(klon,klev) , ztl(klon,klev+1)&
255  & , zview(klon)
256 REAL(KIND=JPRB) ::&
257  & ZFCDWN(KLON,KLEV+1), ZFCUP(KLON,KLEV+1)&
258  & , ZFSDWN(KLON,KLEV+1), ZFSUP(KLON,KLEV+1)&
259  & , ZFSUPN(KLON) , ZFSUPV(KLON)&
260  & , ZFCUPN(KLON) , ZFCUPV(KLON)&
261  & , ZFSDNN(KLON) , ZFSDNV(KLON)&
262  & , ZFCDNN(KLON) , ZFCDNV(KLON)&
263  & , ZDIRFS(KLON,NSW) , ZDIFFS(KLON,NSW)
264 REAL(KIND=JPRB) ::&
265  & ZALFICE(KLON) , ZGAMICE(KLON) , ZBICE(KLON) , ZDESR(KLON)&
266  & , ZRADIP(KLON) , ZRADLP(KLON) &
267  !cc , ZRADRD(KLON)
268  & , zraint(klon) , zres(klon)&
269  & , ztice(klon) , zemit(klon), zbicfu(klon)&
270  & , zkicfu(klon)
271 REAL(KIND=JPRB) :: ZSUDU(klon) , ZPARF(klon) , ZUVDF(klon), ZPARCF(klon)
272 INTEGER(KIND=JPIM) :: IKL, JK, JKL, JKLP1, JKP1, JL, JNU, JRTM, JSW, INDLAY
273 
274 REAL(KIND=JPRB) :: ZASYMX, ZDIFFD, ZGI, ZGL, ZGR, ZIWGKG, ZLWGKG,&
275  & ZMSAID, ZMSAIU, ZMSALD, ZMSALU, ZRSAIA, ZRSAID, ZRSAIE, ZRSAIF, ZRSAIG, ZRSALD, &
276  & ZMULTI, ZMULTL, ZOI , ZOL, &
277  & ZOMGMX, ZOR, ZRMUZ, ZRWGKG, ZTAUD, ZTAUMX, ZTEMPC, &
278  & ZTOI, ZTOL, ZTOR, ZZFIWP, ZZFLWP, ZDPOG, ZPODT
279 
280 REAL(KIND=JPRB) :: ZALND, ZASEA, ZD, ZDEN, ZNTOT, ZNUM, ZRATIO, Z1RADI, &
281  & Z1RADL, ZBETAI, ZOMGI, ZOMGP, ZFDEL, ZTCELS, ZFSR, ZAIWC, &
282  & ZBIWC, ZTBLAY, ZADDPLK, ZPLANCK, ZEXTCF, Z1MOMG, &
283  & ZDefRe, ZRefDe, ZVI , ZMABSD
284 
285 !REAL(KIND=JPRB) :: ZAVDP(KLON), ZAVTO(KLON), ZSQTO(KLON)
286 REAL(KIND=JPRB) :: ZAVTO(klon), ZSQTO(klon)
287 REAL(KIND=JPRB) :: ZSQUAR(klon,klev), ZVARIA(klon,klev)
288 INTEGER(KIND=JPIM) :: IKI, JKI, JEXPLR, JXPLDN
289 LOGICAL :: LLDEBUG
290 
291 
292 REAL(KIND=JPRB) :: ZHOOK_HANDLE
293 
294 #include "lw.intfb.h"
295 #include "rrtm_rrtm_140gp.intfb.h"
296 #include "sw.intfb.h"
297 
298 ! -----------------------------------------------------------------
299 
300 !* 1. SET-UP INPUT QUANTITIES FOR RADIATION
301 ! -------------------------------------
302 
303 IF (lhook) CALL dr_hook('RADLSW',0,zhook_handle)
304 
305 lldebug=.false.
306 zrefde = rre2de
307 zdefre = 1.0_jprb / zrefde
308 
309 DO jl = kidia,kfdia
310  zfcup(jl,klev+1) = 0.0_jprb
311  zfcdwn(jl,klev+1) = replog
312  zfsup(jl,klev+1) = 0.0_jprb
313  zfsdwn(jl,klev+1) = replog
314  pflux(jl,1,klev+1) = 0.0_jprb
315  pflux(jl,2,klev+1) = 0.0_jprb
316  pfluc(jl,1,klev+1) = 0.0_jprb
317  pfluc(jl,2,klev+1) = 0.0_jprb
318  zfsdnn(jl) = 0.0_jprb
319  zfsdnv(jl) = 0.0_jprb
320  zfcdnn(jl) = 0.0_jprb
321  zfcdnv(jl) = 0.0_jprb
322  zfsupn(jl) = 0.0_jprb
323  zfsupv(jl) = 0.0_jprb
324  zfcupn(jl) = 0.0_jprb
325  zfcupv(jl) = 0.0_jprb
326  zpsol(jl) = paph(jl,klev+1)
327  zpmb(jl,1) = zpsol(jl) / 100.0_jprb
328  zdt0(jl) = pts(jl) - pth(jl,klev+1)
329  psudu(jl) = 0.0_jprb
330  pparf(jl) = 0.0_jprb
331  pparcf(jl)= 0.0_jprb
332  puvdf(jl) = 0.0_jprb
333  psfswdir(jl,:)=0.0_jprb
334  psfswdif(jl,:)=0.0_jprb
335  ibas(jl) = int( 0.01_jprb + pnbas(jl) )
336  itop(jl) = int( 0.01_jprb + pntop(jl) )
337 ENDDO
338 
339 !* 1.1 INITIALIZE VARIOUS FIELDS
340 ! -------------------------
341 
342 DO jsw=1,nsw
343  DO jl = kidia,kfdia
344  zalbd(jl,jsw)=palbd(jl,jsw)
345  zalbp(jl,jsw)=palbp(jl,jsw)
346  ENDDO
347 ENDDO
348 DO jl = kidia,kfdia
349  zemis(jl) =pemis(jl)
350  zemiw(jl) =pemiw(jl)
351  zmu0(jl) =pmu0(jl)
352 ENDDO
353 
354 DO jk = 1 , klev
355  jkp1 = jk + 1
356  jkl = klev+ 1 - jk
357  jklp1 = jkl + 1
358  DO jl = kidia,kfdia
359  zpmb(jl,jk+1)=paph(jl,jkl)/100.0_jprb
360 
361 !-- ZOZ in cm.atm for SW scheme
362  zoz(jl,jk) = pozon(jl,jkl) * 46.6968_jprb / rg
363 
364  zcld0(jl,jk) = 0.0_jprb
365  zfcup(jl,jk) = 0.0_jprb
366  zfcdwn(jl,jk) = 0.0_jprb
367  zfsup(jl,jk) = 0.0_jprb
368  zfsdwn(jl,jk) = 0.0_jprb
369  pflux(jl,1,jk) = 0.0_jprb
370  pflux(jl,2,jk) = 0.0_jprb
371  pfluc(jl,1,jk) = 0.0_jprb
372  pfluc(jl,2,jk) = 0.0_jprb
373  ENDDO
374 ENDDO
375 
376 DO jk=1,klev
377  jkl=klev+1-jk
378  jklp1=jkl+1
379  DO jl=kidia,kfdia
380  ztl(jl,jk)=pth(jl,jklp1)
381  ztave(jl,jk)=pt(jl,jkl)
382  ENDDO
383 ENDDO
384 DO jl=kidia,kfdia
385  ztl(jl,klev+1)= pth(jl,1)
386  zpmb(jl,klev+1) = paph(jl,1)/100.0_jprb
387 ENDDO
388 !***
389 
390 ! ------------------------------------------------------------------
391 
392 !* 2. CLOUD AND AEROSOL PARAMETERS
393 ! ----------------------------
394 
395 DO jk = 1 , klev
396  ikl = klev + 1 - jk
397 
398 ! 2.1 INITIALIZE OPTICAL PROPERTIES TO CLEAR SKY VALUES
399 ! -------------------------------------------------
400 
401  DO jsw = 1,nsw
402  DO jl = kidia,kfdia
403  ztau(jl,jsw,jk) = 0.0_jprb
404  zomega(jl,jsw,jk)= 1.0_jprb
405  zcg(jl,jsw,jk) = 0.0_jprb
406  ENDDO
407  ENDDO
408  DO jl = kidia,kfdia
409  zcldsw(jl,jk) = 0.0_jprb
410  zcldld(jl,jk) = 0.0_jprb
411  zcldlu(jl,jk) = 0.0_jprb
412  ENDDO
413 
414 ! 2.2 CLOUD ICE AND LIQUID CONTENT AND PATH
415 ! -------------------------------------
416 
417  DO jl = kidia,kfdia
418 
419 ! --- LIQUID WATER CONTENT (g.m-3) AND LIQUID WATER PATH (g.m-2)
420  IF (pclfr(jl,ikl) > repsc ) THEN
421  zlwgkg=max(pqlwp(jl,ikl)*1000.0_jprb,0.0_jprb)
422  ziwgkg=max(pqiwp(jl,ikl)*1000.0_jprb,0.0_jprb)
423  zlwgkg=zlwgkg/pclfr(jl,ikl)
424  ziwgkg=ziwgkg/pclfr(jl,ikl)
425  ELSE
426  zlwgkg=0.0_jprb
427  ziwgkg=0.0_jprb
428  ENDIF
429  zrwgkg=0.0_jprb
430  zraint(jl)=0.0_jprb
431 
432 ! --- RAIN LIQUID WATER CONTENT (g.m-3) AND LIQUID WATER PATH (g.m-2)
433 ! IF (PRAINT(JL,IKL) >= REPSCW) THEN
434 ! ZRWGKG=MAX(PQRAIN(JL,IKL)*1000., 0.0)
435 ! ZRAINT(JL)=PRAINT(JL,IKL)*3600.*1000.
436 !- no radiative effect of rain (for the moment)
437 ! ZRWGKG=0.
438 ! ZRAINT(JL)=0.
439 ! ===========================================================
440 
441 ! Modifications Martin et al.
442 ! ELSE
443 ! ENDIF
444  zdpog=pdp(jl,ikl)/rg
445  zflwp(jl)= zlwgkg*zdpog
446  zfiwp(jl)= ziwgkg*zdpog
447  zfrwp(jl)= zrwgkg*zdpog
448  zpodt=pap(jl,ikl)/(rd*pt(jl,ikl))
449  zlwc(jl)=zlwgkg*zpodt
450  ziwc(jl)=ziwgkg*zpodt
451 ! ZRWC(JL)=ZRWGKG*ZPODT
452 
453  ENDDO
454  DO jl = kidia,kfdia
455 ! --- EFFECTIVE RADIUS FOR WATER, ICE AND RAIN PARTICLES
456 
457 ! very old parametrization as f(pressure)
458 
459  IF (nradlp == 0) THEN
460 !-- very old parametrization as f(pressure) ERA-15
461  zradlp(jl)=10.0_jprb + (100000.0_jprb-pap(jl,ikl))*3.5_jprb
462 
463  ELSEIF (nradlp == 1) THEN
464 ! simple distinction between land (10) and ocean (13) Zhang and Rossow
465  IF (plsm(jl) < 0.5_jprb) THEN
466  zradlp(jl)=13.0_jprb
467  ELSE
468  zradlp(jl)=10.0_jprb
469  ENDIF
470 
471  ELSEIF (nradlp == 2) THEN
472 !-- based on Martin et al., 1994, JAS
473  IF (plsm(jl) < 0.5_jprb) THEN
474  IF (lccno) THEN
475 ! ZASEA=50.0_JPRB
476  zasea=pccno(jl)
477  ELSE
478  zasea=rccnsea
479  ENDIF
480  zd=0.33_jprb
481  zntot=-1.15e-03_jprb*zasea*zasea+0.963_jprb*zasea+5.30_jprb
482  ELSE
483  IF (lccnl) THEN
484 ! ZALND=900.0_JPRB
485  zalnd=pccnl(jl)
486  ELSE
487  zalnd=rccnlnd
488  ENDIF
489  zd=0.43_jprb
490  zntot=-2.10e-04_jprb*zalnd*zalnd+0.568_jprb*zalnd-27.9_jprb
491  ENDIF
492  znum=3.0_jprb*zlwc(jl)*(1.0_jprb+3.0_jprb*zd*zd)**2
493  zden=4.0_jprb*rpi*zntot*(1.0_jprb+zd*zd)**3
494  IF((znum/zden) > replog)THEN
495  zradlp(jl)=100.0_jprb*exp(0.333_jprb*log(znum/zden))
496  zradlp(jl)=max(zradlp(jl), 4.0_jprb)
497  zradlp(jl)=min(zradlp(jl),16.0_jprb)
498  ELSE
499  zradlp(jl)=4.0_jprb
500  ENDIF
501 
502  ELSEIF (nradlp == 3) THEN
503 ! one uses the cloud droplet radius from newmicro
504 ! IKL or JK ?? - I think IKL but needs to be verified
505  zradlp(jl)=pref_liq(jl,ikl)
506  ENDIF
507 
508 ! ===========================================================
509 ! ___________________________________________________________
510 
511 ! rain drop from : unused as ZRAINT is 0.
512 ! ZRADRD(JL)=500.0_JPRB*ZRAINT(JL)**0.22_JPRB
513 ! IF (ZFLWP(JL).GT.0.) THEN
514 ! ZRADRD(JL)=ZRADLP(JL)+ZRADRD(JL)
515 ! ENDIF
516 
517  ENDDO
518  DO jl = kidia,kfdia
519 
520 ! diagnosing the ice particle effective radius/diameter
521 
522 !- ice particle effective radius =f(T) from Liou and Ou (1994)
523 
524  IF (pt(jl,ikl) < rtice) THEN
525  ztempc=pt(jl,ikl)-rtt
526  ELSE
527  ztempc=rtice-rtt
528  ENDIF
529  zradip(jl)=326.3_jprb+ztempc*(12.42_jprb + ztempc*(0.197_jprb + ztempc*&
530  & 0.0012_jprb))
531 
532  IF (nradip == 0) THEN
533 !-- fixed 40 micron effective radius
534  zradip(jl)= 40.0_jprb
535  zdesr(jl) = zdefre * zradip(jl)
536 
537  ELSEIF (nradip == 1) THEN
538 
539 !-- old formulation based on Liou & Ou (1994) temperature (40-130microns)
540  zradip(jl)=max(zradip(jl),40.0_jprb)
541  zdesr(jl) = zdefre * zradip(jl)
542 
543  ELSEIF (nradip == 2) THEN
544 !-- formulation following Jakob, Klein modifications to ice content
545  zradip(jl)=max(zradip(jl),30.0_jprb)
546  zradip(jl)=min(zradip(jl),60.0_jprb)
547  zdesr(jl)= zdefre * zradip(jl)
548 
549  ELSEIF (nradip == 3 ) THEN
550 
551 !- ice particle effective radius =f(T,IWC) from Sun and Rikus (1999)
552 ! revised by Sun (2001)
553  IF (ziwc(jl) > 0.0_jprb ) THEN
554  ztempc = pt(jl,ikl)-83.15_jprb
555  ztcels = pt(jl,ikl)-rtt
556  zfsr = 1.2351_jprb +0.0105_jprb * ztcels
557 ! Sun, 2001 (corrected from Sun & Rikus, 1999)
558  zaiwc = 45.8966_jprb * ziwc(jl)**0.2214_jprb
559  zbiwc = 0.7957_jprb * ziwc(jl)**0.2535_jprb
560  zdesr(jl) = zfsr * (zaiwc + zbiwc*ztempc)
561 !-new ZDESR(JL) = MIN ( MAX( ZDESR(JL), 30.0_JPRB), 155.0_JPRB)
562  zdesr(jl) = min( max( zdesr(jl), 45.0_jprb), 350.0_jprb)
563  zradip(jl)= zrefde * zdesr(jl)
564  ELSE
565 ! ZDESR(JL) = 92.5_JPRB
566  zdesr(jl) = 80.0_jprb
567  zradip(jl)= zrefde * zdesr(jl)
568  ENDIF
569 
570  ELSEIF (nradip == 4 ) THEN
571 ! one uses the cloud droplet radius from newmicro
572 ! IKL or JK ?? - I think IKL but needs to be verified
573  zradip(jl)=pref_ice(jl,ikl)
574  ENDIF
575 
576  ENDDO
577 
578 ! 2.3 CLOUD SHORTWAVE OPTICAL PROPERTIES
579 ! ----------------------------------
580 
581 ! -------------------------
582 ! --+ SW OPTICAL PARAMETERS + Water clouds after Fouquart (1987)
583 ! ------------------------- Ice clouds (Ebert, Curry, 1992)
584 
585  DO jsw=1,nsw
586  DO jl = kidia,kfdia
587  ztol=0.0_jprb
588  zgl =0.0_jprb
589  zol =0.0_jprb
590  ztoi=0.0_jprb
591  zgi =0.0_jprb
592  zoi =0.0_jprb
593  ztor=0.0_jprb
594  zgr =0.0_jprb
595  zor =0.0_jprb
596  IF (zflwp(jl)+zfiwp(jl)+zfrwp(jl) > 2.0_jprb * repscw ) THEN
597  IF (zflwp(jl) >= repscw ) THEN
598  IF (nliqopt /= 0 ) THEN
599 !-- SW: Slingo, 1989
600  ztol = zflwp(jl)*(raswca(jsw)+raswcb(jsw)/zradlp(jl))
601  zgl = raswce(jsw)+raswcf(jsw)*zradlp(jl)
602  zol = 1. - raswcc(jsw)-raswcd(jsw)*zradlp(jl)
603  ELSE
604 !-- SW: Fouquart, 1991
605  ztol = zflwp(jl)*(ryfwca(jsw)+ryfwcb(jsw)/zradlp(jl))
606  zgl = ryfwcf(jsw)
607 ! ZOL = RYFWCC(JSW)-RYFWCD(JSW)*EXP(-RYFWCE(JSW)*ZTOL)
608 !-- NB: RSWINHF is there simply for making the CY29R2 branch bit compatible with
609 ! the previous. Should be cleaned when RRTM_SW becomes active
610  zol = ryfwcc(jsw)-ryfwcd(jsw)*exp(-ryfwce(jsw)*ztol*rswinhf)
611  ENDIF
612  ENDIF
613 
614  IF (zfiwp(jl) >= repscw ) THEN
615  IF (niceopt <= 1) THEN
616 !-- SW: Ebert-Curry
617  ztoi = zfiwp(jl)*(rebcua(jsw)+rebcub(jsw)/zradip(jl))
618  zgi = rebcue(jsw)+rebcuf(jsw)*zradip(jl)
619  zoi = 1.0_jprb - rebcuc(jsw)-rebcud(jsw)*zradip(jl)
620 
621  ELSEIF (niceopt == 2) THEN
622 !-- SW: Fu-Liou 1993
623  z1radi = 1.0_jprb / zdesr(jl)
624  zbetai = rflaa0(jsw)+z1radi* rflaa1(jsw)
625  ztoi = zfiwp(jl) * zbetai
626  zomgi= rflbb0(jsw)+zradip(jl)*(rflbb1(jsw) + zradip(jl) &
627  & *(rflbb2(jsw)+zradip(jl)* rflbb3(jsw) ))
628  zoi = 1.0_jprb - zomgi
629  zomgp= rflcc0(jsw)+zradip(jl)*(rflcc1(jsw) + zradip(jl) &
630  & *(rflcc2(jsw)+zradip(jl)* rflcc3(jsw) ))
631  zfdel= rfldd0(jsw)+zradip(jl)*(rfldd1(jsw) + zradip(jl) &
632  & *(rfldd2(jsw)+zradip(jl)* rfldd3(jsw) ))
633  zgi = ((1.0_jprb -zfdel)*zomgp + zfdel*3.0_jprb) / 3.0_jprb
634 
635  ELSEIF (niceopt == 3) THEN
636 !-- SW: Fu 1996
637  z1radi = 1.0_jprb / zdesr(jl)
638  zbetai = rfuaa0(jsw)+z1radi* rfuaa1(jsw)
639  ztoi = zfiwp(jl) * zbetai
640  zomgi= rfubb0(jsw)+zdesr(jl)*(rfubb1(jsw) + zdesr(jl) &
641  & *(rfubb2(jsw)+zdesr(jl)* rfubb3(jsw) ))
642  zoi = 1.0_jprb - zomgi
643  zgi = rfucc0(jsw)+zdesr(jl)*(rfucc1(jsw) + zdesr(jl) &
644  & *(rfucc2(jsw)+zdesr(jl)* rfucc3(jsw) ))
645  zgi = min(1.0_jprb, zgi)
646 
647  ENDIF
648  ENDIF
649 
650 ! IF (ZFRWP(JL) >= REPSCW ) THEN
651 ! ZTOR= ZFRWP(JL)*0.003_JPRB * ZRAINT(JL)**(-0.22_JPRB)
652 ! ZOR = 1.0_JPRB - RROMA(JSW)*ZRAINT(JL)**RROMB(JSW)
653 ! ZGR = RRASY(JSW)
654 ! ENDIF
655 
656 ! - MIX of WATER and ICE CLOUDS
657  ztaumx= ztol + ztoi + ztor
658  zomgmx= ztol*zol + ztoi*zoi + ztor*zor
659  zasymx= ztol*zol*zgl + ztoi*zoi*zgi + ztor*zor*zgr
660 
661  zasymx= zasymx/zomgmx
662  zomgmx= zomgmx/ztaumx
663 
664 ! --- SW FINAL CLOUD OPTICAL PARAMETERS
665 
666  zcldsw(jl,jk) = pclfr(jl,ikl)
667  ztau(jl,jsw,jk) = ztaumx
668  zomega(jl,jsw,jk)= zomgmx
669  zcg(jl,jsw,jk) = zasymx
670  ENDIF
671  ENDDO
672  ENDDO
673 
674  IF(lldebug) THEN
675  call writefield_phy("radlsw_ztau",ztau(:,1,:),klev)
676  ENDIF
677 
678 ! 2.4 CLOUD LONGWAVE OPTICAL PROPERTIES FOR EC-OPE
679 ! --------------------------------------------
680 
681 ! -------------------------
682 ! --+ LW OPTICAL PARAMETERS + Water (and Ice) from Smith and Shi (1992)
683 ! ------------------------- Ice clouds (Ebert, Curry, 1992)
684 
685  IF (.NOT.lrrtm) THEN
686 
687  DO jl = kidia,kfdia
688  zalfice(jl)=0.0_jprb
689  zgamice(jl)=0.0_jprb
690  zbice(jl)=0.0_jprb
691  ztice(jl)=(pt(jl,ikl)-tstand)/tstand
692  IF (niceopt == 1) THEN
693  zbicfu(jl)=1.0_jprb
694  ELSE
695  zbicfu(jl)=0.0_jprb
696  ENDIF
697  zkicfu(jl)=0.0_jprb
698  ENDDO
699 
700  DO jnu= 1,nsil
701  DO jl = kidia,kfdia
702  zres(jl) = xp(1,jnu)+ztice(jl)*(xp(2,jnu)+ztice(jl)*(xp(3,&
703  & jnu)&
704  & +ztice(jl)*(xp(4,jnu)+ztice(jl)*(xp(5,jnu)+ztice(jl)*(xp(6,&
705  & jnu)&
706  & )))))
707  zbice(jl) = zbice(jl) + zres(jl)
708  zgamice(jl) = zgamice(jl) + rebcui(jnu)*zres(jl)
709  zalfice(jl) = zalfice(jl) + rebcuj(jnu)*zres(jl)
710  ENDDO
711  ENDDO
712 
713 !-- Fu et al. (1998) with M'91 LW scheme
714  IF (niceopt == 2 .OR. niceopt == 3) THEN
715  DO jrtm=1,16
716  DO jl=kidia,kfdia
717  IF (pt(jl,ikl) < 160.0_jprb) THEN
718  indlay=1
719  ztblay =pt(jl,ikl)-160.0_jprb
720  ELSEIF (pt(jl,ikl) < 339.0_jprb ) THEN
721  indlay=pt(jl,ikl)-159.0_jprb
722  indlay=max(indlay,1)
723  ztblay =pt(jl,ikl)-int(pt(jl,ikl))
724  ELSE
725  indlay=180
726  ztblay =pt(jl,ikl)-339.0_jprb
727  ENDIF
728  zaddplk = totplnk(indlay+1,jrtm)-totplnk(indlay,jrtm)
729  zplanck = delwave(jrtm) * (totplnk(indlay,jrtm) + ztblay*zaddplk)
730  zbicfu(jl) = zbicfu(jl) + zplanck
731 
732  IF (ziwc(jl) > 0.0_jprb ) THEN
733  zratio = 1.0_jprb / zdesr(jl)
734  IF (niceopt == 2) THEN
735 ! ice cloud spectral emissivity a la Fu & Liou (1993)
736  zmabsd = rfulio(jrtm,1) + zratio &
737  & *(rfulio(jrtm,2) + zratio*rfulio(jrtm,3))
738 
739 ! ice cloud spectral emissivity a la Fu et al (1998)
740  ELSEIF (niceopt == 3) THEN
741  zmabsd = rfueta(jrtm,1) + zratio &
742  & *(rfueta(jrtm,2) + zratio*rfueta(jrtm,3))
743  ENDIF
744  zkicfu(jl) = zkicfu(jl)+ zmabsd*zplanck
745  ENDIF
746  ENDDO
747  ENDDO
748  ENDIF
749 
750  DO jl = kidia,kfdia
751  zgamice(jl) = zgamice(jl) / zbice(jl)
752  zalfice(jl) = zalfice(jl) / zbice(jl)
753  zkicfu(jl) = zkicfu(jl) / zbicfu(jl)
754 
755  IF (zflwp(jl)+zfiwp(jl) > repscw) THEN
756 
757  IF (nliqopt == 0) THEN
758 ! water cloud emissivity a la Smith & Shi (1992)
759  zmultl=1.2_jprb-0.006_jprb*zradlp(jl)
760  zmsald= 0.158_jprb*zmultl
761  zmsalu= 0.130_jprb*zmultl
762 
763  ELSE
764 ! water cloud emissivity a la Savijarvi (1997)
765  zmsalu= 0.2441_jprb-0.0105_jprb*zradlp(jl)
766  zmsald= 1.2154_jprb*zmsalu
767 
768  ENDIF
769 
770  IF (niceopt == 0) THEN
771 ! ice cloud emissivity a la Smith & Shi (1992)
772  zmulti=1.2_jprb-0.006_jprb*zradip(jl)
773  zmsaid= 0.113_jprb*zmulti
774  zmsaiu= 0.093_jprb*zmulti
775 
776  ELSEIF (niceopt == 1) THEN
777 ! ice cloud emissivity a la Ebert & Curry (1992)
778  zmsaid= 1.66_jprb*(zalfice(jl)+zgamice(jl)/zradip(jl))
779  zmsaiu= zmsaid
780 
781  ELSEIF (niceopt == 2 .OR. niceopt == 3) THEN
782 ! ice cloud emissivity a la Fu & Liou (1993) or Fu et al. (1998)
783  zmsaid= 1.66_jprb*zkicfu(jl)
784  zmsaiu= zmsaid
785  ENDIF
786 
787  IF (ninhom == 1) THEN
788  zzflwp= zflwp(jl) * rlwinhf
789  zzfiwp= zfiwp(jl) * rlwinhf
790  ELSE
791  zzflwp= zflwp(jl)
792  zzfiwp= zfiwp(jl)
793  ENDIF
794 
795 ! effective cloudiness accounting for condensed water
796  zcldld(jl,jk) = pclfr(jl,ikl)*(1.0_jprb-exp(-zmsald*zzflwp-zmsaid* &
797  & zzfiwp))
798  zcldlu(jl,jk) = pclfr(jl,ikl)*(1.0_jprb-exp(-zmsalu*zzflwp-zmsaiu* &
799  & zzfiwp))
800  ENDIF
801  ENDDO
802 
803  ELSE
804 
805 ! 2.5 CLOUD LONGWAVE OPTICAL PROPERTIES FOR RRTM
806 ! ------------------------------------------
807 
808 ! -------------------------
809 ! --+ LW OPTICAL PARAMETERS + Water (and Ice) from Savijarvi (1998)
810 ! ------------------------- Ice clouds (Ebert, Curry, 1992)
811 
812 ! No need for a fixed diffusivity factor, accounted for spectrally below
813 ! The detailed spectral structure does not require defining upward and
814 ! downward effective optical properties
815 
816  DO jrtm=1,16
817  DO jl = kidia,kfdia
818  ztaucld(jl,jk,jrtm) = 0.0_jprb
819  zmsald = 0.0_jprb
820  zmsaid = 0.0_jprb
821 
822  IF (zflwp(jl)+zfiwp(jl) > repscw) THEN
823 
824  IF (nliqopt == 0 .OR. nliqopt >= 3 ) THEN
825 ! water cloud total emissivity a la Smith and Shi (1992)
826  zmultl=1.2_jprb-0.006_jprb*zradlp(jl)
827  zrsald= 0.144_jprb*zmultl / 1.66_jprb
828 
829  ELSEIF (nliqopt == 1) THEN
830 ! water cloud spectral emissivity a la Savijarvi (1997)
831  zrsald= rhsavi(jrtm,1) + zradlp(jl)&
832  & *(rhsavi(jrtm,2) + zradlp(jl)*rhsavi(jrtm,3))
833 
834  ELSEIF (nliqopt == 2) THEN
835 ! water cloud spectral emissivity a la Lindner and Li (2000)
836  z1radl = 1.0_jprb / zradlp(jl)
837  zextcf = rlilia(jrtm,1)+zradlp(jl)*rlilia(jrtm,2)+ z1radl*&
838  & (rlilia(jrtm,3) + z1radl*(rlilia(jrtm,4) + z1radl*&
839  & rlilia(jrtm,5) ))
840  z1momg = rlilib(jrtm,1) + z1radl*rlilib(jrtm,2) &
841  & + zradlp(jl) *(rlilib(jrtm,3) + zradlp(jl)*rlilib(jrtm,4) )
842  zrsald = z1momg * zextcf
843  ENDIF
844 
845  IF (niceopt == 0) THEN
846 ! ice cloud spectral emissivity a la Smith & Shi (1992)
847  zmulti=1.2_jprb-0.006_jprb*zradip(jl)
848  zrsaid= 0.103_jprb*zmulti / 1.66_jprb
849 
850  ELSEIF (niceopt == 1) THEN
851 ! ice cloud spectral emissivity a la Ebert-Curry (1992)
852  zrsaid= rebcuh(jrtm)+rebcug(jrtm)/zradip(jl)
853 
854  ELSEIF (niceopt == 2) THEN
855 ! ice cloud spectral emissivity a la Fu & Liou (1993)
856  z1radi = 1.0_jprb / zdesr(jl)
857  zrsaid = rfulio(jrtm,1) + z1radi &
858  & *(rfulio(jrtm,2) + z1radi * rfulio(jrtm,3))
859 
860  ELSEIF (niceopt == 3) THEN
861 ! ice cloud spectral emissivity a la Fu et al (1998) including
862 ! parametrisation for LW scattering effect
863  z1radi = 1.0_jprb / zdesr(jl)
864  zrsaie = rfueta(jrtm,1) + z1radi &
865  &*(rfueta(jrtm,2) + z1radi * rfueta(jrtm,3))
866  zrsaia = z1radi*(rfuetb(jrtm,1) +zdesr(jl)*( rfuetb(jrtm,2) +zdesr(jl)*( rfuetb(jrtm,3) +zdesr(jl)* rfuetb(jrtm,4))))
867  zrsaig = rfuetc(jrtm,1) +zdesr(jl)*( rfuetc(jrtm,2) +zdesr(jl)*( rfuetc(jrtm,3) +zdesr(jl)* rfuetc(jrtm,4)))
868  zrsaif = 0.5_jprb + zrsaig*( 0.3738_jprb + zrsaig*( 0.0076_jprb + zrsaig*0.1186_jprb ) )
869  zrsaid = (1.0_jprb - zrsaia/zrsaie * zrsaif) * zrsaie
870  ENDIF
871 
872  ztaud = zrsald*zflwp(jl)+zrsaid*zfiwp(jl)
873 
874 ! Diffusivity correction within clouds a la Savijarvi
875  IF (ldiffc) THEN
876  zdiffd=min(max(1.517_jprb-0.156_jprb*log(ztaud) , 1.0_jprb), &
877  & 2.0_jprb)
878  ELSE
879  zdiffd=1.66_jprb
880  ENDIF
881 
882  ztaucld(jl,jk,jrtm) = ztaud*zdiffd
883  ENDIF
884 
885  ENDDO
886  ENDDO
887 
888  ENDIF
889 
890 ENDDO
891 
892 nuaer = nua
893 ntraer = ntra
894 
895 ! ------------------------------------------------------------------
896 !
897 ! 2.6 SCALING OF OPTICAL THICKNESS
898 ! SPECTRALLY, ACCOUNTING FOR VERTICAL VARIABILITY
899 
900 jexplr=nlayinh
901 jxpldn=2*jexplr+1
902 
903 IF (ninhom == 1) THEN
904 !-- simple scaling a la Tiedtke (1996) with RSWINHF in SW and RLWINHF in LW
905  DO jsw=1,nsw
906  DO jk=1,klev
907  DO jl=kidia,kfdia
908  ztau(jl,jsw,jk)=ztau(jl,jsw,jk) * rswinhf
909  ENDDO
910  ENDDO
911  ENDDO
912 
913  DO jrtm=1,16
914  DO jk=1,klev
915  DO jl=kidia,kfdia
916  ztaucld(jl,jk,jrtm)=ztaucld(jl,jk,jrtm) * rlwinhf
917  ENDDO
918  ENDDO
919  ENDDO
920 
921 ELSEIF (jexplr /= 0) THEN
922  DO jsw=1,nsw
923  DO jk=1,klev
924  DO jl=kidia,kfdia
925  zsquar(jl,jk)=0.0_jprb
926  zvaria(jl,jk)=1.0_jprb
927  ENDDO
928  ENDDO
929 !-- range should be defined from Hogan & Illingworth
930  DO jk=1+jexplr,klev-jexplr
931  DO jl=kidia,kfdia
932 ! ZAVDP(JL)=0.0_JPRB
933  zavto(jl)=0.0_jprb
934  zsqto(jl)=0.0_jprb
935  ENDDO
936  DO jki=jk-jexplr,jk+jexplr
937  iki=klev+1-jki
938  DO jl=kidia,kfdia
939 ! ZAVDP(JL)=ZAVDP(JL)+PDP(JL,IKI)/RG
940  zavto(jl)=zavto(jl)+ztau(jl,jsw,jki)
941  ENDDO
942  ENDDO
943  DO jl=kidia,kfdia
944 ! ZAVTO(JL)=ZAVTO(JL)/ZAVDP(JL)
945  zavto(jl)=zavto(jl)/jxpldn
946  ENDDO
947  DO jki=jk-jexplr,jk+jexplr
948  iki=klev+1-jki
949  DO jl=kidia,kfdia
950 ! ZSQTO(JL)=ZSQTO(JL)+(ZTAU(JL,JSW,JKI)/PDP(JL,IKI)-ZAVTO(JL))**2
951  zsqto(jl)=zsqto(jl)+(ztau(jl,jsw,jki)-zavto(jl))**2
952  ENDDO
953  ENDDO
954  DO jl=kidia,kfdia
955  zsqto(jl)=sqrt(zsqto(jl)/(jxpldn*(jxpldn-1)))
956  IF (zavto(jl) > 0.0_jprb) THEN
957  zvaria(jl,jk)=(zsqto(jl)/zavto(jl))**2
958  zsquar(jl,jk)=exp(-zvaria(jl,jk))
959  ELSE
960  zvaria(jl,jk)=0.0_jprb
961  zsquar(jl,jk)=1.0_jprb
962  ENDIF
963 
964 !-- scaling a la Barker
965  IF (ninhom ==2) THEN
966  ztau(jl,jsw,jk)=ztau(jl,jsw,jk)*zsquar(jl,jk)
967 
968 !-- scaling a la Cairns et al.
969  ELSEIF (ninhom == 3) THEN
970  zvi=zvaria(jl,jk)
971  ztau(jl,jsw,jk) = ztau(jl,jsw,jk)/(1.0_jprb+zvi)
972  zomega(jl,jsw,jk)= zomega(jl,jsw,jk) &
973  & /(1.0_jprb + zvi*(1.0_jprb-zomega(jl,jsw,jk) ) )
974  zcg(jl,jsw,jk) = zcg(jl,jsw,jk) &
975  & *(1.0_jprb+zvi*(1.0_jprb-zomega(jl,jsw,jk))) &
976  & /(1.0_jprb+zvi*(1.0_jprb-zomega(jl,jsw,jk)*zcg(jl,jsw,jk)))
977  ENDIF
978  ENDDO
979 ! JL=KIDIA
980 ! print 9261,JSW,JK,ZTAU(JL,JSW,JK),ZAVTO(JL),ZSQTO(JL),ZVARIA(JL,JK),ZSQUAR(JL,JK)
981 9261 format(1x,'Varia1 ',2i3,7f10.4)
982  ENDDO
983  ENDDO
984 
985 
986  DO jrtm=1,16
987  DO jk=1,klev
988  DO jl=kidia,kfdia
989  zsquar(jl,jk)=0.0_jprb
990  zvaria(jl,jk)=1.0_jprb
991  ENDDO
992  ENDDO
993 !-- range to be defined from Hogan & Illingworth
994  DO jk=1+jexplr,klev-jexplr
995  DO jl=kidia,kfdia
996 ! ZAVDP(JL)=0.0_JPRB
997  zavto(jl)=0.0_jprb
998  zsqto(jl)=0.0_jprb
999  ENDDO
1000  DO jki=jk-jexplr,jk+jexplr
1001  iki=klev+1-jki
1002  DO jl=kidia,kfdia
1003 ! ZAVDP(JL)=ZAVDP(JL)+PDP(JL,IKI)/RG
1004  zavto(jl)=zavto(jl)+ztaucld(jl,jki,jrtm)
1005  ENDDO
1006  ENDDO
1007  DO jl=kidia,kfdia
1008 ! ZAVTO(JL)=ZAVTO(JL)/ZAVDP(JL)
1009  zavto(jl)=zavto(jl)/jxpldn
1010  ENDDO
1011  DO jki=jk-jexplr,jk+jexplr
1012  iki=klev+1-jki
1013  DO jl=kidia,kfdia
1014 ! ZSQTO(JL)=ZSQTO(JL)+(ZTAUCLD(JL,JKI,JRTM)/PDP(JL,IKI)-ZAVTO(JL))**2
1015  zsqto(jl)=zsqto(jl)+(ztaucld(jl,jki,jrtm)-zavto(jl))**2
1016  ENDDO
1017  ENDDO
1018  DO jl=kidia,kfdia
1019  zsqto(jl)=sqrt(zsqto(jl)/(jxpldn*(jxpldn-1)))
1020  IF (zavto(jl) > 0.0_jprb) THEN
1021  zvaria(jl,jk)=(zsqto(jl)/zavto(jl))**2
1022  zsquar(jl,jk)=exp(-zvaria(jl,jk))
1023  ELSE
1024  zvaria(jl,jk)=0.0_jprb
1025  zsquar(jl,jk)=1.0_jprb
1026  ENDIF
1027 
1028 !-- scaling a la Barker
1029  IF (ninhom ==2) THEN
1030  ztaucld(jl,jk,jrtm)=ztaucld(jl,jk,jrtm)*zsquar(jl,jk)
1031 
1032 !-- scaling a la Cairns et al.
1033  ELSEIF (ninhom == 3) THEN
1034  zvi=zvaria(jl,jk)
1035  ztaucld(jl,jk,jrtm)=ztaucld(jl,jk,jrtm)/(1.0_jprb+zvi)
1036  ENDIF
1037  ENDDO
1038 ! JL=KIDIA
1039 ! print 9262,JRTM,JK,ZTAUCLD(JL,JK,JRTM),ZAVTO(JL),ZSQTO(JL),ZVARIA(JL,JK),ZSQUAR(JL,JK)
1040 9262 format(1x,'Varia2 ',2i3,7f10.4)
1041  ENDDO
1042  ENDDO
1043 ENDIF
1044 
1045 
1046 
1047 ! ------------------------------------------------------------------
1048 !
1049 !* 2.7 DIFFUSIVITY FACTOR OR SATELLITE VIEWING ANGLE
1050 ! ---------------------------------------------
1051 
1052 DO jl = kidia,kfdia
1053  zview(jl) = diff
1054 ENDDO
1055 
1056 ! ------------------------------------------------------------------
1057 
1058 !* 3. CALL LONGWAVE RADIATION CODE
1059 ! ----------------------------
1060 
1061 !* 3.1 FULL LONGWAVE RADIATION COMPUTATIONS
1062 ! ------------------------------------
1063 
1064 !print *,'RADLSW: LPHYLIN, LRRTM',LPHYLIN, LRRTM
1065 IF (.NOT.lphylin) THEN
1066  IF ( .NOT. lrrtm) THEN
1067 
1068  CALL lw &
1069  & ( kidia , kfdia , klon , klev , kmode,&
1070  & pcco2 , zcldld, zcldlu,&
1071  & pdp , zdt0 , zemis , zemiw,&
1072  & zpmb , pozon , ztl,&
1073  & paer , ztave , zview , pq,&
1074  & zemit , pflux , pfluc &
1075  & )
1076 ! print *,'RADLSW: apres CALL LW'
1077  IF(lldebug) THEN
1078  call writefield_phy('radlsw_flux1',pflux(:,1,:),klev+1)
1079  call writefield_phy('radlsw_flux2',pflux(:,2,:),klev+1)
1080  call writefield_phy('radlsw_fluc1',pfluc(:,1,:),klev+1)
1081  call writefield_phy('radlsw_fluc2',pfluc(:,2,:),klev+1)
1082  ENDIF
1083 
1084  ELSE
1085 
1086 !* 3.2 FULL LONGWAVE RADIATION COMPUTATIONS - RRTM
1087 ! ------------------------------------ ----
1088 
1089 ! i) pass ZOZN (ozone mass mixing ratio) to RRTM; remove pressure
1090 ! weighting applied to POZON in driverMC (below)
1091 ! ii) pass ZEMIS and ZEMIW to RRTM; return ZEMIT from RRTM
1092 ! iii)pass ZTAUCLD, cloud optical depths (water+ice) to RRTM,
1093 ! computed from equations above
1094 ! iv) pass ECRT arrays to RRTM arrays in interface routine ECRTATM
1095 ! in module rrtm_ecrt.f
1096 
1097  DO jl = kidia,kfdia
1098  DO jk = 1, klev
1099  zozn(jl,jk) = pozon(jl,jk)/pdp(jl,jk)
1100  ENDDO
1101  ENDDO
1102 
1103 ! print *,'RADLSW: avant CALL RRTM_RRTM_140GP,PAP=',PAP(1,:)
1104  CALL rrtm_rrtm_140gp &
1105  & ( kidia , kfdia , klon , klev,&
1106  & paer , paph , pap,&
1107  & pts , pth , pt,&
1108  & zemis , zemiw,&
1109  & pq , pcco2 , zozn ,&
1110  & zcldsw , ztaucld,&
1111  & ptau_lw,&
1112  & zemit , pflux , pfluc , ztclear )
1113 ! print *,'RADLSW: apres CALL RRTM_RRTM_140GP'
1114 
1115  ENDIF
1116 ELSE
1117  zemit(:) = 0.0_jprb
1118  pflux(:,:,:)= 0.0_jprb
1119  pfluc(:,:,:)= 0.0_jprb
1120 ! print *,'RADLSW: ZEMIT,PFLUX et PFLUC = 0'
1121 ENDIF
1122 
1123 ! ------------------------------------------------------------------
1124 
1125 !* 4. CALL SHORTWAVE RADIATION CODE
1126 ! -----------------------------
1127 
1128 zrmuz=0.0_jprb
1129 DO jl = kidia,kfdia
1130  zrmuz = max(zrmuz, zmu0(jl))
1131 ENDDO
1132 
1133 IF (nstep == 0 .AND. ledbug .AND. zmu0(kidia) > 0.0_jprb) THEN
1134  WRITE(nulout,'(4E15.8)') prii0,pcco2,zpsol(kidia),zmu0(kidia)
1135  WRITE(nulout,'("ZALBD ",6E15.8)') (zalbd(kidia,jsw),jsw=1,nsw)
1136  WRITE(nulout,'("ZALBP ",6E15.8)') (zalbp(kidia,jsw),jsw=1,nsw)
1137  WRITE(nulout,'("PQ ",10E12.5)') (pq(kidia,jk),jk=1,klev)
1138  WRITE(nulout,'("PQS ",10E12.5)') (pqs(kidia,jk),jk=1,klev)
1139  WRITE(nulout,'("PDP ",10E12.5)') (pdp(kidia,jk),jk=1,klev)
1140  WRITE(nulout,'("ZPMB ",10E12.5)') (zpmb(kidia,jk),jk=1,klev+1)
1141  WRITE(nulout,'("ZTAVE ",10E12.5)') (ztave(kidia,jk),jk=1,klev)
1142  WRITE(nulout,'("ZCLDSW",10E12.5)') (zcldsw(kidia,jk),jk=1,klev)
1143  WRITE(nulout,'("ZTAU ",10E12.5)') ((ztau(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1144  WRITE(nulout,'("ZCG ",10E12.5)') ((zcg(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1145  WRITE(nulout,'("ZOMEGA",10E12.5)') ((zomega(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1146  WRITE(nulout,'("ZOZ ",10E12.5)') (zoz(kidia,jk),jk=1,klev)
1147  WRITE(nulout,'("PAER ",10E12.5)') ((paer(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1148 ENDIF
1149 
1150 IF (nstep == 0 .AND. ledbug .AND. zmu0(kidia) > 0.0_jprb) THEN
1151  WRITE(nulout,'(4E15.8)') prii0,pcco2,zpsol(kidia),zmu0(kidia)
1152  WRITE(nulout,'("ZALBD ",6E15.8)') (zalbd(kidia,jsw),jsw=1,nsw)
1153  WRITE(nulout,'("ZALBP ",6E15.8)') (zalbp(kidia,jsw),jsw=1,nsw)
1154  WRITE(nulout,'("PQ ",10E12.5)') (pq(kidia,jk),jk=1,klev)
1155  WRITE(nulout,'("PQS ",10E12.5)') (pqs(kidia,jk),jk=1,klev)
1156  WRITE(nulout,'("PDP ",10E12.5)') (pdp(kidia,jk),jk=1,klev)
1157  WRITE(nulout,'("ZPMB ",10E12.5)') (zpmb(kidia,jk),jk=1,klev+1)
1158  WRITE(nulout,'("ZTAVE ",10E12.5)') (ztave(kidia,jk),jk=1,klev)
1159  WRITE(nulout,'("ZCLDSW",10E12.5)') (zcldsw(kidia,jk),jk=1,klev)
1160  WRITE(nulout,'("ZTAU ",10E12.5)') ((ztau(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1161  WRITE(nulout,'("ZCG ",10E12.5)') ((zcg(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1162  WRITE(nulout,'("ZOMEGA",10E12.5)') ((zomega(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1163  WRITE(nulout,'("ZOZ ",10E12.5)') (zoz(kidia,jk),jk=1,klev)
1164  WRITE(nulout,'("PAER ",10E12.5)') ((paer(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1165 ENDIF
1166 CALL sw &
1167  & ( kidia , kfdia , klon , klev , kaer,&
1168  & prii0 , pcco2 , zpsol , zalbd , zalbp , pq , pqs,&
1169  & zmu0 , zcg , zcldsw, pdp , zomega, zoz , zpmb,&
1170  & ztau , ztave , paer,&
1171  & pfsdn , pfsup , pfscdn, pfscup,&
1172  & zfsdnn, zfsdnv, zfsupn, zfsupv,&
1173  & zfcdnn, zfcdnv, zfcupn, zfcupv,&
1174  & zsudu , zuvdf , zparf ,zparcf, zdiffs, zdirfs, &
1175  & lrdust,ppiza_dst,pcga_dst,ptaurel_dst&
1176  & )
1177 pfsdnv=zfsdnv
1178 pfsdnn=zfsdnn
1179 IF (SIZE(psfswdir,2)>1) THEN
1180  psfswdir= zdirfs
1181  psfswdif= zdiffs
1182 ELSE
1183  psfswdir(:,1) = zfsdnv(:) + zfsdnn(:)
1184  psfswdif(:,:) = 0.
1185 ENDIF
1186 
1187 IF (nstep == 0 .AND. ledbug .AND. zmu0(kidia) > 0.0_jprb) THEN
1188  WRITE(nulout,'("ZFSDWN",10E12.5)') (zfsdwn(kidia,jk),jk=1,klev)
1189  WRITE(nulout,'("ZFSUP ",10E12.5)') (zfsup(kidia,jk),jk=1,klev)
1190  WRITE(nulout,'("ZFCDWN",10E12.5)') (zfcdwn(kidia,jk),jk=1,klev)
1191  WRITE(nulout,'("ZFCUP ",10E12.5)') (zfcup(kidia,jk),jk=1,klev)
1192  ledbug=.false.
1193 ENDIF
1194 IF (nstep == 0 .AND. ledbug .AND. zmu0(kidia) > 0.0_jprb) THEN
1195  WRITE(nulout,'("ZFSDWN",10E12.5)') (zfsdwn(kidia,jk),jk=1,klev)
1196  WRITE(nulout,'("ZFSUP ",10E12.5)') (zfsup(kidia,jk),jk=1,klev)
1197  WRITE(nulout,'("ZFCDWN",10E12.5)') (zfcdwn(kidia,jk),jk=1,klev)
1198  WRITE(nulout,'("ZFCUP ",10E12.5)') (zfcup(kidia,jk),jk=1,klev)
1199  ledbug=.false.
1200 ENDIF
1201 ! ------------------------------------------------------------------
1202 
1203 !* 5. FILL UP THE MODEL NET LW AND SW RADIATIVE FLUXES
1204 ! ------------------------------------------------
1205 
1206 DO jkl = 1 , klev+1
1207  jk = klev+1 + 1 - jkl
1208  DO jl = kidia,kfdia
1209  pfls(jl,jkl) = zfsdwn(jl,jk) - zfsup(jl,jk)
1210  pflt(jl,jkl) = - pflux(jl,1,jk) - pflux(jl,2,jk)
1211  pfcs(jl,jkl) = zfcdwn(jl,jk) - zfcup(jl,jk)
1212  pfct(jl,jkl) = - pfluc(jl,1,jk) - pfluc(jl,2,jk)
1213  ENDDO
1214 ENDDO
1215 
1216 DO jl = kidia,kfdia
1217  pfrsod(jl)=zfsdwn(jl,1)
1218  pemit(jl)=zemit(jl)
1219  psudu(jl)=zsudu(jl)
1220  puvdf(jl)=zuvdf(jl)
1221  pparf(jl)=zparf(jl)
1222  pparcf(jl)=zparcf(jl)
1223  ptincf(jl)=prii0 * zmu0(jl)
1224 ENDDO
1225 !print 9501,(PUVDF(JL),JL=KIDIA,KFDIA)
1226 9501 format(1x,'RADLSW PUVDF: ',30f6.1)
1227 !print 9502,(PPARF(JL),JL=KIDIA,KFDIA)
1228 9502 format(1x,'RADLSW PPARF: ',30f6.1)
1229 
1230 ! --------------------------------------------------------------
1231 
1232 IF (lhook) CALL dr_hook('RADLSW',1,zhook_handle)
1233 END SUBROUTINE radlsw
1234 
1235 
1236 
1237 
1238 
1239 
1240 
1241 
1242 
1243 
1244 
1245 
1246 
1247 
1248 
1249 
1250 
1251 
1252 
1253 
1254 
1255 
1256 
1257 
1258 
1259 
1260 
1261 
1262 
1263 
1264 
1265 
1266 
1267 
subroutine sw(KIDIA, KFDIA, KLON, KLEV, KAER, PSCT, PCARDI, PPSOL, PALBD, PALBP, PWV, PQS, PRMU0, PCG, PCLDSW, PDP, POMEGA, POZ, PPMB, PTAU, PTAVE, PAER, PFDOWN, PFUP, PCDOWN, PCUP, PFDNN, PFDNV, PFUPN, PFUPV, PCDNN, PCDNV, PCUPN, PCUPV, PSUDU, PUVDF, PPARF, PPARCF, PDIFFS, PDIRFS, LRDUST, PPIZA_DST, PCGA_DST, PTAUREL_DST)
Definition: sw.F90:13
real(kind=jprb) tstand
Definition: yoelw.F90:36
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcco2
real(kind=jprb), dimension(6) rebcua
Definition: yoesw.F90:39
integer(kind=jpim) nlw
Definition: yoerad.F90:26
real(kind=jprb) rpi
Definition: yomcst.F90:15
real(kind=jprb), dimension(6) ryfwcb
Definition: yoesw.F90:33
real(kind=jprb), dimension(6) ryfwcc
Definition: yoesw.F90:34
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
Definition: yoesw.F90:1
integer(kind=jpim) nulout
real(kind=jprb), dimension(16, 4) rfuetc
Definition: yoesw.F90:57
real(kind=jprb), dimension(6) rfubb1
Definition: yoesw.F90:76
real(kind=jprb), dimension(16, 3) rfueta
Definition: yoesw.F90:57
real(kind=jprb), dimension(6) ryfwcd
Definition: yoesw.F90:35
real(kind=jprb), dimension(6) rflbb2
Definition: yoesw.F90:66
real(kind=jprb) rd
Definition: yomcst.F90:39
real(kind=jprb), dimension(6) rflbb1
Definition: yoesw.F90:65
Definition: yoelw.F90:1
integer(kind=jpim) nsil
Definition: yoelw.F90:14
real(kind=jprb), dimension(6) raswce
Definition: yoesw.F90:54
real(kind=jprb), dimension(6) rflcc3
Definition: yoesw.F90:71
integer, save kidia
Definition: dimphy.F90:6
subroutine lw(KIDIA, KFDIA, KLON, KLEV, KMODE, PCCO2, PCLDLD, PCLDLU, PDP, PDT0, PEMIS, PEMIW, PPMB, PQOF, PTL, PAER, PTAVE, PVIEW, PWV, PEMIT, PFLUX, PFLUC)
Definition: lw.F90:9
real(kind=jprb), dimension(6) rflbb3
Definition: yoesw.F90:67
integer, save klon
Definition: dimphy.F90:3
real(kind=jprb), dimension(6) rebcuc
Definition: yoesw.F90:41
real(kind=jprb), dimension(6) raswcb
Definition: yoesw.F90:51
logical ldiffc
Definition: yoerad.F90:54
real(kind=jprb), dimension(6) rebcuf
Definition: yoesw.F90:44
logical lccno
Definition: yoerad.F90:66
integer(kind=jpim) nua
Definition: yoelw.F90:19
integer, save klev
Definition: dimphy.F90:7
logical lphylin
Definition: yoephli.F90:13
real(kind=jprb), dimension(6) rfucc2
Definition: yoesw.F90:81
real(kind=jprb) rtt
Definition: yomcst.F90:65
real(kind=jprb) rg
Definition: yomcst.F90:29
real(kind=jprb) rlwinhf
Definition: yoerad.F90:72
real(kind=jprb), dimension(6) ryfwcf
Definition: yoesw.F90:37
real(kind=jprb), dimension(16, 4) rfuetb
Definition: yoesw.F90:57
real(kind=jprb) rre2de
Definition: yoerad.F90:71
real(kind=jprb), dimension(6) rflcc1
Definition: yoesw.F90:69
real(kind=jprb) rccnsea
Definition: yoerad.F90:69
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
real(kind=jprb), dimension(6) rebcud
Definition: yoesw.F90:42
real(kind=jprb), dimension(6) rfucc1
Definition: yoesw.F90:80
real(kind=jprb) repscw
Definition: yoerdu.F90:24
real(kind=jprb), dimension(6) rfldd3
Definition: yoesw.F90:86
subroutine radlsw(KIDIA, KFDIA, KLON, KLEV, KMODE, KAER, PRII0, PAER, PALBD, PALBP, PAPH, PAP, PCCNL, PCCNO, PCCO2, PCLFR, PDP, PEMIS, PEMIW, PLSM, PMU0, POZON, PQ, PQIWP, PQLWP, PQS, PQRAIN, PRAINT, PTH, PT, PTS, PNBAS, PNTOP, PREF_LIQ, PREF_ICE, PEMIT, PFCT, PFLT, PFCS, PFLS, PFRSOD, PSUDU, PUVDF, PPARF, PPARCF, PTINCF, PSFSWDIR, PSFSWDIF, PFSDNN, PFSDNV, LRDUST, PPIZA_DST, PCGA_DST, PTAUREL_DST, PTAU_LW, PFLUX, PFLUC, PFSDN, PFSUP, PFSCDN, PFSCUP)
Definition: radlsw.F90:16
real(kind=jprb), dimension(6, 6) xp
Definition: yoelw.F90:39
integer, save kfdia
Definition: dimphy.F90:5
real(kind=jprb), dimension(16) rebcuh
Definition: yoesw.F90:46
real(kind=jprb), dimension(16) rebcug
Definition: yoesw.F90:45
integer(kind=jpim) nliqopt
Definition: yoerad.F90:34
integer, parameter jprb
Definition: parkind1.F90:31
real(kind=jprb), dimension(16, 5) rlilia
Definition: yoesw.F90:60
real(kind=jprb), dimension(6) ryfwca
Definition: yoesw.F90:32
real(kind=jprb), dimension(16, 3) rhsavi
Definition: yoesw.F90:59
real(kind=jprb), dimension(6) rebcub
Definition: yoesw.F90:40
Definition: yoerad.F90:1
integer(kind=jpim) nuaer
Definition: yoerdu.F90:13
real(kind=jprb), dimension(6) rflcc0
Definition: yoesw.F90:68
real(kind=jprb), dimension(6) ryfwce
Definition: yoesw.F90:36
real(kind=jprb), dimension(6) rfuaa1
Definition: yoesw.F90:74
real(kind=jprb), dimension(6) rfucc0
Definition: yoesw.F90:79
real(kind=jprb), dimension(6) rfldd2
Definition: yoesw.F90:85
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
real(kind=jprb), dimension(6) rebcuj
Definition: yoesw.F90:48
real(kind=jprb) replog
Definition: yoerdu.F90:19
real(kind=jprb) rccnlnd
Definition: yoerad.F90:69
logical lhook
Definition: yomhook.F90:12
subroutine rrtm_rrtm_140gp(KIDIA, KFDIA, KLON, KLEV, PAER, PAPH, PAP, PTS, PTH, PT, P_ZEMIS, P_ZEMIW, PQ, PCCO2, POZN, PCLDF, PTAUCLD, PTAU_LW, PEMIT, PFLUX, PFLUC, PTCLEAR)
real(kind=jprb), dimension(6) rfubb2
Definition: yoesw.F90:77
real(kind=jprb), dimension(6) rfuaa0
Definition: yoesw.F90:73
integer(kind=jpim) niceopt
Definition: yoerad.F90:33
real(kind=jprb), dimension(6) rfldd1
Definition: yoesw.F90:84
real(kind=jprb), dimension(16, 4) rlilib
Definition: yoesw.F90:60
logical lccnl
Definition: yoerad.F90:65
integer(kind=jpim) nlayinh
Definition: yoerad.F90:38
real(kind=jprb), dimension(181, 16) totplnk
Definition: yoerrtwn.F90:19
integer(kind=jpim) nradlp
Definition: yoerad.F90:36
INTERFACE SUBROUTINE RRTM_ECRT_140GP paph
real(kind=jprb), dimension(6) rflaa1
Definition: yoesw.F90:63
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
subroutine writefield_phy(name, Field, ll)
real(kind=jprb), dimension(6) rfucc3
Definition: yoesw.F90:82
real(kind=jprb), dimension(6) raswcc
Definition: yoesw.F90:52
real(kind=jprb), dimension(16, 3) rfulio
Definition: yoesw.F90:58
real(kind=jprb), dimension(6) rflbb0
Definition: yoesw.F90:64
real(kind=jprb), dimension(16) delwave
Definition: yoerrtwn.F90:17
integer(kind=jpim) nstep
Definition: yomct3.F90:18
real(kind=jprb), dimension(6) rfubb3
Definition: yoesw.F90:78
logical lrrtm
Definition: yoerad.F90:52
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
integer(kind=jpim) ninhom
Definition: yoerad.F90:37
integer, parameter jpim
Definition: parkind1.F90:13
INTERFACE SUBROUTINE RRTM_ECRT_140GP pap
integer(kind=jpim) ntra
Definition: yoelw.F90:18
integer(kind=jpim) ntraer
Definition: yoerdu.F90:14
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pts
integer(kind=jpim) nradip
Definition: yoerad.F90:35
real(kind=jprb) diff
Definition: yoerdu.F90:25
Definition: yomcst.F90:1
real(kind=jprb) repsc
Definition: yoerdu.F90:20
real(kind=jprb), dimension(6) raswcf
Definition: yoesw.F90:55
real(kind=jprb), dimension(6) rfldd0
Definition: yoesw.F90:83
real(kind=jprb) rswinhf
Definition: yoerad.F90:72
logical ledbug
Definition: yoerad.F90:70
Definition: yomct3.F90:1
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pq
Definition: yoerdu.F90:1
real(kind=jprb), dimension(6) rebcue
Definition: yoesw.F90:43
real(kind=jprb), dimension(6) rflcc2
Definition: yoesw.F90:70
real(kind=jprb), dimension(6) rflaa0
Definition: yoesw.F90:62
real(kind=jprb), dimension(6) raswcd
Definition: yoesw.F90:53
real(kind=jprb), dimension(6) raswca
Definition: yoesw.F90:50
real(kind=jprb), dimension(6) rebcui
Definition: yoesw.F90:47
real(kind=jprb), dimension(6) rfubb0
Definition: yoesw.F90:75