Mesh3D Derived Type

type, public, extends(Mesh3D_t) :: Mesh3D


Inherits

type~~mesh3d~2~~InheritsGraph type~mesh3d~2 Mesh3D c_ptr c_ptr type~mesh3d~2->c_ptr sideInfo_gpu, mortarInfo_gpu type~mesh3d_t Mesh3D_t type~mesh3d~2->type~mesh3d_t type~semmesh SEMMesh type~mesh3d_t->type~semmesh type~domaindecomposition DomainDecomposition type~semmesh->type~domaindecomposition decomp type~domaindecomposition_t DomainDecomposition_t type~domaindecomposition->type~domaindecomposition_t

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
character(len=255), public, allocatable:: BCNames(:)
integer, public, pointer, dimension(:,:):: BCType
integer, public, pointer, dimension(:,:):: CGNSCornerMap
integer, public, pointer, dimension(:,:):: CGNSSideMap
type(DomainDecomposition), public :: decomp
integer, public, pointer, dimension(:,:):: elemInfo
integer, public, allocatable:: elemMaterial(:)
integer, public, pointer, dimension(:,:,:,:):: globalNodeIDs
character(len=SELF_MESH_MATNAME_LENGTH), public, allocatable:: materialNames(:)
integer, public, pointer, dimension(:,:):: mortarInfo=> null()
type(c_ptr), public :: mortarInfo_gpu =c_null_ptr
integer, public :: nBCs
integer, public :: nCornerNodes
integer, public :: nElem
integer, public :: nGeo
integer, public :: nGlobalElem
integer, public :: nMaterials =0
integer, public :: nMortars =0
integer, public :: nNodes
integer, public :: nSides
integer, public :: nUniqueNodes
integer, public :: nUniqueSides
real(kind=prec), public, pointer, dimension(:,:,:,:,:):: nodeCoords
integer, public :: quadrature
integer, public, pointer, dimension(:,:,:):: sideInfo
type(c_ptr), public :: sideInfo_gpu
integer, public, pointer, dimension(:,:):: sideMap

Type-Bound Procedures

procedure, public :: Free => Free_Mesh3D

  • public subroutine Free_Mesh3D(this)

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D), intent(inout) :: this

procedure, public :: Init => Init_Mesh3D

  • public subroutine Init_Mesh3D(this, nGeo, nElem, nSides, nNodes, nBCs)

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D), intent(inout) :: this
    integer, intent(in) :: nGeo
    integer, intent(in) :: nElem
    integer, intent(in) :: nSides
    integer, intent(in) :: nNodes
    integer, intent(in) :: nBCs

generic, public :: PeriodicStructuredMesh => UniformPeriodicMesh_Mesh3D_t

  • public subroutine UniformPeriodicMesh_Mesh3D_t(this, nxPerTile, nyPerTile, nzPerTile, nTileX, nTileY, nTileZ, dx, dy, dz, comm)

    Create a fully triply-periodic structured hexahedral mesh and store it in SELF's unstructured mesh format. Element geometry and ordering are identical to UniformStructuredMesh; the only difference is connectivity. The faces on the six domain boundaries are wired as interior faces whose neighbor is the element on the opposite side of the domain. This realises the triply periodic box T^3 = [0,Lx] x [0,Ly] x [0,Lz] required by, e.g., the Arnold-Beltrami-Childress (ABC) flow benchmark.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D_t), intent(out) :: this
    integer, intent(in) :: nxPerTile
    integer, intent(in) :: nyPerTile
    integer, intent(in) :: nzPerTile
    integer, intent(in) :: nTileX
    integer, intent(in) :: nTileY
    integer, intent(in) :: nTileZ
    real(kind=prec), intent(in) :: dx
    real(kind=prec), intent(in) :: dy
    real(kind=prec), intent(in) :: dz
    integer, intent(in), optional :: comm

