Line data Source code
1 : !------------------------------------------------------------------------------
2 : ! Harmonized Emissions Component (HEMCO) !
3 : !------------------------------------------------------------------------------
4 : !BOP
5 : !
6 : ! !MODULE: hco_logfile_mod
7 : !
8 : ! !DESCRIPTION: Module HCO\_LOGFILE\_MOD contains some wrapper routines to
9 : ! write data into the HEMCO logfile.
10 : !\\
11 : !\\
12 : ! !INTERFACE:
13 : !
14 : MODULE HCO_LOGFILE_MOD
15 : !
16 : ! !USES:
17 : !
18 : USE HCO_ERROR_MOD
19 :
20 : IMPLICIT NONE
21 : PRIVATE
22 : !
23 : ! !PUBLIC MEMBER FUNCTIONS:
24 : !
25 : PUBLIC :: HCO_Spec2Log
26 : PUBLIC :: HCO_PrintList
27 : PUBLIC :: HCO_PrintDataCont
28 : !
29 : ! !REVISION HISTORY:
30 : ! 27 May 2014 - C. Keller - Initialization
31 : ! See https://github.com/geoschem/hemco for complete history
32 : !EOP
33 : !------------------------------------------------------------------------------
34 : !BOC
35 : CONTAINS
36 : !EOC
37 : !------------------------------------------------------------------------------
38 : ! Harmonized Emissions Component (HEMCO) !
39 : !------------------------------------------------------------------------------
40 : !BOP
41 : !
42 : ! !IROUTINE: hco_spec2log
43 : !
44 : ! !DESCRIPTION: Subroutine HCO\_Spec2Log writes information of a species
45 : ! to the logfile.
46 : !\\
47 : !\\
48 : ! !INTERFACE:
49 : !
50 0 : SUBROUTINE HCO_Spec2Log( HcoState, ID )
51 : !
52 : ! !USES:
53 : !
54 : USE HCO_STATE_MOD, ONLY : HCO_State
55 : !
56 : !
57 : ! !INPUT PARAMETER
58 : !
59 : TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object
60 : INTEGER, INTENT(IN) :: ID ! HEMCO species ID
61 : !
62 : ! !REVISION HISTORY:
63 : ! 27 May 2014 - C. Keller - Initialization
64 : ! See https://github.com/geoschem/hemco for complete history
65 : !EOP
66 : !------------------------------------------------------------------------------
67 : !BOC
68 : !
69 : ! !LOCAL VARIABLES:
70 : !
71 : CHARACTER(LEN=255) :: MSG
72 :
73 : !=================================================================
74 : ! HCO_Spec2Log begins here
75 : !=================================================================
76 :
77 0 : MSG = 'Species ' // TRIM(HcoState%Spc(ID)%SpcName)
78 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
79 0 : IF ( HCO_IsVerb(HcoState%Config%Err,3) ) THEN
80 0 : write(MSG,*) '--> HcoID : ', HcoState%Spc(ID)%HcoID
81 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
82 0 : write(MSG,*) '--> ModID : ', HcoState%Spc(ID)%ModID
83 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
84 0 : write(MSG,*) '--> MW (g/mol) : ', HcoState%Spc(ID)%MW_g
85 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
86 0 : write(MSG,*) '--> Henry constant: ', HcoState%Spc(ID)%HenryK0
87 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
88 0 : write(MSG,*) '--> Henry temp. : ', HcoState%Spc(ID)%HenryCR
89 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
90 0 : write(MSG,*) '--> Henry pKA : ', HcoState%Spc(ID)%HenryPKA
91 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
92 : ENDIF
93 :
94 0 : END SUBROUTINE HCO_Spec2Log
95 : !EOC
96 : !------------------------------------------------------------------------------
97 : ! Harmonized Emissions Component (HEMCO) !
98 : !------------------------------------------------------------------------------
99 : !BOP
100 : !
101 : ! !ROUTINE: HCO_PrintList
102 : !
103 : ! !DESCRIPTION: Subroutine HCO\_PrintList displays the content of List.
104 : !\\
105 : !\\
106 : ! !INTERFACE:
107 : !
108 0 : SUBROUTINE HCO_PrintList ( HcoState, List, Verbose )
109 : !
110 : ! !USES:
111 : !
112 : USE HCO_STATE_MOD, ONLY : HCO_State
113 : USE HCO_TYPES_MOD, ONLY : ListCont
114 : !
115 : ! !INPUT ARGUMENTS:
116 : !
117 : TYPE(HCO_STATE),POINTER :: HcoState
118 : TYPE(ListCont), POINTER :: List
119 : INTEGER, INTENT(IN) :: Verbose
120 : !
121 : ! !REVISION HISTORY:
122 : ! 20 Apr 2013 - C. Keller - Initial version
123 : ! See https://github.com/geoschem/hemco for complete history
124 : !EOP
125 : !------------------------------------------------------------------------------
126 : !BOC
127 : !
128 : ! !ARGUMENTS:
129 : !
130 : TYPE(ListCont), POINTER :: TmpLct
131 : CHARACTER(LEN=255) :: MSG
132 :
133 : ! ================================================================
134 : ! HCO_PrintList begins here
135 : ! ================================================================
136 :
137 : ! Point to first element
138 0 : TmpLct => List
139 0 : DO WHILE ( ASSOCIATED(TmpLct) )
140 0 : IF ( ASSOCIATED(TmpLct%Dct) ) THEN
141 0 : CALL HCO_PrintDataCont(HcoState,TmpLct%Dct,Verbose)
142 : ENDIF
143 0 : TmpLct => TmpLct%NextCont
144 : ENDDO
145 :
146 0 : TmpLct => NULL()
147 :
148 0 : END SUBROUTINE HCO_PrintList
149 : !EOC
150 : !------------------------------------------------------------------------------
151 : ! Harmonized Emissions Component (HEMCO) !
152 : !------------------------------------------------------------------------------
153 : !BOP
154 : !
155 : ! !ROUTINE: HCO_PrintDataCont
156 : !
157 : ! !DESCRIPTION: Subroutine HCO\_PrintDataCont displays the content of the
158 : ! data container Dct.
159 : !\\
160 : !\\
161 : ! !INTERFACE:
162 : !
163 0 : SUBROUTINE HCO_PrintDataCont ( HcoState, Dct, Verbose )
164 : !
165 : ! !USES
166 : !
167 : USE HCO_STATE_MOD, ONLY : HCO_State
168 : USE HCO_TYPES_MOD, ONLY : DataCont, HCO_DCTTYPE_BASE
169 : !
170 : ! !INPUT ARGUMENTS:
171 : !
172 : TYPE(HCO_STATE),POINTER :: HcoState
173 : TYPE(DataCont), POINTER :: Dct
174 : INTEGER, INTENT(IN) :: Verbose
175 : !
176 : ! !REVISION HISTORY:
177 : ! 20 Apr 2013 - C. Keller - Initial version
178 : ! See https://github.com/geoschem/hemco for complete history
179 : !EOP
180 : !------------------------------------------------------------------------------
181 : !BOC
182 : !
183 : ! !ARGUMENTS:
184 : !
185 : CHARACTER(LEN=255) :: MSG
186 : INTEGER :: nx, ny, nz, nt
187 : REAL(sp) :: sm, mn, mx
188 :
189 : ! ================================================================
190 : ! HCO_PrintDataCont begins here
191 : ! ================================================================
192 :
193 0 : sm = 0.0_sp
194 0 : mn = 0.0_sp
195 0 : mx = 0.0_sp
196 : sm = 0.0_sp
197 0 : nx = 0
198 0 : ny = 0
199 0 : nz = 0
200 0 : nt = Dct%Dta%nt
201 0 : IF ( nt > 0 ) THEN
202 0 : IF ( Dct%Dta%spaceDim<=2 ) THEN
203 0 : IF ( ASSOCIATED(Dct%Dta%V2) ) THEN
204 0 : nx = SIZE(Dct%Dta%V2(1)%Val,1)
205 0 : ny = SIZE(Dct%Dta%V2(1)%Val,2)
206 0 : sm = SUM(Dct%Dta%V2(1)%Val)
207 0 : mn = MINVAL(Dct%Dta%V2(1)%Val)
208 0 : mx = MAXVAL(Dct%Dta%V2(1)%Val)
209 : ENDIF
210 : ELSE
211 0 : IF ( ASSOCIATED(Dct%Dta%V3) ) THEN
212 0 : nx = SIZE(Dct%Dta%V3(1)%Val,1)
213 0 : ny = SIZE(Dct%Dta%V3(1)%Val,2)
214 0 : nz = SIZE(Dct%Dta%V3(1)%Val,3)
215 0 : sm = SUM(Dct%Dta%V3(1)%Val)
216 0 : mn = MINVAL(Dct%Dta%V3(1)%Val)
217 0 : mx = MAXVAL(Dct%Dta%V3(1)%Val)
218 : ENDIF
219 : ENDIF
220 : ENDIF
221 :
222 : ! Print name for verbose > 0
223 0 : IF ( HCO_IsVerb(HcoState%Config%Err,1) ) THEN
224 0 : MSG = 'Container ' // TRIM(Dct%cName)
225 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
226 : ENDIF
227 :
228 : ! Eventually add details
229 0 : IF ( HCO_IsVerb(HcoState%Config%Err,Verbose) ) THEN
230 :
231 : ! General information
232 0 : write(MSG,*) ' -->Data type : ', Dct%DctType
233 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
234 0 : write(MSG,*) ' -->Container ID : ', Dct%cID
235 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
236 0 : write(MSG,*) ' -->Target ID : ', Dct%targetID
237 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
238 0 : write(MSG,*) ' -->File data home? ', Dct%DtaHome
239 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
240 0 : write(MSG,*) ' -->Source file : ', TRIM(Dct%Dta%ncFile)
241 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
242 0 : write(MSG,*) ' -->ncRead? ', Dct%Dta%ncRead
243 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
244 0 : write(MSG,*) ' -->Shared data file? ', Dct%Dta%DoShare
245 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
246 0 : IF ( Dct%Dta%ncRead ) THEN
247 0 : write(MSG,*) ' -->Source parameter: ', TRIM(Dct%Dta%ncPara)
248 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
249 0 : write(MSG,*) ' -->Year range : ', Dct%Dta%ncYrs
250 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
251 0 : write(MSG,*) ' -->Month range : ', Dct%Dta%ncMts
252 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
253 0 : write(MSG,*) ' -->Day range : ', Dct%Dta%ncDys
254 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
255 0 : write(MSG,*) ' -->Hour range : ', Dct%Dta%ncHrs
256 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
257 0 : write(MSG,*) ' -->SpaceDim : ', Dct%Dta%SpaceDim
258 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
259 : ENDIF
260 0 : IF ( NZ > 0 ) THEN
261 0 : write(MSG,*) ' -->Array dimension : ', nx,ny,nz
262 : ELSE
263 0 : write(MSG,*) ' -->Array dimension : ', nx,ny
264 : ENDIF
265 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
266 0 : write(MSG,*) ' -->Array sum : ', sm
267 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
268 0 : write(MSG,*) ' -->Array min & max : ', mn,mx
269 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
270 0 : write(MSG,*) ' -->Time dimension : ', nt
271 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
272 0 : write(MSG,*) ' -->Delta t[h] : ', Dct%Dta%DeltaT
273 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
274 0 : write(MSG,*) ' -->Local time? ', Dct%Dta%IsLocTime
275 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
276 0 : IF ( ASSOCIATED(Dct%Dta%tIDx) ) THEN
277 0 : write(MSG,*) ' -->Tempres : ', &
278 0 : TRIM(Dct%Dta%tIDx%TempRes)
279 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
280 : ENDIF
281 0 : write(MSG,*) ' -->OrigUnit : ',TRIM(Dct%Dta%OrigUnit)
282 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
283 0 : write(MSG,*) ' -->Concentration? ', Dct%Dta%IsConc
284 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
285 0 : write(MSG,*) ' -->Coverage : ', Dct%Dta%Cover
286 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
287 :
288 : ! For base emissions
289 0 : IF ( Dct%DctType==HCO_DCTTYPE_BASE ) THEN
290 0 : write(MSG,*) ' -->Extension Nr : ', Dct%ExtNr
291 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
292 0 : write(MSG,*) ' -->Species name : ',TRIM(Dct%SpcName)
293 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
294 0 : write(MSG,*) ' -->HEMCO species ID: ', Dct%HcoID
295 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
296 0 : write(MSG,*) ' -->Category : ', Dct%Cat
297 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
298 0 : write(MSG,*) ' -->Hierarchy : ', Dct%Hier
299 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
300 0 : IF ( nz == 0 ) THEN
301 0 : write(MSG,*) ' -->2D emitted into : ', Dct%Dta%EmisL1, &
302 0 : ' and ', Dct%Dta%EmisL2
303 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
304 : ENDIF
305 :
306 : ! For scale factors
307 : ELSE
308 0 : write(MSG,*) ' -->Scal ID : ', Dct%ScalID
309 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
310 0 : write(MSG,*) ' -->Operator : ', Dct%Oper
311 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
312 : ENDIF
313 : ENDIF
314 :
315 0 : END SUBROUTINE HCO_PrintDataCont
316 : !EOC
317 : END MODULE HCO_LOGFILE_MOD
|