5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE radlwsw(dist, mu0, fract, paprs, play, tsol, albedo, t, q, wo, & |
SUBROUTINE radlwsw(dist, mu0, fract, paprs, play, tsol, albedo, t, q, wo, & |
8 |
cldfra, cldemi, cldtau, heat, heat0, cool, cool0, radsol, albpla, & |
cldfra, cldemi, cldtau, heat, heat0, cool, cool0, radsol, topsw, toplw, & |
9 |
topsw, toplw, solsw, sollw, sollwdown, topsw0, toplw0, solsw0, sollw0, & |
solsw, sollw, sollwdown, topsw0, toplw0, solsw0, sollw0, lwdn0, lwdn, & |
10 |
lwdn0, lwdn, lwup0, lwup, swdn0, swdn, swup0, swup, ok_ade, topswad, & |
lwup0, lwup, swdn0, swdn, swup0, swup, ok_ade, topswad, solswad) |
|
solswad) |
|
11 |
|
|
12 |
! 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 |
13 |
! Author: Z. X. Li (LMD/CNRS) |
! Author: Z. X. Li (LMD/CNRS) |
28 |
use sw_m, only: sw |
use sw_m, only: sw |
29 |
USE yoethf_m, ONLY: rvtmp2 |
USE yoethf_m, ONLY: rvtmp2 |
30 |
|
|
31 |
real, intent(in):: dist ! distance astronomique terre-soleil |
real, intent(in):: dist ! distance Terre-Soleil, en ua |
32 |
real, intent(in):: mu0(klon) ! cosinus de l'angle zenithal |
real, intent(in):: mu0(klon) ! cosinus de l'angle zenithal |
33 |
real, intent(in):: fract(klon) ! duree d'ensoleillement normalisee |
real, intent(in):: fract(klon) ! duree d'ensoleillement normalisee |
34 |
real, intent(in):: paprs(klon, klev + 1) ! pression a inter-couche (Pa) |
real, intent(in):: paprs(klon, klev + 1) ! pression a inter-couche (Pa) |
61 |
real, intent(out):: radsol(klon) |
real, intent(out):: radsol(klon) |
62 |
! bilan radiatif net au sol (W/m**2), positif vers le bas |
! bilan radiatif net au sol (W/m**2), positif vers le bas |
63 |
|
|
|
real, intent(out):: albpla(klon) ! albedo planetaire (entre 0 et 1) |
|
64 |
real, intent(out):: topsw(klon) ! flux solaire net au sommet de l'atm. |
real, intent(out):: topsw(klon) ! flux solaire net au sommet de l'atm. |
65 |
|
|
66 |
real, intent(out):: toplw(klon) |
real, intent(out):: toplw(klon) |
122 |
DOUBLE PRECISION zheat(kdlon, klev), zcool(kdlon, klev) |
DOUBLE PRECISION zheat(kdlon, klev), zcool(kdlon, klev) |
123 |
DOUBLE PRECISION zheat0(kdlon, klev), zcool0(kdlon, klev) |
DOUBLE PRECISION zheat0(kdlon, klev), zcool0(kdlon, klev) |
124 |
DOUBLE PRECISION ztopsw(kdlon), ztoplw(kdlon) |
DOUBLE PRECISION ztopsw(kdlon), ztoplw(kdlon) |
125 |
DOUBLE PRECISION zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon) |
DOUBLE PRECISION zsolsw(kdlon), zsollw(kdlon) |
126 |
DOUBLE PRECISION zsollwdown(kdlon) |
DOUBLE PRECISION zsollwdown(kdlon) |
127 |
|
|
128 |
DOUBLE PRECISION ztopsw0(kdlon), ztoplw0(kdlon) |
DOUBLE PRECISION ztopsw0(kdlon), ztoplw0(kdlon) |
214 |
PCLDLU, PVIEW, zcool, zcool0, ztoplw, zsollw, ztoplw0, zsollw0, & |
PCLDLU, PVIEW, zcool, zcool0, ztoplw, zsollw, ztoplw0, zsollw0, & |
215 |
zsollwdown, ZFLUP, ZFLDN, ZFLUP0, ZFLDN0) |
zsollwdown, ZFLUP, ZFLDN, ZFLUP0, ZFLDN0) |
216 |
CALL SW(PSCT, zrmu0, zfract, PPMB, PDP, PPSOL, PALBD, PALBP, PTAVE, & |
CALL SW(PSCT, zrmu0, zfract, PPMB, PDP, PPSOL, PALBD, PALBP, PTAVE, & |
217 |
PWV, PQS, POZON, PCLDSW, PTAU, POMEGA, PCG, zheat, zheat0, & |
PWV, PQS, POZON, PCLDSW, PTAU, POMEGA, PCG, zheat, zheat0, ztopsw, & |
218 |
zalbpla, ztopsw, zsolsw, ztopsw0, zsolsw0, ZFSUP, ZFSDN, ZFSUP0, & |
zsolsw, ztopsw0, zsolsw0, ZFSUP, ZFSDN, ZFSUP0, ZFSDN0, ztopswad, & |
219 |
ZFSDN0, ztopswad, zsolswad, ok_ade) |
zsolswad, ok_ade) |
220 |
|
|
221 |
DO i = 1, kdlon |
DO i = 1, kdlon |
222 |
radsol(iof + i) = zsolsw(i) + zsollw(i) |
radsol(iof + i) = zsolsw(i) + zsollw(i) |
237 |
toplw0(iof + i) = ztoplw0(i) |
toplw0(iof + i) = ztoplw0(i) |
238 |
solsw0(iof + i) = zsolsw0(i) |
solsw0(iof + i) = zsolsw0(i) |
239 |
sollw0(iof + i) = zsollw0(i) |
sollw0(iof + i) = zsollw0(i) |
|
albpla(iof + i) = zalbpla(i) |
|
240 |
|
|
241 |
DO k = 1, klev + 1 |
DO k = 1, klev + 1 |
242 |
swdn0(iof + i, k) = ZFSDN0(i, k) |
swdn0(iof + i, k) = ZFSDN0(i, k) |