m_mesh Module



Interfaces

public interface mesh_t

  • public function mesh_init(dims_global, nproc_dir, L_global, BC_x, BC_y, BC_z) 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

    Return Value type(mesh_t)


Derived Types

type, public ::  geo_t

Components

Type Visibility Attributes Name Initial
real(kind=dp), public, dimension(3) :: d
real(kind=dp), public, dimension(3) :: L

type, public ::  parallel_t

Components

Type Visibility Attributes Name Initial
integer, public :: nrank
integer, public :: nproc
integer, public, dimension(3) :: nrank_dir
integer, public, dimension(3) :: nproc_dir
integer, public, dimension(3) :: n_offset
integer, public, dimension(3) :: pnext
integer, public, dimension(3) :: pprev

Type-Bound Procedures

procedure, public :: is_root

type, public ::  mesh_t

Components

Type Visibility Attributes Name Initial
type(geo_t), public, allocatable :: geo
type(parallel_t), public, allocatable :: par

Constructor

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

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_SZ => get_sz
procedure, public :: get_dims
procedure, public :: get_global_dims
procedure, public :: get_n_groups_dir
procedure, public :: get_n_groups_phi
generic, public :: get_n_groups => get_n_groups_dir, get_n_groups_phi
procedure, public :: get_field_dims_dir
procedure, public :: get_field_dims_phi
procedure, public :: get_field_dims_phi_dataloc
generic, public :: get_field_dims => get_field_dims_dir, get_field_dims_phi, get_field_dims_phi_dataloc
procedure, public :: get_n_dir
procedure, public :: get_n_phi
generic, public :: get_n => get_n_dir, get_n_phi
procedure, public :: get_padded_dims_phi
procedure, public :: get_padded_dims_dir
generic, public :: get_padded_dims => get_padded_dims_dir, get_padded_dims_phi
procedure, public :: get_coordinates
procedure, public :: set_sz
procedure, public :: set_padded_dims

Functions

public function mesh_init(dims_global, nproc_dir, L_global, BC_x, BC_y, BC_z) 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

Return Value type(mesh_t)

public pure function get_sz(self) result(sz)

Getter for parameter SZ

Arguments

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

Return Value integer

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_padded_dims_dir(self, dir) result(dims_padded)

Getter for padded dimensions with structure in dir direction

Arguments

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

Return Value integer, dimension(3)

public pure function get_padded_dims_phi(self, phi) result(dims_padded)

Getter for padded dimensions for field phi Gets the field direction from the field itself

Arguments

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

Return Value integer, dimension(3)

public pure function get_n_groups_dir(self, dir) result(n_groups)

Getter for the number of groups for fields in direction dir

Arguments

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

Return Value integer

public pure function get_n_groups_phi(self, phi) result(n_groups)

Getter for the number of groups for fields 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_field_dims_phi(self, phi) result(dims)

Getter for the dimensions of field phi

Arguments

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

Return Value integer, dimension(3)

public pure function get_field_dims_phi_dataloc(self, phi, data_loc) result(dims)

Getter for the dimensions of field phi where data is located on data_loc

Arguments

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

Return Value integer, dimension(3)

public pure function get_field_dims_dir(self, dir, data_loc) result(dims)

Getter for the dimensions of an array directed along dir where data would be located 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, 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) result(xloc)

Get the physical location of a cell center with i,j,k local indices

Arguments

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

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

public pure function is_root(self) result(is_root_rank)

Returns whether or not the current rank is the root rank

Arguments

Type IntentOptional Attributes Name
class(parallel_t), intent(in) :: self

Return Value logical


Subroutines

public subroutine set_padded_dims(self, vert_dims)

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(inout) :: self
integer, intent(in), dimension(3) :: vert_dims

public subroutine set_sz(self, sz)

Arguments

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

public subroutine domain_decomposition(mesh)

Supports 1D, 2D, and 3D domain decomposition.

Read more…

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(inout) :: mesh