4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE radlwsw(dist, mu0, fract, paprs, play, tsol, albedo, & |
SUBROUTINE radlwsw(dist, mu0, fract, paprs, play, tsol, albedo, t, q, wo, & |
8 |
t, q, wo, cldfra, cldemi, cldtaupd, heat, heat0, cool, cool0, radsol, & |
cldfra, cldemi, cldtaupd, heat, heat0, cool, cool0, radsol, albpla, & |
9 |
albpla, topsw, toplw, solsw, sollw, sollwdown, topsw0, toplw0, solsw0, & |
topsw, toplw, solsw, sollw, sollwdown, topsw0, toplw0, solsw0, sollw0, & |
10 |
sollw0, lwdn0, lwdn, lwup0, lwup, swdn0, swdn, swup0, swup, ok_ade, & |
lwdn0, lwdn, lwup0, lwup, swdn0, swdn, swup0, swup, ok_ade, ok_aie, & |
11 |
ok_aie, tau_ae, piz_ae, cg_ae, topswad, solswad, cldtaupi, topswai, & |
tau_ae, piz_ae, cg_ae, topswad, solswad, cldtaupi, topswai, solswai) |
|
solswai) |
|
12 |
|
|
13 |
! From LMDZ4/libf/phylmd/radlwsw.F, version 1.4 2005/06/06 13:16:33 |
! From LMDZ4/libf/phylmd/radlwsw.F, version 1.4 2005/06/06 13:16:33 |
14 |
! Author: Z. X. Li (LMD/CNRS) |
! Author: Z. X. Li (LMD/CNRS) |
42 |
use sw_m, only: sw |
use sw_m, only: sw |
43 |
USE yoethf_m, ONLY: rvtmp2 |
USE yoethf_m, ONLY: rvtmp2 |
44 |
|
|
|
! Arguments: |
|
|
|
|
45 |
real, intent(in):: dist ! distance astronomique terre-soleil |
real, intent(in):: dist ! distance astronomique terre-soleil |
46 |
real, intent(in):: mu0(klon) ! cosinus de l'angle zenithal |
real, intent(in):: mu0(klon) ! cosinus de l'angle zenithal |
47 |
real, intent(in):: fract(klon) ! duree d'ensoleillement normalisee |
real, intent(in):: fract(klon) ! duree d'ensoleillement normalisee |
50 |
real, intent(in):: tsol(klon) ! temperature du sol (en K) |
real, intent(in):: tsol(klon) ! temperature du sol (en K) |
51 |
real, intent(in):: albedo(klon) ! albedo du sol (entre 0 et 1) |
real, intent(in):: albedo(klon) ! albedo du sol (entre 0 et 1) |
52 |
real, intent(in):: t(klon, klev) ! temperature (K) |
real, intent(in):: t(klon, klev) ! temperature (K) |
53 |
real q(klon, klev) |
real, intent(in):: q(klon, klev) ! vapeur d'eau (en kg/kg) |
|
! q--------input-R- vapeur d'eau (en kg/kg) |
|
54 |
|
|
55 |
real, intent(in):: wo(klon, klev) |
real, intent(in):: wo(klon, klev) |
56 |
! column-density of ozone in a layer, in kilo-Dobsons |
! column-density of ozone in a layer, in kilo-Dobsons |
57 |
|
|
58 |
real cldfra(klon, klev), cldemi(klon, klev) |
real, intent(in):: cldfra(klon, klev) ! fraction nuageuse (entre 0 et 1) |
59 |
! cldfra---input-R- fraction nuageuse (entre 0 et 1) |
|
60 |
! cldemi---input-R- emissivite des nuages dans l'IR (entre 0 et 1) |
real, intent(in):: cldemi(klon, klev) |
61 |
|
! emissivite des nuages dans l'IR (entre 0 et 1) |
62 |
|
|
63 |
real cldtaupd(klon, klev) |
real, intent(in):: cldtaupd(klon, klev) |
64 |
! input-R- epaisseur optique des nuages dans le visible (present-day value) |
! epaisseur optique des nuages dans le visible (present-day value) |
65 |
|
|
66 |
real, intent(out):: heat(klon, klev) |
real, intent(out):: heat(klon, klev) |
67 |
! échauffement atmosphérique (visible) (K/jour) |
! échauffement atmosphérique (visible) (K/jour) |
68 |
|
|
69 |
real heat0(klon, klev) |
real, intent(out):: heat0(klon, klev) |
70 |
real cool(klon, klev) |
real, intent(out):: cool(klon, klev) ! refroidissement dans l'IR (K/jour) |
71 |
! cool-----output-R- refroidissement dans l'IR (K/jour) |
real, intent(out):: cool0(klon, klev) |
72 |
real cool0(klon, klev) |
|
73 |
real radsol(klon) |
real, intent(out):: radsol(klon) |
74 |
! radsol---output-R- bilan radiatif net au sol (W/m**2) (+ vers le bas) |
! bilan radiatif net au sol (W/m**2) (+ vers le bas) |
75 |
|
|
76 |
real, intent(out):: albpla(klon) ! albedo planetaire (entre 0 et 1) |
real, intent(out):: albpla(klon) ! albedo planetaire (entre 0 et 1) |
77 |
real topsw(klon) |
real, intent(out):: topsw(klon) ! flux solaire net au sommet de l'atm. |
|
! topsw----output-R- flux solaire net au sommet de l'atm. |
|
78 |
|
|
79 |
real, intent(out):: toplw(klon) |
real, intent(out):: toplw(klon) |
80 |
! rayonnement infrarouge montant au sommet de l'atmosphère |
! rayonnement infrarouge montant au sommet de l'atmosphère |
85 |
! rayonnement infrarouge montant à la surface |
! rayonnement infrarouge montant à la surface |
86 |
|
|
87 |
real, intent(out):: sollwdown(klon) |
real, intent(out):: sollwdown(klon) |
88 |
real topsw0(klon) |
real, intent(out):: topsw0(klon) |
89 |
real, intent(out):: toplw0(klon) |
real, intent(out):: toplw0(klon) |
90 |
real solsw0(klon), sollw0(klon) |
real, intent(out):: solsw0(klon), sollw0(klon) |
91 |
!IM output 3D: SWup, SWdn, LWup, LWdn |
REAL, intent(out):: lwdn0(klon, klev+1), lwdn(klon, klev+1) |
92 |
REAL lwdn0(klon, klev+1), lwdn(klon, klev+1) |
REAL, intent(out):: lwup0(klon, klev+1), lwup(klon, klev+1) |
93 |
REAL lwup0(klon, klev+1), lwup(klon, klev+1) |
REAL, intent(out):: swdn0(klon, klev+1), swdn(klon, klev+1) |
94 |
REAL swdn0(klon, klev+1), swdn(klon, klev+1) |
REAL, intent(out):: swup0(klon, klev+1), swup(klon, klev+1) |
95 |
REAL swup0(klon, klev+1), swup(klon, klev+1) |
|
96 |
|
logical, intent(in):: ok_ade ! apply the Aerosol Direct Effect |
97 |
logical ok_ade, ok_aie |
logical, intent(in):: ok_aie ! apply the Aerosol Indirect Effect |
98 |
! switches whether to use aerosol direct (indirect) effects or not |
|
99 |
! ok_ade---input-L- apply the Aerosol Direct Effect or not? |
! aerosol optical properties (calculated in aeropt.F): |
100 |
! ok_aie---input-L- apply the Aerosol Indirect Effect or not? |
real, intent(in):: tau_ae(klon, klev, 2), piz_ae(klon, klev, 2) |
101 |
|
real, intent(in):: cg_ae(klon, klev, 2) |
102 |
real tau_ae(klon, klev, 2), piz_ae(klon, klev, 2), cg_ae(klon, klev, 2) |
|
103 |
! input-R- aerosol optical properties (calculated in aeropt.F) |
real, intent(out):: topswad(klon), solswad(klon) |
104 |
|
! aerosol direct forcing at TOA and surface |
105 |
real topswad(klon), solswad(klon) |
! ray. solaire net absorbe |
106 |
! output: aerosol direct forcing at TOA and surface |
|
107 |
! topswad---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol dir) |
real, intent(in):: cldtaupi(klon, klev) |
108 |
! solswad---output-R- ray. solaire net absorbe a la surface (aerosol dir) |
! cloud visible optical thickness for pre-industrial aerosol concentrations |
|
|
|
|
real cldtaupi(klon, klev) |
|
|
! cloud optical thickness for pre-industrial aerosol concentrations |
|
|
! (i.e. with a smaller droplet concentration and thus larger droplet radii) |
|
|
! -input-R- epaisseur optique des nuages dans le visible |
|
|
! calculated for pre-industrial (pi) aerosol concentrations, |
|
109 |
! i.e. with smaller droplet concentration, thus larger droplets, |
! i.e. with smaller droplet concentration, thus larger droplets, |
110 |
! thus generally cdltaupi cldtaupd it is needed for the |
! thus generally cdltaupi cldtaupd it is needed for the |
111 |
! diagnostics of the aerosol indirect radiative forcing |
! diagnostics of the aerosol indirect radiative forcing |
112 |
|
|
113 |
real topswai(klon), solswai(klon) |
real, intent(out):: topswai(klon), solswai(klon) |
114 |
! output: aerosol indirect forcing atTOA and surface |
! aerosol indirect forcing at TOA and surface |
115 |
! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind) |
! ray. solaire net absorbe |
|
! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind) |
|
116 |
|
|
117 |
! Local: |
! Local: |
118 |
|
|
120 |
double precision pizae(kdlon, klev, 2) |
double precision pizae(kdlon, klev, 2) |
121 |
double precision cgae(kdlon, klev, 2) |
double precision cgae(kdlon, klev, 2) |
122 |
|
|
|
!IM output 3D |
|
123 |
DOUBLE PRECISION ZFSUP(KDLON, KLEV+1) |
DOUBLE PRECISION ZFSUP(KDLON, KLEV+1) |
124 |
DOUBLE PRECISION ZFSDN(KDLON, KLEV+1) |
DOUBLE PRECISION ZFSDN(KDLON, KLEV+1) |
125 |
DOUBLE PRECISION ZFSUP0(KDLON, KLEV+1) |
DOUBLE PRECISION ZFSUP0(KDLON, KLEV+1) |