I/O architecture.
the I/O system. It establishes a polymorphic layer that allows the
high-level user session to interact with various I/O backends through a
consistent interface.
The architecture is designed in distinct layers:
User code
- interacts only with the Session layer
Session layer (m_io_session)
- manages all I/O complexity (file handles, state, etc.)
- instantiates the I/O backend selected at compile-time
- provides reader_session_t and writer_session_t for users
Backend layer (m_io_backend)
- concrete implementation of an I/O backed (e.g., ADIOS2)
- extends the abstract base types defined in this module
Base layer (m_io_base, this module)
- provides abstract io_reader_t, io_writer_t and io_file_t types
- deferred bindings make every backend implement the full interface at
compile time; only optional capabilities have default implementations
Note
This is an internal module and should not be used directly by users.
The sole public interface for I/O is the high-level session API provided in
m_io_session.
module~~m_io_base~~UsesGraph
module~m_io_base
m_io_base
module~m_base_backend
m_base_backend
module~m_io_base->module~m_base_backend
module~m_common
m_common
module~m_io_base->module~m_common
module~m_field
m_field
module~m_io_base->module~m_field
module~m_base_backend->module~m_common
module~m_base_backend->module~m_field
iso_c_binding
iso_c_binding
module~m_base_backend->iso_c_binding
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_mpi
m_mpi
module~m_common->module~m_mpi
module~m_field->module~m_common
module~m_allocator->module~m_common
module~m_allocator->module~m_field
iso_fortran_env
iso_fortran_env
module~m_allocator->iso_fortran_env
module~m_mesh->module~m_common
module~m_mesh->module~m_field
module~m_mesh->module~m_mpi
module~m_mesh->iso_fortran_env
module~m_mesh_content
m_mesh_content
module~m_mesh->module~m_mesh_content
module~m_mpi->iso_fortran_env
mpi
mpi
module~m_mpi->mpi
module~m_poisson_fft->module~m_common
module~m_poisson_fft->module~m_field
module~m_poisson_fft->module~m_mesh
module~m_poisson_fft->module~m_tdsops
module~m_tdsops->module~m_common
module~m_tdsops->iso_fortran_env
module~m_mesh_content->module~m_common
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_base~~UsedByGraph
module~m_io_base
m_io_base
module~m_io_backend
m_io_backend
module~m_io_backend->module~m_io_base
module~m_io_backend~2
m_io_backend
module~m_io_backend~2->module~m_io_base
module~m_io_field_utils
m_io_field_utils
module~m_io_field_utils->module~m_io_base
module~m_solver
m_solver
module~m_io_field_utils->module~m_solver
module~m_io_session
m_io_session
module~m_io_session->module~m_io_base
module~m_io_session->module~m_io_backend~2
module~m_checkpoint_manager
m_checkpoint_manager
module~m_checkpoint_manager->module~m_io_field_utils
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_checkpoint_manager->module~m_solver
module~m_checkpoint_state->module~m_io_session
module~m_ibm
m_ibm
module~m_ibm->module~m_io_session
module~m_snapshot_manager
m_snapshot_manager
module~m_snapshot_manager->module~m_io_field_utils
module~m_snapshot_manager->module~m_io_session
module~m_snapshot_manager->module~m_solver
module~m_stats->module~m_io_session
module~m_stats->module~m_solver
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_solver->module~m_ibm
module~m_base_case
m_base_case
module~m_base_case->module~m_io_manager
module~m_base_case->module~m_solver
module~m_monitoring
m_monitoring
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_generic
m_case_generic
module~m_case_generic->module~m_solver
module~m_case_generic->module~m_base_case
module~m_case_tgv
m_case_tgv
module~m_case_tgv->module~m_solver
module~m_case_tgv->module~m_base_case
module~m_monitoring->module~m_solver
module~m_postprocess->module~m_solver
program~xcompact
xcompact
program~xcompact->module~m_base_case
program~xcompact->module~m_case_channel
program~xcompact->module~m_case_cylinder
program~xcompact->module~m_case_generic
program~xcompact->module~m_case_tgv
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.
Variables
Type
Visibility Attributes
Name
Initial
integer,
public,
parameter
::
io_mode_read
=
1
integer,
public,
parameter
::
io_mode_write
=
2
Derived Types
Base file handle for I/O operations
Type-Bound Procedures
procedure(file_op), public, deferred ::
close
procedure(file_op), public, deferred ::
begin_step
procedure(file_op), public, deferred ::
end_step
procedure, public ::
is_file_functional => base_is_file_functional
Base I/O reader type for polymorphic usage
Type-Bound Procedures
procedure(reader_init), public, deferred ::
init
procedure(reader_open), public, deferred ::
open
procedure(reader_finalise), public, deferred ::
finalise
generic, public ::
read_data => read_data_i8, read_data_integer, read_data_real, read_data_array_3d
procedure(read_data_i8), public, deferred ::
read_data_i8
procedure(read_data_integer), public, deferred ::
read_data_integer
procedure(read_data_real), public, deferred ::
read_data_real
procedure(read_data_array_3d), public, deferred ::
read_data_array_3d
Base I/O writer type for polymorphic usage
Type-Bound Procedures
procedure(writer_init), public, deferred ::
init
procedure(writer_open), public, deferred ::
open
procedure(writer_finalise), public, deferred ::
finalise
procedure, public ::
supports_device_field_write => base_supports_device_field_write
generic, public ::
write_data => write_data_i8, write_data_integer, write_data_real, write_data_array_3d
procedure(write_data_i8), public, deferred ::
write_data_i8
procedure(write_data_integer), public, deferred ::
write_data_integer
procedure(write_data_real), public, deferred ::
write_data_real
procedure(write_data_array_3d), public, deferred ::
write_data_array_3d
procedure(write_field_from_solver), public, deferred ::
write_field_from_solver
generic, public ::
write_attribute => write_attribute_string, write_attribute_array_1d_real
procedure(write_attribute_string), public, deferred ::
write_attribute_string
procedure(write_attribute_array_1d_real), public, deferred ::
write_attribute_array_1d_real