operations
It abstracts away all backend details and provides a type-safe interface
for all I/O tasks.
Key features:
- Type-safe sessions: specialised reader_session_t and writer_session_t
types for reading and writing operations, respectively.
- Automatic backend selection: based on compile-time options
- Resource cleanup: memory is automatically freed when sessions
go out of scope (using final subroutines).
- Simplified workflow - user only needs to manage a simple
open -> read/write -> close workflow, with no need for manual file handle
management or explicit cleanup calls.
@example
A typical usage pattern for reading data and writing data:
@code{.f90}
use m_io_session, only: writer_session_t, reader_session_t
implicit none
real, dimension(:,:,:), allocatable :: temp_field
type(writer_session_t) :: writer
type(reader_session_t) :: reader
! For writing data
call writer%open("output.bp")
call writer%write_data("temperature", temp_field)
call writer%close()
! Note: writer is automatically cleaned up when it goes out of scope
! For reading data
call reader%open("input.bp")
call reader%read_data("temperature", temp_field)
call reader%close()
! Note: reader is automatically cleaned up when it goes out of scope
@endcode
Note
Users should only use the types provided by this module. The lower-level
modules like m_io_base and m_io_backend are internal components and should
never be used directly in user code.
Public session types for user interaction
module~~m_io_session~~UsesGraph
module~m_io_session
m_io_session
module~m_base_backend
m_base_backend
module~m_io_session->module~m_base_backend
module~m_common
m_common
module~m_io_session->module~m_common
module~m_field
m_field
module~m_io_session->module~m_field
module~m_io_backend
m_io_backend
module~m_io_session->module~m_io_backend
module~m_io_base
m_io_base
module~m_io_session->module~m_io_base
module~m_logger
m_logger
module~m_io_session->module~m_logger
module~m_base_backend->module~m_common
module~m_base_backend->module~m_field
module~m_base_backend->module~m_logger
iso_c_binding
iso_c_binding
module~m_base_backend->iso_c_binding
m_mpi
m_mpi
module~m_base_backend->m_mpi
module~m_allocator
m_allocator
module~m_base_backend->module~m_allocator
module~m_mesh
m_mesh
module~m_base_backend->module~m_mesh
module~m_poisson_fft
m_poisson_fft
module~m_base_backend->module~m_poisson_fft
module~m_tdsops
m_tdsops
module~m_base_backend->module~m_tdsops
module~m_common->module~m_logger
module~m_common->m_mpi
module~m_field->module~m_common
module~m_field->iso_c_binding
module~m_io_backend->module~m_base_backend
module~m_io_backend->module~m_common
module~m_io_backend->module~m_field
module~m_io_backend->module~m_io_base
module~m_io_backend->module~m_logger
adios2
adios2
module~m_io_backend->adios2
cudafor
cudafor
module~m_io_backend->cudafor
module~m_io_backend->iso_c_binding
iso_fortran_env
iso_fortran_env
module~m_io_backend->iso_fortran_env
module~m_io_backend->m_mpi
module~m_nvtx
m_nvtx
module~m_io_backend->module~m_nvtx
module~m_io_base->module~m_base_backend
module~m_io_base->module~m_common
module~m_io_base->module~m_field
module~m_logger->iso_fortran_env
module~m_logger->m_mpi
module~m_allocator->module~m_common
module~m_allocator->module~m_field
module~m_mesh->module~m_common
module~m_mesh->module~m_field
module~m_mesh->module~m_logger
module~m_mesh->m_mpi
module~m_mesh_content
m_mesh_content
module~m_mesh->module~m_mesh_content
module~m_nvtx->iso_c_binding
module~m_poisson_fft->module~m_common
module~m_poisson_fft->module~m_field
module~m_poisson_fft->module~m_logger
module~m_poisson_fft->module~m_mesh
module~m_poisson_fft->module~m_tdsops
module~m_tdsops->module~m_common
module~m_tdsops->module~m_logger
module~m_mesh_content->module~m_common
module~m_mesh_content->module~m_logger
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
module~~m_io_session~~UsedByGraph
module~m_io_session
m_io_session
module~m_adm
m_adm
module~m_adm->module~m_io_session
module~m_turbine_model
m_turbine_model
module~m_adm->module~m_turbine_model
module~m_alm
m_alm
module~m_alm->module~m_io_session
module~m_alm->module~m_turbine_model
module~m_checkpoint_manager
m_checkpoint_manager
module~m_checkpoint_manager->module~m_io_session
module~m_checkpoint_state
m_checkpoint_state
module~m_checkpoint_manager->module~m_checkpoint_state
module~m_stats
m_stats
module~m_checkpoint_manager->module~m_stats
module~m_solver
m_solver
module~m_checkpoint_manager->module~m_solver
module~m_io_field_utils
m_io_field_utils
module~m_checkpoint_manager->module~m_io_field_utils
module~m_checkpoint_state->module~m_io_session
module~m_ibm
m_ibm
module~m_ibm->module~m_io_session
module~m_inflow_planes
m_inflow_planes
module~m_inflow_planes->module~m_io_session
module~m_snapshot_manager
m_snapshot_manager
module~m_snapshot_manager->module~m_io_session
module~m_snapshot_manager->module~m_solver
module~m_snapshot_manager->module~m_io_field_utils
module~m_stats->module~m_io_session
module~m_stats->module~m_solver
module~m_turbine_dummy
m_turbine_dummy
module~m_turbine_dummy->module~m_io_session
module~m_turbine_dummy->module~m_turbine_model
module~m_case_abl
m_case_abl
module~m_case_abl->module~m_inflow_planes
module~m_case_abl->module~m_turbine_model
module~m_turbine_setup
m_turbine_setup
module~m_case_abl->module~m_turbine_setup
module~m_base_case
m_base_case
module~m_case_abl->module~m_base_case
module~m_io_manager
m_io_manager
module~m_io_manager->module~m_checkpoint_manager
module~m_io_manager->module~m_checkpoint_state
module~m_io_manager->module~m_snapshot_manager
module~m_io_manager->module~m_stats
module~m_io_manager->module~m_solver
module~m_memcheck_build
m_memcheck_build
module~m_memcheck_build->module~m_ibm
module~m_memcheck_build->module~m_case_abl
module~m_memcheck_build->module~m_base_case
module~m_case_factory
m_case_factory
module~m_memcheck_build->module~m_case_factory
module~m_monitoring
m_monitoring
module~m_memcheck_build->module~m_monitoring
module~m_memcheck_context
m_memcheck_context
module~m_memcheck_build->module~m_memcheck_context
module~m_memcheck_report
m_memcheck_report
module~m_memcheck_build->module~m_memcheck_report
module~m_memcheck_estimate
m_memcheck_estimate
module~m_memcheck_build->module~m_memcheck_estimate
module~m_solver->module~m_ibm
module~m_turbine_model->module~m_checkpoint_state
module~m_turbine_setup->module~m_adm
module~m_turbine_setup->module~m_alm
module~m_turbine_setup->module~m_turbine_dummy
module~m_turbine_setup->module~m_io_manager
module~m_turbine_setup->module~m_solver
module~m_turbine_setup->module~m_turbine_model
module~m_base_case->module~m_io_manager
module~m_base_case->module~m_solver
module~m_base_case->module~m_monitoring
module~m_postprocess
m_postprocess
module~m_base_case->module~m_postprocess
module~m_case_channel
m_case_channel
module~m_case_channel->module~m_solver
module~m_case_channel->module~m_base_case
module~m_case_cylinder
m_case_cylinder
module~m_case_cylinder->module~m_solver
module~m_case_cylinder->module~m_base_case
module~m_case_factory->module~m_case_abl
module~m_case_factory->module~m_base_case
module~m_case_factory->module~m_case_channel
module~m_case_factory->module~m_case_cylinder
module~m_case_generic
m_case_generic
module~m_case_factory->module~m_case_generic
module~m_case_tgv
m_case_tgv
module~m_case_factory->module~m_case_tgv
module~m_case_wind_turbine
m_case_wind_turbine
module~m_case_factory->module~m_case_wind_turbine
module~m_case_generic->module~m_solver
module~m_case_generic->module~m_base_case
module~m_case_tgv->module~m_solver
module~m_case_tgv->module~m_base_case
module~m_case_wind_turbine->module~m_solver
module~m_case_wind_turbine->module~m_turbine_model
module~m_case_wind_turbine->module~m_turbine_setup
module~m_case_wind_turbine->module~m_base_case
module~m_io_field_utils->module~m_solver
module~m_monitoring->module~m_solver
module~m_postprocess->module~m_solver
program~x3d2_memcheck
x3d2_memcheck
program~x3d2_memcheck->module~m_memcheck_build
program~x3d2_memcheck->module~m_memcheck_context
program~x3d2_memcheck->module~m_memcheck_report
program~x3d2_memcheck->module~m_memcheck_estimate
module~m_cuda_memcheck_device
m_cuda_memcheck_device
module~m_cuda_memcheck_device->module~m_base_case
program~xcompact
xcompact
program~xcompact->module~m_base_case
program~xcompact->module~m_case_factory
module~m_memcheck_context->module~m_cuda_memcheck_device
module~m_memcheck_report->module~m_cuda_memcheck_device
module~m_memcheck_report->module~m_memcheck_context
module~m_memcheck_report->module~m_memcheck_estimate
module~m_memcheck_estimate->module~m_memcheck_context
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Derived Types
PRIMARY TYPE FOR READING DATA - Use this for all file reading operations
This is the only interface users should use for reading data.
Provides type-safe reading operations with automatic backend selection.
Read more…
Finalizations Procedures
final :: reader_session_finaliser
Type-Bound Procedures
procedure, public ::
is_session_open
procedure, public ::
is_session_functional
procedure, public ::
close => session_base_close
procedure, public ::
open => reader_session_open
generic, public ::
read_data => read_data_i8, read_data_integer, read_data_real, read_data_array_3d
PRIMARY TYPE FOR WRITING DATA - Use this for all file writing operations
This is the only interface users should use for writing data.
Provides type-safe writing operations with automatic backend selection.
Read more…
Finalizations Procedures
final :: writer_session_finaliser
Type-Bound Procedures
procedure, public ::
is_session_open
procedure, public ::
is_session_functional
procedure, public ::
close => session_base_close
procedure, public ::
open => writer_session_open
procedure, public ::
begin_step => writer_session_begin_step
procedure, public ::
end_step => writer_session_end_step
generic, public ::
write_data => write_data_i8, write_data_integer, write_data_real, write_data_array_3d
procedure, public ::
write_field_from_solver => session_write_field_from_solver
procedure, public ::
supports_device_field_write => session_supports_device_field_write
procedure, public ::
write_attribute => session_write_attribute