3 & psct , pcardi, ppsol , palbd, palbp , pwv, pqs,&
4 & prmu0, pcg , pcldsw, pdp , pomega, poz, ppmb,&
5 & ptau , ptave ,
paer,&
8 & pfdnn, pfdnv , pfupn, pfupv,&
9 & pcdnn, pcdnv , pcupn, pcupv,&
10 & psudu, puvdf , pparf, pparcf, pdiffs , pdirfs, &
11 & lrdust, ppiza_dst,pcga_dst,ptaurel_dst &
81 integer,
save :: icount=0
83 INTEGER(KIND=JPIM),
INTENT(IN) :: KLON
84 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
85 INTEGER(KIND=JPIM),
INTENT(IN) :: KIDIA
86 INTEGER(KIND=JPIM),
INTENT(IN) :: KFDIA
87 INTEGER(KIND=JPIM),
INTENT(IN) :: KAER
88 REAL(KIND=JPRB) ,
INTENT(IN) :: PSCT
89 REAL(KIND=JPRB) ,
INTENT(IN) :: PCARDI
90 REAL(KIND=JPRB) ,
INTENT(IN) :: PPSOL(klon)
91 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBD(klon,nsw)
92 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBP(klon,nsw)
93 REAL(KIND=JPRB) ,
INTENT(IN) :: PWV(klon,klev)
94 REAL(KIND=JPRB) ,
INTENT(IN) :: PQS(klon,klev)
95 REAL(KIND=JPRB) ,
INTENT(IN) :: PRMU0(klon)
96 REAL(KIND=JPRB) ,
INTENT(IN) :: PCG(klon,nsw,klev)
97 REAL(KIND=JPRB) ,
INTENT(IN) :: PCLDSW(klon,klev)
98 REAL(KIND=JPRB) :: PDP(klon,klev)
99 REAL(KIND=JPRB) ,
INTENT(IN) :: POMEGA(klon,nsw,klev)
100 REAL(KIND=JPRB) ,
INTENT(IN) :: POZ(klon,klev)
101 REAL(KIND=JPRB) ,
INTENT(IN) :: PPMB(klon,klev+1)
102 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU(klon,nsw,klev)
103 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAVE(klon,klev)
104 REAL(KIND=JPRB) ,
INTENT(IN) :: PAER(klon,6,klev)
106 LOGICAL ,
INTENT(IN) :: LRDUST
107 REAL(KIND=JPRB) ,
INTENT(IN) :: PPIZA_DST(klon,klev,nsw)
108 REAL(KIND=JPRB) ,
INTENT(IN) :: PCGA_DST(klon,klev,nsw)
109 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAUREL_DST(klon,klev,nsw)
111 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFDOWN(klon,klev+1)
112 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFUP(klon,klev+1)
113 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCDOWN(klon,klev+1)
114 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCUP(klon,klev+1)
115 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFDNN(klon)
116 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFDNV(klon)
117 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFUPN(klon)
118 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFUPV(klon)
119 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCDNN(klon)
120 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCDNV(klon)
121 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCUPN(klon)
122 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCUPV(klon)
123 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSUDU(klon)
124 REAL(KIND=JPRB) ,
INTENT(OUT) :: PUVDF(klon)
125 REAL(KIND=JPRB) ,
INTENT(OUT) :: PPARF(klon)
126 REAL(KIND=JPRB) ,
INTENT(OUT) :: PPARCF(klon)
127 REAL(KIND=JPRB) ,
INTENT(OUT) :: PDIFFS(klon,nsw)
128 REAL(KIND=JPRB) ,
INTENT(OUT) :: PDIRFS(klon,nsw)
138 REAL(KIND=JPRB) :: ZAKI(klon,2,nsw)&
139 & , ZCLD(KLON,KLEV) , ZCLEAR(KLON) &
140 & , ZDSIG(KLON,KLEV) , ZFACT(KLON)&
141 & , ZFD(KLON,KLEV+1) , ZCD(KLON,KLEV+1)&
142 & , ZCDOWN(KLON,KLEV+1), ZCDNIR(KLON,KLEV+1), ZCDUVS(KLON,KLEV+1)&
143 & , ZFDOWN(KLON,KLEV+1), ZFDNIR(KLON,KLEV+1), ZFDUVS(KLON,KLEV+1)&
144 & , ZFU(KLON,KLEV+1) , ZCU(KLON,KLEV+1)&
145 & , ZCUP(KLON,KLEV+1) , ZCUNIR(KLON,KLEV+1), ZCUUVS(KLON,KLEV+1)&
146 & , ZFUP(KLON,KLEV+1) , ZFUNIR(KLON,KLEV+1), ZFUUVS(KLON,KLEV+1)&
147 & , ZRMU(KLON) , ZSEC(KLON) &
148 & , ZSUDU1(KLON) , ZSUDU2(KLON) &
149 & , ZSUDU1T(KLON) , ZSUDU2T(KLON) &
150 & , ZUD(KLON,5,KLEV+1) ,ZDIFF(KLON,KLEV) ,ZDIRF(KLON,KLEV) &
151 & , ZDIFF2(KLON,KLEV) , ZDIRF2(KLON,KLEV)
153 INTEGER(KIND=JPIM) :: JK, JL, JNU, INUVS, INUIR
155 REAL(KIND=JPRB) :: ZHOOK_HANDLE
159 #include "sw1s.intfb.h"
160 #include "swni.intfb.h"
161 #include "swu.intfb.h"
170 CALL swu ( kidia,kfdia ,klon ,klev,&
171 & psct ,pcardi,pcldsw,ppmb ,ppsol,&
173 & zaki ,zcld ,zclear,zdsig,zfact,zrmu,zsec,zud )
181 ELSEIF (nsw == 6)
THEN
209 DO jnu = inuvs , inuir-1
212 &( kidia , kfdia, klon , klev , kaer , jnu &
213 &, paer , palbd , palbp, pcg , zcld , zclear &
214 &, zdsig, pomega, poz , zrmu , zsec , ptau , zud &
215 &, zfduvs,zfuuvs, zcduvs,zcuuvs, zsudu1, zdiff,zdirf &
216 &, lrdust,ppiza_dst(:,:,jnu) &
217 &, pcga_dst(:,:,jnu) &
218 &, ptaurel_dst(:,:,jnu) )
222 write(str1,
'(i1)') jnu
228 pdiffs(jl,jnu)=zdiff(jl,1)*zfact(jl)
229 pdirfs(jl,jnu)=zdirf(jl,1)*zfact(jl)
233 zfd(jl,jk)=zfd(jl,jk)+zfduvs(jl,jk)
234 zfu(jl,jk)=zfu(jl,jk)+zfuuvs(jl,jk)
235 zcd(jl,jk)=zcd(jl,jk)+zcduvs(jl,jk)
236 zcu(jl,jk)=zcu(jl,jk)+zcuuvs(jl,jk)
240 zsudu1t(jl)=zsudu1t(jl)+zsudu1(jl)
246 puvdf(jl)=puvdf(jl)+zfduvs(jl,1)
248 ELSEIF (jnu == 3)
THEN
250 pparf(jl)=pparf(jl)+zfduvs(jl,1)
251 pparcf(jl)=pparcf(jl)+zcduvs(jl,1)
265 zfdown(jl,jk)=0.0_jprb
267 zcdown(jl,jk)=0.0_jprb
269 zsudu2t(jl) =0.0_jprb
276 &( kidia ,kfdia , klon , klev , kaer , jnu &
277 &, paer ,zaki , palbd, palbp, pcg , zcld, zclear &
278 &, zdsig ,pomega, poz , zrmu , zsec , ptau, zud &
280 &, zfdnir,zfunir,zcdnir,zcunir,zsudu2,zdiff2,zdirf2 &
281 &, lrdust,ppiza_dst(:,:,jnu) &
282 &, pcga_dst(:,:,jnu) &
283 &, ptaurel_dst(:,:,jnu) &
289 write(str1,
'(i1)') jnu
294 pdiffs(jl,jnu)=zdiff2(jl,1)*zfact(jl)
295 pdirfs(jl,jnu)=zdirf2(jl,1)*zfact(jl)
299 zfdown(jl,jk)=zfdown(jl,jk)+zfdnir(jl,jk)
300 zfup(jl,jk)=zfup(jl,jk)+zfunir(jl,jk)
301 zcdown(jl,jk)=zcdown(jl,jk)+zcdnir(jl,jk)
302 zcup(jl,jk)=zcup(jl,jk)+zcunir(jl,jk)
306 zsudu2t(jl)=zsudu2t(jl)+zsudu2(jl)
316 pfdnn(jl)=zfdown(jl,1)*zfact(jl)
317 pfdnv(jl)=zfd(jl,1)*zfact(jl)
318 pfupn(jl)=zfup(jl,klev+1)*zfact(jl)
319 pfupv(jl)=zfu(jl,klev+1)*zfact(jl)
321 pcdnn(jl)=zcdown(jl,1)*zfact(jl)
322 pcdnv(jl)=zcd(jl,1)*zfact(jl)
323 pcupn(jl)=zcup(jl,klev+1)*zfact(jl)
324 pcupv(jl)=zcu(jl,klev+1)*zfact(jl)
326 psudu(jl)=(zsudu1t(jl)+zsudu2t(jl))*zfact(jl)
327 puvdf(jl)=puvdf(jl)*zfact(jl)
328 pparf(jl)=pparf(jl)*zfact(jl)
329 pparcf(jl)=pparcf(jl)*zfact(jl)
340 pfup(jl,jk) = (zfup(jl,jk) + zfu(jl,jk)) * zfact(jl)
341 pfdown(jl,jk) = (zfdown(jl,jk) + zfd(jl,jk)) * zfact(jl)
342 pcup(jl,jk) = (zcup(jl,jk) + zcu(jl,jk)) * zfact(jl)
343 pcdown(jl,jk) = (zcdown(jl,jk) + zcd(jl,jk)) * zfact(jl)
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)
subroutine swni(KIDIA, KFDIA, KLON, KLEV, KAER, KNU, PAER, PAKI, PALBD, PALBP, PCG, PCLD, PCLEAR, PDSIG, POMEGA, POZ, PRMU, PSEC, PTAU, PUD, PWV, PQS, PFDOWN, PFUP, PCDOWN, PCUP, PSUDU2, PDIFF, PDIRF,
subroutine sw1s(KIDIA, KFDIA, KLON, KLEV, KAER, KNU, PAER, PALBD, PALBP, PCG, PCLD, PCLEAR, PDSIG, POMEGA, POZ, PRMU, PSEC, PTAU, PUD, PFD, PFU, PCD, PCU, PSUDU1, PDIFF, PDIRF,
!$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
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
subroutine writefield_phy(name, Field, ll)
subroutine swu(KIDIA, KFDIA, KLON, KLEV, PSCT, PCARDI, PCLDSW, PPMB, PPSOL, PRMU0, PTAVE, PWV, PAKI, PCLD, PCLEAR, PDSIG, PFACT, PRMU, PSEC, PUD)
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer