m_mesh Module


Uses

  • module~~m_mesh~~UsesGraph module~m_mesh m_mesh m_mpi m_mpi module~m_mesh->m_mpi module~m_common m_common module~m_mesh->module~m_common module~m_field m_field module~m_mesh->module~m_field module~m_logger m_logger module~m_mesh->module~m_logger module~m_mesh_content m_mesh_content module~m_mesh->module~m_mesh_content module~m_common->m_mpi module~m_common->module~m_logger module~m_field->module~m_common iso_c_binding iso_c_binding module~m_field->iso_c_binding module~m_logger->m_mpi iso_fortran_env iso_fortran_env module~m_logger->iso_fortran_env module~m_mesh_content->module~m_common module~m_mesh_content->module~m_logger

Used by

  • module~~m_mesh~~UsedByGraph module~m_mesh m_mesh module~m_abl m_abl module~m_abl->module~m_mesh module~m_base_backend m_base_backend module~m_abl->module~m_base_backend module~m_les m_les module~m_abl->module~m_les module~m_abl_diagnostics m_abl_diagnostics module~m_abl_diagnostics->module~m_mesh module~m_abl_diagnostics->module~m_base_backend module~m_abl_diagnostics->module~m_les module~m_adm m_adm module~m_adm->module~m_mesh module~m_adm->module~m_base_backend module~m_turbine_model m_turbine_model module~m_adm->module~m_turbine_model module~m_io_session m_io_session module~m_adm->module~m_io_session module~m_alm m_alm module~m_alm->module~m_mesh module~m_alm->module~m_base_backend module~m_alm->module~m_turbine_model module~m_alm->module~m_io_session module~m_backend_setup m_backend_setup module~m_backend_setup->module~m_mesh module~m_backend_setup->module~m_base_backend module~m_cuda_allocator m_cuda_allocator module~m_backend_setup->module~m_cuda_allocator module~m_cuda_backend m_cuda_backend module~m_backend_setup->module~m_cuda_backend module~m_omp_backend m_omp_backend module~m_backend_setup->module~m_omp_backend module~m_omptgt_allocator m_omptgt_allocator module~m_backend_setup->module~m_omptgt_allocator module~m_omptgt_backend m_omptgt_backend module~m_backend_setup->module~m_omptgt_backend module~m_base_backend->module~m_mesh module~m_poisson_fft m_poisson_fft module~m_base_backend->module~m_poisson_fft module~m_base_case m_base_case module~m_base_case->module~m_mesh module~m_base_case->module~m_base_backend module~m_solver m_solver module~m_base_case->module~m_solver module~m_io_manager m_io_manager module~m_base_case->module~m_io_manager 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_abl m_case_abl module~m_case_abl->module~m_mesh module~m_case_abl->module~m_abl module~m_case_abl->module~m_abl_diagnostics module~m_case_abl->module~m_base_backend module~m_case_abl->module~m_base_case module~m_inflow_planes m_inflow_planes 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_case_channel m_case_channel module~m_case_channel->module~m_mesh module~m_case_channel->module~m_base_backend module~m_case_channel->module~m_base_case module~m_case_channel->module~m_solver module~m_case_cylinder m_case_cylinder module~m_case_cylinder->module~m_mesh module~m_case_cylinder->module~m_base_backend module~m_case_cylinder->module~m_base_case module~m_case_cylinder->module~m_solver module~m_case_factory m_case_factory module~m_case_factory->module~m_mesh module~m_case_factory->module~m_base_backend module~m_case_factory->module~m_base_case module~m_case_factory->module~m_case_abl 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_mesh module~m_case_generic->module~m_base_backend module~m_case_generic->module~m_base_case module~m_case_generic->module~m_solver module~m_case_tgv->module~m_mesh module~m_case_tgv->module~m_base_backend module~m_case_tgv->module~m_base_case module~m_case_tgv->module~m_solver module~m_case_wind_turbine->module~m_mesh module~m_case_wind_turbine->module~m_base_backend module~m_case_wind_turbine->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_cuda_allocator->module~m_mesh module~m_cuda_backend->module~m_mesh module~m_cuda_backend->module~m_base_backend module~m_cuda_backend->module~m_cuda_allocator module~m_cuda_poisson_fft m_cuda_poisson_fft module~m_cuda_backend->module~m_cuda_poisson_fft module~m_cuda_memcheck_device m_cuda_memcheck_device module~m_cuda_memcheck_device->module~m_mesh module~m_cuda_memcheck_device->module~m_base_case module~m_cuda_memcheck_device->module~m_cuda_poisson_fft module~m_memory_estimate m_memory_estimate module~m_cuda_memcheck_device->module~m_memory_estimate module~m_cuda_poisson_fft->module~m_mesh module~m_cuda_poisson_fft->module~m_cuda_allocator module~m_cuda_poisson_fft->module~m_poisson_fft module~m_ibm m_ibm module~m_ibm->module~m_mesh module~m_ibm->module~m_base_backend module~m_ibm->module~m_io_session module~m_inflow_planes->module~m_mesh module~m_inflow_planes->module~m_base_backend module~m_inflow_planes->module~m_io_session module~m_les->module~m_mesh module~m_les->module~m_base_backend module~m_memcheck_build m_memcheck_build module~m_memcheck_build->module~m_mesh module~m_memcheck_build->module~m_backend_setup module~m_memcheck_build->module~m_base_case module~m_memcheck_build->module~m_case_abl module~m_memcheck_build->module~m_case_factory module~m_memcheck_build->module~m_ibm module~m_memcheck_context m_memcheck_context module~m_memcheck_build->module~m_memcheck_context module~m_memcheck_estimate m_memcheck_estimate module~m_memcheck_build->module~m_memcheck_estimate module~m_memcheck_report m_memcheck_report module~m_memcheck_build->module~m_memcheck_report module~m_memcheck_build->module~m_monitoring module~m_memcheck_build->module~m_memory_estimate module~m_memcheck_context->module~m_mesh module~m_memcheck_context->module~m_cuda_memcheck_device module~m_omp_backend->module~m_mesh module~m_omp_backend->module~m_base_backend module~m_omp_poisson_fft m_omp_poisson_fft module~m_omp_poisson_fft->module~m_mesh module~m_omp_poisson_fft->module~m_poisson_fft module~m_omptgt_allocator->module~m_mesh module~m_omptgt_backend->module~m_mesh module~m_omptgt_backend->module~m_base_backend module~m_poisson_fft->module~m_mesh module~m_solver->module~m_mesh module~m_solver->module~m_base_backend module~m_solver->module~m_ibm module~m_solver->module~m_les module~m_tdsops_setup m_tdsops_setup module~m_solver->module~m_tdsops_setup 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_tdsops_setup->module~m_mesh module~m_tdsops_setup->module~m_base_backend module~m_turbine_dummy m_turbine_dummy module~m_turbine_dummy->module~m_mesh module~m_turbine_dummy->module~m_base_backend module~m_turbine_dummy->module~m_turbine_model module~m_turbine_dummy->module~m_io_session module~m_turbine_model->module~m_mesh module~m_turbine_model->module~m_base_backend module~m_checkpoint_state m_checkpoint_state module~m_turbine_model->module~m_checkpoint_state program~x3d2_poisson_solver x3d2_poisson_solver program~x3d2_poisson_solver->module~m_mesh program~x3d2_poisson_solver->module~m_backend_setup program~x3d2_poisson_solver->module~m_base_backend program~x3d2_poisson_solver->module~m_tdsops_setup program~xcompact xcompact program~xcompact->module~m_mesh program~xcompact->module~m_backend_setup program~xcompact->module~m_base_case program~xcompact->module~m_case_factory module~m_checkpoint_manager m_checkpoint_manager 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_manager->module~m_io_session module~m_stats m_stats module~m_checkpoint_manager->module~m_stats module~m_checkpoint_manager->module~m_checkpoint_state module~m_io_backend m_io_backend module~m_io_backend->module~m_base_backend module~m_io_base m_io_base module~m_io_backend->module~m_io_base module~m_io_backend~2 m_io_backend module~m_io_backend~2->module~m_base_backend module~m_io_backend~2->module~m_io_base module~m_io_base->module~m_base_backend module~m_io_field_utils->module~m_solver module~m_io_field_utils->module~m_io_base module~m_io_manager->module~m_solver module~m_io_manager->module~m_checkpoint_manager module~m_snapshot_manager m_snapshot_manager module~m_io_manager->module~m_snapshot_manager module~m_io_manager->module~m_stats module~m_io_manager->module~m_checkpoint_state module~m_io_session->module~m_base_backend module~m_io_session->module~m_io_backend module~m_io_session->module~m_io_base module~m_memcheck_estimate->module~m_cuda_poisson_fft module~m_memcheck_estimate->module~m_memcheck_context module~m_memcheck_estimate->module~m_memory_estimate 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_report->module~m_memory_estimate module~m_monitoring->module~m_solver module~m_postprocess->module~m_solver module~m_snapshot_manager->module~m_solver module~m_snapshot_manager->module~m_io_field_utils module~m_snapshot_manager->module~m_io_session module~m_stats->module~m_solver module~m_stats->module~m_io_session module~m_time_integrator->module~m_base_backend module~m_turbine_setup->module~m_adm module~m_turbine_setup->module~m_alm module~m_turbine_setup->module~m_solver module~m_turbine_setup->module~m_turbine_dummy module~m_turbine_setup->module~m_turbine_model module~m_turbine_setup->module~m_io_manager module~m_vector_calculus->module~m_base_backend proc~init_omp_poisson_fft m_omp_backend::omp_backend_t%init_omp_poisson_fft proc~init_omp_poisson_fft->module~m_omp_poisson_fft 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_estimate program~x3d2_memcheck->module~m_memcheck_report program~x3d2_memcheck->module~m_memory_estimate module~m_checkpoint_state->module~m_io_session module~m_memory_estimate->module~m_time_integrator proc~resolve_gpu_io_mode m_memcheck_context::resolve_gpu_io_mode proc~resolve_gpu_io_mode->module~m_io_backend

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: FFT_BC_000 = 0
integer, public, parameter :: FFT_BC_010 = 10
integer, public, parameter :: FFT_BC_100 = 100
integer, public, parameter :: FFT_BC_110 = 110
integer, public, parameter :: FFT_BC_UNSUPPORTED = -1

