error_handling_m Module

Contains functionality for error handling


Uses

  • module~~error_handling_m~~UsesGraph module~error_handling_m error_handling_m module~comm_handling_m comm_handling_m module~error_handling_m->module~comm_handling_m module~precision_m precision_m module~error_handling_m->module~precision_m module~screen_io_m screen_io_m module~error_handling_m->module~screen_io_m module~status_codes_m status_codes_m module~error_handling_m->module~status_codes_m mpi mpi module~error_handling_m->mpi netcdf netcdf module~error_handling_m->netcdf module~comm_handling_m->mpi module~precision_m->mpi module~precision_m->netcdf iso_c_binding iso_c_binding module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env module~screen_io_m->module~precision_m module~screen_io_m->netcdf module~screen_io_m->iso_fortran_env

Used by

  • module~~error_handling_m~~UsedByGraph module~error_handling_m error_handling_m module~boundaries_perp_m boundaries_perp_m module~boundaries_perp_m->module~error_handling_m module~mesh_cart_m mesh_cart_m module~boundaries_perp_m->module~mesh_cart_m module~circular_equilibrium_m circular_equilibrium_m module~circular_equilibrium_m->module~error_handling_m module~params_equi_circular_m params_equi_circular_m module~circular_equilibrium_m->module~params_equi_circular_m module~circular_toroidal_equilibrium_m circular_toroidal_equilibrium_m module~circular_toroidal_equilibrium_m->module~error_handling_m module~kisslinger_m kisslinger_m module~circular_toroidal_equilibrium_m->module~kisslinger_m module~params_equi_circular_toroidal_m params_equi_circular_toroidal_m module~circular_toroidal_equilibrium_m->module~params_equi_circular_toroidal_m module~connection_length_m connection_length_m module~connection_length_m->module~error_handling_m module~fieldline_tracer_m fieldline_tracer_m module~connection_length_m->module~fieldline_tracer_m module~csrmat_m csrmat_m module~csrmat_m->module~error_handling_m module~device_handling_m device_handling_m module~device_handling_m->module~error_handling_m module~direct_solver_mkl_s direct_solver_MKL_s module~direct_solver_mkl_s->module~error_handling_m module~divertor_equilibrium_m divertor_equilibrium_m module~divertor_equilibrium_m->module~error_handling_m module~dommaschk_equilibrium_m dommaschk_equilibrium_m module~dommaschk_equilibrium_m->module~error_handling_m module~dommaschk_equilibrium_m->module~fieldline_tracer_m module~interpolation_m interpolation_m module~dommaschk_equilibrium_m->module~interpolation_m module~dommaschk_equilibrium_m->module~kisslinger_m module~params_equi_dommaschk_m params_equi_dommaschk_m module~dommaschk_equilibrium_m->module~params_equi_dommaschk_m module~dommaschk_equilibrium_netcdf_s dommaschk_equilibrium_netcdf_s module~dommaschk_equilibrium_netcdf_s->module~error_handling_m module~dommaschk_equilibrium_netcdf_s->module~dommaschk_equilibrium_m module~equilibrium_factory_m equilibrium_factory_m module~equilibrium_factory_m->module~error_handling_m module~equilibrium_factory_m->module~circular_equilibrium_m module~equilibrium_factory_m->module~circular_toroidal_equilibrium_m module~equilibrium_factory_m->module~dommaschk_equilibrium_m module~flare_equilibrium_m flare_equilibrium_m module~equilibrium_factory_m->module~flare_equilibrium_m module~salpha_equilibrium_m salpha_equilibrium_m module~equilibrium_factory_m->module~salpha_equilibrium_m module~numerical_equilibrium_m numerical_equilibrium_m module~equilibrium_factory_m->module~numerical_equilibrium_m module~slab_equilibrium_m slab_equilibrium_m module~equilibrium_factory_m->module~slab_equilibrium_m module~carthy_equilibrium_m carthy_equilibrium_m module~equilibrium_factory_m->module~carthy_equilibrium_m module~cerfons_equilibrium_m cerfons_equilibrium_m module~equilibrium_factory_m->module~cerfons_equilibrium_m module~error_handler_s error_handler_s module~error_handler_s->module~error_handling_m module~error_info_s error_info_s module~error_info_s->module~error_handling_m module~fieldline_tracer_m->module~error_handling_m module~flare_equilibrium_m->module~error_handling_m module~flare_equilibrium_m->module~kisslinger_m module~params_equi_flare_m params_equi_flare_m module~flare_equilibrium_m->module~params_equi_flare_m module~helmholtz_operator_m helmholtz_operator_m module~helmholtz_operator_m->module~error_handling_m module~helmholtz_operator_m->module~boundaries_perp_m module~helmholtz_operator_m->module~csrmat_m module~helmholtz_operator_m->module~mesh_cart_m module~helmholtz_solver_petsc_s helmholtz_solver_petsc_s module~helmholtz_solver_petsc_s->module~error_handling_m module~helmholtz_solver_petsc_s->module~boundaries_perp_m module~immersed_factory_m immersed_factory_m module~immersed_factory_m->module~error_handling_m module~immersed_rho_m immersed_rho_m module~immersed_factory_m->module~immersed_rho_m module~immersed_trace_m immersed_trace_m module~immersed_factory_m->module~immersed_trace_m module~immersed_factory_m->module~mesh_cart_m module~immersed_m immersed_m module~immersed_factory_m->module~immersed_m module~immersed_vessel_m immersed_vessel_m module~immersed_factory_m->module~immersed_vessel_m module~immersed_netcdf_s immersed_netcdf_s module~immersed_netcdf_s->module~error_handling_m module~immersed_netcdf_s->module~immersed_m module~immersed_rho_m->module~error_handling_m module~immersed_rho_m->module~mesh_cart_m module~immersed_rho_m->module~immersed_m module~immersed_trace_m->module~error_handling_m module~immersed_trace_m->module~connection_length_m module~immersed_trace_m->module~mesh_cart_m module~immersed_trace_m->module~immersed_m module~interpolation_m->module~error_handling_m module~kisslinger_m->module~error_handling_m module~mesh_cart_m->module~error_handling_m module~mesh_cart_m->module~slab_equilibrium_m module~multigrid_solver_s multigrid_solver_s module~multigrid_solver_s->module~error_handling_m module~multigrid_solver_s->module~boundaries_perp_m module~multigrid_solver_m multigrid_solver_m module~multigrid_solver_s->module~multigrid_solver_m module~params_equi_circular_m->module~error_handling_m module~params_equi_circular_toroidal_m->module~error_handling_m module~params_equi_dommaschk_m->module~error_handling_m module~params_equi_flare_m->module~error_handling_m module~params_equi_salpha_m params_equi_salpha_m module~params_equi_salpha_m->module~error_handling_m module~params_equi_slab_m params_equi_slab_m module~params_equi_slab_m->module~error_handling_m module~parbnd_taylor_m parbnd_taylor_m module~parbnd_taylor_m->module~error_handling_m module~parbnd_taylor_m->module~connection_length_m module~parbnd_taylor_m->module~fieldline_tracer_m module~parbnd_taylor_m->module~mesh_cart_m module~parbnd_taylor_netcdf_s parbnd_taylor_netcdf_s module~parbnd_taylor_netcdf_s->module~error_handling_m module~parbnd_taylor_netcdf_s->module~parbnd_taylor_m module~salpha_equilibrium_m->module~error_handling_m module~salpha_equilibrium_m->module~params_equi_salpha_m module~snapshots_test_diffusion_m snapshots_test_diffusion_m module~snapshots_test_diffusion_m->module~error_handling_m module~snapshots_test_diffusion_m->module~mesh_cart_m module~solver3d_factory_m solver3d_factory_m module~solver3d_factory_m->module~error_handling_m module~solver3d_m solver3d_m module~solver3d_factory_m->module~solver3d_m module~solver3d_m->module~error_handling_m program~benchmark_helmholtz_solvers benchmark_helmholtz_solvers program~benchmark_helmholtz_solvers->module~error_handling_m program~benchmark_helmholtz_solvers->module~device_handling_m program~benchmark_helmholtz_solvers->module~equilibrium_factory_m program~benchmark_helmholtz_solvers->module~mesh_cart_m module~helmholtz_netcdfio_m helmholtz_netcdfio_m program~benchmark_helmholtz_solvers->module~helmholtz_netcdfio_m module~helmholtz_solver_factory_m helmholtz_solver_factory_m program~benchmark_helmholtz_solvers->module~helmholtz_solver_factory_m module~multigrid_m multigrid_m program~benchmark_helmholtz_solvers->module~multigrid_m module~testfunctions_m testfunctions_m program~benchmark_helmholtz_solvers->module~testfunctions_m program~diagnose_poincare diagnose_poincare program~diagnose_poincare->module~error_handling_m program~diagnose_poincare->module~equilibrium_factory_m program~diagnose_poincare->module~fieldline_tracer_m module~coords_polar_m coords_polar_m program~diagnose_poincare->module~coords_polar_m program~test_diffusion test_diffusion program~test_diffusion->module~error_handling_m program~test_diffusion->module~csrmat_m program~test_diffusion->module~equilibrium_factory_m program~test_diffusion->module~fieldline_tracer_m program~test_diffusion->module~mesh_cart_m program~test_diffusion->module~snapshots_test_diffusion_m module~auxiliaries_test_diffusion_m auxiliaries_test_diffusion_m program~test_diffusion->module~auxiliaries_test_diffusion_m module~map_factory_m map_factory_m program~test_diffusion->module~map_factory_m module~vis_vtk3d_m vis_vtk3d_m program~test_diffusion->module~vis_vtk3d_m module~analytic_divertor_equilibrium_m analytic_divertor_equilibrium_m module~analytic_divertor_equilibrium_m->module~divertor_equilibrium_m module~auxiliaries_test_diffusion_m->module~csrmat_m module~auxiliaries_test_diffusion_m->module~fieldline_tracer_m module~auxiliaries_test_diffusion_m->module~mesh_cart_m module~mpi_mapping_auxiliaries_m mpi_mapping_auxiliaries_m module~auxiliaries_test_diffusion_m->module~mpi_mapping_auxiliaries_m module~csr_samples_m csr_samples_m module~csr_samples_m->module~csrmat_m module~helmholtz_netcdfio_m->module~csrmat_m module~helmholtz_netcdfio_m->module~helmholtz_operator_m module~helmholtz_netcdfio_m->module~mesh_cart_m module~helmholtz_solver_direct_s helmholtz_solver_direct_s module~helmholtz_solver_direct_s->module~boundaries_perp_m module~helmholtz_solver_direct_s->module~helmholtz_operator_m module~helmholtz_solver_factory_m->module~device_handling_m module~helmholtz_solver_factory_m->module~multigrid_m module~splitting_m splitting_m module~helmholtz_solver_factory_m->module~splitting_m module~helpers_m helpers_m module~helpers_m->module~csrmat_m module~immersed_m->module~mesh_cart_m module~immersed_vessel_m->module~mesh_cart_m module~immersed_vessel_m->module~immersed_m module~map_factory_m->module~csrmat_m module~map_factory_m->module~mesh_cart_m module~map_factory_s map_factory_s module~map_factory_s->module~dommaschk_equilibrium_m module~map_factory_s->module~fieldline_tracer_m module~map_factory_s->module~interpolation_m module~map_factory_s->module~map_factory_m module~map_factory_s->module~mpi_mapping_auxiliaries_m module~mesh_2d_netcdfio_s mesh_2d_netcdfio_s module~mesh_2d_netcdfio_s->module~mesh_cart_m module~mesh_cart_build_s mesh_cart_build_s module~mesh_cart_build_s->module~mesh_cart_m module~mesh_cart_communicate_s mesh_cart_communicate_s module~mesh_cart_communicate_s->module~mesh_cart_m module~mesh_cart_communicate_s->module~mpi_mapping_auxiliaries_m module~mesh_cart_reorder_s mesh_cart_reorder_s module~mesh_cart_reorder_s->module~mesh_cart_m module~mesh_cart_s mesh_cart_s module~mesh_cart_s->module~mesh_cart_m module~mpi_mapping_auxiliaries_m->module~csrmat_m module~multigrid_m->module~boundaries_perp_m module~multigrid_m->module~csrmat_m module~multigrid_m->module~mesh_cart_m module~multigrid_solver_m->module~boundaries_perp_m module~multigrid_solver_m->module~csrmat_m module~multigrid_solver_m->module~helmholtz_operator_m module~multigrid_solver_m->module~mesh_cart_m module~multigrid_solver_m->module~multigrid_m module~multigrid_solver_m->module~splitting_m module~numerical_equilibrium_m->module~divertor_equilibrium_m module~paccx_m PAccX_m module~paccx_m->module~device_handling_m module~polar_grid_m polar_grid_m module~polar_grid_m->module~circular_equilibrium_m module~polar_grid_m->module~slab_equilibrium_m module~polar_grid_m->module~coords_polar_m module~polar_map_factory_m polar_map_factory_m module~polar_map_factory_m->module~csrmat_m module~polar_map_factory_m->module~interpolation_m module~polar_map_factory_m->module~mesh_cart_m module~polar_map_factory_m->module~polar_grid_m module~polar_map_factory_m->module~coords_polar_m module~slab_equilibrium_m->module~params_equi_slab_m module~solver3d_cerfacs_s solver3d_CERFACS_s module~solver3d_cerfacs_s->module~solver3d_m module~solver3d_pim_s solver3d_PIM_s module~solver3d_pim_s->module~solver3d_m module~splitting_m->module~csrmat_m module~splitting_m->module~mesh_cart_m module~testfunctions_m->module~circular_equilibrium_m module~testfunctions_m->module~numerical_equilibrium_m module~testfunctions_m->module~slab_equilibrium_m module~vis_vtk3d_m->module~fieldline_tracer_m module~vis_vtk3d_m->module~mesh_cart_m module~zonal_averages_factory_m zonal_averages_factory_m module~zonal_averages_factory_m->module~csrmat_m module~zonal_averages_factory_m->module~mesh_cart_m module~zonal_averages_factory_m->module~polar_grid_m module~zonal_averages_factory_m->module~coords_polar_m module~carthy_equilibrium_m->module~analytic_divertor_equilibrium_m module~cerfons_equilibrium_m->module~analytic_divertor_equilibrium_m module~coords_polar_m->module~slab_equilibrium_m module~helmholtz_solver_mgmres_cxx_s helmholtz_solver_mgmres_cxx_s module~helmholtz_solver_mgmres_cxx_s->module~multigrid_m module~helmholtz_solver_mgmres_cxx_s->module~paccx_m module~initialise_numerical_equilibrium_s initialise_numerical_equilibrium_s module~initialise_numerical_equilibrium_s->module~numerical_equilibrium_m module~multigrid_s multigrid_s module~multigrid_s->module~multigrid_m module~polar_grid_s polar_grid_s module~polar_grid_s->module~polar_grid_m module~splitting_gauss_seidel_cpu_s splitting_gauss_seidel_cpu_s module~splitting_gauss_seidel_cpu_s->module~splitting_m module~splitting_gauss_seidel_redblack_cpu_s splitting_gauss_seidel_redblack_cpu_s module~splitting_gauss_seidel_redblack_cpu_s->module~splitting_m module~splitting_jacobi_cpu_s splitting_jacobi_cpu_s module~splitting_jacobi_cpu_s->module~splitting_m module~safety_factor_m safety_factor_m module~safety_factor_m->module~coords_polar_m

