FE-Project
Loading...
Searching...
No Matches
scale_mesh_cubedom3d::meshcubedom3d Type Reference

Derived type to manage a cubic 3D computational domain. More...

Inheritance diagram for scale_mesh_cubedom3d::meshcubedom3d:
scale_mesh_base3d::meshbase3d scale_mesh_base::meshbase

Public Member Functions

procedure init (this, negx, negy, negz, dom_xmin, dom_xmax, dom_ymin, dom_ymax, dom_zmin, dom_zmax, isperiodicx, isperiodicy, isperiodicz, refelem, nlocalmeshperprc, nprcx, nprcy, nproc, myrank, fz)
 Initialize an object to manage a cubic 3D domain.
procedure final (this)
 Finalize an object to manage a cubic 3D domain.
procedure generate (this)
 Generate a cubic 3D computational domain based on the parameters set in the initialization.
procedure getmesh2d (this, ptr_mesh2d)
procedure set_geometric_with_vcoord (this, lcdomid, gsqrtv_lc, zlev_lc, g13_lc, g23_lc)
 Set geometric information of the local mesh with the vertical coordinate transformation.
Public Member Functions inherited from scale_mesh_base3d::meshbase3d
procedure(meshbase3d_generate), deferred generate meshbase3d_generate
procedure(meshbase3d_getmesh2d), deferred getmesh2d meshbase3d_getmesh2d
procedure(meshbase3d_set_geometric_with_vcoord), deferred set_geometric_with_vcoord meshbase3d_set_geometric_with_vcoord
procedure getlocalmesh (this, id, ptr_lcmesh)
Public Member Functions inherited from scale_mesh_base::meshbase
procedure(meshbase_get_localmesh), deferred getlocalmesh meshbase_get_localmesh
procedure setdiminfo (this, dimid, name, unit, desc, positive_down)

Public Attributes

integer negx
 Number of elements in X direction for the global mesh.
integer negy
 Number of elements in Y direction for the global mesh.
integer negz
 Number of elements in Z direction for the global mesh.
integer nprcx
 Number of processes in X direction for domain decomposition.
integer nprcy
 Number of processes in Y direction for domain decomposition.
integer nprcz
 Number of processes in Z direction for domain decomposition.
real(rp), public xmin_gl
 Minimum X coordinate of the global domain.
real(rp), public xmax_gl
 Maximum X coordinate of the global domain.
real(rp), public ymin_gl
 Minimum Y coordinate of the global domain.
real(rp), public ymax_gl
 Maximum Y coordinate of the global domain.
real(rp), public zmin_gl
 Minimum Z coordinate of the global domain.
real(rp), public zmax_gl
 Maximum Z coordinate of the global domain.
real(rp), dimension(:), allocatable fz
integer, dimension(:,:,:), allocatable rcdomijk2lcmeshid
logical isperiodicx
 Flag whether the domain is periodic in X direction.
logical isperiodicy
 Flag whether the domain is periodic in Y direction.
logical isperiodicz
 Flag whether the domain is periodic in Z direction.
type(meshrectdom2d) mesh2d
 2D mesh for the horizontal plane (X-Y plane)
type(quadrilateralelement) refelem2d
 Reference element for the 2D mesh.
Public Attributes inherited from scale_mesh_base3d::meshbase3d
type(localmesh3d), dimension(:), allocatable lcmesh_list
type(elementbase3d), pointer refelem3d
Public Attributes inherited from scale_mesh_base::meshbase
integer local_mesh_num
 Number of local meshes in each MPI process.
integer prc_num
 Number of MPI processes.
integer local_mesh_num_global
 Total number of local meshes across all MPI processes.
integer, dimension(:,:), allocatable tileid_globalmap
integer, dimension(:,:), allocatable tilefaceid_globalmap
integer, dimension(:,:), allocatable tilepanelid_globalmap
integer, dimension(:), allocatable tileid_global2localmap
integer, dimension(:), allocatable prcrank_globalmap
class(elementbase), pointer refelem
 Pointer to an object with a reference element.
type(meshdiminfo), dimension(:), allocatable diminfo
 Array of information for each dimension.
real(rp) dom_vol
 Total volume of the computational domain.
logical isgenerated
 Flag whether the mesh is generated.

Detailed Description

Derived type to manage a cubic 3D computational domain.

Definition at line 46 of file scale_mesh_cubedom3d.F90.

Member Function/Subroutine Documentation

◆ init()