Interfaces

public interface mesh_t

  • public function mesh_init(dims_global, nproc_dir, L_global, BC_x, BC_y, BC_z, stretching, beta, use_2decomp) result(mesh)

    Completely initialise the mesh object. Upon initialisation the mesh object can be read-only and shouldn't be edited Takes as argument global information about the mesh like its length, number of cells and decomposition in each direction

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in), dimension(3) :: dims_global
    integer, intent(in), dimension(3) :: nproc_dir
    real(kind=dp), intent(in), dimension(3) :: L_global
    character(len=*), intent(in), dimension(2) :: BC_x
    character(len=*), intent(in), dimension(2) :: BC_y
    character(len=*), intent(in), dimension(2) :: BC_z
    character(len=*), intent(in), optional, dimension(3) :: stretching
    real(kind=dp), intent(in), optional, dimension(3) :: beta
    logical, intent(in), optional :: use_2decomp

    Return Value class(mesh_t), allocatable


Derived Types

type, public ::  mesh_t

Components

Type Visibility Attributes Name Initial
type(geo_t), public, allocatable :: geo
class(grid_t), public, allocatable :: grid
class(par_t), public, allocatable :: par

Constructor

public function mesh_init (dims_global, nproc_dir, L_global, BC_x, BC_y, BC_z, stretching, beta, use_2decomp)

