GCC Code Coverage Report


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

Line Branch Exec Source
1 SUBROUTINE LWBV &
2 & ( KIDIA, KFDIA, KLON , KLEV , KMODE,&
3 & PDT0 , PEMIS, PEMIW,&
4 & PTL , PTAVE,&
5 & PEMIT, PFLUC,&
6 & PABCU, PBINT, PBSUI, PCNTRB &
7 & )
8
9 !**** *LWBV* - COMPUTE PLANCK FUNC., PERF. VERT. INTEGRATION
10
11 ! PURPOSE.
12 ! --------
13 ! TO COMPUTE THE PLANCK FUNCTION AND PERFORM THE
14 ! VERTICAL INTEGRATION. SPLIT OUT FROM LW FOR MEMORY
15 ! SAVING
16
17 !** INTERFACE.
18 ! ----------
19
20 ! *LWVB* IS CALLED FROM *LW*
21
22 ! EXPLICIT ARGUMENTS :
23 ! --------------------
24 ! PDT0 : (KLON) ; SURFACE TEMPERATURE DISCONTINUITY
25 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
26 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
27 ! PTAVE : (KLON,KLEV) ; TEMPERATURE
28 ! PTL : (KLON,KLEV+1) ; HALF LEVEL TEMPERATURE
29 ! ==== OUTPUTS ===
30 ! PABCU :
31 ! PBINT :
32 ! PBSUI :
33 ! PCNTRB :
34 ! PCOLC :
35 ! PEMIT :
36 ! PFLUC :
37
38 ! IMPLICIT ARGUMENTS : NONE
39 ! --------------------
40
41 ! METHOD.
42 ! -------
43
44 ! 1. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
45 ! GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
46 ! 2. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
47 ! TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
48 ! BOUNDARIES.
49 ! 3. COMPUTES THE CLEAR-SKY COOLING RATES.
50
51 ! EXTERNALS.
52 ! ----------
53
54 ! *LWB*, *LWV*
55
56 ! REFERENCE.
57 ! ----------
58
59 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
60 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
61
62 ! AUTHOR.
63 ! -------
64 ! JEAN-JACQUES MORCRETTE *ECMWF*
65
66 ! MODIFICATIONS.
67 ! --------------
68 ! ORIGINAL : 89-07-14
69 ! MODIFICATION : 93-10-15 M.HAMRUD (SPLIT OUT FROM LW TO SAVE
70 ! MEMORY)
71 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
72 !-----------------------------------------------------------------------
73
74 USE PARKIND1 ,ONLY : JPIM ,JPRB
75 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
76
77 USE YOELW , ONLY : NSIL ,NIPD ,NUA
78 USE YOERDU , ONLY : NUAER ,NTRAER
79
80 IMPLICIT NONE
81
82 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
83 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
84 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
85 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
86 INTEGER(KIND=JPIM),INTENT(IN) :: KMODE
87 REAL(KIND=JPRB) ,INTENT(IN) :: PDT0(KLON)
88 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(KLON)
89 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(KLON)
90 REAL(KIND=JPRB) ,INTENT(IN) :: PTL(KLON,KLEV+1)
91 REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV)
92 REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(KLON)
93 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUC(KLON,2,KLEV+1)
94 REAL(KIND=JPRB) ,INTENT(IN) :: PABCU(KLON,NUA,3*KLEV+1)
95 REAL(KIND=JPRB) ,INTENT(INOUT) :: PBINT(KLON,KLEV+1)
96 REAL(KIND=JPRB) ,INTENT(OUT) :: PBSUI(KLON)
97 REAL(KIND=JPRB) ,INTENT(OUT) :: PCNTRB(KLON,KLEV+1,KLEV+1)
98 !-----------------------------------------------------------------------
99
100 !* 0.1 ARGUMENTS
101 ! ---------
102
103 !-------------------------------------------------------------------------
104
105 ! ------------
106 REAL(KIND=JPRB) ::&
107 & ZB(KLON,NSIL,KLEV+1), ZBSUR(KLON,NSIL) , ZBTOP(KLON,NSIL)&
108 & , ZDBSL(KLON,NSIL,KLEV*2)&
109 & , ZGA(KLON,NIPD,2,KLEV) , ZGB(KLON,NIPD,2,KLEV)&
110 & , ZGASUR(KLON,NIPD,2) , ZGBSUR(KLON,NIPD,2)&
111 & , ZGATOP(KLON,NIPD,2) , ZGBTOP(KLON,NIPD,2)
112
113 INTEGER(KIND=JPIM) :: JL, JLW
114 REAL(KIND=JPRB) :: ZHOOK_HANDLE
115
116 INTERFACE
117 SUBROUTINE LWB&
118 & ( KIDIA, KFDIA, KLON , KLEV , KMODE,&
119 & PDT0 , PTAVE, PTL,&
120 & PB , PBINT, PBSUR , PBTOP , PDBSL,&
121 & PGA , PGB , PGASUR, PGBSUR, PGATOP, PGBTOP&
122 & )
123 USE PARKIND1 ,ONLY : JPIM ,JPRB
124 USE YOELW , ONLY : MXIXT ,NSIL ,NIPD ,PDGA ,&
125 & PDGB ,TINTP ,TSTAND ,TSTP ,XP
126 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
127 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
128 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
129 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
130 INTEGER(KIND=JPIM),INTENT(IN) :: KMODE
131 REAL(KIND=JPRB) ,INTENT(IN) :: PDT0(KLON)
132 REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV)
133 REAL(KIND=JPRB) ,INTENT(IN) :: PTL(KLON,KLEV+1)
134 REAL(KIND=JPRB) ,INTENT(OUT) :: PB(KLON,NSIL,KLEV+1)
135 REAL(KIND=JPRB) ,INTENT(OUT) :: PBINT(KLON,KLEV+1)
136 REAL(KIND=JPRB) ,INTENT(OUT) :: PBSUR(KLON,NSIL)
137 REAL(KIND=JPRB) ,INTENT(OUT) :: PBTOP(KLON,NSIL)
138 REAL(KIND=JPRB) ,INTENT(OUT) :: PDBSL(KLON,NSIL,KLEV*2)
139 REAL(KIND=JPRB) ,INTENT(OUT) :: PGA(KLON,NIPD,2,KLEV)
140 REAL(KIND=JPRB) ,INTENT(OUT) :: PGB(KLON,NIPD,2,KLEV)
141 REAL(KIND=JPRB) ,INTENT(OUT) :: PGASUR(KLON,NIPD,2)
142 REAL(KIND=JPRB) ,INTENT(OUT) :: PGBSUR(KLON,NIPD,2)
143 REAL(KIND=JPRB) ,INTENT(OUT) :: PGATOP(KLON,NIPD,2)
144 REAL(KIND=JPRB) ,INTENT(OUT) :: PGBTOP(KLON,NIPD,2)
145 END SUBROUTINE LWB
146 END INTERFACE
147 INTERFACE
148 SUBROUTINE LWV&
149 & ( KIDIA, KFDIA, KLON , KLEV , KUAER , KTRAER,&
150 & PABCU, PB , PBINT, PBSUR, PBTOP , PDBSL,&
151 & PEMIS, PEMIW,&
152 & PGA , PGB , PGASUR,PGBSUR,PGATOP, PGBTOP,&
153 & PCNTRB,PFLUC&
154 & )
155 USE PARKIND1 ,ONLY : JPIM ,JPRB
156 USE YOELW , ONLY : NSIL ,NIPD ,NUA
157 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
158 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
159 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
160 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
161 INTEGER(KIND=JPIM),INTENT(IN) :: KUAER
162 INTEGER(KIND=JPIM),INTENT(IN) :: KTRAER
163 REAL(KIND=JPRB) ,INTENT(IN) :: PABCU(KLON,NUA,3*KLEV+1)
164 REAL(KIND=JPRB) ,INTENT(IN) :: PB(KLON,NSIL,KLEV+1)
165 REAL(KIND=JPRB) ,INTENT(IN) :: PBINT(KLON,KLEV+1)
166 REAL(KIND=JPRB) ,INTENT(IN) :: PBSUR(KLON,NSIL)
167 REAL(KIND=JPRB) ,INTENT(IN) :: PBTOP(KLON,NSIL)
168 REAL(KIND=JPRB) ,INTENT(IN) :: PDBSL(KLON,NSIL,KLEV*2)
169 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(KLON)
170 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(KLON)
171 REAL(KIND=JPRB) ,INTENT(IN) :: PGA(KLON,NIPD,2,KLEV)
172 REAL(KIND=JPRB) ,INTENT(IN) :: PGB(KLON,NIPD,2,KLEV)
173 REAL(KIND=JPRB) ,INTENT(IN) :: PGASUR(KLON,NIPD,2)
174 REAL(KIND=JPRB) ,INTENT(IN) :: PGBSUR(KLON,NIPD,2)
175 REAL(KIND=JPRB) ,INTENT(IN) :: PGATOP(KLON,NIPD,2)
176 REAL(KIND=JPRB) ,INTENT(IN) :: PGBTOP(KLON,NIPD,2)
177 REAL(KIND=JPRB) ,INTENT(OUT) :: PCNTRB(KLON,KLEV+1,KLEV+1)
178 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUC(KLON,2,KLEV+1)
179 END SUBROUTINE LWV
180 END INTERFACE
181
182 ! ------------------------------------------------------------------
183
184 !* 2. COMPUTES PLANCK FUNCTIONS
185 ! -------------------------
186
187 IF (LHOOK) CALL DR_HOOK('LWBV',0,ZHOOK_HANDLE)
188 print *,'LWBV: avant LWB'
189 CALL LWB &
190 & ( KIDIA, KFDIA, KLON , KLEV , KMODE,&
191 & PDT0 , PTAVE, PTL,&
192 & ZB , PBINT, ZBSUR , ZBTOP , ZDBSL,&
193 & ZGA , ZGB , ZGASUR, ZGBSUR, ZGATOP, ZGBTOP &
194 & )
195
196 ! ------------------------------------------------------------------
197
198 !* 3. PERFORMS THE VERTICAL INTEGRATION
199 ! ---------------------------------
200
201 CALL LWV &
202 & ( KIDIA , KFDIA, KLON , KLEV,&
203 & NUAER , NTRAER,&
204 & PABCU , ZB , PBINT , ZBSUR , ZBTOP , ZDBSL,&
205 & PEMIS , PEMIW,&
206 & ZGA , ZGB , ZGASUR, ZGBSUR, ZGATOP, ZGBTOP,&
207 & PCNTRB, PFLUC &
208 & )
209
210 DO JL=KIDIA,KFDIA
211 PEMIT(JL)=0.0_JPRB
212 PBSUI(JL)=0.0_JPRB
213 ENDDO
214 DO JLW=1,NSIL
215 DO JL=KIDIA,KFDIA
216 PBSUI(JL)=PBSUI(JL)+ZBSUR(JL,JLW)
217 IF (JLW >= 3.AND. JLW <= 4) THEN
218 PEMIT(JL)=PEMIT(JL)+ZBSUR(JL,JLW)*PEMIW(JL)
219 ELSE
220 PEMIT(JL)=PEMIT(JL)+ZBSUR(JL,JLW)*PEMIS(JL)
221 ENDIF
222 ENDDO
223 ENDDO
224 DO JL=KIDIA,KFDIA
225 PEMIT(JL)=PEMIT(JL)/PBSUI(JL)
226 ENDDO
227
228 ! ------------------------------------------------------------------
229
230 IF (LHOOK) CALL DR_HOOK('LWBV',1,ZHOOK_HANDLE)
231 END SUBROUTINE LWBV
232