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

generated by
Intel(R) C++/Fortran Compiler code-coverage tool
Web-Page Owner: Nobody