procedure scale_mesh_cubedom3d::meshcubedom3d::init ( class(meshcubedom3d), intent(inout) this,
integer, intent(in) negx,
integer, intent(in) negy,
integer, intent(in) negz,
real(rp), intent(in) dom_xmin,
real(rp), intent(in) dom_xmax,
real(rp), intent(in) dom_ymin,
real(rp), intent(in) dom_ymax,
real(rp), intent(in) dom_zmin,
real(rp), intent(in) dom_zmax,
logical, intent(in) isperiodicx,
logical, intent(in) isperiodicy,
logical, intent(in) isperiodicz,
type(hexahedralelement), intent(in), target refelem,
integer, intent(in) nlocalmeshperprc,
integer, intent(in) nprcx,
integer, intent(in) nprcy,
integer, intent(in), optional nproc,
integer, intent(in), optional myrank,
real(rp), dimension(negz+1), intent(in), optional fz )

Initialize an object to manage a cubic 3D domain.

Parameters
[in]negxNumber of elements in X direction for the global mesh
[in]negyNumber of elements in Y direction for the global mesh
[in]negzNumber of elements in Z direction for the global mesh
[in]dom_xminMinimum X coordinate of the global domain
[in]dom_xmaxMaximum X coordinate of the global domain
[in]dom_yminMinimum Y coordinate of the global domain
[in]dom_ymaxMaximum Y coordinate of the global domain
[in]dom_zminMinimum Z coordinate of the global domain
[in]dom_zmaxMaximum Z coordinate of the global domain
[in]isperiodicxFlag whether the domain is periodic in X direction
[in]isperiodicyFlag whether the domain is periodic in Y direction
[in]isperiodiczFlag whether the domain is periodic in Z direction
[in]refelemReference element for the 3D mesh
[in]nlocalmeshperprcNumber of local meshes managed by each process
[in]nprcxNumber of processes in X direction for domain decomposition
[in]nprcyNumber of processes in Y direction for domain decomposition
[in]nprocTotal number of processes (if not provided, it will be determined from the parallel environment)
[in]myrankRank of the current process (if not provided, it will be determined from the parallel environment)
[in]fzOptional array of Z coordinates for the mesh

Definition at line 73 of file scale_mesh_cubedom3d.F90.

◆ final()

procedure scale_mesh_cubedom3d::meshcubedom3d::final ( class(meshcubedom3d), intent(inout) this)

Finalize an object to manage a cubic 3D domain.

Definition at line 74 of file scale_mesh_cubedom3d.F90.

◆ generate()

procedure scale_mesh_cubedom3d::meshcubedom3d::generate ( class(meshcubedom3d), intent(inout), target this)

Generate a cubic 3D computational domain based on the parameters set in the initialization.

Definition at line 75 of file scale_mesh_cubedom3d.F90.

◆ getmesh2d()

procedure scale_mesh_cubedom3d::meshcubedom3d::getmesh2d ( class(meshcubedom3d), intent(in), target this,
class(meshbase2d), intent(out), pointer ptr_mesh2d )

Definition at line 76 of file scale_mesh_cubedom3d.F90.

◆ set_geometric_with_vcoord()

procedure scale_mesh_cubedom3d::meshcubedom3d::set_geometric_with_vcoord ( class(meshcubedom3d), intent(inout), target this,
integer, intent(in) lcdomid,
real(rp), dimension(this%refelem3d%np,this%lcmesh_list(lcdomid)%nea), intent(in) gsqrtv_lc,
real(rp), dimension(this%refelem3d%np,this%lcmesh_list(lcdomid)%nea), intent(in) zlev_lc,
real(rp), dimension(this%refelem3d%np,this%lcmesh_list(lcdomid)%nea), intent(in) g13_lc,
real(rp), dimension(this%refelem3d%np,this%lcmesh_list(lcdomid)%nea), intent(in) g23_lc )

Set geometric information of the local mesh with the vertical coordinate transformation.

Definition at line 77 of file scale_mesh_cubedom3d.F90.

References scale_mesh_cubedom3d::meshcubedom3d_coord_conv().

Member Data Documentation

◆ negx

integer scale_mesh_cubedom3d::meshcubedom3d::negx

Number of elements in X direction for the global mesh.

Definition at line 47 of file scale_mesh_cubedom3d.F90.

47 integer :: NeGX !< Number of elements in X direction for the global mesh

◆ negy

integer scale_mesh_cubedom3d::meshcubedom3d::negy

Number of elements in Y direction for the global mesh.

Definition at line 48 of file scale_mesh_cubedom3d.F90.

48 integer :: NeGY !< Number of elements in Y direction for the global mesh

◆ negz

integer scale_mesh_cubedom3d::meshcubedom3d::negz

Number of elements in Z direction for the global mesh.

Definition at line 49 of file scale_mesh_cubedom3d.F90.

49 integer :: NeGZ !< Number of elements in Z direction for the global mesh

◆ nprcx

integer scale_mesh_cubedom3d::meshcubedom3d::nprcx

Number of processes in X direction for domain decomposition.

Definition at line 51 of file scale_mesh_cubedom3d.F90.