Enumerations

enum, bind(c)

Enumerators

enumerator:: ERRORS_RETURN = 0
enumerator:: ERRORS_ARE_FATAL = 1

Description

Enumerator defining the error mode


Derived Types

type, public ::  error_info_t

Specifies additional user defined output for an error message that contains more than a simple message. May have a descriptive string and one dimensional integer and real arrays to print out variables.

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: c_info

Additional user defined string message

integer, public, dimension(:), allocatable :: i_info

Additional user defined integer variables

real(kind=FP), public, dimension(:), allocatable :: r_info

Additional user defined real variables

Type-Bound Procedures

procedure, public :: print => print_error_info

type, public ::  error_handler_t

Type that can be used to handle errors for multiple code instances at once. Each calling code may create a singleton instance of this type. There is no initialize routine, the instance should be initialized via the constructor.

Components

Type Visibility Attributes Name Initial
character(len=32), public :: handler_name

Name of the error handler instance

integer, public :: error_mode

Error mode chosen, can be either ERRORS_RETURN or ERRORS_ARE_FATAL

integer, public :: netcdf_error_code

Error code that is associated with NetCDF errors. Used when handling NetCDF errors.

logical, public :: first_time_warning = .true.

Indicates that a warning has already been printed before or not

Type-Bound Procedures

