GCC Code Coverage Report


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

Line Branch Exec Source
1 SUBROUTINE LWVN &
2 & ( KIDIA, KFDIA, KLON , KLEV , KUAER,&
3 & PABCU, PDBSL, PGA , PGB,&
4 & PADJD, PADJU, PCNTRB, PDBDT, PDWFSU &
5 & )
6
7 !**** *LWVN* - L.W., VERTICAL INTEGRATION, NEARBY LAYERS
8
9 ! PURPOSE.
10 ! --------
11 ! CARRIES OUT THE VERTICAL INTEGRATION ON NEARBY LAYERS
12 ! TO GIVE LONGWAVE FLUXES OR RADIANCES
13
14 !** INTERFACE.
15 ! ----------
16
17 ! EXPLICIT ARGUMENTS :
18 ! --------------------
19 ! ==== INPUTS ===
20 ! PABCU : (KLON,NUA,3*KLEV+1) ; ABSORBER AMOUNTS
21 ! PDBSL : (KLON,KLEV*2) ; SUB-LAYER PLANCK FUNCTION GRADIENT
22 ! PGA, PGB ; PADE APPROXIMANTS
23 ! ==== OUTPUTS ===
24 ! PADJ.. : (KLON,KLEV+1) ; CONTRIBUTION OF ADJACENT LAYERS
25 ! PCNTRB : (KLON,KLEV+1,KLEV+1); CLEAR-SKY ENERGY EXCHANGE MATRIX
26 ! PDBDT : (KLON,NUA,KLEV) ; LAYER PLANCK FUNCTION GRADIENT
27 ! PDWFSU : (KLON,NSIL) ; SPECTRAL DOWNWARD FLUX AT SURFACE
28
29 ! IMPLICIT ARGUMENTS : NONE
30 ! --------------------
31
32 ! METHOD.
33 ! -------
34
35 ! 1. PERFORMS THE VERTICAL INTEGRATION CORRESPONDING TO THE
36 ! CONTRIBUTIONS OF THE ADJACENT LAYERS USING A GAUSSIAN QUADRATURE
37
38 ! EXTERNALS.
39 ! ----------
40
41 ! *LWTT*
42
43 ! REFERENCE.
44 ! ----------
45
46 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
47 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
48
49 ! AUTHOR.
50 ! -------
51 ! JEAN-JACQUES MORCRETTE *ECMWF*
52
53 ! MODIFICATIONS.
54 ! --------------
55 ! ORIGINAL : 89-07-14
56 ! JJ Morcrette 97-04-18 Revised Continuum + Surf.Emissiv.
57 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
58 !-----------------------------------------------------------------------
59
60 USE PARKIND1 ,ONLY : JPIM ,JPRB
61 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
62
63 USE YOELW , ONLY : NSIL ,NIPD ,NTRA ,NUA ,&
64 & NG1 ,NG1P1 ,WG1
65
66 IMPLICIT NONE
67
68 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
69 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
70 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
71 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
72 INTEGER(KIND=JPIM),INTENT(IN) :: KUAER
73 REAL(KIND=JPRB) ,INTENT(IN) :: PABCU(KLON,NUA,3*KLEV+1)
74 REAL(KIND=JPRB) ,INTENT(IN) :: PDBSL(KLON,NSIL,KLEV*2)
75 REAL(KIND=JPRB) ,INTENT(IN) :: PGA(KLON,NIPD,2,KLEV)
76 REAL(KIND=JPRB) ,INTENT(IN) :: PGB(KLON,NIPD,2,KLEV)
77 REAL(KIND=JPRB) ,INTENT(OUT) :: PADJD(KLON,KLEV+1)
78 REAL(KIND=JPRB) ,INTENT(OUT) :: PADJU(KLON,KLEV+1)
79 REAL(KIND=JPRB) ,INTENT(OUT) :: PCNTRB(KLON,KLEV+1,KLEV+1)
80 REAL(KIND=JPRB) ,INTENT(OUT) :: PDBDT(KLON,NSIL,KLEV)
81 REAL(KIND=JPRB) ,INTENT(INOUT) :: PDWFSU(KLON,NSIL)
82 !-----------------------------------------------------------------------
83
84 !* 0.1 ARGUMENTS
85 ! ---------
86
87 !-----------------------------------------------------------------------
88
89 ! ------------
90
91 REAL(KIND=JPRB) :: ZTT(KLON,NTRA), ZTT1(KLON,NTRA), ZTT2(KLON,NTRA), ZUU(KLON,NUA)
92
93 INTEGER(KIND=JPIM) :: IBS, IDD, IM12, IMU, IND, INU, IXD, IXU,&
94 & JA, JG, JK, JK1, JK2, JL, JNU
95
96 REAL(KIND=JPRB) :: ZWTR, ZWTR1, ZWTR2, ZWTR3, ZWTR4, ZWTR5, ZWTR6
97 REAL(KIND=JPRB) :: ZHOOK_HANDLE
98
99 INTERFACE
100 SUBROUTINE LWTT ( KIDIA, KFDIA, KLON, PGA , PGB, PUU , PTT )
101 USE PARKIND1 ,ONLY : JPIM ,JPRB
102 USE YOELW , ONLY : NTRA ,NUA ,RPTYPE ,RETYPE ,&
103 & RO1H ,RO2H ,RPIALF0
104 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
105 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
106 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
107 REAL(KIND=JPRB) ,INTENT(IN) :: PGA(KLON,8,2)
108 REAL(KIND=JPRB) ,INTENT(IN) :: PGB(KLON,8,2)
109 REAL(KIND=JPRB) ,INTENT(IN) :: PUU(KLON,NUA)
110 REAL(KIND=JPRB) ,INTENT(OUT) :: PTT(KLON,NTRA)
111 END SUBROUTINE LWTT
112 END INTERFACE
113
114 !-----------------------------------------------------------------------
115
116 !* 1. INITIALIZATION
117 ! --------------
118
119 !* 1.1 INITIALIZE LAYER CONTRIBUTIONS
120 ! ------------------------------
121
122 IF (LHOOK) CALL DR_HOOK('LWVN',0,ZHOOK_HANDLE)
123 DO JK = 1 , KLEV+1
124 DO JL = KIDIA,KFDIA
125 PADJD(JL,JK) = 0.0_JPRB
126 PADJU(JL,JK) = 0.0_JPRB
127 ENDDO
128 ENDDO
129
130 !* 1.2 INITIALIZE TRANSMISSION FUNCTIONS
131 ! ---------------------------------
132
133 DO JA = 1 , NTRA
134 DO JL = KIDIA,KFDIA
135 ZTT (JL,JA) = 1.0_JPRB
136 ZTT1(JL,JA) = 1.0_JPRB
137 ZTT2(JL,JA) = 1.0_JPRB
138 ENDDO
139 ENDDO
140
141 DO JA = 1 , NUA
142 DO JL = KIDIA,KFDIA
143 ZUU(JL,JA) = 0.0_JPRB
144 ENDDO
145 ENDDO
146
147 ! ------------------------------------------------------------------
148
149 !* 2. VERTICAL INTEGRATION
150 ! --------------------
151
152 !* 2.1 CONTRIBUTION FROM ADJACENT LAYERS
153 ! ---------------------------------
154
155 DO JK = 1 , KLEV
156
157 !* 2.1.1 DOWNWARD LAYERS
158 ! ---------------
159
160 IM12 = 2 * (JK - 1)
161 IND = (JK - 1) * NG1P1 + 1
162 IXD = IND
163 INU = JK * NG1P1 + 1
164 IXU = IND
165
166 DO JG = 1 , NG1
167 IBS = IM12 + JG
168 IDD = IXD + JG
169
170 DO JA = 1 , KUAER
171 DO JL = KIDIA,KFDIA
172 ZUU(JL,JA) = PABCU(JL,JA,IND) - PABCU(JL,JA,IDD)
173 ENDDO
174 ENDDO
175
176 CALL LWTT &
177 & ( KIDIA , KFDIA , KLON,&
178 & PGA(1,1,1,JK), PGB(1,1,1,JK),&
179 & ZUU , ZTT &
180 & )
181
182 DO JL = KIDIA,KFDIA
183 ZWTR1=PDBSL(JL,1,IBS)*ZTT(JL,1) *ZTT(JL,10)
184 ZWTR2=PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
185 ZWTR3=PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
186 ZWTR4=PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
187 ZWTR5=PDBSL(JL,5,IBS)*ZTT(JL,3) *ZTT(JL,14)
188 ZWTR6=PDBSL(JL,6,IBS)*ZTT(JL,6) *ZTT(JL,15)
189 ZWTR=ZWTR1+ZWTR2+ZWTR3+ZWTR4+ZWTR5+ZWTR6
190 PADJD(JL,JK) = PADJD(JL,JK) + ZWTR * WG1(JG)
191 IF (JK == 1) THEN
192 PDWFSU(JL,1)=PDWFSU(JL,1)+WG1(JG)*ZWTR1
193 PDWFSU(JL,2)=PDWFSU(JL,2)+WG1(JG)*ZWTR2
194 PDWFSU(JL,3)=PDWFSU(JL,3)+WG1(JG)*ZWTR3
195 PDWFSU(JL,4)=PDWFSU(JL,4)+WG1(JG)*ZWTR4
196 PDWFSU(JL,5)=PDWFSU(JL,5)+WG1(JG)*ZWTR5
197 PDWFSU(JL,6)=PDWFSU(JL,6)+WG1(JG)*ZWTR6
198 ENDIF
199 ENDDO
200
201 !* 2.1.2 UPWARD LAYERS
202 ! -------------
203
204 IMU = IXU + JG
205 DO JA = 1 , KUAER
206 DO JL = KIDIA,KFDIA
207 ZUU(JL,JA) = PABCU(JL,JA,IMU) - PABCU(JL,JA,INU)
208 ENDDO
209 ENDDO
210
211 CALL LWTT &
212 & ( KIDIA , KFDIA , KLON,&
213 & PGA(1,1,1,JK), PGB(1,1,1,JK),&
214 & ZUU , ZTT &
215 & )
216
217 DO JL = KIDIA,KFDIA
218 ZWTR=PDBSL(JL,1,IBS)*ZTT(JL,1) *ZTT(JL,10)&
219 & +PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)&
220 & +PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)&
221 & +PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)&
222 & +PDBSL(JL,5,IBS)*ZTT(JL,3) *ZTT(JL,14)&
223 & +PDBSL(JL,6,IBS)*ZTT(JL,6) *ZTT(JL,15)
224 PADJU(JL,JK+1) = PADJU(JL,JK+1) + ZWTR * WG1(JG)
225 ENDDO
226
227 ENDDO
228
229 DO JL = KIDIA,KFDIA
230 PCNTRB(JL,JK,JK+1) = PADJD(JL,JK)
231 PCNTRB(JL,JK+1,JK) = PADJU(JL,JK+1)
232 PCNTRB(JL,JK ,JK) = 0.0_JPRB
233 ENDDO
234
235 ENDDO
236
237 DO JK = 1 , KLEV
238 JK2 = 2 * JK
239 JK1 = JK2 - 1
240
241 DO JNU = 1 , NSIL
242 DO JL = KIDIA,KFDIA
243 PDBDT(JL,JNU,JK) = PDBSL(JL,JNU,JK1) + PDBSL(JL,JNU,JK2)
244 ENDDO
245 ENDDO
246 ENDDO
247
248 !-----------------------------------------------------------------------
249
250 IF (LHOOK) CALL DR_HOOK('LWVN',1,ZHOOK_HANDLE)
251 END SUBROUTINE LWVN
252