mod_kinds Module

Core kind parameters, mathematical constants, and global utility routines.

This module serves as the foundational precision manager for the solver. It centralizes the selection of floating-point precision (real64) and provides a set of universally available mathematical constants to avoid hard-coded magic numbers throughout the codebase.

Additionally, it provides critical infrastructure for: 1. Error Handling: A standardized fatal_error mechanism to ensure consistent error reporting and clean termination. 2. String Manipulation: Utilities like lowercase for case-insensitive namelist and file processing.


Uses

  • module~~mod_kinds~~UsesGraph module~mod_kinds mod_kinds iso_fortran_env iso_fortran_env module~mod_kinds->iso_fortran_env

Used by

  • module~~mod_kinds~~UsedByGraph module~mod_kinds mod_kinds module~mod_bc mod_bc module~mod_bc->module~mod_kinds module~mod_input mod_input module~mod_bc->module~mod_input module~mod_mesh_types mod_mesh_types module~mod_bc->module~mod_mesh_types module~mod_energy mod_energy module~mod_energy->module~mod_kinds module~mod_energy->module~mod_bc module~mod_fields mod_fields module~mod_energy->module~mod_fields module~mod_energy->module~mod_input module~mod_energy->module~mod_mesh_types module~mod_mpi_flow mod_mpi_flow module~mod_energy->module~mod_mpi_flow module~mod_profiler mod_profiler module~mod_energy->module~mod_profiler module~mod_fields->module~mod_kinds module~mod_fields->module~mod_bc module~mod_fields->module~mod_input module~mod_fields->module~mod_mesh_types module~mod_flow_projection mod_flow_projection module~mod_flow_projection->module~mod_kinds module~mod_flow_projection->module~mod_bc module~mod_flow_projection->module~mod_fields module~mod_flow_projection->module~mod_input module~mod_flow_projection->module~mod_mesh_types module~mod_flow_projection->module~mod_mpi_flow module~mod_flow_projection->module~mod_profiler module~mod_transport_properties mod_transport_properties module~mod_flow_projection->module~mod_transport_properties module~mod_input->module~mod_kinds module~mod_mesh_io mod_mesh_io module~mod_mesh_io->module~mod_kinds module~mod_mesh_io->module~mod_mesh_types module~mod_mesh_types->module~mod_kinds module~mod_mpi_flow->module~mod_kinds module~mod_mpi_flow->module~mod_mesh_types module~mod_mpi_radiation mod_mpi_radiation module~mod_mpi_radiation->module~mod_kinds module~mod_output mod_output module~mod_output->module~mod_kinds module~mod_output->module~mod_energy module~mod_output->module~mod_fields module~mod_output->module~mod_flow_projection module~mod_output->module~mod_input module~mod_output->module~mod_mesh_types module~mod_output->module~mod_mpi_flow module~mod_species mod_species module~mod_output->module~mod_species module~mod_output->module~mod_transport_properties module~mod_profiler->module~mod_kinds module~mod_species->module~mod_kinds module~mod_species->module~mod_bc module~mod_species->module~mod_fields module~mod_species->module~mod_flow_projection module~mod_species->module~mod_input module~mod_species->module~mod_mesh_types module~mod_species->module~mod_mpi_flow module~mod_species->module~mod_transport_properties module~mod_transport_properties->module~mod_kinds module~mod_transport_properties->module~mod_input module~mod_transport_properties->module~mod_mesh_types module~mod_transport_properties->module~mod_mpi_flow program~lowmach_react_hex lowmach_react_hex program~lowmach_react_hex->module~mod_kinds program~lowmach_react_hex->module~mod_bc program~lowmach_react_hex->module~mod_energy program~lowmach_react_hex->module~mod_fields program~lowmach_react_hex->module~mod_flow_projection program~lowmach_react_hex->module~mod_input program~lowmach_react_hex->module~mod_mesh_io program~lowmach_react_hex->module~mod_mesh_types program~lowmach_react_hex->module~mod_mpi_flow program~lowmach_react_hex->module~mod_mpi_radiation program~lowmach_react_hex->module~mod_output program~lowmach_react_hex->module~mod_profiler program~lowmach_react_hex->module~mod_species program~lowmach_react_hex->module~mod_transport_properties proc~flow_allgather_owned_matrix mod_mpi_flow::flow_allgather_owned_matrix proc~flow_allgather_owned_matrix->module~mod_profiler proc~flow_allgather_owned_matrix_inplace mod_mpi_flow::flow_allgather_owned_matrix_inplace proc~flow_allgather_owned_matrix_inplace->module~mod_profiler proc~flow_allgather_owned_scalar mod_mpi_flow::flow_allgather_owned_scalar proc~flow_allgather_owned_scalar->module~mod_profiler proc~flow_allgather_owned_v4 mod_mpi_flow::flow_allgather_owned_v4 proc~flow_allgather_owned_v4->module~mod_profiler proc~flow_allreduce_global_scalar mod_mpi_flow::flow_allreduce_global_scalar proc~flow_allreduce_global_scalar->module~mod_profiler proc~flow_allreduce_global_vector mod_mpi_flow::flow_allreduce_global_vector proc~flow_allreduce_global_vector->module~mod_profiler proc~flow_exchange_cell_matrix mod_mpi_flow::flow_exchange_cell_matrix proc~flow_exchange_cell_matrix->module~mod_profiler proc~flow_exchange_cell_scalar mod_mpi_flow::flow_exchange_cell_scalar proc~flow_exchange_cell_scalar->module~mod_profiler proc~flow_exchange_face_scalar mod_mpi_flow::flow_exchange_face_scalar proc~flow_exchange_face_scalar->module~mod_profiler proc~flow_gather_owned_matrix_root mod_mpi_flow::flow_gather_owned_matrix_root proc~flow_gather_owned_matrix_root->module~mod_profiler proc~flow_gather_owned_scalar_root mod_mpi_flow::flow_gather_owned_scalar_root proc~flow_gather_owned_scalar_root->module~mod_profiler proc~flow_global_dot_owned mod_mpi_flow::flow_global_dot_owned proc~flow_global_dot_owned->module~mod_profiler proc~flow_global_dots_owned mod_mpi_flow::flow_global_dots_owned proc~flow_global_dots_owned->module~mod_profiler proc~flow_global_max_owned mod_mpi_flow::flow_global_max_owned proc~flow_global_max_owned->module~mod_profiler proc~flow_global_sum_owned mod_mpi_flow::flow_global_sum_owned proc~flow_global_sum_owned->module~mod_profiler proc~flow_global_two_dots_owned mod_mpi_flow::flow_global_two_dots_owned proc~flow_global_two_dots_owned->module~mod_profiler proc~pressure_matvec mod_flow_projection::pressure_matvec proc~pressure_matvec->module~mod_profiler proc~update_transport_properties mod_transport_properties::update_transport_properties proc~update_transport_properties->module~mod_profiler

Variables

Type Visibility Attributes Name Initial
real(kind=rk), public, parameter :: half = 0.5_rk
integer, public, parameter :: name_len = 64
real(kind=rk), public, parameter :: one = 1.0_rk
integer, public, parameter :: path_len = 256
integer, public, parameter :: rk = real64

Working real precision parameter (Double Precision). All physical fields and numerical coefficients must use this kind.

real(kind=rk), public, parameter :: tiny_safe = 1.0e-300_rk

A very small positive value used for safe divisions and tolerance checks. Designed to be well above the underflow limit of double precision.

real(kind=rk), public, parameter :: two = 2.0_rk
real(kind=rk), public, parameter :: zero = 0.0_rk

Functions

public pure function lowercase(text) result(out)

Converts an input string to all lowercase characters.

Read more…

Arguments

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

The source string to convert.

Return Value character(len=len)


Subroutines

public subroutine fatal_error(scope, message)

Aborts the simulation with a formatted error message.

Read more…

Arguments

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

The name of the module or feature (e.g., "mod_input").

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

Descriptive message explaining why the simulation failed.