procedure, public :: Read_HOHQMesh => Read_HOHQMesh_Mesh3D_t

  • public subroutine Read_HOHQMesh_Mesh3D_t(this, meshFile, comm)

    Reader for HOHQMesh 3-D (hexahedral) text mesh files in the ISM and ISM-MM formats, as written by HOHQMesh's WriteISMHexMeshFile (Source/3DSource/Mesh3DOutputMethods.f90). Unlike the 2-D writer, the 3-D writer emits NO format header line: the first line is always the count line "nNodes nElems polyOrder". The two variants differ only in the per-element corner-node line: * ISM : 8 corner-node ids * ISM-MM : 8 corner-node ids followed by a material-name string The variant is auto-detected from the presence of the 9th token.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D_t), intent(out) :: this
    character, intent(in) :: meshFile
    integer, intent(in), optional :: comm

procedure, public :: Read_HOPr => Read_HOPr_Mesh3D_t

  • public subroutine Read_HOPr_Mesh3D_t(this, meshFile, comm)

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D_t), intent(out) :: this
    character, intent(in) :: meshFile
    integer, intent(in), optional :: comm

procedure, public :: RecalculateFlip => RecalculateFlip_Mesh3D_t

procedure, public :: ResetBoundaryConditionType => ResetBoundaryConditionType_Mesh3D_t

  • public subroutine ResetBoundaryConditionType_Mesh3D_t(this, bcid)

    This method can be used to reset all of the boundary elements boundary condition type to the desired value.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D_t), intent(inout) :: this
    integer, intent(in) :: bcid

procedure, public :: SimpleMortarMesh => SimpleMortarMesh_Mesh3D_t

  • public subroutine SimpleMortarMesh_Mesh3D_t(this, dx, bcids, comm, flips)

    Create the smallest 3D 2:1 nonconforming (mortar) mesh: one "big" element of size 2dx x 2dx x 2*dx whose east face is shared with the faces of four "small" dx x dx x dx elements stacked 2x2 in (y,z). The mesh is conforming everywhere except at the single mortar interface.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D_t), intent(out) :: this
    real(kind=prec), intent(in) :: dx
    integer, intent(in) :: bcids(1:6)
    integer, intent(in), optional :: comm
    integer, intent(in), optional :: flips(1:4)

generic, public :: StructuredMesh => UniformStructuredMesh_Mesh3D_t

  • public subroutine UniformStructuredMesh_Mesh3D_t(this, nxPerTile, nyPerTile, nzPerTile, nTileX, nTileY, nTileZ, dx, dy, dz, bcids, comm)

    Create a structured mesh and store it in SELF's unstructured mesh format. The mesh is created in tiles of size (tnx,tny,tnz). Tiling is used to determine the element ordering.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D_t), intent(out) :: this
    integer, intent(in) :: nxPerTile
    integer, intent(in) :: nyPerTile
    integer, intent(in) :: nzPerTile
    integer, intent(in) :: nTileX
    integer, intent(in) :: nTileY
    integer, intent(in) :: nTileZ
    real(kind=prec), intent(in) :: dx
    real(kind=prec), intent(in) :: dy
    real(kind=prec), intent(in) :: dz
    integer, intent(in) :: bcids(1:6)
    integer, intent(in), optional :: comm

procedure, public :: UpdateDevice => UpdateDevice_Mesh3D

  • public subroutine UpdateDevice_Mesh3D(this)

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D), intent(inout) :: this

procedure, public :: Write_Mesh => Write_Mesh3D_t

  • public subroutine Write_Mesh3D_t(this, meshFile)

    Arguments

    TypeIntentOptionalAttributesName
    class(Mesh3D_t), intent(inout) :: this
    character, intent(in) :: meshFile

Source Code

  type,extends(Mesh3D_t) :: Mesh3D
    type(c_ptr) :: sideInfo_gpu
    type(c_ptr) :: mortarInfo_gpu = c_null_ptr

  contains
    procedure,public :: Init => Init_Mesh3D
    procedure,public :: Free => Free_Mesh3D
    procedure,public :: UpdateDevice => UpdateDevice_Mesh3D

  endtype Mesh3D