m_io_field_utils Module

operations

types that handle the low-level tasks required for writing field data Its primary functionalities include: - Data sub-sampling (striding) - applying a stride to data to reduce the size of the output files - Parallel I/O calculations - determining correct global shapes, local starts, and counts for data distributed across multiple MPI ranks - Data management - handling the setup, cleanup, and buffering of field data in preparation for asynchronous I/O operations


Uses

  • module~~m_io_field_utils~~UsesGraph module~m_io_field_utils m_io_field_utils module~m_common m_common module~m_io_field_utils->module~m_common module~m_field m_field module~m_io_field_utils->module~m_field module~m_io_base m_io_base module~m_io_field_utils->module~m_io_base module~m_solver m_solver module~m_io_field_utils->module~m_solver mpi mpi module~m_common->mpi module~m_field->module~m_common module~m_io_base->module~m_common module~m_solver->module~m_common module~m_solver->module~m_field iso_fortran_env iso_fortran_env module~m_solver->iso_fortran_env module~m_allocator m_allocator module~m_solver->module~m_allocator module~m_base_backend m_base_backend module~m_solver->module~m_base_backend module~m_config m_config module~m_solver->module~m_config module~m_ibm m_ibm module~m_solver->module~m_ibm module~m_mesh m_mesh module~m_solver->module~m_mesh module~m_tdsops m_tdsops module~m_solver->module~m_tdsops module~m_time_integrator m_time_integrator module~m_solver->module~m_time_integrator module~m_vector_calculus m_vector_calculus module~m_solver->module~m_vector_calculus module~m_solver->mpi module~m_allocator->module~m_common module~m_allocator->module~m_field module~m_allocator->iso_fortran_env module~m_base_backend->module~m_common module~m_base_backend->module~m_field module~m_base_backend->module~m_allocator module~m_base_backend->module~m_mesh module~m_base_backend->module~m_tdsops module~m_base_backend->mpi module~m_poisson_fft m_poisson_fft module~m_base_backend->module~m_poisson_fft module~m_config->module~m_common module~m_config->iso_fortran_env module~m_ibm->module~m_common module~m_ibm->module~m_field module~m_ibm->iso_fortran_env module~m_ibm->module~m_allocator module~m_ibm->module~m_base_backend module~m_ibm->module~m_mesh module~m_ibm->mpi module~m_io_session m_io_session module~m_ibm->module~m_io_session module~m_mesh->module~m_common module~m_mesh->module~m_field module~m_mesh->iso_fortran_env module~m_mesh->mpi module~m_mesh_content m_mesh_content module~m_mesh->module~m_mesh_content module~m_tdsops->module~m_common module~m_tdsops->iso_fortran_env module~m_time_integrator->module~m_common module~m_time_integrator->module~m_field module~m_time_integrator->module~m_allocator module~m_time_integrator->module~m_base_backend module~m_vector_calculus->module~m_common module~m_vector_calculus->module~m_field module~m_vector_calculus->iso_fortran_env module~m_vector_calculus->module~m_allocator module~m_vector_calculus->module~m_base_backend module~m_vector_calculus->module~m_tdsops module~m_io_session->module~m_common module~m_io_session->module~m_io_base module~m_io_backend m_io_backend module~m_io_session->module~m_io_backend module~m_mesh_content->module~m_common 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_io_backend->module~m_common module~m_io_backend->module~m_io_base module~m_io_backend->mpi adios2 adios2 module~m_io_backend->adios2

Used by

  • module~~m_io_field_utils~~UsedByGraph module~m_io_field_utils m_io_field_utils module~m_checkpoint_manager m_checkpoint_manager module~m_checkpoint_manager->module~m_io_field_utils module~m_snapshot_manager m_snapshot_manager module~m_snapshot_manager->module~m_io_field_utils module~m_io_manager m_io_manager module~m_io_manager->module~m_checkpoint_manager module~m_io_manager->module~m_snapshot_manager module~m_base_case m_base_case module~m_base_case->module~m_io_manager module~m_case_channel m_case_channel module~m_case_channel->module~m_base_case module~m_case_generic m_case_generic module~m_case_generic->module~m_base_case module~m_case_tgv m_case_tgv module~m_case_tgv->module~m_base_case program~xcompact xcompact program~xcompact->module~m_base_case program~xcompact->module~m_case_channel program~xcompact->module~m_case_generic program~xcompact->module~m_case_tgv

Derived Types

type, public ::  field_buffer_map_t

Components

Type Visibility Attributes Name Initial
character(len=32), public :: field_name
real(kind=dp), public, dimension(:, :, :), allocatable :: buffer

type, public ::  field_ptr_t

Components

Type Visibility Attributes Name Initial
class(field_t), public, pointer :: ptr => null()

Functions

