17 cldfra, cldemi, cldtaupd,&
18 ok_ade, ok_aie, flag_aerosol,&
20 tau_aero, piz_aero, cg_aero,&
21 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm,&
25 ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
26 heat,heat0,cool,cool0,albpla,&
27 topsw,toplw,solsw,sollw,&
29 topsw0,toplw0,solsw0,sollw0,&
32 topswad_aero, solswad_aero,&
33 topswai_aero, solswai_aero, &
34 topswad0_aero, solswad0_aero,&
35 topsw_aero, topsw0_aero,&
36 solsw_aero, solsw0_aero, &
37 topswcf_aero, solswcf_aero,&
39 toplwad_aero, sollwad_aero,&
40 toplwai_aero, sollwai_aero, &
41 toplwad0_aero, sollwad0_aero,&
43 zlwft0_i, zfldn0, zflup0,&
44 zswft0_i, zfsdn0, zfsup0)
53 USE chem_rep
, ONLY : solairetime, ok_suntime, ndimozon
173 REAL,
INTENT(in) :: dist
174 REAL,
INTENT(in) :: rmu0(
klon), fract(
klon)
178 REAL,
INTENT(in) :: tsol(
klon)
179 REAL,
INTENT(in) :: alb_dir(
klon,nsw),alb_dif(
klon,nsw)
180 real,
intent(in) :: SFRWL(6)
184 REAL,
INTENT(in):: wo(:, :, :)
189 LOGICAL,
INTENT(in) :: ok_ade, ok_aie
191 INTEGER,
INTENT(in) :: flag_aerosol
192 LOGICAL,
INTENT(in) :: flag_aerosol_strat
198 REAL,
INTENT(in) :: tau_aero_sw_rrtm(
klon,
klev,2,nsw)
199 REAL,
INTENT(in) :: piz_aero_sw_rrtm(
klon,
klev,2,nsw)
200 REAL,
INTENT(in) :: cg_aero_sw_rrtm(
klon,
klev,2,nsw)
205 REAL,
INTENT(in) :: tau_aero_lw_rrtm(
klon,
klev,2,
nlw)
211 REAL,
INTENT(in) :: cldtaupi(
klon,
klev)
212 LOGICAL,
INTENT(in) :: new_aod
216 REAL,
INTENT(in) :: ref_liq(
klon,
klev)
217 REAL,
INTENT(in) :: ref_ice(
klon,
klev)
218 REAL,
INTENT(in) :: ref_liq_pi(
klon,
klev)
219 REAL,
INTENT(in) :: ref_ice_pi(
klon,
klev)
224 REAL,
INTENT(out) :: topsw(
klon), toplw(
klon)
225 REAL,
INTENT(out) :: solsw(
klon), sollw(
klon), albpla(
klon)
227 REAL,
INTENT(out) :: sollwdown(
klon)
232 REAL,
INTENT(out) :: topswad_aero(
klon), solswad_aero(
klon)
233 REAL,
INTENT(out) :: topswai_aero(
klon), solswai_aero(
klon)
234 REAL,
INTENT(out) :: toplwad_aero(
klon), sollwad_aero(
klon)
235 REAL,
INTENT(out) :: toplwai_aero(
klon), sollwai_aero(
klon)
236 REAL,
DIMENSION(klon),
INTENT(out) :: topswad0_aero
237 REAL,
DIMENSION(klon),
INTENT(out) :: solswad0_aero
238 REAL,
DIMENSION(klon),
INTENT(out) :: toplwad0_aero
239 REAL,
DIMENSION(klon),
INTENT(out) :: sollwad0_aero
240 REAL,
DIMENSION(kdlon,9),
INTENT(out) :: topsw_aero
241 REAL,
DIMENSION(kdlon,9),
INTENT(out) :: topsw0_aero
242 REAL,
DIMENSION(kdlon,9),
INTENT(out) :: solsw_aero
243 REAL,
DIMENSION(kdlon,9),
INTENT(out) :: solsw0_aero
244 REAL,
DIMENSION(kdlon,3),
INTENT(out) :: topswcf_aero
245 REAL,
DIMENSION(kdlon,3),
INTENT(out) :: solswcf_aero
246 REAL,
DIMENSION(kdlon,kflev+1),
INTENT(out) :: ZSWFT0_i
247 REAL,
DIMENSION(kdlon,kflev+1),
INTENT(out) :: ZLWFT0_i
258 REAL(KIND=8) zx_alpha1, zx_alpha2
259 INTEGER k, kk, i, j, iof, nb_gr
260 INTEGER ist,iend,ktdia,kmode
265 REAL(KIND=8) PALBD_NEW(
kdlon,nsw), PALBP_NEW(
kdlon,nsw)
283 REAL(KIND=8) zfract(
kdlon), zrmu0(
kdlon), zdist
288 REAL(KIND=8) zsollwdown(
kdlon)
291 REAL(KIND=8) zznormcp
297 REAL(KIND=8) ztopswadaero(
kdlon), zsolswadaero(
kdlon)
298 REAL(KIND=8) ztopswad0aero(
kdlon), zsolswad0aero(
kdlon)
299 REAL(KIND=8) ztopswaiaero(
kdlon), zsolswaiaero(
kdlon)
301 REAL(KIND=8) ztoplwadaero(
kdlon), zsollwadaero(
kdlon)
302 REAL(KIND=8) ztoplwad0aero(
kdlon), zsollwad0aero(
kdlon)
303 REAL(KIND=8) ztoplwaiaero(
kdlon), zsollwaiaero(
kdlon)
305 REAL(KIND=8) ztopsw_aero(
kdlon,9), ztopsw0_aero(
kdlon,9)
306 REAL(KIND=8) zsolsw_aero(
kdlon,9), zsolsw0_aero(
kdlon,9)
307 REAL(KIND=8) ztopswcf_aero(
kdlon,3), zsolswcf_aero(
kdlon,3)
311 REAL(KIND=8) GEMU(
klon)
317 REAL(KIND=8) ref_liq_pi_i(
klon,
klev)
318 REAL(KIND=8) ref_ice_pi_i(
klon,
klev)
323 REAL(KIND=8) POZON_i(
kdlon,
kflev, size(wo, 3))
336 REAL(KIND=8) ZCTRSO(
klon,2)
337 REAL(KIND=8) ZCEMTR(
klon,2)
338 REAL(KIND=8) ZTRSOD(
klon)
339 REAL(KIND=8) ZLWFC (
klon,2)
341 REAL(KIND=8) ZSWFC (
klon,2)
344 REAL(KIND=8) PPIZA_TOT(
klon,
klev,nsw)
345 REAL(KIND=8) PCGA_TOT(
klon,
klev,nsw)
346 REAL(KIND=8) PTAU_TOT(
klon,
klev,nsw)
347 REAL(KIND=8) PPIZA_NAT(
klon,
klev,nsw)
348 REAL(KIND=8) PCGA_NAT(
klon,
klev,nsw)
349 REAL(KIND=8) PTAU_NAT(
klon,
klev,nsw)
354 REAL(KIND=8) PSFSWDIR(
klon,nsw)
355 REAL(KIND=8) PSFSWDIF(
klon,nsw)
356 REAL(KIND=8) PFSDNN(
klon)
357 REAL(KIND=8) PFSDNV(
klon)
362 REAL(KIND=8) ZFLUX_i (
klon,2,
klev+1)
363 REAL(KIND=8) ZFLUC_i (
klon,2,
klev+1)
372 real,
parameter:: dobson_u = 2.1415e-05
373 CHARACTER (LEN=80) :: abort_message
374 CHARACTER (LEN=80) :: modname=
'radlwsw_m'
376 call assert(
size(wo, 1) ==
klon,
size(wo, 2) ==
klev,
"radlwsw wo")
391 print*,
"kdlon mauvais:",
klon,
kdlon, nb_gr
395 print*,
"kflev differe de KLEV, kflev, KLEV"
410 psct = solaire/zdist/zdist
414 if(ok_suntime) psct = solairetime/zdist/zdist
415 print*,
'Constante solaire: ',psct*zdist*zdist
422 zfract(i) = fract(iof+i)
424 zrmu0(i) = rmu0(iof+i)
444 if(iflag_rrtm==0)
then
447 palbd(i,1)=alb_dif(iof+i,1)
448 palbd(i,2)=alb_dif(iof+i,2)
449 palbp(i,1)=alb_dir(iof+i,1)
450 palbp(i,2)=alb_dir(iof+i,2)
452 palbd(i,1)=alb_dif(iof+i,1)
453 palbd(i,2)=(alb_dif(iof+i,2)*sfrwl(2)+alb_dif(iof+i,3)*sfrwl(3) &
454 +alb_dif(iof+i,4)*sfrwl(4))/(sfrwl(2)+sfrwl(3)+sfrwl(4))
455 palbp(i,1)=alb_dir(iof+i,1)
456 palbp(i,2)=(alb_dir(iof+i,2)*sfrwl(2)+alb_dir(iof+i,3)*sfrwl(3) &
457 +alb_dir(iof+i,4)*sfrwl(4))/(sfrwl(2)+sfrwl(3)+sfrwl(4))
459 palbd(i,1)=(alb_dif(iof+i,1)*sfrwl(1)+alb_dif(iof+i,2)*sfrwl(2) &
460 +alb_dif(iof+i,3)*sfrwl(3))/(sfrwl(1)+sfrwl(2)+sfrwl(3))
461 palbd(i,2)=(alb_dif(iof+i,4)*sfrwl(4)+alb_dif(iof+i,5)*sfrwl(5) &
462 +alb_dif(iof+i,6)*sfrwl(6))/(sfrwl(4)+sfrwl(5)+sfrwl(6))
463 palbp(i,1)=(alb_dir(iof+i,1)*sfrwl(1)+alb_dir(iof+i,2)*sfrwl(2) &
464 +alb_dir(iof+i,3)*sfrwl(3))/(sfrwl(1)+sfrwl(2)+sfrwl(3))
465 palbp(i,2)=(alb_dir(iof+i,4)*sfrwl(4)+alb_dir(iof+i,5)*sfrwl(5) &
466 +alb_dir(iof+i,6)*sfrwl(6))/(sfrwl(4)+sfrwl(5)+sfrwl(6))
468 elseif(iflag_rrtm==1)
then
470 palbd_new(i,kk)=alb_dif(iof+i,kk)
471 palbp_new(i,kk)=alb_dir(iof+i,kk)
481 ppsol(i) = paprs(iof+i,1)
482 zx_alpha1 = (paprs(iof+i,1)-pplay(iof+i,2))/(pplay(iof+i,1)-pplay(iof+i,2))
483 zx_alpha2 = 1.0 - zx_alpha1
484 ptl(i,1) = t(iof+i,1) * zx_alpha1 + t(iof+i,2) * zx_alpha2
486 pdt0(i) = tsol(iof+i) - ptl(i,1)
490 ptl(i,k) = (t(iof+i,k)+t(iof+i,k-1))*0.5
495 pdp(i,k) = paprs(iof+i,k)-paprs(iof+i,k+1)
496 ptave(i,k) = t(iof+i,k)
497 pwv(i,k) = max(q(iof+i,k), 1.0e-12)
499 pozon(i,k, :) = wo(iof+i, k, :) *
rg * dobson_u * 1e3 &
500 / (paprs(iof+i, k) - paprs(iof+i, k+1))
504 pcldld(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
505 pcldlu(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
506 pcldsw(i,k) = cldfra(iof+i,k)
507 ptau(i,1,k) = max(cldtaupi(iof+i,k), 1.0e-05)
508 ptau(i,2,k) = max(cldtaupi(iof+i,k), 1.0e-05)
509 pomega(i,1,k) = 0.9999 - 5.0e-04 * exp(-0.5 * ptau(i,1,k))
510 pomega(i,2,k) = 0.9988 - 2.5e-03 * exp(-0.05 * ptau(i,2,k))
519 ptaua(i,1,k) = max(cldtaupd(iof+i,k), 1.0e-05)
520 ptaua(i,2,k) = max(cldtaupd(iof+i,k), 1.0e-05)
521 pomegaa(i,1,k) = 0.9999 - 5.0e-04 * exp(-0.5 * ptaua(i,1,k))
522 pomegaa(i,2,k) = 0.9988 - 2.5e-03 * exp(-0.05 * ptaua(i,2,k))
528 ndimozon =
size(wo, 3)
529 CALL rad_interactif(pozon,iof)
536 ppmb(i,k) = paprs(iof+i,k)/100.0
544 paer(i,k,kk) = 1.0e-15
550 tauaero(i,k,:,1)=tau_aero(iof+i,k,:,1)
551 pizaero(i,k,:,1)=piz_aero(iof+i,k,:,1)
552 cgaero(i,k,:,1) =cg_aero(iof+i,k,:,1)
553 tauaero(i,k,:,2)=tau_aero(iof+i,k,:,2)
554 pizaero(i,k,:,2)=piz_aero(iof+i,k,:,2)
555 cgaero(i,k,:,2) =cg_aero(iof+i,k,:,2)
562 IF (iflag_rrtm == 0)
THEN
594 ptl, ptave, pwv, pozon(:, :, 1), paer,&
598 ztoplw,zsollw,ztoplw0,zsollw0,&
600 zflup, zfldn, zflup0,zfldn0)
632 IF (.NOT. new_aod)
THEN
636 ppsol, palbd, palbp,&
637 ptave, pwv, pqs, pozon(:, :,
size(wo, 3)), paer,&
638 pcldsw, ptau, pomega, pcg,&
640 zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,&
641 zfsup,zfsdn,zfsup0,zfsdn0,&
642 tauaero(:,:,5,:), pizaero(:,:,5,:), cgaero(:,:,5,:),&
644 ztopswadaero,zsolswadaero,&
645 ztopswaiaero,zsolswaiaero,&
651 ppsol, palbd, palbp,&
652 ptave, pwv, pqs, pozon(:, :,
size(wo, 3)), paer,&
653 pcldsw, ptau, pomega, pcg,&
655 zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,&
656 zfsup,zfsdn,zfsup0,zfsdn0,&
657 tauaero, pizaero, cgaero, &
659 ztopswadaero,zsolswadaero,&
660 ztopswad0aero,zsolswad0aero,&
661 ztopswaiaero,zsolswaiaero, &
662 ztopsw_aero,ztopsw0_aero,&
663 zsolsw_aero,zsolsw0_aero,&
664 ztopswcf_aero,zsolswcf_aero, &
665 ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)
674 lwdn0( iof+i,k) = zfldn0( i,k)
675 lwdn( iof+i,k) = zfldn( i,k)
676 lwup0( iof+i,k) = zflup0( i,k)
677 lwup( iof+i,k) = zflup( i,k)
678 swdn0( iof+i,k) = zfsdn0( i,k)
679 swdn( iof+i,k) = zfsdn( i,k)
680 swup0( iof+i,k) = zfsup0( i,k)
681 swup( iof+i,k) = zfsup( i,k)
722 ptau_tot(i,
kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,2,kk)
723 ppiza_tot(i,
kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,2,kk)
724 pcga_tot(i,
kflev+1-k,kk)=cg_aero_sw_rrtm(i,k,2,kk)
726 ptau_nat(i,
kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,1,kk)
727 ppiza_nat(i,
kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,1,kk)
728 pcga_nat(i,
kflev+1-k,kk)=cg_aero_sw_rrtm(i,k,1,kk)
743 ptau_lw_tot(i,
kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,2,kk)
744 ptau_lw_nat(i,
kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,1,kk)
771 paprs_i(:,1)=paprs(:,
klev+1)
811 rii0=solaire/zdist/zdist
843 palbd_new,palbp_new, paprs_i , pplay_i , rco2 , cldfra_i,&
844 pozon_i , paer_i , pdp_i , pemis , rmu0 ,&
845 q_i , qsat_i , fiwc_i , flwc_i ,
zmasq , t_i ,tsol,&
846 ref_liq_i, ref_ice_i, &
847 ref_liq_pi_i, ref_ice_pi_i, &
848 zemtd_i , zemtu_i , ztrso_i ,&
849 zth_i , zctrso , zcemtr , ztrsod ,&
850 zlwfc , zlwft_i , zswfc , zswft_i ,&
851 psfswdir , psfswdif, pfsdnn , pfsdnv ,&
852 ppiza_tot, pcga_tot,ptau_tot,&
853 ppiza_nat, pcga_nat,ptau_nat, &
854 ptau_lw_tot, ptau_lw_nat, &
856 zfsdwn_i , zfsup_i , zfcdwn_i, zfcup_i,&
857 ztopswadaero,zsolswadaero,&
858 ztopswad0aero,zsolswad0aero,&
859 ztopswaiaero,zsolswaiaero, &
860 ztopswcf_aero,zsolswcf_aero, &
861 ztoplwadaero,zsollwadaero,&
862 ztoplwad0aero,zsollwad0aero,&
863 ztoplwaiaero,zsollwaiaero, &
864 ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)
925 zemtd(i,k+1) = zemtd_i(i,k+1)
926 zemtu(i,k+1) = zemtu_i(i,k+1)
927 ztrso(i,k+1) = ztrso_i(i,k+1)
928 zth(i,k+1) = zth_i(i,k+1)
931 zflup(i,k+1) = zflux_i(i,1,k+1)
932 zfldn(i,k+1) = zflux_i(i,2,k+1)
933 zflup0(i,k+1) = zfluc_i(i,1,k+1)
934 zfldn0(i,k+1) = zfluc_i(i,2,k+1)
935 zfsdn(i,k+1) = zfsdwn_i(i,k+1)*fract(i)
936 zfsdn0(i,k+1) = zfcdwn_i(i,k+1)*fract(i)
937 zfsup(i,k+1) = zfsup_i(i,k+1)*fract(i)
938 zfsup0(i,k+1) = zfcup_i(i,k+1)*fract(i)
941 zswft(i,k+1) = (zfsdwn_i(i,k+1)-zfsup_i(i,k+1))*fract(i)
942 zswft0_i(i,k+1) = (zfcdwn_i(i,k+1)-zfcup_i(i,k+1))*fract(i)
945 zlwft(i,k+1) =-zflux_i(i,2,k+1)-zflux_i(i,1,k+1)
946 zlwft0_i(i,k+1)=-zfluc_i(i,2,k+1)-zfluc_i(i,1,k+1)
953 ztopswadaero(:) =ztopswadaero(:) *fract(:)
954 zsolswadaero(:) =zsolswadaero(:) *fract(:)
955 ztopswad0aero(:)=ztopswad0aero(:)*fract(:)
956 zsolswad0aero(:)=zsolswad0aero(:)*fract(:)
957 ztopswaiaero(:) =ztopswaiaero(:) *fract(:)
958 zsolswaiaero(:) =zsolswaiaero(:) *fract(:)
959 ztopswcf_aero(:,1)=ztopswcf_aero(:,1)*fract(:)
960 ztopswcf_aero(:,2)=ztopswcf_aero(:,2)*fract(:)
961 ztopswcf_aero(:,3)=ztopswcf_aero(:,3)*fract(:)
962 zsolswcf_aero(:,1)=zsolswcf_aero(:,1)*fract(:)
963 zsolswcf_aero(:,2)=zsolswcf_aero(:,2)*fract(:)
964 zsolswcf_aero(:,3)=zsolswcf_aero(:,3)*fract(:)
976 zsolsw(i) = zswft(i,1)
977 zsolsw0(i) = zswft0_i(i,1)
979 ztopsw(i) = zswft(i,
klev+1)
980 ztopsw0(i) = zswft0_i(i,
klev+1)
987 zsollw(i) = zlwft(i,1)
988 zsollw0(i) = zlwft0_i(i,1)
989 ztoplw(i) = zlwft(i,
klev+1)*(-1)
990 ztoplw0(i) = zlwft0_i(i,
klev+1)*(-1)
992 IF (fract(i) == 0.)
THEN
997 zalbpla(i) = zfsup(i,
klev+1)/zfsdn(i,
klev+1)
1001 zsollwdown(i)= -1.*zfldn(i,1)
1015 zheat(i,k)=(zswft(i,k+1)-zswft(i,k))*rday*
rg/rcpd/pdp(i,k)
1016 zheat0(i,k)=(zswft0_i(i,k+1)-zswft0_i(i,k))*rday*
rg/rcpd/pdp(i,k)
1017 zcool(i,k)=(zlwft(i,k)-zlwft(i,k+1))*rday*
rg/rcpd/pdp(i,k)
1018 zcool0(i,k)=(zlwft0_i(i,k)-zlwft0_i(i,k+1))*rday*
rg/rcpd/pdp(i,k)
1025 abort_message=
"You should compile with -rrtm if running with iflag_rrtm=1"
1032 topsw(iof+i) = ztopsw(i)
1033 toplw(iof+i) = ztoplw(i)
1034 solsw(iof+i) = zsolsw(i)
1035 sollw(iof+i) = zsollw(i)
1036 sollwdown(iof+i) = zsollwdown(i)
1038 lwdn0( iof+i,k) = zfldn0( i,k)
1039 lwdn( iof+i,k) = zfldn( i,k)
1040 lwup0( iof+i,k) = zflup0( i,k)
1041 lwup( iof+i,k) = zflup( i,k)
1043 topsw0(iof+i) = ztopsw0(i)
1044 toplw0(iof+i) = ztoplw0(i)
1045 solsw0(iof+i) = zsolsw0(i)
1046 sollw0(iof+i) = zsollw0(i)
1047 albpla(iof+i) = zalbpla(i)
1050 swdn0( iof+i,k) = zfsdn0( i,k)
1051 swdn( iof+i,k) = zfsdn( i,k)
1052 swup0( iof+i,k) = zfsup0( i,k)
1053 swup( iof+i,k) = zfsup( i,k)
1060 topswad_aero(iof+i) = ztopswadaero(i)
1061 topswad0_aero(iof+i) = ztopswad0aero(i)
1062 solswad_aero(iof+i) = zsolswadaero(i)
1063 solswad0_aero(iof+i) = zsolswad0aero(i)
1069 topsw_aero(iof+i,:) = ztopsw_aero(i,:)
1070 topsw0_aero(iof+i,:) = ztopsw0_aero(i,:)
1071 solsw_aero(iof+i,:) = zsolsw_aero(i,:)
1072 solsw0_aero(iof+i,:) = zsolsw0_aero(i,:)
1073 topswcf_aero(iof+i,:) = ztopswcf_aero(i,:)
1074 solswcf_aero(iof+i,:) = zsolswcf_aero(i,:)
1076 toplwad_aero(iof+i) = ztoplwadaero(i)
1077 toplwad0_aero(iof+i) = ztoplwad0aero(i)
1078 sollwad_aero(iof+i) = zsollwadaero(i)
1079 sollwad0_aero(iof+i) = zsollwad0aero(i)
1083 topswad_aero(iof+i) = 0.0
1084 solswad_aero(iof+i) = 0.0
1085 topswad0_aero(iof+i) = 0.0
1086 solswad0_aero(iof+i) = 0.0
1087 topsw_aero(iof+i,:) = 0.
1088 topsw0_aero(iof+i,:) =0.
1089 solsw_aero(iof+i,:) = 0.
1090 solsw0_aero(iof+i,:) = 0.
1092 toplwad_aero(iof+i) = 0.0
1093 sollwad_aero(iof+i) = 0.0
1094 toplwad0_aero(iof+i) = 0.0
1095 sollwad0_aero(iof+i) = 0.0
1100 topswai_aero(iof+i) = ztopswaiaero(i)
1101 solswai_aero(iof+i) = zsolswaiaero(i)
1103 toplwai_aero(iof+i) = ztoplwaiaero(i)
1104 sollwai_aero(iof+i) = zsollwaiaero(i)
1108 topswai_aero(iof+i) = 0.0
1109 solswai_aero(iof+i) = 0.0
1111 toplwai_aero(iof+i) = 0.0
1112 sollwai_aero(iof+i) = 0.0
1119 zznormcp=1.0+rvtmp2*pwv(i,k)
1120 heat(iof+i,k) = zheat(i,k)/zznormcp
1121 cool(iof+i,k) = zcool(i,k)/zznormcp
1122 heat0(iof+i,k) = zheat0(i,k)/zznormcp
1123 cool0(iof+i,k) = zcool0(i,k)/zznormcp
!$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 & swdn0
real(kind=jprb), dimension(6) rebcua
real(kind=jprb), dimension(6) ryfwcb
real(kind=jprb), dimension(6) ryfwcc
real(kind=jprb), dimension(16, 3) rfueta
real(kind=jprb), dimension(6) ryfwcd
real(kind=jprb), dimension(6) rflbb2
real(kind=jprb), dimension(6) rflbb1
real(kind=jprb), dimension(6) raswce
real(kind=jprb), dimension(6) rflcc3
real(kind=jprb), dimension(6) rflbb3
real(kind=jprb), dimension(6) rebcuc
real(kind=jprb), dimension(6) raswcb
real(kind=jprb), dimension(6) rebcuf
!$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 SWdn200clr CALL SWup200clr CALL LWdn200clr CALL & lwup0
subroutine lw_lmdar4(ppmb, pdp, ppsol, pdt0, pemis, ptl, ptave, pwv, pozon,paer, pcldld, pcldlu, pview, pcolr, pcolr0, ptoplw, psollw, ptoplw0,psollw0, psollwdown,
subroutine radlwsw(dist, rmu0, fract,
real(kind=jprb), dimension(6) ryfwcf
real(kind=jprb), dimension(6) rflcc1
!$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 SWdn200clr CALL SWup200clr CALL & lwdn0
!$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
real(kind=jprb), dimension(6) rebcud
real(kind=jprb), dimension(6) rfldd3
real(kind=jprb), dimension(6, 6) xp
integer, parameter nbands_lw_rrtm
!$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 SWdn200clr CALL & swup0
real(kind=jprb), dimension(16) rebcuh
real(kind=jprb), dimension(16) rebcug
integer(kind=jpim) nliqopt
real, dimension(:), allocatable, save zmasq
real(kind=jprb), dimension(6) ryfwca
real(kind=jprb), dimension(16, 3) rhsavi
real(kind=jprb), dimension(6) rebcub
!$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 pplay
real(kind=jprb), dimension(6) rflcc0
real(kind=jprb), dimension(6) ryfwce
!$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 qsat(dq, q, e, p, t, r)
real(kind=jprb), dimension(6) rfldd2
real(kind=jprb), dimension(6) rebcuj
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,
subroutine sw_lmdar4(psct, prmu0, pfrac, ppmb, pdp, ppsol, palbd, palbp, ptave, pwv, pqs, pozon, paer, pcldsw, ptau, pomega, pcg, pheat, pheat0, palbpla, ptopsw, psolsw, ptopsw0, psolsw0, zfsup, zfsdn, zfsup0, zfsdn0, tauae, pizae, cgae, ptaua, pomegaa, ptopswad, psolswad, ptopswai, psolswai, ok_ade, ok_aie)
integer(kind=jpim) niceopt
real(kind=jprb), dimension(6) rfldd1
real(kind=jprb), dimension(181, 16) totplnk
integer(kind=jpim) nradlp
real(kind=jprb), dimension(6) rflaa1
subroutine writefield_phy(name, Field, ll)
real(kind=jprb), dimension(6) raswcc
character(len=4), save type_trac
real(kind=jprb), dimension(16, 3) rfulio
real(kind=jprb), dimension(6) rflbb0
real(kind=jprb), dimension(16) delwave
subroutine abort_physic(modname, message, ierr)
integer(kind=jpim) ntraer
integer(kind=jpim) nradip
subroutine sw_aeroar4(PSCT, PRMU0, PFRAC, PPMB, PDP, PPSOL, PALBD, PALBP, PTAVE, PWV, PQS, POZON, PAER, PCLDSW, PTAU, POMEGA, PCG, PHEAT, PHEAT0, PALBPLA, PTOPSW, PSOLSW, PTOPSW0, PSOLSW0, ZFSUP, ZFSDN, ZFSUP0, ZFSDN0, tauaero, pizaero, cgaero, PTAUA, POMEGAA, PTOPSWADAERO, PSOLSWADAERO, PTOPSWAD0AERO, PSOLSWAD0AERO, PTOPSWAIAERO, PSOLSWAIAERO, PTOPSWAERO, PTOPSW0AERO, PSOLSWAERO, PSOLSW0AERO, PTOPSWCFAERO, PSOLSWCFAERO, ok_ade, ok_aie, flag_aerosol, flag_aerosol_strat)
real(kind=jprb), dimension(6) raswcf
real(kind=jprb), dimension(6) rfldd0
integer, parameter naero_grp
real(kind=jprb), dimension(6) rebcue
real(kind=jprb), dimension(6) rflcc2
real(kind=jprb), dimension(6) rflaa0
real(kind=jprb), dimension(6) raswcd
real(kind=jprb), dimension(6) raswca
real(kind=jprb), dimension(6) rebcui