1 |
cIM ctes ds clesphys.h SUBROUTINE LW(RCO2,RCH4,RN2O,RCFC11,RCFC12, |
2 |
SUBROUTINE LW( |
3 |
. PPMB, PDP, |
4 |
. PPSOL,PDT0,PEMIS, |
5 |
. PTL, PTAVE, PWV, POZON, PAER, |
6 |
. PCLDLD,PCLDLU, |
7 |
. PVIEW, |
8 |
. PCOLR, PCOLR0, |
9 |
. PTOPLW,PSOLLW,PTOPLW0,PSOLLW0, |
10 |
. psollwdown, |
11 |
. plwup, plwdn, plwup0, plwdn0) |
12 |
use dimens_m |
13 |
use dimphy |
14 |
use clesphys |
15 |
use YOMCST |
16 |
use raddim |
17 |
use raddimlw |
18 |
IMPLICIT none |
19 |
C |
20 |
C----------------------------------------------------------------------- |
21 |
C METHOD. |
22 |
C ------- |
23 |
C |
24 |
C 1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF |
25 |
C ABSORBERS. |
26 |
C 2. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE |
27 |
C GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS. |
28 |
C 3. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON- |
29 |
C TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE |
30 |
C BOUNDARIES. |
31 |
C 4. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES. |
32 |
C 5. INTRODUCES THE EFFECTS OF THE CLOUDS ON THE FLUXES. |
33 |
C |
34 |
C |
35 |
C REFERENCE. |
36 |
C ---------- |
37 |
C |
38 |
C SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND |
39 |
C ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS |
40 |
C |
41 |
C AUTHOR. |
42 |
C ------- |
43 |
C JEAN-JACQUES MORCRETTE *ECMWF* |
44 |
C |
45 |
C MODIFICATIONS. |
46 |
C -------------- |
47 |
C ORIGINAL : 89-07-14 |
48 |
C----------------------------------------------------------------------- |
49 |
cIM ctes ds clesphys.h |
50 |
c REAL*8 RCO2 ! CO2 CONCENTRATION (IPCC:353.E-06* 44.011/28.97) |
51 |
c REAL*8 RCH4 ! CH4 CONCENTRATION (IPCC: 1.72E-06* 16.043/28.97) |
52 |
c REAL*8 RN2O ! N2O CONCENTRATION (IPCC: 310.E-09* 44.013/28.97) |
53 |
c REAL*8 RCFC11 ! CFC11 CONCENTRATION (IPCC: 280.E-12* 137.3686/28.97) |
54 |
c REAL*8 RCFC12 ! CFC12 CONCENTRATION (IPCC: 484.E-12* 120.9140/28.97) |
55 |
REAL*8 PCLDLD(KDLON,KFLEV) ! DOWNWARD EFFECTIVE CLOUD COVER |
56 |
REAL*8 PCLDLU(KDLON,KFLEV) ! UPWARD EFFECTIVE CLOUD COVER |
57 |
REAL*8 PDP(KDLON,KFLEV) ! LAYER PRESSURE THICKNESS (Pa) |
58 |
REAL*8 PDT0(KDLON) ! SURFACE TEMPERATURE DISCONTINUITY (K) |
59 |
REAL*8 PEMIS(KDLON) ! SURFACE EMISSIVITY |
60 |
REAL*8 PPMB(KDLON,KFLEV+1) ! HALF LEVEL PRESSURE (mb) |
61 |
REAL*8 PPSOL(KDLON) ! SURFACE PRESSURE (Pa) |
62 |
REAL*8 POZON(KDLON,KFLEV) ! O3 CONCENTRATION (kg/kg) |
63 |
REAL*8 PTL(KDLON,KFLEV+1) ! HALF LEVEL TEMPERATURE (K) |
64 |
REAL*8 PAER(KDLON,KFLEV,5) ! OPTICAL THICKNESS OF THE AEROSOLS |
65 |
REAL*8 PTAVE(KDLON,KFLEV) ! LAYER TEMPERATURE (K) |
66 |
REAL*8 PVIEW(KDLON) ! COSECANT OF VIEWING ANGLE |
67 |
REAL*8 PWV(KDLON,KFLEV) ! SPECIFIC HUMIDITY (kg/kg) |
68 |
C |
69 |
REAL*8 PCOLR(KDLON,KFLEV) ! LONG-WAVE TENDENCY (K/day) |
70 |
REAL*8 PCOLR0(KDLON,KFLEV) ! LONG-WAVE TENDENCY (K/day) clear-sky |
71 |
REAL*8 PTOPLW(KDLON) ! LONGWAVE FLUX AT T.O.A. |
72 |
REAL*8 PSOLLW(KDLON) ! LONGWAVE FLUX AT SURFACE |
73 |
REAL*8 PTOPLW0(KDLON) ! LONGWAVE FLUX AT T.O.A. (CLEAR-SKY) |
74 |
REAL*8 PSOLLW0(KDLON) ! LONGWAVE FLUX AT SURFACE (CLEAR-SKY) |
75 |
c Rajout LF |
76 |
real*8 psollwdown(kdlon) ! LONGWAVE downwards flux at surface |
77 |
cIM |
78 |
REAL*8 plwup(KDLON,KFLEV+1) ! LW up total sky |
79 |
REAL*8 plwup0(KDLON,KFLEV+1) ! LW up clear sky |
80 |
REAL*8 plwdn(KDLON,KFLEV+1) ! LW down total sky |
81 |
REAL*8 plwdn0(KDLON,KFLEV+1) ! LW down clear sky |
82 |
C------------------------------------------------------------------------- |
83 |
REAL*8 ZABCU(KDLON,NUA,3*KFLEV+1) |
84 |
REAL*8 ZOZ(KDLON,KFLEV) |
85 |
c |
86 |
REAL*8 ZFLUX(KDLON,2,KFLEV+1) ! RADIATIVE FLUXES (1:up; 2:down) |
87 |
REAL*8 ZFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES |
88 |
REAL*8 ZBINT(KDLON,KFLEV+1) ! Intermediate variable |
89 |
REAL*8 ZBSUI(KDLON) ! Intermediate variable |
90 |
REAL*8 ZCTS(KDLON,KFLEV) ! Intermediate variable |
91 |
REAL*8 ZCNTRB(KDLON,KFLEV+1,KFLEV+1) ! Intermediate variable |
92 |
SAVE ZFLUX, ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB |
93 |
c |
94 |
INTEGER ilim, i, k, kpl1 |
95 |
C |
96 |
INTEGER lw0pas ! Every lw0pas steps, clear-sky is done |
97 |
PARAMETER (lw0pas=1) |
98 |
INTEGER lwpas ! Every lwpas steps, cloudy-sky is done |
99 |
PARAMETER (lwpas=1) |
100 |
c |
101 |
INTEGER itaplw0, itaplw |
102 |
LOGICAL appel1er |
103 |
SAVE appel1er, itaplw0, itaplw |
104 |
DATA appel1er /.TRUE./ |
105 |
DATA itaplw0,itaplw /0,0/ |
106 |
C ------------------------------------------------------------------ |
107 |
IF (appel1er) THEN |
108 |
PRINT*, "LW clear-sky calling frequency: ", lw0pas |
109 |
PRINT*, "LW cloudy-sky calling frequency: ", lwpas |
110 |
PRINT*, " In general, they should be 1" |
111 |
appel1er=.FALSE. |
112 |
ENDIF |
113 |
C |
114 |
IF (MOD(itaplw0,lw0pas).EQ.0) THEN |
115 |
DO k = 1, KFLEV ! convertir ozone de kg/kg en pa/pa |
116 |
DO i = 1, KDLON |
117 |
c convertir ozone de kg/kg en pa (modif MPL 100505) |
118 |
ZOZ(i,k) = POZON(i,k)*PDP(i,k) * RMD/RMO3 |
119 |
c print *,'LW: ZOZ*10**6=',ZOZ(i,k)*1000000. |
120 |
ENDDO |
121 |
ENDDO |
122 |
cIM ctes ds clesphys.h CALL LWU(RCO2,RCH4, RN2O, RCFC11, RCFC12, |
123 |
CALL LWU( |
124 |
S PAER,PDP,PPMB,PPSOL,ZOZ,PTAVE,PVIEW,PWV,ZABCU) |
125 |
CALL LWBV(ILIM,PDP,PDT0,PEMIS,PPMB,PTL,PTAVE,ZABCU, |
126 |
S ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB) |
127 |
itaplw0 = 0 |
128 |
ENDIF |
129 |
itaplw0 = itaplw0 + 1 |
130 |
C |
131 |
IF (MOD(itaplw,lwpas).EQ.0) THEN |
132 |
CALL LWC(ILIM,PCLDLD,PCLDLU,PEMIS, |
133 |
S ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB, |
134 |
S ZFLUX) |
135 |
itaplw = 0 |
136 |
ENDIF |
137 |
itaplw = itaplw + 1 |
138 |
C |
139 |
DO k = 1, KFLEV |
140 |
kpl1 = k+1 |
141 |
DO i = 1, KDLON |
142 |
PCOLR(i,k) = ZFLUX(i,1,kpl1)+ZFLUX(i,2,kpl1) |
143 |
. - ZFLUX(i,1,k)- ZFLUX(i,2,k) |
144 |
PCOLR(i,k) = PCOLR(i,k) * RDAY*RG/RCPD / PDP(i,k) |
145 |
PCOLR0(i,k) = ZFLUC(i,1,kpl1)+ZFLUC(i,2,kpl1) |
146 |
. - ZFLUC(i,1,k)- ZFLUC(i,2,k) |
147 |
PCOLR0(i,k) = PCOLR0(i,k) * RDAY*RG/RCPD / PDP(i,k) |
148 |
ENDDO |
149 |
ENDDO |
150 |
DO i = 1, KDLON |
151 |
PSOLLW(i) = -ZFLUX(i,1,1)-ZFLUX(i,2,1) |
152 |
PTOPLW(i) = ZFLUX(i,1,KFLEV+1) + ZFLUX(i,2,KFLEV+1) |
153 |
c |
154 |
PSOLLW0(i) = -ZFLUC(i,1,1)-ZFLUC(i,2,1) |
155 |
PTOPLW0(i) = ZFLUC(i,1,KFLEV+1) + ZFLUC(i,2,KFLEV+1) |
156 |
psollwdown(i) = -ZFLUX(i,2,1) |
157 |
c |
158 |
cIM attention aux signes !; LWtop >0, LWdn < 0 |
159 |
DO k = 1, KFLEV+1 |
160 |
plwup(i,k) = ZFLUX(i,1,k) |
161 |
plwup0(i,k) = ZFLUC(i,1,k) |
162 |
plwdn(i,k) = ZFLUX(i,2,k) |
163 |
plwdn0(i,k) = ZFLUC(i,2,k) |
164 |
ENDDO |
165 |
ENDDO |
166 |
C ------------------------------------------------------------------ |
167 |
RETURN |
168 |
END |