public function stride_data(input_data, dims, stride, output_dims_out) result(output_data)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), dimension(:, :, :) :: input_data
integer, intent(in), dimension(3) :: dims
integer, intent(in), dimension(3) :: stride
integer, intent(out), dimension(3) :: output_dims_out

Return Value real(kind=dp), dimension(:, :, :), allocatable


Subroutines

public subroutine stride_data_to_buffer(input_data, dims, stride, out_buffer, output_dims_out)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), dimension(:, :, :) :: input_data
integer, intent(in), dimension(3) :: dims
integer, intent(in), dimension(3) :: stride
real(kind=dp), intent(inout), dimension(:, :, :), allocatable :: out_buffer
integer, intent(out), dimension(3) :: output_dims_out

public subroutine get_output_dimensions(shape_dims, start_dims, count_dims, stride_factors, output_shape, output_start, output_count, output_dims_local, last_shape_dims, last_stride_factors, last_output_shape)

Arguments

Type IntentOptional Attributes Name
integer(kind=i8), intent(in), dimension(3) :: shape_dims
integer(kind=i8), intent(in), dimension(3) :: start_dims
integer(kind=i8), intent(in), dimension(3) :: count_dims
integer, intent(in), dimension(3) :: stride_factors
integer(kind=i8), intent(out), dimension(3) :: output_shape
integer(kind=i8), intent(out), dimension(3) :: output_start
integer(kind=i8), intent(out), dimension(3) :: output_count
integer, intent(out), dimension(3) :: output_dims_local
integer(kind=i8), intent(inout), optional, dimension(3) :: last_shape_dims
integer, intent(inout), optional, dimension(3) :: last_stride_factors
integer(kind=i8), intent(inout), optional, dimension(3) :: last_output_shape

public subroutine generate_coordinates(solver, writer, file, shape_dims, start_dims, count_dims, data_loc, coords_x, coords_y, coords_z)

Arguments

Type IntentOptional Attributes Name
class(solver_t), intent(in) :: solver
class(io_writer_t), intent(inout) :: writer
class(io_file_t), intent(inout) :: file
integer(kind=i8), intent(in), dimension(3) :: shape_dims
integer(kind=i8), intent(in), dimension(3) :: start_dims
integer(kind=i8), intent(in), dimension(3) :: count_dims
integer, intent(in) :: data_loc
real(kind=dp), intent(inout), dimension(:, :, :), allocatable :: coords_x
real(kind=dp), intent(inout), dimension(:, :, :), allocatable :: coords_y
real(kind=dp), intent(inout), dimension(:, :, :), allocatable :: coords_z

public subroutine setup_field_arrays(solver, field_names, field_ptrs, host_fields)

Arguments

Type IntentOptional Attributes Name
class(solver_t), intent(in) :: solver
character(len=*), intent(in), dimension(:) :: field_names
type(field_ptr_t), intent(out), allocatable :: field_ptrs(:)
type(field_ptr_t), intent(out), allocatable :: host_fields(:)

public subroutine cleanup_field_arrays(solver, field_ptrs, host_fields)

Arguments

Type IntentOptional Attributes Name
class(solver_t), intent(in) :: solver
type(field_ptr_t), intent(inout), allocatable :: field_ptrs(:)
type(field_ptr_t), intent(inout), allocatable :: host_fields(:)

public subroutine prepare_field_buffers(solver, stride_factors, field_names, data_loc, field_buffers, last_shape_dims, last_stride_factors, last_output_shape)

Arguments

Type IntentOptional Attributes Name
class(solver_t), intent(in) :: solver
integer, intent(in), dimension(3) :: stride_factors
character(len=*), intent(in), dimension(:) :: field_names
integer, intent(in) :: data_loc
type(field_buffer_map_t), intent(inout), allocatable :: field_buffers(:)
integer(kind=i8), intent(inout), dimension(3) :: last_shape_dims
integer, intent(inout), dimension(3) :: last_stride_factors
integer(kind=i8), intent(inout), dimension(3) :: last_output_shape

public subroutine write_single_field_to_buffer(field_name, host_field, solver, stride_factors, data_loc, field_buffers, last_shape_dims, last_stride_factors, last_output_shape)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: field_name
class(field_t), pointer :: host_field
class(solver_t), intent(in) :: solver
integer, intent(in), dimension(3) :: stride_factors
integer, intent(in) :: data_loc
type(field_buffer_map_t), intent(inout) :: field_buffers(:)
integer(kind=i8), intent(inout), dimension(3) :: last_shape_dims
integer, intent(inout), dimension(3) :: last_stride_factors
integer(kind=i8), intent(inout), dimension(3) :: last_output_shape

public subroutine cleanup_field_buffers(field_buffers)

Arguments

Type IntentOptional Attributes Name
type(field_buffer_map_t), intent(inout), allocatable :: field_buffers(:)