Completely initialise the mesh object. Upon initialisation the mesh object can be read-only and shouldn't be edited Takes as argument global information about the mesh like its length, number of cells and decomposition in each direction

Type-Bound Procedures

procedure, public :: get_dims
procedure, public :: get_global_dims
procedure, public :: get_n_dir
procedure, public :: get_n_phi
generic, public :: get_n => get_n_dir, get_n_phi
procedure, public :: get_coordinates

Functions

public function mesh_init(dims_global, nproc_dir, L_global, BC_x, BC_y, BC_z, stretching, beta, use_2decomp) result(mesh)

Completely initialise the mesh object. Upon initialisation the mesh object can be read-only and shouldn't be edited Takes as argument global information about the mesh like its length, number of cells and decomposition in each direction

Arguments

Type IntentOptional Attributes Name
integer, intent(in), dimension(3) :: dims_global
integer, intent(in), dimension(3) :: nproc_dir
real(kind=dp), intent(in), dimension(3) :: L_global
character(len=*), intent(in), dimension(2) :: BC_x
character(len=*), intent(in), dimension(2) :: BC_y
character(len=*), intent(in), dimension(2) :: BC_z
character(len=*), intent(in), optional, dimension(3) :: stretching
real(kind=dp), intent(in), optional, dimension(3) :: beta
logical, intent(in), optional :: use_2decomp

