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 ) ) 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 )
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 : !
120 : ! !REVISION HISTORY:
121 : ! 20 Apr 2013 - C. Keller - Initial version
122 : ! See https://github.com/geoschem/hemco for complete history
123 : !EOP
124 : !------------------------------------------------------------------------------
125 : !BOC
126 : !
127 : ! !ARGUMENTS:
128 : !
129 : TYPE(ListCont), POINTER :: TmpLct
130 : CHARACTER(LEN=255) :: MSG
131 :
132 : ! ================================================================
133 : ! HCO_PrintList begins here
134 : ! ================================================================
135 :
136 : ! Point to first element
137 0 : TmpLct => List
138 0 : DO WHILE ( ASSOCIATED(TmpLct) )
139 0 : IF ( ASSOCIATED(TmpLct%Dct) ) THEN
140 0 : CALL HCO_PrintDataCont( HcoState,TmpLct%Dct )
141 : ENDIF
142 0 : TmpLct => TmpLct%NextCont
143 : ENDDO
144 :
145 0 : TmpLct => NULL()
146 :
147 0 : END SUBROUTINE HCO_PrintList
148 : !EOC
149 : !------------------------------------------------------------------------------
150 : ! Harmonized Emissions Component (HEMCO) !
151 : !------------------------------------------------------------------------------
152 : !BOP
153 : !
154 : ! !ROUTINE: HCO_PrintDataCont
155 : !
156 : ! !DESCRIPTION: Subroutine HCO\_PrintDataCont displays the content of the
157 : ! data container Dct.
158 : !\\
159 : !\\
160 : ! !INTERFACE:
161 : !
162 0 : SUBROUTINE HCO_PrintDataCont ( HcoState, Dct )
163 : !
164 : ! !USES
165 : !
166 : USE HCO_STATE_MOD, ONLY : HCO_State
167 : USE HCO_TYPES_MOD, ONLY : DataCont, HCO_DCTTYPE_BASE
168 : !
169 : ! !INPUT ARGUMENTS:
170 : !
171 : TYPE(HCO_STATE),POINTER :: HcoState
172 : TYPE(DataCont), POINTER :: Dct
173 : !
174 : ! !REVISION HISTORY:
175 : ! 20 Apr 2013 - C. Keller - Initial version
176 : ! See https://github.com/geoschem/hemco for complete history
177 : !EOP
178 : !------------------------------------------------------------------------------
179 : !BOC
180 : !
181 : ! !ARGUMENTS:
182 : !
183 : CHARACTER(LEN=255) :: MSG
184 : INTEGER :: nx, ny, nz, nt
185 : REAL(sp) :: sm, mn, mx
186 :
187 : ! ================================================================
188 : ! HCO_PrintDataCont begins here
189 : ! ================================================================
190 :
191 0 : sm = 0.0_sp
192 0 : mn = 0.0_sp
193 0 : mx = 0.0_sp
194 : sm = 0.0_sp
195 0 : nx = 0
196 0 : ny = 0
197 0 : nz = 0
198 0 : nt = Dct%Dta%nt
199 0 : IF ( nt > 0 ) THEN
200 0 : IF ( Dct%Dta%spaceDim<=2 ) THEN
201 0 : IF ( ASSOCIATED(Dct%Dta%V2) ) THEN
202 0 : nx = SIZE(Dct%Dta%V2(1)%Val,1)
203 0 : ny = SIZE(Dct%Dta%V2(1)%Val,2)
204 0 : sm = SUM(Dct%Dta%V2(1)%Val)
205 0 : mn = MINVAL(Dct%Dta%V2(1)%Val)
206 0 : mx = MAXVAL(Dct%Dta%V2(1)%Val)
207 : ENDIF
208 : ELSE
209 0 : IF ( ASSOCIATED(Dct%Dta%V3) ) THEN
210 0 : nx = SIZE(Dct%Dta%V3(1)%Val,1)
211 0 : ny = SIZE(Dct%Dta%V3(1)%Val,2)
212 0 : nz = SIZE(Dct%Dta%V3(1)%Val,3)
213 0 : sm = SUM(Dct%Dta%V3(1)%Val)
214 0 : mn = MINVAL(Dct%Dta%V3(1)%Val)
215 0 : mx = MAXVAL(Dct%Dta%V3(1)%Val)
216 : ENDIF
217 : ENDIF
218 : ENDIF
219 :
220 : ! Print name for verbose > 0
221 0 : IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
222 0 : MSG = 'Container ' // TRIM(Dct%cName)
223 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
224 : ENDIF
225 :
226 : ! Eventually add details
227 0 : IF ( HCO_IsVerb( HcoState%Config%Err ) ) THEN
228 :
229 : ! General information
230 0 : write(MSG,*) ' -->Data type : ', Dct%DctType
231 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
232 0 : write(MSG,*) ' -->Container ID : ', Dct%cID
233 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
234 0 : write(MSG,*) ' -->Target ID : ', Dct%targetID
235 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
236 0 : write(MSG,*) ' -->File data home? ', Dct%DtaHome
237 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
238 0 : write(MSG,*) ' -->Source file : ', TRIM(Dct%Dta%ncFile)
239 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
240 0 : write(MSG,*) ' -->ncRead? ', Dct%Dta%ncRead
241 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
242 0 : write(MSG,*) ' -->Shared data file? ', Dct%Dta%DoShare
243 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
244 0 : IF ( Dct%Dta%ncRead ) THEN
245 0 : write(MSG,*) ' -->Source parameter: ', TRIM(Dct%Dta%ncPara)
246 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
247 0 : write(MSG,*) ' -->Year range : ', Dct%Dta%ncYrs
248 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
249 0 : write(MSG,*) ' -->Month range : ', Dct%Dta%ncMts
250 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
251 0 : write(MSG,*) ' -->Day range : ', Dct%Dta%ncDys
252 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
253 0 : write(MSG,*) ' -->Hour range : ', Dct%Dta%ncHrs
254 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
255 0 : write(MSG,*) ' -->SpaceDim : ', Dct%Dta%SpaceDim
256 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
257 : ENDIF
258 0 : IF ( NZ > 0 ) THEN
259 0 : write(MSG,*) ' -->Array dimension : ', nx,ny,nz
260 : ELSE
261 0 : write(MSG,*) ' -->Array dimension : ', nx,ny
262 : ENDIF
263 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
264 0 : write(MSG,*) ' -->Array sum : ', sm
265 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
266 0 : write(MSG,*) ' -->Array min & max : ', mn,mx
267 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
268 0 : write(MSG,*) ' -->Time dimension : ', nt
269 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
270 0 : write(MSG,*) ' -->Delta t[h] : ', Dct%Dta%DeltaT
271 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
272 0 : write(MSG,*) ' -->Local time? ', Dct%Dta%IsLocTime
273 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
274 0 : IF ( ASSOCIATED(Dct%Dta%tIDx) ) THEN
275 0 : write(MSG,*) ' -->Tempres : ', &
276 0 : TRIM(Dct%Dta%tIDx%TempRes)
277 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
278 : ENDIF
279 0 : write(MSG,*) ' -->OrigUnit : ',TRIM(Dct%Dta%OrigUnit)
280 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
281 0 : write(MSG,*) ' -->Concentration? ', Dct%Dta%IsConc
282 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
283 0 : write(MSG,*) ' -->Coverage : ', Dct%Dta%Cover
284 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
285 :
286 : ! For base emissions
287 0 : IF ( Dct%DctType==HCO_DCTTYPE_BASE ) THEN
288 0 : write(MSG,*) ' -->Extension Nr : ', Dct%ExtNr
289 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
290 0 : write(MSG,*) ' -->Species name : ',TRIM(Dct%SpcName)
291 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
292 0 : write(MSG,*) ' -->HEMCO species ID: ', Dct%HcoID
293 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
294 0 : write(MSG,*) ' -->Category : ', Dct%Cat
295 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
296 0 : write(MSG,*) ' -->Hierarchy : ', Dct%Hier
297 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
298 0 : IF ( nz == 0 ) THEN
299 0 : write(MSG,*) ' -->2D emitted into : ', Dct%Dta%EmisL1, &
300 0 : ' and ', Dct%Dta%EmisL2
301 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
302 : ENDIF
303 :
304 : ! For scale factors
305 : ELSE
306 0 : write(MSG,*) ' -->Scal ID : ', Dct%ScalID
307 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
308 0 : write(MSG,*) ' -->Operator : ', Dct%Oper
309 0 : CALL HCO_MSG(HcoState%Config%Err,MSG)
310 : ENDIF
311 : ENDIF
312 :
313 0 : END SUBROUTINE HCO_PrintDataCont
314 : !EOC
315 : END MODULE HCO_LOGFILE_MOD
|