GCC Code Coverage Report


Directory: ./
File: rad/su_aerw.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 46 71 64.8%
Branches: 7 30 23.3%

Line Branch Exec Source
1 1 SUBROUTINE SU_AERW
2
3 !**** *SU_AERW* - DEFINES INDICES AND PARAMETERS FOR VARIOUS AEROSOL VARIABLES
4
5 ! PURPOSE.
6 ! --------
7 ! INITIALIZE YOEAERATM, YOEAERSRC, YOEAERSNK, THE MODULES THAT CONTAINS INDICES
8 ! ALLOWING TO GET THE AEROSOL PARAMETERS RELEVANT FOR THE PROGNOSTIC AEROSOL
9 ! CONFIGURATION.
10
11 !** INTERFACE.
12 ! ----------
13 ! *CALL* *SU_AERW
14
15 ! EXPLICIT ARGUMENTS :
16 ! --------------------
17 ! NONE
18
19 ! IMPLICIT ARGUMENTS :
20 ! --------------------
21 ! YOEAERW
22
23 ! METHOD.
24 ! -------
25 ! SEE DOCUMENTATION
26
27 ! EXTERNALS.
28 ! ----------
29
30 ! REFERENCE.
31 ! ----------
32 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
33
34 ! AUTHOR.
35 ! -------
36 ! JEAN-JACQUES MORCRETTE *ECMWF*
37
38 ! MODIFICATIONS.
39 ! --------------
40 ! ORIGINAL : 2005-07-08
41
42 ! ------------------------------------------------------------------
43
44 USE PARKIND1 ,ONLY : JPIM ,JPRB
45 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
46
47 USE YOEAERATM, ONLY : LAERGBUD, LAERSCAV ,LAERSEDIM, LAERSURF, LAER6SDIA, &
48 & LAERCLIMG, LAERCLIMZ, LAERCLIST, LAERDRYDP, LAERNGAT, LAERPRNT, &
49 & REPSCAER , INDBG
50
51 USE YOEAERSRC, ONLY : JKBIN, JKTYP, LEPAERO , &
52 & NBINAER, NINDAER , NMAXTAER, NTAER , NTYPAER, RGELAV , RGEMUV , &
53 & RDGLAV , RDGMUV , RCLONV , RSLONV , RDCLONV, RDSLONV, LAEREXTR, &
54 & RSSFLX , RLATVOL , RLONVOL , NDDUST
55
56 USE YOEPHY , ONLY : LE4ALB
57
58 USE YOEDBUG , ONLY : KSTPDBG
59
60 USE YOMCST , ONLY : RPI
61 USE YOMGC , ONLY : GELAM
62 USE YOMGEM , ONLY : NGPTOT
63 USE YOMLEG , ONLY : RMU
64 ! Ce qui concerne NULNAM commente par MPL le 15.04.09
65 !USE YOMLUN , ONLY : NULNAM, NULOUT
66 USE YOMLUN , ONLY : NULOUT
67
68 USE YOM_YGFL, ONLY : NAERO
69
70 IMPLICIT NONE
71
72 INTEGER(KIND=JPIM) :: IAER, ICAER, ITAER
73 INTEGER(KIND=JPIM) :: J, JAER, JL
74
75 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 ! ----------------------------------------------------------------
77
78 INTERFACE
79 SUBROUTINE POSNAM(KULNAM,CDNAML)
80 USE PARKIND1 ,ONLY : JPIM ,JPRB
81 INTEGER(KIND=JPIM),INTENT(IN) :: KULNAM
82 CHARACTER(LEN=*) ,INTENT(IN) :: CDNAML
83 END SUBROUTINE POSNAM
84 END INTERFACE
85
86 INTERFACE
87 SUBROUTINE SU_AERP
88 END SUBROUTINE SU_AERP
89 END INTERFACE
90 INTERFACE
91 SUBROUTINE SU_AEROP
92 END SUBROUTINE SU_AEROP
93 END INTERFACE
94 ! ----------------------------------------------------------------
95
96 ! -----------------------------------------------------------------
97 NAMELIST/NAEAER/&
98 & LEPAERO , LAERCLIMG, LAERCLIMZ, LAERCLIST, LAERDRYDP, LAEREXTR , &
99 & LAERGBUD , LAERNGAT , LAERPRNT , LAERSCAV , LAERSEDIM, LAERSURF , &
100 & LAER6SDIA, &
101 & NTAER , NTYPAER , INDBG , NDDUST , &
102 & RLATVOL , RLONVOL , KSTPDBG
103 ! -----------------------------------------------------------------
104
105
106 ! ----------------------------------------------------------------
107
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 IF (LHOOK) CALL DR_HOOK('SU_AERW',0,ZHOOK_HANDLE)
108
109 !* 1. DEFAULT VALUES OF PARAMETERS
110 ! ----------------------------
111
112 1 print *,'DANS SU_AERW'
113 1 NBINAER(:) = (/ 3, 3, 2, 2, 1, 1, 1, 1, 1 /)
114
115 1 NMAXTAER=9
116 1 NTYPAER(:) = 0
117 1 JKBIN(:) = 0
118 1 JKTYP(:) = 0
119
120 1 LEPAERO=.FALSE.
121 1 LAERCLIMG=.FALSE.
122 1 LAERCLIMZ=.FALSE.
123 1 LAERCLIST=.FALSE.
124 1 LAERDRYDP=.FALSE.
125 1 LAEREXTR=.FALSE.
126 1 LAERGBUD=.FALSE.
127 1 LAERNGAT=.FALSE.
128 1 LAERPRNT=.FALSE.
129 1 LAERSCAV=.FALSE.
130 1 LAERSEDIM=.FALSE.
131 1 LAERSURF=.FALSE.
132 1 LAER6SDIA=.FALSE.
133 1 INDBG=1
134 1 NTAER =0
135 1 NDDUST =2
136
137 ! the 9 types and assumed number of bins are:
138 ! NTYPAER bins type
139 ! 1 1- 3 sea-salt 0.03 - 0.5 - 5 - 20 microns
140 ! 2 4- 6 dust 0.03 - 0.5 - 0.9 - 20 microns
141 ! 3 7- 8 POM hydrophilic, hydrophobic
142 ! 4 9-10 BC hydrophilic, hydrophobic
143 ! 5 11 sulfate
144 ! 6 12 fly ash
145 ! 7 13 pseudo-prognostic stratospheric aerosols
146 ! 8 14 pseudo-prognostic volcanic aerosols
147 ! 9 15 prognostic stratospheric aerosols
148
149
2/2
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 1 times.
10 DO JAER=1,NMAXTAER
150 10 NTYPAER(JAER)=0
151 ENDDO
152
153 1 RLATVOL=-999._JPRB
154 1 RLONVOL=-999._JPRB
155 1 RGELAV =-999._JPRB
156 1 RGEMUV =-999._JPRB
157 1 RDGLAV = 999._JPRB
158 1 RDGMUV = 999._JPRB
159 1 RCLONV =-999._JPRB
160 1 RSLONV =-999._JPRB
161 1 RDCLONV= 999._JPRB
162 1 RDSLONV= 999._JPRB
163
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 DO J=1,3
164 4 KSTPDBG(J)=-999
165 ENDDO
166
167 1 REPSCAER=1.E-15_JPRB
168
169 ! ------------------------------------------------------------------
170
171 !* 2. READ VALUES OF PROGNOSTIC AEROSOL CONFIGURATION
172 ! -----------------------------------------------
173 ! Ce qui concerne NAEAER commente par MPL le 15.04.09
174 !IF(NAERO > 0) THEN
175 ! CALL POSNAM(NULNAM,'NAEAER')
176 ! READ (NULNAM,NAEAER)
177 !ENDIF
178
179 IF (.NOT.LE4ALB) THEN
180 NDDUST=2
181 ENDIF
182 ! ------------------------------------------------------------------
183
184 !* 3. INITIALIZE PROGNOSTIC AEROSOL PHYSICAL AND OPTICAL PARAMETERS
185 ! -------------------------------------------------------------
186
187 1 CALL SU_AERP
188 1 print *,'SU_AERW: apres SU_AERP'
189 1 CALL SU_AEROP
190 1 print *,'SU_AERW: apres SU_AEROP'
191
192
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF (LEPAERO) THEN
193
194 ! define a composite index for each bin of each different aerosol type to be used
195 ! in source, sedimentation and deposition routines
196
197 ICAER=0
198 DO JAER=1,NMAXTAER
199 IF (NTYPAER(JAER) /= 0) THEN
200 NTAER=NTAER+1
201 ITAER=NTYPAER(JAER)
202 DO IAER=1,ITAER
203 ICAER=ICAER+1
204 NINDAER(ICAER)=JAER*10+IAER
205 JKTYP(ICAER)=JAER
206 JKBIN(ICAER)=IAER
207 ENDDO
208 ENDIF
209 ENDDO
210
211 !-- if volcanic aerosols, define the model coordinates
212
213 IF (NTYPAER(9) /= 0) THEN
214 RGEMUV=(RLATVOL+90._JPRB)*RPI/180._JPRB
215 RGELAV=RLONVOL*RPI/180._JPRB
216 RCLONV=COS(RGELAV)
217 RSLONV=SIN(RGELAV)
218 DO J=1,NGPTOT-1
219 IF (RGELAV > GELAM(J) .AND. RGELAV <= GELAM(J+1) .AND. &
220 & RGEMUV < RMU(JL) .AND. RGEMUV >= RMU(JL+1) ) THEN
221 RDGMUV=ABS( RMU(J+1) - RMU(J))
222 RDGLAV=ABS( GELAM(J+1)-GELAM(J) )
223 RDSLONV=ABS( SIN(GELAM(JL+1))-SIN(GELAM(JL)) )
224 RDCLONV=ABS( COS(GELAM(JL+1))-COS(GELAM(JL)) )
225 ENDIF
226 ENDDO
227 ENDIF
228
229 ! ----------------------------------------------------------------
230
231 !* 4. PRINT FINAL VALUES.
232 ! -------------------
233
234 WRITE(UNIT=NULOUT,FMT='('' LEPAERO = '',L5 &
235 & ,'' NTAER = '',I2 ,'' NDDUST = '',I1,/&
236 & ,'' NTYPAER = '',9I3,/ &
237 & ,'' NBINAER = '',9I3,/ &
238 & ,'' JKTYP = '',15I3,/&
239 & ,'' JKBIN = '',15I3 &
240 & )')&
241 & LEPAERO,NTAER,(NTYPAER(JAER),JAER=1,9),(NBINAER(JAER),JAER=1,9), &
242 & (JKTYP(JAER),JAER=1,15),(JKBIN(JAER),JAER=1,15)
243 WRITE(UNIT=NULOUT,FMT='('' LAERGBUD = '',L3 &
244 & ,'' LAERNGAT = '',L3 &
245 & ,'' LAERDRYDP= '',L3 &
246 & ,'' LAERSEDIM= '',L3 &
247 & ,'' LAERSCAV = '',L3 &
248 & ,'' LAER6SDIA= '',L3 &
249 & ,'' LAERCLIMZ= '',L3 &
250 & ,'' LAERCLIMG= '',L3 &
251 & ,'' LAERCLIST= '',L3 &
252 & )')&
253 & LAERGBUD,LAERNGAT, LAERDRYDP,LAERSEDIM,LAERSCAV,LAER6SDIA,LAERCLIMZ,LAERCLIMG,LAERCLIST
254 WRITE(UNIT=NULOUT,FMT='('' RSSFLX= '',10E10.3)') RSSFLX
255 IF (NTYPAER(9) /= 0) THEN
256 WRITE(UNIT=NULOUT,FMT='('' RLATVOL= '',F5.2 &
257 & ,'' RLONVOL= '',F6.2,'' RGEMUV= '',F6.4,'' RGELAV= '',F6.4 &
258 & ,'' RCLONV = '',F6.4,'' RSLONV= '',F6.4,'' RDGMUV= '',F6.4 &
259 & ,'' RDGLAV = '',F6.4,'' RDCLONV= '',F6.4,'' RDSLONV= '',F6.4 &
260 & )')&
261 & RLATVOL,RLONVOL,RGEMUV,RGELAV,RCLONV,RSLONV,RDGMUV,RDGLAV,RDCLONV,RDSLONV
262 ENDIF
263 ENDIF
264
265 ! ----------------------------------------------------------------
266
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 IF (LHOOK) CALL DR_HOOK('SU_AERW',1,ZHOOK_HANDLE)
267 1 END SUBROUTINE SU_AERW
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304