GCC Code Coverage Report


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

Line Branch Exec Source
1 SUBROUTINE LW &
2 & ( KIDIA, KFDIA , KLON , KLEV , KMODE,&
3 & PCCO2, PCLDLD, PCLDLU,&
4 & PDP , PDT0 , PEMIS , PEMIW,&
5 & PPMB , PQOF , PTL,&
6 & PAER , PTAVE , PVIEW , PWV,&
7 & PEMIT, PFLUX , PFLUC &
8 & )
9
10 !**** *LW* - ORGANIZES THE LONGWAVE CALCULATIONS
11
12 ! PURPOSE.
13 ! --------
14 ! COMPUTES LONGWAVE FLUXES
15
16 !** INTERFACE.
17 ! ----------
18
19 ! *LW* IS CALLED FROM *RADLSW*
20
21 ! EXPLICIT ARGUMENTS :
22 ! --------------------
23 ! PAER : (KLON,6,KLEV) ; OPTICAL THICKNESS OF THE AEROSOLS
24 ! PCCO2 : ; CONCENTRATION IN CO2 (PA/PA)
25 ! PCLDLD : (KLON,KLEV) ; DOWNWARD EFFECTIVE CLOUD FRACTION
26 ! PCLDLU : (KLON,KLEV) ; UPWARD EFFECTIVE CLOUD FRACTION
27 ! PDP : (KLON,KLEV) ; LAYER PRESSURE THICKNESS
28 ! PDT0 : (KLON) ; SURFACE TEMPERATURE DISCONTINUITY
29 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
30 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
31 ! PPMB : (KLON,KLEV+1) ; HALF LEVEL PRESSURE
32 ! PQOF : (KLON,KLEV) ; CONCENTRATION IN OZONE (PA/PA)
33 ! PTAVE : (KLON,KLEV) ; TEMPERATURE
34 ! PTL : (KLON,KLEV+1) ; HALF LEVEL TEMPERATURE
35 ! PVIEW : (KLON) ; COSECANT OF VIEWING ANGLE
36 ! PWV : (KLON,KLEV) ; SPECIFIC HUMIDITY (PA/PA)
37 ! ==== OUTPUTS ===
38 ! PEMIT(KLON) ; SURFACE TOTAL LW EMISSIVITY
39 ! PFLUX(KLON,2,KLEV+1) ; RADIATIVE FLUXES :
40 ! 1 ==> UPWARD FLUX TOTAL
41 ! 2 ==> DOWNWARD FLUX TOTAL
42 ! PFLUC(KLON,2,KLEV+1) ; RADIATIVE FLUXES CLEAR SKY:
43 ! 1 ==> UPWARD FLUX TOTAL
44 ! 2 ==> DOWNWARD FLUX TOTAL
45
46 ! IMPLICIT ARGUMENTS : NONE
47 ! --------------------
48
49 ! METHOD.
50 ! -------
51
52 ! 1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
53 ! ABSORBERS.
54 ! 2. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
55 ! GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
56 ! 3. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
57 ! TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
58 ! BOUNDARIES.
59 ! 4. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
60 ! 5. INTRODUCES THE EFFECTS OF THE CLOUDS ON THE FLUXES.
61
62 ! EXTERNALS.
63 ! ----------
64
65 ! *LWU*, *LWBV*, *LWC*
66
67 ! REFERENCE.
68 ! ----------
69
70 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
71 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
72
73 ! AUTHOR.
74 ! -------
75 ! JEAN-JACQUES MORCRETTE *ECMWF*
76
77 ! MODIFICATIONS.
78 ! --------------
79 ! ORIGINAL : 89-07-14
80 ! 99-05-25 JJMorcrette Revised aerosols
81 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
82
83 !-----------------------------------------------------------------------
84
85 USE PARKIND1 ,ONLY : JPIM ,JPRB
86 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
87
88 USE YOELW , ONLY : NUA
89 IMPLICIT NONE
90
91 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
92 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
93 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
94 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
95 INTEGER(KIND=JPIM),INTENT(IN) :: KMODE
96 REAL(KIND=JPRB) ,INTENT(IN) :: PCCO2
97 REAL(KIND=JPRB) ,INTENT(IN) :: PCLDLD(KLON,KLEV)
98 REAL(KIND=JPRB) ,INTENT(IN) :: PCLDLU(KLON,KLEV)
99 REAL(KIND=JPRB) ,INTENT(IN) :: PDP(KLON,KLEV)
100 REAL(KIND=JPRB) ,INTENT(IN) :: PDT0(KLON)
101 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(KLON)
102 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(KLON)
103 REAL(KIND=JPRB) ,INTENT(IN) :: PPMB(KLON,KLEV+1)
104 REAL(KIND=JPRB) ,INTENT(IN) :: PQOF(KLON,KLEV)
105 REAL(KIND=JPRB) ,INTENT(IN) :: PTL(KLON,KLEV+1)
106 REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV)
107 REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV)
108 REAL(KIND=JPRB) ,INTENT(IN) :: PVIEW(KLON)
109 REAL(KIND=JPRB) ,INTENT(IN) :: PWV(KLON,KLEV)
110 REAL(KIND=JPRB) ,INTENT(INOUT) :: PEMIT(KLON)
111 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUX(KLON,2,KLEV+1)
112 REAL(KIND=JPRB) ,INTENT(INOUT) :: PFLUC(KLON,2,KLEV+1)
113 !-----------------------------------------------------------------------
114
115 !* 0.1 ARGUMENTS
116 ! ---------
117
118 !-------------------------------------------------------------------------
119
120 ! ------------
121 REAL(KIND=JPRB) :: ZABCU(KLON,NUA,3*KLEV+1)&
122 & , ZBINT(KLON,KLEV+1) , ZBSUI(KLON)&
123 & , ZCNTRB(KLON,KLEV+1,KLEV+1)
124
125 REAL(KIND=JPRB) :: ZHOOK_HANDLE
126
127 INTERFACE
128 SUBROUTINE LWBV&
129 & ( KIDIA, KFDIA, KLON , KLEV , KMODE,&
130 & PDT0 , PEMIS, PEMIW,&
131 & PTL , PTAVE,&
132 & PEMIT, PFLUC,&
133 & PABCU, PBINT, PBSUI, PCNTRB&
134 & )
135 USE PARKIND1 ,ONLY : JPIM ,JPRB
136 USE YOELW , ONLY : NSIL ,NIPD ,NUA
137 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
138 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
139 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
140 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
141 INTEGER(KIND=JPIM),INTENT(IN) :: KMODE
142 REAL(KIND=JPRB) ,INTENT(IN) :: PDT0(KLON)
143 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(KLON)
144 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(KLON)
145 REAL(KIND=JPRB) ,INTENT(IN) :: PTL(KLON,KLEV+1)
146 REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV)
147 REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(KLON)
148 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUC(KLON,2,KLEV+1)
149 REAL(KIND=JPRB) ,INTENT(IN) :: PABCU(KLON,NUA,3*KLEV+1)
150 REAL(KIND=JPRB) ,INTENT(INOUT) :: PBINT(KLON,KLEV+1)
151 REAL(KIND=JPRB) ,INTENT(OUT) :: PBSUI(KLON)
152 REAL(KIND=JPRB) ,INTENT(OUT) :: PCNTRB(KLON,KLEV+1,KLEV+1)
153 END SUBROUTINE LWBV
154 END INTERFACE
155 INTERFACE
156 SUBROUTINE LWC&
157 & ( KIDIA , KFDIA, KLON , KLEV,&
158 & PBINT , PBSUI, PCLDLD, PCLDLU,&
159 & PCNTRB, PEMIT, PFLUC,&
160 & PFLUX&
161 & )
162 USE PARKIND1 ,ONLY : JPIM ,JPRB
163 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
164 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
165 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
166 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
167 REAL(KIND=JPRB) ,INTENT(IN) :: PBINT(KLON,KLEV+1)
168 REAL(KIND=JPRB) ,INTENT(IN) :: PBSUI(KLON)
169 REAL(KIND=JPRB) ,INTENT(IN) :: PCLDLD(KLON,KLEV)
170 REAL(KIND=JPRB) ,INTENT(IN) :: PCLDLU(KLON,KLEV)
171 REAL(KIND=JPRB) ,INTENT(IN) :: PCNTRB(KLON,KLEV+1,KLEV+1)
172 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIT(KLON)
173 REAL(KIND=JPRB) ,INTENT(IN) :: PFLUC(KLON,2,KLEV+1)
174 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUX(KLON,2,KLEV+1)
175 END SUBROUTINE LWC
176 END INTERFACE
177 INTERFACE
178 SUBROUTINE LWU&
179 & ( KIDIA, KFDIA, KLON, KLEV,&
180 & PAER , PCCO2, PDP , PPMB, PQOF , PTAVE, PVIEW, PWV,&
181 & PABCU&
182 & )
183 USE PARKIND1 ,ONLY : JPIM ,JPRB
184 USE YOELW , ONLY : NSIL ,NUA ,NG1 ,NG1P1 ,&
185 & ALWT ,BLWT ,RO3T ,RT1 ,TREF ,&
186 & RVGCO2 ,RVGH2O ,RVGO3
187 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
188 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
189 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
190 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
191 REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV)
192 REAL(KIND=JPRB) ,INTENT(IN) :: PCCO2
193 REAL(KIND=JPRB) ,INTENT(IN) :: PDP(KLON,KLEV)
194 REAL(KIND=JPRB) ,INTENT(IN) :: PPMB(KLON,KLEV+1)
195 REAL(KIND=JPRB) ,INTENT(IN) :: PQOF(KLON,KLEV)
196 REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV)
197 REAL(KIND=JPRB) ,INTENT(IN) :: PVIEW(KLON)
198 REAL(KIND=JPRB) ,INTENT(IN) :: PWV(KLON,KLEV)
199 REAL(KIND=JPRB) ,INTENT(OUT) :: PABCU(KLON,NUA,3*KLEV+1)
200 END SUBROUTINE LWU
201 END INTERFACE
202
203 ! ------------------------------------------------------------------
204
205 !* 1. INITIALIZATION
206 ! --------------
207
208 !100 CONTINUE
209
210 ! ------------------------------------------------------------------
211
212 !* 1.1 COMPUTES ABSORBER AMOUNTS
213 ! -------------------------
214
215 IF (LHOOK) CALL DR_HOOK('LW',0,ZHOOK_HANDLE)
216 print *,' LW: Avant LWU'
217 CALL LWU &
218 & ( KIDIA, KFDIA, KLON, KLEV,&
219 & PAER , PCCO2, PDP , PPMB, PQOF , PTAVE, PVIEW, PWV,&
220 & ZABCU &
221 & )
222
223 ! ------------------------------------------------------------------
224
225 !* 2. COMPUTES PLANCK FUNCTIONS
226 ! -------------------------
227 ! PERFORMS THE VERTICAL INTEGRATION
228 ! ---------------------------------
229
230 print *,' LW: Avant LWBV'
231 CALL LWBV &
232 & ( KIDIA, KFDIA, KLON , KLEV , KMODE,&
233 & PDT0 , PEMIS, PEMIW, PTL , PTAVE,&
234 & PEMIT, PFLUC,&
235 & ZABCU, ZBINT, ZBSUI, ZCNTRB &
236 & )
237
238 ! ------------------------------------------------------------------
239
240 !* 4. INTRODUCES THE EFFECTS OF CLOUDS
241 ! --------------------------------
242
243 print *,' LW: Avant LWC'
244 CALL LWC &
245 & ( KIDIA , KFDIA, KLON , KLEV,&
246 & ZBINT , ZBSUI, PCLDLD, PCLDLU,&
247 & ZCNTRB, PEMIT, PFLUC,&
248 & PFLUX &
249 & )
250
251 ! ------------------------------------------------------------------
252
253 IF (LHOOK) CALL DR_HOOK('LW',1,ZHOOK_HANDLE)
254 END SUBROUTINE LW
255