51 integer :: NprcX !< Number of processes in X direction for domain decomposition

◆ nprcy

integer scale_mesh_cubedom3d::meshcubedom3d::nprcy

Number of processes in Y direction for domain decomposition.

Definition at line 52 of file scale_mesh_cubedom3d.F90.

52 integer :: NprcY !< Number of processes in Y direction for domain decomposition

◆ nprcz

integer scale_mesh_cubedom3d::meshcubedom3d::nprcz

Number of processes in Z direction for domain decomposition.

Definition at line 53 of file scale_mesh_cubedom3d.F90.

53 integer :: NprcZ !< Number of processes in Z direction for domain decomposition

◆ xmin_gl

real(rp), public scale_mesh_cubedom3d::meshcubedom3d::xmin_gl

Minimum X coordinate of the global domain.

Definition at line 55 of file scale_mesh_cubedom3d.F90.

55 real(RP), public :: xmin_gl !< Minimum X coordinate of the global domain

◆ xmax_gl

real(rp), public scale_mesh_cubedom3d::meshcubedom3d::xmax_gl

Maximum X coordinate of the global domain.

Definition at line 56 of file scale_mesh_cubedom3d.F90.

56 real(RP), public :: xmax_gl !< Maximum X coordinate of the global domain

◆ ymin_gl

real(rp), public scale_mesh_cubedom3d::meshcubedom3d::ymin_gl

Minimum Y coordinate of the global domain.

Definition at line 57 of file scale_mesh_cubedom3d.F90.

57 real(RP), public :: ymin_gl !< Minimum Y coordinate of the global domain

◆ ymax_gl

real(rp), public scale_mesh_cubedom3d::meshcubedom3d::ymax_gl

Maximum Y coordinate of the global domain.

Definition at line 58 of file scale_mesh_cubedom3d.F90.

58 real(RP), public :: ymax_gl !< Maximum Y coordinate of the global domain

◆ zmin_gl

real(rp), public scale_mesh_cubedom3d::meshcubedom3d::zmin_gl

Minimum Z coordinate of the global domain.

Definition at line 59 of file scale_mesh_cubedom3d.F90.

59 real(RP), public :: zmin_gl !< Minimum Z coordinate of the global domain

◆ zmax_gl

real(rp), public scale_mesh_cubedom3d::meshcubedom3d::zmax_gl

Maximum Z coordinate of the global domain.

Definition at line 60 of file scale_mesh_cubedom3d.F90.

60 real(RP), public :: zmax_gl !< Maximum Z coordinate of the global domain

◆ fz

real(rp), dimension(:), allocatable scale_mesh_cubedom3d::meshcubedom3d::fz

Definition at line 62 of file scale_mesh_cubedom3d.F90.

62 real(RP), allocatable :: FZ(:)

◆ rcdomijk2lcmeshid

integer, dimension(:,:,:), allocatable scale_mesh_cubedom3d::meshcubedom3d::rcdomijk2lcmeshid

Definition at line 64 of file scale_mesh_cubedom3d.F90.

64 integer, allocatable :: rcdomIJK2LCMeshID(:,:,:)

◆ isperiodicx

logical scale_mesh_cubedom3d::meshcubedom3d::isperiodicx

Flag whether the domain is periodic in X direction.

Definition at line 66 of file scale_mesh_cubedom3d.F90.

66 logical :: isPeriodicX !< Flag whether the domain is periodic in X direction

◆ isperiodicy

logical scale_mesh_cubedom3d::meshcubedom3d::isperiodicy

Flag whether the domain is periodic in Y direction.

Definition at line 67 of file scale_mesh_cubedom3d.F90.

67 logical :: isPeriodicY !< Flag whether the domain is periodic in Y direction

◆ isperiodicz

logical scale_mesh_cubedom3d::meshcubedom3d::isperiodicz

Flag whether the domain is periodic in Z direction.

Definition at line 68 of file scale_mesh_cubedom3d.F90.

68 logical :: isPeriodicZ !< Flag whether the domain is periodic in Z direction

◆ mesh2d

type(meshrectdom2d) scale_mesh_cubedom3d::meshcubedom3d::mesh2d

2D mesh for the horizontal plane (X-Y plane)

Definition at line 70 of file scale_mesh_cubedom3d.F90.

70 type(MeshRectDom2D) :: mesh2D !< 2D mesh for the horizontal plane (X-Y plane)

◆ refelem2d

type(quadrilateralelement) scale_mesh_cubedom3d::meshcubedom3d::refelem2d

Reference element for the 2D mesh.

Definition at line 71 of file scale_mesh_cubedom3d.F90.

71 type(QuadrilateralElement) :: refElem2D !< Reference element for the 2D mesh

The documentation for this type was generated from the following file: