LMDZ
lwv.F90
Go to the documentation of this file.
1 SUBROUTINE lwv &
2  &( kidia, kfdia, klon , klev , kuaer , ktraer &
3  &, pabcu, pb , pbint, pbsur, pbtop , pdbsl &
4  &, pemis, pemiw &
5  &, pga , pgb , pgasur,pgbsur,pgatop, pgbtop &
6  &, pcntrb,pfluc &
7  &)
8 
9 !**** *LWV* - LONGWAVE RADIATION, VERTICAL INTEGRATION
10 
11 ! PURPOSE.
12 ! --------
13 ! CARRIES OUT THE VERTICAL INTEGRATION TO GIVE LONGWAVE
14 ! FLUXES OR RADIANCES
15 
16 !** INTERFACE.
17 ! ----------
18 
19 ! EXPLICIT ARGUMENTS :
20 ! --------------------
21 ! ==== INPUTS ===
22 ! PABCU : (KLON,NUA,3*KLEV+1); ABSORBER AMOUNTS
23 ! PB : (KLON,NSIL,KLEV+1); SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
24 ! PBINT : (KLON,KLEV+1) ; HALF-LEVEL PLANCK FUNCTIONS
25 ! PBSUR : (KLON,NSIL) ; SURFACE SPECTRAL PLANCK FUNCTION
26 ! PBTOP : (KLON,NSIL) ; T.O.A. SPECTRAL PLANCK FUNCTION
27 ! PDBSL : (KLON,KLEV*2) ; SUB-LAYER PLANCK FUNCTION GRADIENT
28 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
29 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
30 ! PGA, PGB ; PADE APPROXIMANTS
31 ! PGASUR, PGBSUR ; SURFACE PADE APPROXIMANTS
32 ! PGATOP, PGBTOP ; T.O.A. PADE APPROXIMANTS
33 ! ==== OUTPUTS ===
34 ! PCNTRB : (KLON,KLEV+1,KLEV+1); CLEAR-SKY ENERGY EXCHANGE MATRIX
35 ! PFLUC(KLON,2,KLEV) ; RADIATIVE FLUXES CLEAR-SKY
36 
37 ! IMPLICIT ARGUMENTS : NONE
38 ! --------------------
39 
40 ! METHOD.
41 ! -------
42 
43 ! 1. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING BETWEEN
44 ! CONTRIBUTIONS BY - THE NEARBY LAYERS
45 ! - THE DISTANT LAYERS
46 ! - THE BOUNDARY TERMS
47 ! 2. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
48 
49 ! EXTERNALS.
50 ! ----------
51 
52 ! *LWVN*, *LWVD*, *LWVB*
53 
54 ! REFERENCE.
55 ! ----------
56 
57 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
58 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
59 
60 ! AUTHOR.
61 ! -------
62 ! JEAN-JACQUES MORCRETTE *ECMWF*
63 
64 ! MODIFICATIONS.
65 ! --------------
66 ! ORIGINAL : 89-07-14
67 ! JJ Morcrette 96-06-07 Surface LW window emissivity
68 !-----------------------------------------------------------------------
69 
70 #include "tsmbkind.h"
71 
72 USE yoelw , ONLY : nsil ,nipd ,nua
73 
74 
75 IMPLICIT NONE
76 
77 
78 ! DUMMY INTEGER SCALARS
79 integer_m :: kfdia
80 integer_m :: kidia
81 integer_m :: klev
82 integer_m :: klon
83 integer_m :: ktraer
84 integer_m :: kuaer
85 
86 
87 
88 !-----------------------------------------------------------------------
89 
90 !* 0.1 ARGUMENTS
91 ! ---------
92 
93 
94 real_b :: pabcu(klon,nua,3*klev+1)&
95  &, pb(klon,nsil,klev+1) , pbint(klon,klev+1)&
96  &, pbsur(klon,nsil) , pbtop(klon,nsil)&
97  &, pdbsl(klon,nsil,klev*2)&
98  &, pemis(klon) , pemiw(klon)&
99  &, pga(klon,nipd,2,klev) , pgb(klon,nipd,2,klev)&
100  &, pgasur(klon,nipd,2) , pgbsur(klon,nipd,2)&
101  &, pgatop(klon,nipd,2) , pgbtop(klon,nipd,2)
102 
103 real_b :: pcntrb(klon,klev+1,klev+1), pfluc(klon,2,klev+1)
104 
105 !-----------------------------------------------------------------------
106 
107 !* 0.2 LOCAL ARRAYS
108 ! ------------
109 
110 real_b :: zadjd(klon,klev+1) , zadju(klon,klev+1)&
111  &, zdbdt(klon,nsil,klev)&
112  &, zdisd(klon,klev+1) , zdisu(klon,klev+1)&
113  &, zdwfsu(klon,nsil)
114 
115 ! LOCAL INTEGER SCALARS
116 integer_m :: ja, jk, jl
117 
118 
119 !-----------------------------------------------------------------------
120 
121 !* 1. INITIALIZATION
122 ! --------------
123 
124 !* 1.1 INITIALIZE LAYER CONTRIBUTIONS
125 ! ------------------------------
126 
127 DO jk=1,klev+1
128  DO jl=kidia,kfdia
129  zadjd(jl,jk)=_zero_
130  zadju(jl,jk)=_zero_
131  zdisd(jl,jk)=_zero_
132  zdisu(jl,jk)=_zero_
133  ENDDO
134 ENDDO
135 DO ja=1,nsil
136  DO jl=kidia,kfdia
137  zdwfsu(jl,ja)=_zero_
138  ENDDO
139 ENDDO
140 
141 ! ------------------------------------------------------------------
142 
143 !* 2. VERTICAL INTEGRATION
144 ! --------------------
145 
146 ! ------------------------------------------------------------------
147 
148 !* 2.1 CONTRIBUTION FROM ADJACENT LAYERS
149 ! ---------------------------------
150 
151 CALL lwvn &
152  &( kidia, kfdia, klon , klev , kuaer &
153  &, pabcu, pdbsl, pga , pgb &
154  &, zadjd, zadju, pcntrb, zdbdt, zdwfsu &
155  &)
156 
157 ! ------------------------------------------------------------------
158 
159 !* 2.2 CONTRIBUTION FROM DISTANT LAYERS
160 ! ---------------------------------
161 
162 CALL lwvd &
163  &( kidia , kfdia, klon , klev , ktraer &
164  &, pabcu , zdbdt, pga , pgb &
165  &, pcntrb, zdisd, zdisu, zdwfsu &
166  &)
167 
168 ! ------------------------------------------------------------------
169 
170 !* 2.3 EXCHANGE WITH THE BOUNDARIES
171 ! ----------------------------
172 
173 CALL lwvb &
174  &( kidia , kfdia , klon , klev , kuaer &
175  &, pabcu , zadjd , zadju &
176  &, pb , pbint , pbsur , pbtop &
177  &, zdisd , zdisu , pemis , pemiw &
178  &, pgasur, pgbsur, pgatop, pgbtop &
179  &, zdwfsu,pfluc &
180  &)
181 
182 !-----------------------------------------------------------------------
183 
184 RETURN
185 END SUBROUTINE lwv
integer(kind=jpim) nipd
Definition: yoelw.F90:15
Definition: yoelw.F90:1
integer(kind=jpim) nsil
Definition: yoelw.F90:14
integer, save kidia
Definition: dimphy.F90:6
integer, save klon
Definition: dimphy.F90:3
integer(kind=jpim) nua
Definition: yoelw.F90:19
integer, save klev
Definition: dimphy.F90:7
subroutine lwvb(KIDIA, KFDIA, KLON, KLEV, KUAER, PABCU, PADJD, PADJU, PB, PBINT, PBSUR, PBTOP, PDISD, PDISU, PEMIS, PEMIW, PGASUR, PGBSUR, PGATOP, PGBTOP, PDWFSU, PFLUC)
Definition: lwvb.F90:9
subroutine lwvd(KIDIA, KFDIA, KLON, KLEV, KTRAER, PABCU, PDBDT, PGA, PGB, PCNTRB, PDISD, PDISU, PDWFSU)
Definition: lwvd.F90:7
subroutine lwv(KIDIA, KFDIA, KLON, KLEV, KUAER, KTRAER, PABCU, PB, PBINT, PBSUR, PBTOP, PDBSL, PEMIS, PEMIW, PGA, PGB, PGASUR, PGBSUR, PGATOP, PGBTOP, PCNTRB, PFLUC)
Definition: lwv.F90:8
integer, save kfdia
Definition: dimphy.F90:5
subroutine lwvn(KIDIA, KFDIA, KLON, KLEV, KUAER, PABCU, PDBSL, PGA, PGB, PADJD, PADJU, PCNTRB, PDBDT, PDWFSU)
Definition: lwvn.F90:6