GCC Code Coverage Report


Directory: ./
File: rad/lwvb.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 67 0.0%
Branches: 0 34 0.0%

Line Branch Exec Source
1 SUBROUTINE LWVB &
2 & ( KIDIA , KFDIA , KLON , KLEV , KUAER,&
3 & PABCU , PADJD , PADJU,&
4 & PB , PBINT , PBSUR , PBTOP,&
5 & PDISD , PDISU , PEMIS , PEMIW,&
6 & PGASUR, PGBSUR, PGATOP, PGBTOP,&
7 & PDWFSU,PFLUC &
8 & )
9
10 !**** *LWVB* - L.W., VERTICAL INTEGRATION, EXCHANGE WITH BOUNDARIES
11
12 ! PURPOSE.
13 ! --------
14 ! INTRODUCES THE EFFECTS OF THE BOUNDARIES IN THE VERTICAL
15 ! INTEGRATION
16
17 !** INTERFACE.
18 ! ----------
19
20 ! EXPLICIT ARGUMENTS :
21 ! --------------------
22 ! ==== INPUTS ===
23 ! PABCU : (KLON,NUA,3*KLEV+1); ABSORBER AMOUNTS
24 ! PADJ.. : (KLON,KLEV+1) ; CONTRIBUTION BY ADJACENT LAYERS
25 ! PB : (KLON,NSIL,KLEV+1); SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
26 ! PBINT : (KLON,KLEV+1) ; HALF-LEVEL PLANCK FUNCTIONS
27 ! PBSUR : (KLON,NSIL) ; SPECTRAL SURFACE PLANCK FUNCTION
28 ! PBTOP : (KLON,NSIL) ; SPECTRAL T.O.A. PLANCK FUNCTION
29 ! PDIS.. : (KLON,KLEV+1) ; CONTRIBUTION BY DISTANT LAYERS
30 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
31 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
32 ! PGASUR, PGBSUR ; SURFACE PADE APPROXIMANTS
33 ! PGATOP, PGBTOP ; T.O.A. PADE APPROXIMANTS
34 ! ==== OUTPUTS ===
35 ! PDWFSU : (KLON,NSIL) ; SPECTRAL DOWNWARD FLUX AT SURFACE
36 ! PFLUC(KLON,2,KLEV) ; RADIATIVE FLUXES CLEAR-SKY:
37 ! 1 ==> UPWARD FLUX TOTAL
38
39 ! IMPLICIT ARGUMENTS : NONE
40 ! --------------------
41
42 ! METHOD.
43 ! -------
44
45 ! COMPUTES THE ENERGY EXCHANGE WITH TOP AND SURFACE OF THE
46 ! ATMOSPHERE AND ADDS UP ALL CONTRIBUTIONS TO GET THE CLEAR-SKY
47 ! FLUXES
48
49 ! EXTERNALS.
50 ! ----------
51
52 ! *LWTT*
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 ! MODIFICATIONS.
64 ! --------------
65 ! ORIGINAL : 89-07-14
66 ! JJ Morcrette 96-06-07 Surface LW Window Emissivity
67 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
68
69 !-----------------------------------------------------------------------
70
71 USE PARKIND1 ,ONLY : JPIM ,JPRB
72 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
73
74 USE YOELW , ONLY : NSIL ,NIPD ,NTRA ,NUA ,NG1P1
75
76 IMPLICIT NONE
77
78 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
79 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
80 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
81 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
82 INTEGER(KIND=JPIM),INTENT(IN) :: KUAER
83 REAL(KIND=JPRB) ,INTENT(IN) :: PABCU(KLON,NUA,3*KLEV+1)
84 REAL(KIND=JPRB) ,INTENT(IN) :: PADJD(KLON,KLEV+1)
85 REAL(KIND=JPRB) ,INTENT(IN) :: PADJU(KLON,KLEV+1)
86 REAL(KIND=JPRB) ,INTENT(IN) :: PB(KLON,NSIL,KLEV+1)
87 REAL(KIND=JPRB) ,INTENT(IN) :: PBINT(KLON,KLEV+1)
88 REAL(KIND=JPRB) ,INTENT(IN) :: PBSUR(KLON,NSIL)
89 REAL(KIND=JPRB) ,INTENT(IN) :: PBTOP(KLON,NSIL)
90 REAL(KIND=JPRB) ,INTENT(IN) :: PDISD(KLON,KLEV+1)
91 REAL(KIND=JPRB) ,INTENT(IN) :: PDISU(KLON,KLEV+1)
92 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(KLON)
93 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(KLON)
94 REAL(KIND=JPRB) ,INTENT(IN) :: PGASUR(KLON,NIPD,2)
95 REAL(KIND=JPRB) ,INTENT(IN) :: PGBSUR(KLON,NIPD,2)
96 REAL(KIND=JPRB) ,INTENT(IN) :: PGATOP(KLON,NIPD,2)
97 REAL(KIND=JPRB) ,INTENT(IN) :: PGBTOP(KLON,NIPD,2)
98 REAL(KIND=JPRB) ,INTENT(INOUT) :: PDWFSU(KLON,NSIL)
99 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUC(KLON,2,KLEV+1)
100 !-----------------------------------------------------------------------
101
102 !* 0.1 ARGUMENTS
103 ! ---------
104
105 !-----------------------------------------------------------------------
106
107 ! ------------
108
109 REAL(KIND=JPRB) :: ZBSUR(KLON,NSIL)&
110 & , ZTT(KLON,NTRA), ZTT1(KLON,NTRA), ZTT2(KLON,NTRA)&
111 & , ZUU(KLON,NUA) , ZCNSOL(KLON) , ZCNTOP(KLON)
112
113 INTEGER(KIND=JPIM) :: IN, JA, JK, JL
114
115 REAL(KIND=JPRB) :: ZCNTOP1, ZCNTOP2, ZCNTOP3, ZCNTOP4, ZCNTOP5, ZCNTOP6
116 REAL(KIND=JPRB) :: ZHOOK_HANDLE
117
118 INTERFACE
119 SUBROUTINE LWTT ( KIDIA, KFDIA, KLON, PGA , PGB, PUU , PTT )
120 USE PARKIND1 ,ONLY : JPIM ,JPRB
121 USE YOELW , ONLY : NTRA ,NUA ,RPTYPE ,RETYPE ,&
122 & RO1H ,RO2H ,RPIALF0
123 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
124 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
125 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
126 REAL(KIND=JPRB) ,INTENT(IN) :: PGA(KLON,8,2)
127 REAL(KIND=JPRB) ,INTENT(IN) :: PGB(KLON,8,2)
128 REAL(KIND=JPRB) ,INTENT(IN) :: PUU(KLON,NUA)
129 REAL(KIND=JPRB) ,INTENT(OUT) :: PTT(KLON,NTRA)
130 END SUBROUTINE LWTT
131 END INTERFACE
132
133 !-----------------------------------------------------------------------
134
135 !* 1. INITIALIZATION
136 ! --------------
137
138 !* 1.2 INITIALIZE TRANSMISSION FUNCTIONS
139 ! ---------------------------------
140
141 IF (LHOOK) CALL DR_HOOK('LWVB',0,ZHOOK_HANDLE)
142 DO JA=1,NTRA
143 DO JL=KIDIA,KFDIA
144 ZTT (JL,JA)=1.0_JPRB
145 ZTT1(JL,JA)=1.0_JPRB
146 ZTT2(JL,JA)=1.0_JPRB
147 ENDDO
148 ENDDO
149
150 DO JA=1,NUA
151 DO JL=KIDIA,KFDIA
152 ZUU(JL,JA)=1.0_JPRB
153 ENDDO
154 ENDDO
155
156 ! ------------------------------------------------------------------
157
158 !* 2. VERTICAL INTEGRATION
159 ! --------------------
160
161 !* 2.3 EXCHANGE WITH TOP OF THE ATMOSPHERE
162 ! -----------------------------------
163
164 DO JK = 1 , KLEV
165 IN=(JK-1)*NG1P1+1
166
167 DO JA=1,KUAER
168 DO JL=KIDIA,KFDIA
169 ZUU(JL,JA)=PABCU(JL,JA,IN)
170 ENDDO
171 ENDDO
172
173 CALL LWTT &
174 & ( KIDIA , KFDIA , KLON,&
175 & PGATOP(1,1,1), PGBTOP(1,1,1),&
176 & ZUU , ZTT &
177 & )
178
179 DO JL = KIDIA,KFDIA
180 ZCNTOP1=PBTOP(JL,1)*ZTT(JL,1) *ZTT(JL,10)
181 ZCNTOP2=PBTOP(JL,2)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
182 ZCNTOP3=PBTOP(JL,3)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
183 ZCNTOP4=PBTOP(JL,4)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
184 ZCNTOP5=PBTOP(JL,5)*ZTT(JL,3) *ZTT(JL,14)
185 ZCNTOP6=PBTOP(JL,6)*ZTT(JL,6) *ZTT(JL,15)
186 ZCNTOP(JL)=ZCNTOP1+ZCNTOP2+ZCNTOP3+ZCNTOP4+ZCNTOP5+ZCNTOP6
187 PFLUC(JL,2,JK)=ZCNTOP(JL)-PBINT(JL,JK)-PDISD(JL,JK)-PADJD(JL,JK)
188 IF (JK == 1) THEN
189 PDWFSU(JL,1)=ZCNTOP1-PB(JL,1,JK)-PDWFSU(JL,1)
190 PDWFSU(JL,2)=ZCNTOP2-PB(JL,2,JK)-PDWFSU(JL,2)
191 PDWFSU(JL,3)=ZCNTOP3-PB(JL,3,JK)-PDWFSU(JL,3)
192 PDWFSU(JL,4)=ZCNTOP4-PB(JL,4,JK)-PDWFSU(JL,4)
193 PDWFSU(JL,5)=ZCNTOP5-PB(JL,5,JK)-PDWFSU(JL,5)
194 PDWFSU(JL,6)=ZCNTOP6-PB(JL,6,JK)-PDWFSU(JL,6)
195 ENDIF
196 ENDDO
197
198 ENDDO
199
200 JK = KLEV+1
201 IN=(JK-1)*NG1P1+1
202
203 DO JL = KIDIA,KFDIA
204 ZCNTOP(JL)= PBTOP(JL,1)&
205 & + PBTOP(JL,2)&
206 & + PBTOP(JL,3)&
207 & + PBTOP(JL,4)&
208 & + PBTOP(JL,5)&
209 & + PBTOP(JL,6)
210 PFLUC(JL,2,JK)=ZCNTOP(JL)-PBINT(JL,JK)-PDISD(JL,JK)-PADJD(JL,JK)
211 ENDDO
212
213 !* 2.5 EXCHANGE WITH LOWER LIMIT
214 ! -------------------------
215
216 JK = 1
217 IN=(JK-1)*NG1P1+1
218
219 DO JL = KIDIA,KFDIA
220 ZBSUR(JL,1)=PBSUR(JL,1)*PEMIS(JL) -(1.0_JPRB-PEMIS(JL))*PDWFSU(JL,1)
221 ZBSUR(JL,2)=PBSUR(JL,2)*PEMIS(JL) -(1.0_JPRB-PEMIS(JL))*PDWFSU(JL,2)
222 ZBSUR(JL,3)=PBSUR(JL,3)*PEMIW(JL) -(1.0_JPRB-PEMIW(JL))*PDWFSU(JL,3)
223 ZBSUR(JL,4)=PBSUR(JL,4)*PEMIW(JL) -(1.0_JPRB-PEMIW(JL))*PDWFSU(JL,4)
224 ZBSUR(JL,5)=PBSUR(JL,5)*PEMIS(JL) -(1.0_JPRB-PEMIS(JL))*PDWFSU(JL,5)
225 ZBSUR(JL,6)=PBSUR(JL,6)*PEMIS(JL) -(1.0_JPRB-PEMIS(JL))*PDWFSU(JL,6)
226
227 PFLUC(JL,1,JK) = ZBSUR(JL,1)&
228 & + ZBSUR(JL,2)&
229 & + ZBSUR(JL,3)&
230 & + ZBSUR(JL,4)&
231 & + ZBSUR(JL,5)&
232 & + ZBSUR(JL,6)
233
234 ZBSUR(JL,1)=ZBSUR(JL,1)-PB(JL,1,1)
235 ZBSUR(JL,2)=ZBSUR(JL,2)-PB(JL,2,1)
236 ZBSUR(JL,3)=ZBSUR(JL,3)-PB(JL,3,1)
237 ZBSUR(JL,4)=ZBSUR(JL,4)-PB(JL,4,1)
238 ZBSUR(JL,5)=ZBSUR(JL,5)-PB(JL,5,1)
239 ZBSUR(JL,6)=ZBSUR(JL,6)-PB(JL,6,1)
240 ENDDO
241
242 DO JK = 2 , KLEV+1
243 IN=(JK-1)*NG1P1+1
244
245 DO JA=1,KUAER
246 DO JL=KIDIA,KFDIA
247 ZUU(JL,JA)=PABCU(JL,JA,1)-PABCU(JL,JA,IN)
248 ENDDO
249 ENDDO
250
251 CALL LWTT &
252 & ( KIDIA , KFDIA , KLON,&
253 & PGASUR(1,1,1), PGBSUR(1,1,1),&
254 & ZUU, ZTT &
255 & )
256
257 DO JL = KIDIA,KFDIA
258 ZCNSOL(JL)=ZBSUR(JL,1)*ZTT(JL,1) *ZTT(JL,10)&
259 & +ZBSUR(JL,2)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)&
260 & +ZBSUR(JL,3)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)&
261 & +ZBSUR(JL,4)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)&
262 & +ZBSUR(JL,5)*ZTT(JL,3) *ZTT(JL,14)&
263 & +ZBSUR(JL,6)*ZTT(JL,6) *ZTT(JL,15)
264 PFLUC(JL,1,JK)=ZCNSOL(JL)+PBINT(JL,JK)-PDISU(JL,JK)-PADJU(JL,JK)
265 ENDDO
266
267 ENDDO
268
269 ! ------------------------------------------------------------------
270
271 IF (LHOOK) CALL DR_HOOK('LWVB',1,ZHOOK_HANDLE)
272 END SUBROUTINE LWVB
273