Return Value class(mesh_t), allocatable

public pure function get_dims(self, data_loc) result(dims)

Getter for local domain dimensions

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(in) :: self
integer, intent(in) :: data_loc

Return Value integer, dimension(3)

public pure function get_global_dims(self, data_loc) result(dims)

Getter for local domain dimensions

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(in) :: self
integer, intent(in) :: data_loc

Return Value integer, dimension(3)

public pure function get_dims_dataloc(data_loc, vert_dims, cell_dims) result(dims)

Getter for domain dimensions

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: data_loc
integer, intent(in), dimension(3) :: vert_dims
integer, intent(in), dimension(3) :: cell_dims

Return Value integer, dimension(3)

public pure function get_n_phi(self, phi) result(n)

Getter for the main dimension of field phi

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(in) :: self
class(field_t), intent(in) :: phi

Return Value integer

public pure function get_n_dir(self, dir, data_loc) result(n)

Getter for the main dimension a field oriented along dir with data on data_loc

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(in) :: self
integer, intent(in) :: dir
integer, intent(in) :: data_loc

Return Value integer

public pure function get_coordinates(self, i, j, k, data_loc_op) result(coords)

Get the coordinates of a vertex with i, j, k local cartesian indices Avoid calling this in hot loops

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(in) :: self
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: k
integer, intent(in), optional :: data_loc_op

Return Value real(kind=dp), dimension(3)

public pure function global_cell_dims(vert_dims, periodic) result(cell_dims)

Global number of cells per direction: a periodic direction has as many cells as vertices, any other has one less. Shared by mesh_init and callers with only the global vertex dims (no mesh_t).

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: vert_dims(3)
logical, intent(in) :: periodic(3)

Return Value integer, (3)


Subroutines

public subroutine decomposition_generic(grid, par)

Arguments

Type IntentOptional Attributes Name
class(grid_t), intent(inout) :: grid
class(par_t), intent(inout) :: par

public subroutine classify_boundaries(bc_x, bc_y, bc_z, periodic, bc_code, bcs_global)

Parse the BC strings of the three directions. A direction is periodic only if both ends are 'periodic'. bc_code is the FFT_BC_* class of the resulting periodicity, or FFT_BC_UNSUPPORTED. Shared by mesh_init and callers with only BC strings (no mesh_t, e.g. static memory estimation).

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: bc_x(2)
character(len=*), intent(in) :: bc_y(2)
character(len=*), intent(in) :: bc_z(2)
logical, intent(out) :: periodic(3)
integer, intent(out) :: bc_code
integer, intent(out), optional :: bcs_global(3,2)