4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE LW(PPMB, PDP, PPSOL, PDT0, PEMIS, PTL, PTAVE, PWV, POZON, PAER, & |
SUBROUTINE LW(PPMB, PDP, PDT0, PEMIS, PTL, PTAVE, PWV, POZON, PAER, PCLDLD, & |
8 |
PCLDLD, PCLDLU, PVIEW, PCOLR, PCOLR0, PTOPLW, PSOLLW, PTOPLW0, PSOLLW0, & |
PCLDLU, PVIEW, PCOLR, PCOLR0, PTOPLW, PSOLLW, PTOPLW0, PSOLLW0, & |
9 |
psollwdown, plwup, plwdn, plwup0, plwdn0) |
psollwdown, plwup, plwdn, plwup0, plwdn0) |
10 |
|
|
11 |
|
use lwbv_m, only: lwbv |
12 |
use LWU_m, only: LWU |
use LWU_m, only: LWU |
|
USE suphec_m, ONLY: md, rcpd, rday, rg, rmo3 |
|
13 |
USE raddim, ONLY: kdlon, kflev |
USE raddim, ONLY: kdlon, kflev |
14 |
USE raddimlw, ONLY: nua |
USE raddimlw, ONLY: nua |
15 |
|
USE suphec_m, ONLY: md, rcpd, rday, rg, rmo3 |
16 |
|
|
17 |
! Method. |
! Method. |
18 |
|
|
19 |
! 1. Computes the pressure and temperature weighted amounts of |
! 1. Computes the pressure and temperature weighted amounts of |
20 |
! absorbers. |
! absorbers. |
21 |
|
|
22 |
! 2. Computes the planck functions on the interfaces and the |
! 2. Computes the Planck functions on the interfaces and the |
23 |
! gradient of planck functions in the layers. |
! gradient of Planck functions in the layers. |
24 |
|
|
25 |
! 3. Performs the vertical integration distinguishing the con- |
! 3. Performs the vertical integration distinguishing the |
26 |
! tributions of the adjacent and distant layers and those from the |
! contributions of the adjacent and distant layers and those from |
27 |
! boundaries. |
! the boundaries. |
28 |
|
|
29 |
! 4. Computes the clear-sky downward and upward emissivities. |
! 4. Computes the clear-sky downward and upward emissivities. |
30 |
|
|
31 |
! 5. Introduces the effects of the clouds on the fluxes. |
! 5. Introduces the effects of the clouds on the fluxes. |
32 |
|
|
33 |
! Reference: see radiation's part of the model's documentation and |
! Reference: see radiation part of ECMWF documentation of the IFS. |
|
! ECMWF research department documentation of the IFS |
|
34 |
|
|
35 |
! Author: |
! Author: |
36 |
! Jean-Jacques Morcrette *ECMWF* |
! Jean-Jacques Morcrette ECMWF |
37 |
|
|
38 |
! Original : 89-07-14 |
! Original : July 14th, 1989 |
39 |
|
|
40 |
DOUBLE PRECISION PCLDLD(KDLON, KFLEV) ! DOWNWARD EFFECTIVE CLOUD COVER |
DOUBLE PRECISION PCLDLD(KDLON, KFLEV) ! DOWNWARD EFFECTIVE CLOUD COVER |
41 |
DOUBLE PRECISION PCLDLU(KDLON, KFLEV) ! UPWARD EFFECTIVE CLOUD COVER |
DOUBLE PRECISION PCLDLU(KDLON, KFLEV) ! UPWARD EFFECTIVE CLOUD COVER |
43 |
DOUBLE PRECISION PDT0(KDLON) ! SURFACE TEMPERATURE DISCONTINUITY (K) |
DOUBLE PRECISION PDT0(KDLON) ! SURFACE TEMPERATURE DISCONTINUITY (K) |
44 |
DOUBLE PRECISION PEMIS(KDLON) ! SURFACE EMISSIVITY |
DOUBLE PRECISION PEMIS(KDLON) ! SURFACE EMISSIVITY |
45 |
DOUBLE PRECISION PPMB(KDLON, KFLEV+1) ! HALF LEVEL PRESSURE (mb) |
DOUBLE PRECISION PPMB(KDLON, KFLEV+1) ! HALF LEVEL PRESSURE (mb) |
|
DOUBLE PRECISION PPSOL(KDLON) ! SURFACE PRESSURE (Pa) |
|
46 |
DOUBLE PRECISION POZON(KDLON, KFLEV) ! O3 CONCENTRATION (kg/kg) |
DOUBLE PRECISION POZON(KDLON, KFLEV) ! O3 CONCENTRATION (kg/kg) |
47 |
DOUBLE PRECISION PTL(KDLON, KFLEV+1) ! HALF LEVEL TEMPERATURE (K) |
DOUBLE PRECISION PTL(KDLON, KFLEV+1) ! HALF LEVEL TEMPERATURE (K) |
48 |
DOUBLE PRECISION PAER(KDLON, KFLEV, 5) ! OPTICAL THICKNESS OF THE AEROSOLS |
DOUBLE PRECISION PAER(KDLON, KFLEV, 5) ! OPTICAL THICKNESS OF THE AEROSOLS |
67 |
DOUBLE PRECISION ZABCU(KDLON, NUA, 3*KFLEV+1) |
DOUBLE PRECISION ZABCU(KDLON, NUA, 3*KFLEV+1) |
68 |
DOUBLE PRECISION ZOZ(KDLON, KFLEV) |
DOUBLE PRECISION ZOZ(KDLON, KFLEV) |
69 |
|
|
70 |
DOUBLE PRECISION ZFLUX(KDLON, 2, KFLEV+1) ! RADIATIVE FLUXES (1:up; 2:down) |
DOUBLE PRECISION, save:: ZFLUX(KDLON, 2, KFLEV+1) |
71 |
DOUBLE PRECISION ZFLUC(KDLON, 2, KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES |
! RADIATIVE FLUXES (1:up; 2:down) |
72 |
DOUBLE PRECISION ZBINT(KDLON, KFLEV+1) ! Intermediate variable |
|
73 |
DOUBLE PRECISION ZBSUI(KDLON) ! Intermediate variable |
DOUBLE PRECISION, save:: ZFLUC(KDLON, 2, KFLEV+1) |
74 |
DOUBLE PRECISION ZCTS(KDLON, KFLEV) ! Intermediate variable |
! CLEAR-SKY RADIATIVE FLUXES |
75 |
DOUBLE PRECISION ZCNTRB(KDLON, KFLEV+1, KFLEV+1) ! Intermediate variable |
|
76 |
SAVE ZFLUX, ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB |
! Intermediate variables: |
77 |
|
DOUBLE PRECISION, save:: ZBINT(KDLON, KFLEV+1) |
78 |
|
DOUBLE PRECISION, save:: ZBSUI(KDLON) |
79 |
|
DOUBLE PRECISION, save:: ZCTS(KDLON, KFLEV) |
80 |
|
DOUBLE PRECISION, save:: ZCNTRB(KDLON, KFLEV+1, KFLEV+1) |
81 |
|
|
82 |
INTEGER ilim, i, k, kpl1 |
INTEGER ilim, i, k, kpl1 |
83 |
|
|
96 |
ZOZ(i, k) = POZON(i, k)*PDP(i, k) * MD/RMO3 |
ZOZ(i, k) = POZON(i, k)*PDP(i, k) * MD/RMO3 |
97 |
ENDDO |
ENDDO |
98 |
ENDDO |
ENDDO |
99 |
CALL LWU(PAER, PDP, PPMB, PPSOL, ZOZ, PTAVE, PVIEW, PWV, ZABCU) |
CALL LWU(PAER, PDP, PPMB, ZOZ, PTAVE, PVIEW, PWV, ZABCU) |
100 |
CALL LWBV(ILIM, PDP, PDT0, PEMIS, PPMB, PTL, PTAVE, ZABCU, & |
CALL LWBV(ILIM, PDT0, PEMIS, PPMB, PTL, PTAVE, ZABCU, & |
101 |
ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB) |
ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB) |
102 |
itaplw0 = 0 |
itaplw0 = 0 |
103 |
ENDIF |
ENDIF |