procedure, public :: set_error_mode => error_handler_set_error_mode
procedure, public :: handle_error => error_handler_handle_error
procedure, public :: handle_error_netcdf => error_handler_handle_error_netcdf

Subroutines

public subroutine set_error_mode(err_mode)

Sets the way PARALLAX responds to internal errors. When set to errors return, the error is logged into stderr without program termination, expecting that the error will be handled by the calling routine. When set to errors are fatal, the code will be terminated with error stop.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: err_mode

Error mode: Use ERRORS_RETURN or ERRORS_ARE_FATAL. Other values are ignored and ERRORS_ARE_FATAL is used.

public subroutine handle_error(message, status_code, line_number, file_name, additional_info)

Logs an error to stderr and stops the program. If status_code is PARALLAX_SUCCESS, this subroutine will do nothing.

Read more…

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: message

Error or warning message

integer, intent(in) :: status_code

Error or warning code

integer, intent(in) :: line_number

Line number where error or warning occured, i.e. LINE

character(len=*), intent(in) :: file_name

File name where error or warning occured, i.e. FILE

type(error_info_t), intent(in), optional :: additional_info

Additional information

public subroutine handle_error_netcdf(istatus, line_number, file_name)

Wrapper of handle error for calls of NetCDF functions. Checks for NetCDF errors and prints a standardized error message.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: istatus

Status integer returned by the NetCDF function

integer, intent(in) :: line_number

Line number where error or warning occured, i.e. LINE

character(len=*), intent(in) :: file_name

File name where error or warning occured, i.e. FILE