5 SUBROUTINE recmwf_aero (KST, KEND, KPROMA, KTDIA , KLEV,&
7 & palbd , palbp ,
paprs , paprsf ,
pcco2 , pclfr,&
8 & pqo3 ,
paer , pdp , pemis , pmu0,&
9 &
pq , pqs , pqiwp , pqlwp , pslm ,
pt ,
pts,&
10 & pref_liq, pref_ice,&
12 & pref_liq_pi, pref_ice_pi,&
14 & pemtd , pemtu , ptrso,&
15 &
pth , pctrso, pcemtr, ptrsod,&
16 & plwfc, plwft, pswfc, pswft, psfswdir, psfswdif,&
18 & ppiza_tot,pcga_tot,ptau_tot, &
20 & ppiza_nat,pcga_nat,ptau_nat, &
23 & ptau_lw_tot, ptau_lw_nat, &
26 & pfsdn ,pfsup , pfscdn , pfscup,&
28 & ptopswadaero,psolswadaero,&
29 & ptopswad0aero,psolswad0aero,&
30 & ptopswaiaero,psolswaiaero,&
31 & ptopswcfaero,psolswcfaero,&
33 & ptoplwadaero,psollwadaero,&
34 & ptoplwad0aero,psollwad0aero,&
35 & ptoplwaiaero,psollwaiaero,&
37 & ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)
165 INTEGER(KIND=JPIM),
INTENT(IN) :: KPROMA
166 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
167 INTEGER(KIND=JPIM),
INTENT(IN) :: KST
168 INTEGER(KIND=JPIM),
INTENT(IN) :: KEND
169 INTEGER(KIND=JPIM) :: KTDIA
170 INTEGER(KIND=JPIM),
INTENT(IN) :: KMODE
171 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBD(kproma,nsw)
172 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBP(kproma,nsw)
173 REAL(KIND=JPRB) ,
INTENT(IN) :: PAPRS(kproma,klev+1)
174 REAL(KIND=JPRB) ,
INTENT(IN) :: PAPRSF(kproma,klev)
175 REAL(KIND=JPRB) ,
INTENT(IN) :: PCCO2
176 REAL(KIND=JPRB) ,
INTENT(IN) :: PCLFR(kproma,klev)
177 REAL(KIND=JPRB) ,
INTENT(IN) :: PQO3(kproma,klev)
178 REAL(KIND=JPRB) ,
INTENT(IN) :: PAER(kproma,klev,6)
179 REAL(KIND=JPRB) ,
INTENT(IN) :: PDP(kproma,klev)
180 REAL(KIND=JPRB) ,
INTENT(IN) :: PEMIS(kproma)
181 REAL(KIND=JPRB) ,
INTENT(IN) :: PMU0(kproma)
182 REAL(KIND=JPRB) ,
INTENT(IN) :: PQ(kproma,klev)
183 REAL(KIND=JPRB) ,
INTENT(IN) :: PQS(kproma,klev)
184 REAL(KIND=JPRB) ,
INTENT(IN) :: PQIWP(kproma,klev)
185 REAL(KIND=JPRB) ,
INTENT(IN) :: PQLWP(kproma,klev)
186 REAL(KIND=JPRB) ,
INTENT(IN) :: PSLM(kproma)
187 REAL(KIND=JPRB) ,
INTENT(IN) :: PT(kproma,klev)
188 REAL(KIND=JPRB) ,
INTENT(IN) :: PTS(kproma)
189 REAL(KIND=JPRB) ,
INTENT(IN) :: PPIZA_TOT(kproma,klev,nsw)
190 REAL(KIND=JPRB) ,
INTENT(IN) :: PCGA_TOT(kproma,klev,nsw)
191 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU_TOT(kproma,klev,nsw)
193 REAL(KIND=JPRB) ,
INTENT(IN) :: PPIZA_NAT(kproma,klev,nsw)
194 REAL(KIND=JPRB) ,
INTENT(IN) :: PCGA_NAT(kproma,klev,nsw)
195 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU_NAT(kproma,klev,nsw)
196 REAL(KIND=JPRB) :: PPIZA_ZERO(kproma,klev,nsw)
197 REAL(KIND=JPRB) :: PCGA_ZERO(kproma,klev,nsw)
198 REAL(KIND=JPRB) :: PTAU_ZERO(kproma,klev,nsw)
201 REAL(KIND=JPRB) :: PTAU_LW_ZERO(kproma,klev,nlw)
202 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU_LW_TOT(kproma,klev,nlw)
203 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU_LW_NAT(kproma,klev,nlw)
205 REAL(KIND=JPRB) ,
INTENT(IN) :: PREF_LIQ(kproma,klev)
206 REAL(KIND=JPRB) ,
INTENT(IN) :: PREF_ICE(kproma,klev)
208 REAL(KIND=JPRB) ,
INTENT(IN) :: PREF_LIQ_PI(kproma,klev)
209 REAL(KIND=JPRB) ,
INTENT(IN) :: PREF_ICE_PI(kproma,klev)
210 LOGICAL,
INTENT(in) :: ok_ade, ok_aie
211 INTEGER,
INTENT(in) :: flag_aerosol
212 LOGICAL,
INTENT(in) :: flag_aerosol_strat
213 REAL(KIND=JPRB) ,
INTENT(out) :: PTOPSWADAERO(kproma), PSOLSWADAERO(kproma)
214 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTOPSWAD0AERO(kproma), PSOLSWAD0AERO(kproma)
215 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTOPSWAIAERO(kproma), PSOLSWAIAERO(kproma)
216 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTOPSWCFAERO(kproma,3), PSOLSWCFAERO(kproma,3)
219 REAL(KIND=JPRB) ,
INTENT(out) :: PTOPLWADAERO(kproma), PSOLLWADAERO(kproma)
220 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTOPLWAD0AERO(kproma), PSOLLWAD0AERO(kproma)
221 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTOPLWAIAERO(kproma), PSOLLWAIAERO(kproma)
223 REAL(KIND=JPRB) ,
INTENT(OUT) :: PEMTD(kproma,klev+1)
224 REAL(KIND=JPRB) ,
INTENT(OUT) :: PEMTU(kproma,klev+1)
225 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTRSO(kproma,klev+1)
226 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PTH(kproma,klev+1)
227 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCTRSO(kproma,2)
228 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCEMTR(kproma,2)
229 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTRSOD(kproma)
230 REAL(KIND=JPRB) ,
INTENT(OUT) :: PLWFC(kproma,2)
231 REAL(KIND=JPRB) ,
INTENT(OUT) :: PLWFT(kproma,klev+1)
232 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSWFC(kproma,2)
233 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSWFT(kproma,klev+1)
234 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSFSWDIR(kproma,nsw)
235 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSFSWDIF(kproma,nsw)
236 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSDNN(kproma)
237 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSDNV(kproma)
238 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLUX(kproma,2,klev+1)
239 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLUC(kproma,2,klev+1)
240 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSDN(kproma,klev+1)
241 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSUP(kproma,klev+1)
242 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSCDN(kproma,klev+1)
243 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSCUP(kproma,klev+1)
249 REAL(KIND=JPRB) :: ZRAER (kproma,6,klev)
250 REAL(KIND=JPRB) :: ZRCLC (kproma,klev)
251 REAL(KIND=JPRB) :: ZRMU0 (kproma)
252 REAL(KIND=JPRB) :: ZRPR (kproma,klev)
253 REAL(KIND=JPRB) :: ZRTI (kproma,klev)
254 REAL(KIND=JPRB) :: ZQLWP (kproma,klev ) , ZQIWP (kproma,klev )
256 REAL(KIND=JPRB) :: ZPQO3 (kproma,klev)
257 REAL(KIND=JPRB) :: ZQOZ (
ngptot,klev)
258 REAL(KIND=JPRB) :: ZQS (kproma,klev)
259 REAL(KIND=JPRB) :: ZQ (kproma,klev)
260 REAL(KIND=JPRB) :: ZEMTD (kproma,klev+1)
261 REAL(KIND=JPRB) :: ZEMTU (kproma,klev+1)
262 REAL(KIND=JPRB) :: ZTRSOC (kproma,2)
263 REAL(KIND=JPRB) :: ZEMTC (kproma,2)
265 REAL(KIND=JPRB) :: ZNBAS (kproma)
266 REAL(KIND=JPRB) :: ZNTOP (kproma)
267 REAL(KIND=JPRB) :: ZQRAIN (kproma,klev)
268 REAL(KIND=JPRB) :: ZQRAINT(kproma,klev)
269 REAL(KIND=JPRB) :: ZCCNL (kproma)
270 REAL(KIND=JPRB) :: ZCCNO (kproma)
274 REAL(KIND=JPRB) :: ZEMIT (kproma)
275 REAL(KIND=JPRB) :: ZFCT (kproma,klev+1)
276 REAL(KIND=JPRB) :: ZFLT (kproma,klev+1)
277 REAL(KIND=JPRB) :: ZFCS (kproma,klev+1)
278 REAL(KIND=JPRB) :: ZFLS (kproma,klev+1)
279 REAL(KIND=JPRB) :: ZFRSOD (kproma),ZSUDU(kproma)
280 REAL(KIND=JPRB) :: ZPARF (kproma),ZUVDF(kproma),ZPARCF(kproma),ZTINCF(kproma)
282 INTEGER(KIND=JPIM) :: IBEG, IEND, JK, JL
284 REAL(KIND=JPRB) :: ZCRAE, ZRII0, ZEMIW(kproma)
285 REAL(KIND=JPRB) :: ZHOOK_HANDLE
293 LOGICAL :: AEROSOLFEEDBACK_ACTIVE = .
true.
315 REAL(KIND=JPRB) :: ZFSUP_AERO(kproma,klev+1,5)
316 REAL(KIND=JPRB) :: ZFSDN_AERO(kproma,klev+1,5)
317 REAL(KIND=JPRB) :: ZFSUP0_AERO(kproma,klev+1,5)
318 REAL(KIND=JPRB) :: ZFSDN0_AERO(kproma,klev+1,5)
320 REAL(KIND=JPRB) :: LWUP_AERO(kproma,klev+1,5)
321 REAL(KIND=JPRB) :: LWDN_AERO(kproma,klev+1,5)
322 REAL(KIND=JPRB) :: LWUP0_AERO(kproma,klev+1,5)
323 REAL(KIND=JPRB) :: LWDN0_AERO(kproma,klev+1,5)
325 #include "radlsw.intfb.h"
339 zfsup0_aero(:,:,:)=0.
340 zfsdn0_aero(:,:,:)=0.
347 ptau_zero(:,:,:) =1.e-15
348 ppiza_zero(:,:,:)=1.0
349 pcga_zero(:,:,:) =0.0
351 ptau_lw_zero(:,:,:) =1.e-15
367 zpqo3(jl,jk)=pqo3(jl,jk)*pdp(jl,jk)
368 zrclc(jl,jk)=max( 0.0_jprb ,min( 1.0_jprb ,pclfr(jl,jk)))
369 IF (zrclc(jl,jk) >
repclc)
THEN
370 zqlwp(jl,jk)=pqlwp(jl,jk)
371 zqiwp(jl,jk)=pqiwp(jl,jk)
373 zqlwp(jl,jk)=
reph2o*zrclc(jl,jk)
374 zqiwp(jl,jk)=
reph2o*zrclc(jl,jk)
378 zrti(jl,jk) =pt(jl,jk)
379 zqs(jl,jk)=max(2.0_jprb*
reph2o,pqs(jl,jk))
380 zq(jl,jk)=max(
reph2o,min(pq(jl,jk),zqs(jl,jk)*(1.0_jprb-
reph2o)))
390 zraer(jl,1,jk)=paer(jl,jk,1)
391 zraer(jl,2,jk)=paer(jl,jk,2)
392 zraer(jl,3,jk)=paer(jl,jk,3)
393 zraer(jl,4,jk)=paer(jl,jk,4)
395 zraer(jl,6,jk)=paer(jl,jk,6)
405 & (pt(jl,jk-1)*paprsf(jl,jk-1)*(paprsf(jl,jk)-paprs(jl,jk))&
406 & +pt(jl,jk)*paprsf(jl,jk)*(paprs(jl,jk)-paprsf(jl,jk-1)))&
407 & *(1.0_jprb/(paprs(jl,jk)*(paprsf(jl,jk)-paprsf(jl,jk-1))))
414 pth(jl,klev+1)=pts(jl)
415 pth(jl,1)=pt(jl,1)-paprsf(jl,1)*(pt(jl,1)-pth(jl,2))&
416 & /(paprsf(jl,1)-paprs(jl,2))
433 IF (pmu0(jl) > 1.e-10_jprb)
THEN
434 zrmu0(jl)=
rrae/(sqrt(pmu0(jl)**2+zcrae)-pmu0(jl))
436 zrmu0(jl)=
rrae/sqrt(zcrae)
445 IF (flag_aerosol .GT. 0 .OR. flag_aerosol_strat)
THEN
447 IF ( .not. ok_ade .or. .not. ok_aie )
THEN
456 & ibeg , iend , kproma , klev , kmode ,
naer,&
458 & zraer , palbd , palbp , paprs , zrpr ,&
460 & pcco2 , zrclc , pdp , pemis , zemiw ,pslm , zrmu0 , zpqo3,&
461 & zq , zqiwp , zqlwp , zqs , zqrain,zqraint ,&
462 & pth , zrti , pts , znbas , zntop ,&
463 & pref_liq_pi, pref_ice_pi,&
464 & zemit , zfct , zflt , zfcs , zfls ,&
465 & zfrsod, zsudu , zuvdf , zparf , zparcf, ztincf, psfswdir,&
466 & psfswdif,pfsdnn, pfsdnv ,&
467 &
lrdust,ppiza_nat,pcga_nat,ptau_nat,ptau_lw_nat,pflux,pfluc,&
468 & pfsdn , pfsup , pfscdn , pfscup )
471 zfsup0_aero(:,:,1) = pfscup(:,:)
472 zfsdn0_aero(:,:,1) = pfscdn(:,:)
474 zfsup_aero(:,:,1) = pfsup(:,:)
475 zfsdn_aero(:,:,1) = pfsdn(:,:)
477 lwup0_aero(:,:,1) = pfluc(:,1,:)
478 lwdn0_aero(:,:,1) = pfluc(:,2,:)
480 lwup_aero(:,:,1) = pflux(:,1,:)
481 lwdn_aero(:,:,1) = pflux(:,2,:)
494 & ibeg , iend , kproma , klev , kmode ,
naer,&
496 & zraer , palbd , palbp , paprs , zrpr ,&
498 & pcco2 , zrclc , pdp , pemis , zemiw ,pslm , zrmu0 , zpqo3,&
499 & zq , zqiwp , zqlwp , zqs , zqrain,zqraint ,&
500 & pth , zrti , pts , znbas , zntop ,&
501 & pref_liq, pref_ice,&
502 & zemit , zfct , zflt , zfcs , zfls ,&
503 & zfrsod, zsudu , zuvdf , zparf , zparcf, ztincf, psfswdir,&
504 & psfswdif,pfsdnn, pfsdnv ,&
505 &
lrdust,ppiza_nat,pcga_nat,ptau_nat,ptau_lw_nat,pflux,pfluc,&
506 & pfsdn , pfsup , pfscdn , pfscup )
509 zfsup0_aero(:,:,2) = pfscup(:,:)
510 zfsdn0_aero(:,:,2) = pfscdn(:,:)
512 zfsup_aero(:,:,2) = pfsup(:,:)
513 zfsdn_aero(:,:,2) = pfsdn(:,:)
515 lwup0_aero(:,:,2) = pfluc(:,1,:)
516 lwdn0_aero(:,:,2) = pfluc(:,2,:)
518 lwup_aero(:,:,2) = pflux(:,1,:)
519 lwdn_aero(:,:,2) = pflux(:,2,:)
532 & ibeg , iend , kproma , klev , kmode ,
naer,&
534 & zraer , palbd , palbp , paprs , zrpr ,&
536 & pcco2 , zrclc , pdp , pemis , zemiw ,pslm , zrmu0 , zpqo3,&
537 & zq , zqiwp , zqlwp , zqs , zqrain,zqraint ,&
538 & pth , zrti , pts , znbas , zntop ,&
539 & pref_liq_pi, pref_ice_pi,&
540 & zemit , zfct , zflt , zfcs , zfls ,&
541 & zfrsod, zsudu , zuvdf , zparf , zparcf, ztincf, psfswdir,&
542 & psfswdif,pfsdnn, pfsdnv ,&
543 &
lrdust,ppiza_tot,pcga_tot,ptau_tot,ptau_lw_tot,pflux,pfluc,&
544 & pfsdn , pfsup , pfscdn , pfscup )
547 zfsup0_aero(:,:,3) = pfscup(:,:)
548 zfsdn0_aero(:,:,3) = pfscdn(:,:)
550 zfsup_aero(:,:,3) = pfsup(:,:)
551 zfsdn_aero(:,:,3) = pfsdn(:,:)
553 lwup0_aero(:,:,3) = pfluc(:,1,:)
554 lwdn0_aero(:,:,3) = pfluc(:,2,:)
556 lwup_aero(:,:,3) = pflux(:,1,:)
557 lwdn_aero(:,:,3) = pflux(:,2,:)
561 IF (ok_ade .and. ok_aie)
THEN
570 & ibeg , iend , kproma , klev , kmode ,
naer,&
572 & zraer , palbd , palbp , paprs , zrpr ,&
574 & pcco2 , zrclc , pdp , pemis , zemiw ,pslm , zrmu0 , zpqo3,&
575 & zq , zqiwp , zqlwp , zqs , zqrain,zqraint ,&
576 & pth , zrti , pts , znbas , zntop ,&
577 & pref_liq, pref_ice,&
578 & zemit , zfct , zflt , zfcs , zfls ,&
579 & zfrsod, zsudu , zuvdf , zparf , zparcf, ztincf, psfswdir,&
580 & psfswdif,pfsdnn, pfsdnv ,&
581 &
lrdust,ppiza_tot,pcga_tot,ptau_tot,ptau_lw_tot,pflux,pfluc,&
582 & pfsdn , pfsup , pfscdn , pfscup )
585 zfsup0_aero(:,:,4) = pfscup(:,:)
586 zfsdn0_aero(:,:,4) = pfscdn(:,:)
588 zfsup_aero(:,:,4) = pfsup(:,:)
589 zfsdn_aero(:,:,4) = pfsdn(:,:)
591 lwup0_aero(:,:,4) = pfluc(:,1,:)
592 lwdn0_aero(:,:,4) = pfluc(:,2,:)
594 lwup_aero(:,:,4) = pflux(:,1,:)
595 lwdn_aero(:,:,4) = pflux(:,2,:)
603 IF (.not. aerosolfeedback_active .OR. flag_aerosol .EQ. 0 )
THEN
611 & ibeg , iend , kproma , klev , kmode ,
naer,&
613 & zraer , palbd , palbp , paprs , zrpr ,&
615 & pcco2 , zrclc , pdp , pemis , zemiw ,pslm , zrmu0 , zpqo3,&
616 & zq , zqiwp , zqlwp , zqs , zqrain,zqraint ,&
617 & pth , zrti , pts , znbas , zntop ,&
619 & pref_liq_pi, pref_ice_pi,&
620 & zemit , zfct , zflt , zfcs , zfls ,&
621 & zfrsod, zsudu , zuvdf , zparf , zparcf, ztincf, psfswdir,&
622 & psfswdif,pfsdnn, pfsdnv ,&
623 &
lrdust,ppiza_zero,pcga_zero,ptau_zero, ptau_lw_zero,pflux,pfluc,&
624 & pfsdn , pfsup , pfscdn , pfscup )
627 zfsup0_aero(:,:,5) = pfscup(:,:)
628 zfsdn0_aero(:,:,5) = pfscdn(:,:)
630 zfsup_aero(:,:,5) = pfsup(:,:)
631 zfsdn_aero(:,:,5) = pfsdn(:,:)
633 lwup0_aero(:,:,5) = pfluc(:,1,:)
634 lwdn0_aero(:,:,5) = pfluc(:,2,:)
636 lwup_aero(:,:,5) = pflux(:,1,:)
637 lwdn_aero(:,:,5) = pflux(:,2,:)
645 pswft(jl,jk)=zfls(jl,jk)/(zrii0*zrmu0(jl))
646 plwft(jl,jk)=zflt(jl,jk)
654 ztrsoc(jl, 1)=zfcs(jl, 1)/(zrii0*zrmu0(jl))
655 ztrsoc(jl, 2)=zfcs(jl,klev+1)/(zrii0*zrmu0(jl))
656 zemtc(jl, 1)=zfct(jl, 1)
657 zemtc(jl, 2)=zfct(jl,klev+1)
666 pemtd(jl,jk)=zemtd(jl,jk)
667 pemtu(jl,jk)=zemtu(jl,jk)
668 ptrso(jl,jk)=max(0.0_jprb,min(1.0_jprb,pswft(jl,jk)))
673 pcemtr(jl,jk)=zemtc(jl,jk)
674 pctrso(jl,jk)=max( 0.0_jprb,min(1.0_jprb,ztrsoc(jl,jk)))
678 ptrsod(jl)=max(0.0_jprb,min(1.0_jprb,zfrsod(jl)/(zrii0*zrmu0(jl))))
684 IF (pmu0(jl) < 1.e-10_jprb) zrmu0(jl)=0.0_jprb
688 plwft(jl,jk)=pemtd(jl,jk)
689 pswft(jl,jk)=zrmu0(jl)*zrii0*ptrso(jl,jk)
694 pswfc(jl,jk)=zrmu0(jl)*zrii0*pctrso(jl,jk)
695 plwfc(jl,jk)=pcemtr(jl,jk)
702 IF ( aerosolfeedback_active .AND. (flag_aerosol .GT. 0 .OR. flag_aerosol_strat) )
THEN
704 IF ( ok_ade .and. ok_aie )
THEN
705 pfsup(:,:) = zfsup_aero(:,:,4)
706 pfsdn(:,:) = zfsdn_aero(:,:,4)
707 pfscup(:,:) = zfsup0_aero(:,:,4)
708 pfscdn(:,:) = zfsdn0_aero(:,:,4)
710 pflux(:,1,:) = lwup_aero(:,:,4)
711 pflux(:,2,:) = lwdn_aero(:,:,4)
712 pfluc(:,1,:) = lwup0_aero(:,:,4)
713 pfluc(:,2,:) = lwdn0_aero(:,:,4)
716 IF ( ok_ade .and. (.not. ok_aie) )
THEN
717 pfsup(:,:) = zfsup_aero(:,:,3)
718 pfsdn(:,:) = zfsdn_aero(:,:,3)
719 pfscup(:,:) = zfsup0_aero(:,:,3)
720 pfscdn(:,:) = zfsdn0_aero(:,:,3)
722 pflux(:,1,:) = lwup_aero(:,:,3)
723 pflux(:,2,:) = lwdn_aero(:,:,3)
724 pfluc(:,1,:) = lwup0_aero(:,:,3)
725 pfluc(:,2,:) = lwdn0_aero(:,:,3)
728 IF ( (.not. ok_ade) .and. ok_aie )
THEN
729 pfsup(:,:) = zfsup_aero(:,:,2)
730 pfsdn(:,:) = zfsdn_aero(:,:,2)
731 pfscup(:,:) = zfsup0_aero(:,:,2)
732 pfscdn(:,:) = zfsdn0_aero(:,:,2)
734 pflux(:,1,:) = lwup_aero(:,:,2)
735 pflux(:,2,:) = lwdn_aero(:,:,2)
736 pfluc(:,1,:) = lwup0_aero(:,:,2)
737 pfluc(:,2,:) = lwdn0_aero(:,:,2)
740 IF ((.not. ok_ade) .and. (.not. ok_aie))
THEN
741 pfsup(:,:) = zfsup_aero(:,:,1)
742 pfsdn(:,:) = zfsdn_aero(:,:,1)
743 pfscup(:,:) = zfsup0_aero(:,:,1)
744 pfscdn(:,:) = zfsdn0_aero(:,:,1)
746 pflux(:,1,:) = lwup_aero(:,:,1)
747 pflux(:,2,:) = lwdn_aero(:,:,1)
748 pfluc(:,1,:) = lwup0_aero(:,:,1)
749 pfluc(:,2,:) = lwdn0_aero(:,:,1)
758 pfsup(:,:) = zfsup_aero(:,:,5)
759 pfsdn(:,:) = zfsdn_aero(:,:,5)
760 pfscup(:,:) = zfsup0_aero(:,:,5)
761 pfscdn(:,:) = zfsdn0_aero(:,:,5)
763 pflux(:,1,:) = lwup_aero(:,:,5)
764 pflux(:,2,:) = lwdn_aero(:,:,5)
765 pfluc(:,1,:) = lwup0_aero(:,:,5)
766 pfluc(:,2,:) = lwdn0_aero(:,:,5)
776 IF (flag_aerosol .GT. 0 .OR. flag_aerosol_strat)
THEN
778 IF (ok_ade.AND.ok_aie)
THEN
781 psolswadaero(:) = (zfsdn_aero(:,1,4) -zfsup_aero(:,1,4)) -(zfsdn_aero(:,1,2) -zfsup_aero(:,1,2))
782 ptopswadaero(:) = (zfsdn_aero(:,klev+1,4) -zfsup_aero(:,klev+1,4)) -(zfsdn_aero(:,klev+1,2) -zfsup_aero(:,klev+1,2))
783 psolswad0aero(:) = (zfsdn0_aero(:,1,4) -zfsup0_aero(:,1,4)) -(zfsdn0_aero(:,1,2) -zfsup0_aero(:,1,2))
784 ptopswad0aero(:) = (zfsdn0_aero(:,klev+1,4)-zfsup0_aero(:,klev+1,4))-(zfsdn0_aero(:,klev+1,2)-zfsup0_aero(:,klev+1,2))
787 psolswaiaero(:) = (zfsdn_aero(:,1,4) -zfsup_aero(:,1,4)) -(zfsdn_aero(:,1,3) -zfsup_aero(:,1,3))
788 ptopswaiaero(:) = (zfsdn_aero(:,klev+1,4)-zfsup_aero(:,klev+1,4))-(zfsdn_aero(:,klev+1,3)-zfsup_aero(:,klev+1,3))
791 psolswcfaero(:,1) = (zfsdn_aero(:,1,2) -zfsup_aero(:,1,2)) -(zfsdn0_aero(:,1,2) -zfsup0_aero(:,1,2))
792 ptopswcfaero(:,1) = (zfsdn_aero(:,klev+1,2)-zfsup_aero(:,klev+1,2))-(zfsdn0_aero(:,klev+1,2)-zfsup0_aero(:,klev+1,2))
794 psolswcfaero(:,2) = (zfsdn_aero(:,1,4) -zfsup_aero(:,1,4)) -(zfsdn0_aero(:,1,4) -zfsup0_aero(:,1,4))
795 ptopswcfaero(:,2) = (zfsdn_aero(:,klev+1,4)-zfsup_aero(:,klev+1,4))-(zfsdn0_aero(:,klev+1,4)-zfsup0_aero(:,klev+1,4))
797 psolswcfaero(:,3) = 0.0
798 ptopswcfaero(:,3) = 0.0
801 psollwadaero(:) = (-lwdn_aero(:,1,4) -lwup_aero(:,1,4)) -(-lwdn_aero(:,1,2) -lwup_aero(:,1,2))
802 ptoplwadaero(:) = (-lwdn_aero(:,klev+1,4) -lwup_aero(:,klev+1,4)) -(-lwdn_aero(:,klev+1,2) -lwup_aero(:,klev+1,2))
803 psollwad0aero(:) = (-lwdn0_aero(:,1,4) -lwup0_aero(:,1,4)) -(-lwdn0_aero(:,1,2) -lwup0_aero(:,1,2))
804 ptoplwad0aero(:) = (-lwdn0_aero(:,klev+1,4)-lwup0_aero(:,klev+1,4))-(-lwdn0_aero(:,klev+1,2)-lwup0_aero(:,klev+1,2))
807 psollwaiaero(:) = (-lwdn_aero(:,1,4) -lwup_aero(:,1,4)) -(-lwdn_aero(:,1,3) -lwup_aero(:,1,3))
808 ptoplwaiaero(:) = (-lwdn_aero(:,klev+1,4)-lwup_aero(:,klev+1,4))-(-lwdn_aero(:,klev+1,3)-lwup_aero(:,klev+1,3))
812 IF (ok_ade.AND..NOT.ok_aie)
THEN
815 psolswadaero(:) = (zfsdn_aero(:,1,3) -zfsup_aero(:,1,3)) -(zfsdn_aero(:,1,1) -zfsup_aero(:,1,1))
816 ptopswadaero(:) = (zfsdn_aero(:,klev+1,3) -zfsup_aero(:,klev+1,3)) -(zfsdn_aero(:,klev+1,1) -zfsup_aero(:,klev+1,1))
817 psolswad0aero(:) = (zfsdn0_aero(:,1,3) -zfsup0_aero(:,1,3)) -(zfsdn0_aero(:,1,1) -zfsup0_aero(:,1,1))
818 ptopswad0aero(:) = (zfsdn0_aero(:,klev+1,3)-zfsup0_aero(:,klev+1,3))-(zfsdn0_aero(:,klev+1,1)-zfsup0_aero(:,klev+1,1))
821 psolswaiaero(:) = 0.0
822 ptopswaiaero(:) = 0.0
825 psolswcfaero(:,1) = (zfsdn_aero(:,1,1) -zfsup_aero(:,1,1)) -(zfsdn0_aero(:,1,1) -zfsup0_aero(:,1,1))
826 ptopswcfaero(:,1) = (zfsdn_aero(:,klev+1,1)-zfsup_aero(:,klev+1,1))-(zfsdn0_aero(:,klev+1,1)-zfsup0_aero(:,klev+1,1))
828 psolswcfaero(:,2) = (zfsdn_aero(:,1,3) -zfsup_aero(:,1,3)) -(zfsdn0_aero(:,1,3) -zfsup0_aero(:,1,3))
829 ptopswcfaero(:,2) = (zfsdn_aero(:,klev+1,3)-zfsup_aero(:,klev+1,3))-(zfsdn0_aero(:,klev+1,3)-zfsup0_aero(:,klev+1,3))
831 psolswcfaero(:,3) = 0.0
832 ptopswcfaero(:,3) = 0.0
835 psollwadaero(:) = (-lwdn_aero(:,1,3) -lwup_aero(:,1,3)) -(-lwdn_aero(:,1,1) -lwup_aero(:,1,1))
836 ptoplwadaero(:) = (-lwdn_aero(:,klev+1,3) -lwup_aero(:,klev+1,3)) -(-lwdn_aero(:,klev+1,1) -lwup_aero(:,klev+1,1))
837 psollwad0aero(:) = (-lwdn0_aero(:,1,3) -lwup0_aero(:,1,3)) -(-lwdn0_aero(:,1,1) -lwup0_aero(:,1,1))
838 ptoplwad0aero(:) = (-lwdn0_aero(:,klev+1,3)-lwup0_aero(:,klev+1,3))-(-lwdn0_aero(:,klev+1,1)-lwup0_aero(:,klev+1,1))
841 psollwaiaero(:) = 0.0
842 ptoplwaiaero(:) = 0.0
846 IF (.NOT.ok_ade.AND.ok_aie)
THEN
849 psolswadaero(:) = 0.0
850 ptopswadaero(:) = 0.0
851 psolswad0aero(:) = 0.0
852 ptopswad0aero(:) = 0.0
855 psolswaiaero(:) = (zfsdn_aero(:,1,2) -zfsup_aero(:,1,2)) -(zfsdn_aero(:,1,1) -zfsup_aero(:,1,1))
856 ptopswaiaero(:) = (zfsdn_aero(:,klev+1,2)-zfsup_aero(:,klev+1,2))-(zfsdn_aero(:,klev+1,1)-zfsup_aero(:,klev+1,1))
859 psolswcfaero(:,1) = (zfsdn_aero(:,1,2) -zfsup_aero(:,1,2)) -(zfsdn0_aero(:,1,2) -zfsup0_aero(:,1,2))
860 ptopswcfaero(:,1) = (zfsdn_aero(:,klev+1,2)-zfsup_aero(:,klev+1,2))-(zfsdn0_aero(:,klev+1,2)-zfsup0_aero(:,klev+1,2))
862 psolswcfaero(:,2) = 0.0
863 ptopswcfaero(:,2) = 0.0
865 psolswcfaero(:,3) = 0.0
866 ptopswcfaero(:,3) = 0.0
869 psollwadaero(:) = 0.0
870 ptoplwadaero(:) = 0.0
871 psollwad0aero(:) = 0.0
872 ptoplwad0aero(:) = 0.0
875 psollwaiaero(:) = (-lwdn_aero(:,1,2) -lwup_aero(:,1,2)) -(-lwdn_aero(:,1,1) -lwup_aero(:,1,1))
876 ptoplwaiaero(:) = (-lwdn_aero(:,klev+1,2)-lwup_aero(:,klev+1,2))-(-lwdn_aero(:,klev+1,1)-lwup_aero(:,klev+1,1))
880 IF (.NOT.ok_ade.AND..NOT.ok_aie)
THEN
883 psolswadaero(:) = 0.0
884 ptopswadaero(:) = 0.0
885 psolswad0aero(:) = 0.0
886 ptopswad0aero(:) = 0.0
889 psolswaiaero(:) = 0.0
890 ptopswaiaero(:) = 0.0
893 psolswcfaero(:,1) = (zfsdn_aero(:,1,1) -zfsup_aero(:,1,1)) -(zfsdn0_aero(:,1,1) -zfsup0_aero(:,1,1))
894 ptopswcfaero(:,1) = (zfsdn_aero(:,klev+1,1)-zfsup_aero(:,klev+1,1))-(zfsdn0_aero(:,klev+1,1)-zfsup0_aero(:,klev+1,1))
896 psolswcfaero(:,2) = 0.0
897 ptopswcfaero(:,2) = 0.0
899 psolswcfaero(:,3) = 0.0
900 ptopswcfaero(:,3) = 0.0
903 psollwadaero(:) = 0.0
904 ptoplwadaero(:) = 0.0
905 psollwad0aero(:) = 0.0
906 ptoplwad0aero(:) = 0.0
909 psollwaiaero(:) = 0.0
910 ptoplwaiaero(:) = 0.0
917 IF (.NOT. aerosolfeedback_active)
THEN
919 psolswcfaero(:,3) = (zfsdn_aero(:,1,5) -zfsup_aero(:,1,5)) -(zfsdn0_aero(:,1,5) -zfsup0_aero(:,1,5))
920 ptopswcfaero(:,3) = (zfsdn_aero(:,klev+1,5)-zfsup_aero(:,klev+1,5))-(zfsdn0_aero(:,klev+1,5)-zfsup0_aero(:,klev+1,5))
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcco2
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
logical, save swaero_diag
integer(kind=jpim) ngptot
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)
!$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 ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
subroutine recmwf_aero(KST, KEND, KPROMA, KTDIA, KLEV, KMODE, PALBD, PALBP, PAPRS, PAPRSF, PCCO2, PCLFR, PQO3, PAER, PDP, PEMIS, PMU0, PQ, PQS, PQIWP, PQLWP, PSLM, PT, PTS, PREF_LIQ, PREF_ICE,
!$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 ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pts
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pq