logging.F90 coverage: 100.00 %func 66.67 %block
1) module Logging_module
2)
3) ! IMPORTANT NOTE: This module can have no dependencies on other modules!!!
4)
5) use PFLOTRAN_Constants_module
6)
7) implicit none
8)
9) private
10)
11) #include "petsc/finclude/petscsys.h"
12)
13) ! stages
14) PetscInt, parameter, public :: INIT_STAGE = 1
15) PetscInt, parameter, public :: TS_STAGE = 2
16) PetscInt, parameter, public :: OUTPUT_STAGE = 3
17) PetscInt, parameter, public :: FINAL_STAGE = 4
18)
19) type, public :: logging_type
20)
21) PetscInt :: stage_count
22) PetscLogStage :: stage(10)
23)
24) PetscClassId :: class_pflotran
25)
26) PetscLogEvent :: event_init
27) PetscLogEvent :: event_setup
28)
29) PetscLogEvent :: event_create_iogroups
30)
31) PetscLogEvent :: event_restart
32) PetscLogEvent :: event_checkpoint
33)
34) PetscLogEvent :: event_flow_condition_read
35) PetscLogEvent :: event_tran_condition_read
36) PetscLogEvent :: event_tran_constraint_read
37) PetscLogEvent :: event_flow_condition_read_values
38)
39) PetscLogEvent :: event_h5dread_f
40) PetscLogEvent :: event_h5dwrite_f
41) PetscLogEvent :: event_read_indices_hdf5
42) PetscLogEvent :: event_map_indices_hdf5
43) PetscLogEvent :: event_hash_create
44) PetscLogEvent :: event_hash_map
45) PetscLogEvent :: event_read_real_array_hdf5
46) PetscLogEvent :: event_read_ndim_real_array_hdf5
47) PetscLogEvent :: event_read_int_array_hdf5
48) PetscLogEvent :: event_write_real_array_hdf5
49) PetscLogEvent :: event_write_int_array_hdf5
50) PetscLogEvent :: event_read_array_hdf5
51) PetscLogEvent :: event_read_xyz_dataset_hdf5
52) PetscLogEvent :: event_write_struct_dataset_hdf5
53) PetscLogEvent :: event_region_read_hdf5
54) PetscLogEvent :: event_region_read_ascii
55) PetscLogEvent :: event_cell_indx_int_read_hdf5
56) PetscLogEvent :: event_cell_indx_real_read_hdf5
57) PetscLogEvent :: event_dataset_gridded_hdf5_read
58) PetscLogEvent :: event_dataset_map_hdf5_read
59)
60) PetscLogEvent :: event_output_tecplot
61) PetscLogEvent :: event_output_hdf5
62) PetscLogEvent :: event_output_vtk
63) PetscLogEvent :: event_output_grid_vtk
64) PetscLogEvent :: event_output_write_vtk
65) PetscLogEvent :: event_output_mad
66) PetscLogEvent :: event_output_str_grid_tecplot
67) PetscLogEvent :: event_output_write_tecplot
68) PetscLogEvent :: event_output_write_flux_tecplot
69) PetscLogEvent :: event_output_get_var_from_array
70) PetscLogEvent :: event_output_get_cell_vel
71) PetscLogEvent :: event_output_vec_tecplot
72) PetscLogEvent :: event_output_observation
73) PetscLogEvent :: event_output_coordinates_hdf5
74) PetscLogEvent :: event_output_hydrograph
75) PetscLogEvent :: event_output_secondary_tecplot
76)
77) PetscLogEvent :: event_r_residual
78) PetscLogEvent :: event_r_jacobian
79) PetscLogEvent :: event_r_auxvars
80) PetscLogEvent :: event_r_auxvars_bc
81)
82) PetscLogEvent :: event_rt_residual
83) PetscLogEvent :: event_rt_jacobian
84)
85) PetscLogEvent :: event_rt_jacobian_flux
86) PetscLogEvent :: event_rt_jacobian_fluxbc
87) PetscLogEvent :: event_rt_jacobian_accum
88) PetscLogEvent :: event_rt_jacobian_zero_calc
89) PetscLogEvent :: event_rt_jacobian_zero
90) PetscLogEvent :: event_rt_jacobian_ss
91) PetscLogEvent :: event_rt_jacobian1
92) PetscLogEvent :: event_rt_jacobian2
93)
94) PetscLogEvent :: event_rt_res_reaction
95) PetscLogEvent :: event_rt_jac_reaction
96) PetscLogEvent :: event_rt_react
97) PetscLogEvent :: event_rt_auxvars
98) PetscLogEvent :: event_rt_auxvars_bc
99)
100) PetscLogEvent :: event_mass_balance
101)
102) PetscBool :: setup_complete
103)
104) end type logging_type
105)
106) type(logging_type), pointer, public :: logging
107)
108) public :: LoggingCreate, &
109) LoggingCreateStage, &
110) LoggingSetupComplete, &
111) LoggingDestroy
112)
113) contains
114)
115) ! ************************************************************************** !
116)
117) subroutine LoggingCreate()
118) !
119) ! Allocates and initializes a new logging object
120) !
121) ! Author: Glenn Hammond
122) ! Date: 10/25/07
123) !
124)
125) implicit none
126)
127) PetscErrorCode :: ierr
128)
129) allocate(logging)
130)
131) logging%setup_complete = PETSC_FALSE
132) logging%stage_count = FINAL_STAGE
133)
134) call PetscLogStageRegister('Init Stage', &
135) logging%stage(INIT_STAGE),ierr);CHKERRQ(ierr)
136) call PetscLogStageRegister('Time Step Stage', &
137) logging%stage(TS_STAGE),ierr);CHKERRQ(ierr)
138) call PetscLogStageRegister('Output Stage', &
139) logging%stage(OUTPUT_STAGE),ierr);CHKERRQ(ierr)
140) call PetscLogStageRegister('Finalization Stage', &
141) logging%stage(FINAL_STAGE),ierr);CHKERRQ(ierr)
142)
143) !! call PetscCookieRegister('PFLOTRAN',logging%class_pflotran,ierr)
144) call PetscClassIdRegister('PFLOTRAN',logging%class_pflotran, &
145) ierr);CHKERRQ(ierr)
146)
147) call PetscLogEventRegister('Init', &
148) logging%class_pflotran, &
149) logging%event_init,ierr);CHKERRQ(ierr)
150) call PetscLogEventRegister('Init,Setup', &
151) logging%class_pflotran, &
152) logging%event_setup,ierr);CHKERRQ(ierr)
153)
154) call PetscLogEventRegister('Create_iogroups', &
155) logging%class_pflotran, &
156) logging%event_create_iogroups,ierr);CHKERRQ(ierr)
157)
158) call PetscLogEventRegister('Restart', &
159) logging%class_pflotran, &
160) logging%event_restart,ierr);CHKERRQ(ierr)
161) call PetscLogEventRegister('Checkpoint', &
162) logging%class_pflotran, &
163) logging%event_checkpoint,ierr);CHKERRQ(ierr)
164)
165) call PetscLogEventRegister('FlowCondRead', &
166) logging%class_pflotran, &
167) logging%event_flow_condition_read, &
168) ierr);CHKERRQ(ierr)
169) call PetscLogEventRegister('TranCondRead', &
170) logging%class_pflotran, &
171) logging%event_tran_condition_read, &
172) ierr);CHKERRQ(ierr)
173) call PetscLogEventRegister('TranConstraintRd', &
174) logging%class_pflotran, &
175) logging%event_tran_constraint_read, &
176) ierr);CHKERRQ(ierr)
177) call PetscLogEventRegister('FlowCondReadVals', &
178) logging%class_pflotran, &
179) logging%event_flow_condition_read_values, &
180) ierr);CHKERRQ(ierr)
181)
182) call PetscLogEventRegister('H5DRead_F', &
183) logging%class_pflotran, &
184) logging%event_h5dread_f,ierr);CHKERRQ(ierr)
185) call PetscLogEventRegister('H5DWrite_F', &
186) logging%class_pflotran, &
187) logging%event_h5dwrite_f,ierr);CHKERRQ(ierr)
188) call PetscLogEventRegister('HDF5ReadIndices', &
189) logging%class_pflotran, &
190) logging%event_read_indices_hdf5, &
191) ierr);CHKERRQ(ierr)
192) call PetscLogEventRegister('H5MapLoc2NatIndx', &
193) logging%class_pflotran, &
194) logging%event_map_indices_hdf5, &
195) ierr);CHKERRQ(ierr)
196) call PetscLogEventRegister('GrdCrNat2GhstHsh', &
197) logging%class_pflotran, &
198) logging%event_hash_create,ierr);CHKERRQ(ierr)
199) call PetscLogEventRegister('GrdLocGhstIdHsh', &
200) logging%class_pflotran, &
201) logging%event_hash_map,ierr);CHKERRQ(ierr)
202) call PetscLogEventRegister('H5ReadRealArray', &
203) logging%class_pflotran, &
204) logging%event_read_real_array_hdf5, &
205) ierr);CHKERRQ(ierr)
206) call PetscLogEventRegister('H5ReadNDimRealArray', &
207) logging%class_pflotran, &
208) logging%event_read_ndim_real_array_hdf5, &
209) ierr);CHKERRQ(ierr)
210) call PetscLogEventRegister('H5ReadIntArray', &
211) logging%class_pflotran, &
212) logging%event_read_int_array_hdf5, &
213) ierr);CHKERRQ(ierr)
214) call PetscLogEventRegister('H5ReadArray', &
215) logging%class_pflotran, &
216) logging%event_read_array_hdf5,ierr);CHKERRQ(ierr)
217) call PetscLogEventRegister('H5WriteRealArray', &
218) logging%class_pflotran, &
219) logging%event_write_real_array_hdf5, &
220) ierr);CHKERRQ(ierr)
221) call PetscLogEventRegister('H5WriteIntArray', &
222) logging%class_pflotran, &
223) logging%event_write_int_array_hdf5, &
224) ierr);CHKERRQ(ierr)
225) call PetscLogEventRegister('H5WriteStrData', &
226) logging%class_pflotran, &
227) logging%event_write_struct_dataset_hdf5, &
228) ierr);CHKERRQ(ierr)
229) call PetscLogEventRegister('H5ReadRegFrmFile', &
230) logging%class_pflotran, &
231) logging%event_region_read_hdf5, &
232) ierr);CHKERRQ(ierr)
233) call PetscLogEventRegister('RegReadFrmFileId', &
234) logging%class_pflotran, &
235) logging%event_region_read_ascii, &
236) ierr);CHKERRQ(ierr)
237) call PetscLogEventRegister('H5RdCellIndxInt', &
238) logging%class_pflotran, &
239) logging%event_cell_indx_int_read_hdf5, &
240) ierr);CHKERRQ(ierr)
241) call PetscLogEventRegister('H5RdCellIndxReal', &
242) logging%class_pflotran, &
243) logging%event_cell_indx_real_read_hdf5, &
244) ierr);CHKERRQ(ierr)
245) call PetscLogEventRegister('DatasetGriddedHDF5Read', &
246) logging%class_pflotran, &
247) logging%event_dataset_gridded_hdf5_read, &
248) ierr);CHKERRQ(ierr)
249) call PetscLogEventRegister('DatasetMapHDF5Read', &
250) logging%class_pflotran, &
251) logging%event_dataset_map_hdf5_read, &
252) ierr);CHKERRQ(ierr)
253)
254) call PetscLogEventRegister('OutputTecplot', &
255) logging%class_pflotran, &
256) logging%event_output_tecplot,ierr);CHKERRQ(ierr)
257) call PetscLogEventRegister('OutputVTK', &
258) logging%class_pflotran, &
259) logging%event_output_vtk,ierr);CHKERRQ(ierr)
260) call PetscLogEventRegister('OutputMAD', &
261) logging%class_pflotran, &
262) logging%event_output_mad,ierr);CHKERRQ(ierr)
263) call PetscLogEventRegister('OutputHDF5', &
264) logging%class_pflotran, &
265) logging%event_output_hdf5,ierr);CHKERRQ(ierr)
266) call PetscLogEventRegister('OutputSecondaryTecplot', &
267) logging%class_pflotran, &
268) logging%event_output_secondary_tecplot, &
269) ierr);CHKERRQ(ierr)
270) call PetscLogEventRegister('WriteTecStrGrid', &
271) logging%class_pflotran, &
272) logging%event_output_str_grid_tecplot, &
273) ierr);CHKERRQ(ierr)
274) call PetscLogEventRegister('WriteVTKGrid', &
275) logging%class_pflotran, &
276) logging%event_output_grid_vtk,ierr);CHKERRQ(ierr)
277) call PetscLogEventRegister('WriteTecDataSet', &
278) logging%class_pflotran, &
279) logging%event_output_write_tecplot, &
280) ierr);CHKERRQ(ierr)
281) call PetscLogEventRegister('WriteVTKDataSet', &
282) logging%class_pflotran, &
283) logging%event_output_write_vtk, &
284) ierr);CHKERRQ(ierr)
285) call PetscLogEventRegister('OutputFluxVelTec', &
286) logging%class_pflotran, &
287) logging%event_output_write_flux_tecplot, &
288) ierr);CHKERRQ(ierr)
289) call PetscLogEventRegister('OutputGtVrFrmArr', &
290) logging%class_pflotran, &
291) logging%event_output_get_var_from_array, &
292) ierr);CHKERRQ(ierr)
293) call PetscLogEventRegister('GetCellCentVel', &
294) logging%class_pflotran, &
295) logging%event_output_get_cell_vel, &
296) ierr);CHKERRQ(ierr)
297) call PetscLogEventRegister('OutputFluxVelTec', &
298) logging%class_pflotran, &
299) logging%event_output_vec_tecplot, &
300) ierr);CHKERRQ(ierr)
301) call PetscLogEventRegister('OutputBrkthuTec', &
302) logging%class_pflotran, &
303) logging%event_output_observation, &
304) ierr);CHKERRQ(ierr)
305) call PetscLogEventRegister('WriteHDF5Coord', &
306) logging%class_pflotran, &
307) logging%event_output_coordinates_hdf5, &
308) ierr);CHKERRQ(ierr)
309) call PetscLogEventRegister('OutputHydrograph', &
310) logging%class_pflotran, &
311) logging%event_output_hydrograph, &
312) ierr);CHKERRQ(ierr)
313)
314) call PetscLogEventRegister('RResidual', &
315) logging%class_pflotran, &
316) logging%event_r_residual,ierr);CHKERRQ(ierr)
317) call PetscLogEventRegister('RJacobian', &
318) logging%class_pflotran, &
319) logging%event_r_jacobian,ierr);CHKERRQ(ierr)
320) call PetscLogEventRegister('RAuxVars', &
321) logging%class_pflotran, &
322) logging%event_r_auxvars,ierr);CHKERRQ(ierr)
323) call PetscLogEventRegister('RAuxVarsBC', &
324) logging%class_pflotran, &
325) logging%event_r_auxvars_bc,ierr);CHKERRQ(ierr)
326)
327) call PetscLogEventRegister('RTResidual', &
328) logging%class_pflotran, &
329) logging%event_rt_residual,ierr);CHKERRQ(ierr)
330) call PetscLogEventRegister('RTJacobian', &
331) logging%class_pflotran, &
332) logging%event_rt_jacobian,ierr);CHKERRQ(ierr)
333)
334) call PetscLogEventRegister('RTJacobianFlux', &
335) logging%class_pflotran, &
336) logging%event_rt_jacobian_flux, &
337) ierr);CHKERRQ(ierr)
338) call PetscLogEventRegister('RTJacobianFluxBC', &
339) logging%class_pflotran, &
340) logging%event_rt_jacobian_fluxbc, &
341) ierr);CHKERRQ(ierr)
342) call PetscLogEventRegister('RTJacobianAccum', &
343) logging%class_pflotran, &
344) logging%event_rt_jacobian_accum, &
345) ierr);CHKERRQ(ierr)
346) call PetscLogEventRegister('RTJacobianZeroCalc', &
347) logging%class_pflotran, &
348) logging%event_rt_jacobian_zero_calc, &
349) ierr);CHKERRQ(ierr)
350) call PetscLogEventRegister('RTJacobianZero', &
351) logging%class_pflotran, &
352) logging%event_rt_jacobian_zero, &
353) ierr);CHKERRQ(ierr)
354) call PetscLogEventRegister('RTJacobianSS', &
355) logging%class_pflotran, &
356) logging%event_rt_jacobian_ss,ierr);CHKERRQ(ierr)
357)
358) call PetscLogEventRegister('RTJacobian1', &
359) logging%class_pflotran, &
360) logging%event_rt_jacobian1,ierr);CHKERRQ(ierr)
361) call PetscLogEventRegister('RTJacobian2', &
362) logging%class_pflotran, &
363) logging%event_rt_jacobian2,ierr);CHKERRQ(ierr)
364)
365) call PetscLogEventRegister('RTResReaction', &
366) logging%class_pflotran, &
367) logging%event_rt_res_reaction,ierr);CHKERRQ(ierr)
368) call PetscLogEventRegister('RTJacReaction', &
369) logging%class_pflotran, &
370) logging%event_rt_jac_reaction,ierr);CHKERRQ(ierr)
371) call PetscLogEventRegister('RTReact', &
372) logging%class_pflotran, &
373) logging%event_rt_react,ierr);CHKERRQ(ierr)
374) call PetscLogEventRegister('RTAuxVars', &
375) logging%class_pflotran, &
376) logging%event_rt_auxvars,ierr);CHKERRQ(ierr)
377) call PetscLogEventRegister('RTAuxVarsBC', &
378) logging%class_pflotran, &
379) logging%event_rt_auxvars_bc,ierr);CHKERRQ(ierr)
380)
381) call PetscLogEventRegister('MassBalance', &
382) logging%class_pflotran, &
383) logging%event_mass_balance,ierr);CHKERRQ(ierr)
384)
385) end subroutine LoggingCreate
386)
387) ! ************************************************************************** !
388)
389) subroutine LoggingCreateStage(stage_name,stage_id)
390) !
391) ! Creates a new custom stage
392) !
393) ! Author: Glenn Hammond
394) ! Date: 10/26/07
395) !
396)
397) implicit none
398)
399) character(len=MAXSTRINGLENGTH) :: stage_name
400) PetscInt :: stage_id
401)
402) character(len=MAXSTRINGLENGTH) :: full_stage_name
403) PetscErrorCode :: ierr
404)
405) ! this conditional prevents duplicate stages that can be generated during
406) ! multirealization simulations.
407) if (logging%setup_complete) return
408)
409) logging%stage_count = logging%stage_count + 1
410) full_stage_name = trim(stage_name) // ' Stage'
411) call PetscLogStageRegister(full_stage_name,stage_id,ierr);CHKERRQ(ierr)
412) stage_id = logging%stage_count
413)
414) end subroutine LoggingCreateStage
415)
416) ! ************************************************************************** !
417)
418) subroutine LoggingSetupComplete()
419) !
420) ! Sets flag that indicates that setup is complete.
421) !
422) ! Author: Glenn Hammond
423) ! Date: 06/30/14
424) !
425)
426) implicit none
427)
428) logging%setup_complete = PETSC_TRUE
429)
430) end subroutine LoggingSetupComplete
431)
432) ! ************************************************************************** !
433)
434) subroutine LoggingDestroy()
435) !
436) ! Deallocates a logging object
437) !
438) ! Author: Glenn Hammond
439) ! Date: 10/26/07
440) !
441)
442) implicit none
443)
444) ! all kinds of stuff needs to be added here.
445)
446) deallocate(logging)
447) nullify(logging)
448)
449) end subroutine LoggingDestroy
450)
451) end module Logging_module