SELF_Mesh_2D_t Module


Uses

  • module~~self_mesh_2d_t~~UsesGraph module~self_mesh_2d_t SELF_Mesh_2D_t module~self_supportroutines SELF_SupportRoutines module~self_mesh_2d_t->module~self_supportroutines module~self_domaindecomposition~2 SELF_DomainDecomposition module~self_mesh_2d_t->module~self_domaindecomposition~2 module~self_mesh SELF_Mesh module~self_mesh_2d_t->module~self_mesh iso_c_binding iso_c_binding module~self_mesh_2d_t->iso_c_binding module~self_lagrange SELF_Lagrange module~self_mesh_2d_t->module~self_lagrange module~self_constants SELF_Constants module~self_mesh_2d_t->module~self_constants module~self_hdf5 SELF_HDF5 module~self_mesh_2d_t->module~self_hdf5 module~self_quadrature SELF_Quadrature module~self_mesh_2d_t->module~self_quadrature HDF5 HDF5 module~self_mesh_2d_t->HDF5 module~self_supportroutines->module~self_constants iso_fortran_env iso_fortran_env module~self_supportroutines->iso_fortran_env module~self_domaindecomposition~2->iso_c_binding module~self_domaindecomposition_t SELF_DomainDecomposition_t module~self_domaindecomposition~2->module~self_domaindecomposition_t mpi mpi module~self_domaindecomposition~2->mpi module~self_mesh->module~self_domaindecomposition~2 module~self_mesh->iso_c_binding module~self_mesh->module~self_constants module~self_lagrange->iso_c_binding module~self_lagrange->module~self_constants module~self_lagrange_t SELF_Lagrange_t module~self_lagrange->module~self_lagrange_t module~self_lagrange->iso_fortran_env module~self_gpu SELF_GPU module~self_lagrange->module~self_gpu module~self_constants->iso_c_binding module~self_constants->iso_fortran_env module~self_hdf5->module~self_constants module~self_hdf5->HDF5 module~self_hdf5->iso_fortran_env module~self_hdf5->mpi module~self_quadrature->module~self_constants module~self_quadrature->iso_fortran_env module~self_lagrange_t->module~self_supportroutines module~self_lagrange_t->iso_c_binding module~self_lagrange_t->module~self_constants module~self_lagrange_t->module~self_hdf5 module~self_lagrange_t->module~self_quadrature module~self_lagrange_t->HDF5 module~self_lagrange_t->iso_fortran_env module~self_gpu->iso_c_binding module~self_gpu_enums SELF_GPU_enums module~self_gpu->module~self_gpu_enums module~self_domaindecomposition_t->module~self_supportroutines module~self_domaindecomposition_t->iso_c_binding module~self_domaindecomposition_t->module~self_lagrange module~self_domaindecomposition_t->module~self_constants module~self_domaindecomposition_t->mpi module~self_gpu_enums->iso_c_binding

Used by

  • module~~self_mesh_2d_t~~UsedByGraph module~self_mesh_2d_t SELF_Mesh_2D_t module~self_mesh_2d SELF_Mesh_2D module~self_mesh_2d->module~self_mesh_2d_t module~self_mesh_2d~2 SELF_Mesh_2D module~self_mesh_2d~2->module~self_mesh_2d_t module~self_dgmodel2d_t SELF_DGModel2D_t module~self_dgmodel2d_t->module~self_mesh_2d module~self_geometry_2d SELF_Geometry_2D module~self_dgmodel2d_t->module~self_geometry_2d module~self_mappedvector_2d~2 SELF_MappedVector_2D module~self_dgmodel2d_t->module~self_mappedvector_2d~2 module~self_mappedscalar_2d SELF_MappedScalar_2D module~self_dgmodel2d_t->module~self_mappedscalar_2d module~self_mappedscalar_2d_t SELF_MappedScalar_2D_t module~self_mappedscalar_2d_t->module~self_mesh_2d module~self_mappedscalar_2d_t->module~self_geometry_2d module~self_dgmodel2d~2 SELF_DGModel2D module~self_dgmodel2d~2->module~self_mesh_2d module~self_dgmodel2d~2->module~self_dgmodel2d_t module~self_dgmodel2d~2->module~self_geometry_2d module~self_mappedvector_2d_t SELF_MappedVector_2D_t module~self_mappedvector_2d_t->module~self_mesh_2d module~self_mappedvector_2d_t->module~self_geometry_2d module~self_geometry_2d->module~self_mesh_2d module~self_esatmo2d SELF_ESAtmo2D module~self_esatmo2d->module~self_mesh_2d module~self_esatmo2d->module~self_geometry_2d module~self_ecdgmodel2d_t SELF_ECDGModel2D_t module~self_esatmo2d->module~self_ecdgmodel2d_t module~self_esatmo2d_t SELF_ESAtmo2D_t module~self_esatmo2d->module~self_esatmo2d_t module~self_ecadvection2d~2 SELF_ECAdvection2D module~self_ecadvection2d~2->module~self_mesh_2d module~self_ecadvection2d~2->module~self_geometry_2d module~self_ecadvection2d~2->module~self_ecdgmodel2d_t module~self_ecadvection2d_t SELF_ECAdvection2D_t module~self_ecadvection2d~2->module~self_ecadvection2d_t module~self_dgmodel2d SELF_DGModel2D module~self_dgmodel2d->module~self_dgmodel2d_t module~self_nulldgmodel2d_t self_NullDGModel2D_t module~self_nulldgmodel2d_t->module~self_dgmodel2d~2 module~self_lineareuler2d_pml_t self_LinearEuler2D_PML_t module~self_lineareuler2d_pml_t->module~self_dgmodel2d~2 module~self_lineareuler2d_pml_t->module~self_mappedscalar_2d module~self_lineareuler2d_t self_LinearEuler2D_t module~self_lineareuler2d_pml_t->module~self_lineareuler2d_t module~self_linearshallowwater2d_t self_LinearShallowWater2D_t module~self_linearshallowwater2d_t->module~self_dgmodel2d~2 module~self_mappedvector_2d~2->module~self_mappedvector_2d_t module~self_mappedvector_2d SELF_MappedVector_2D module~self_mappedvector_2d->module~self_mappedvector_2d_t module~self_points SELF_Points module~self_points->module~self_geometry_2d module~self_points->module~self_mappedscalar_2d module~self_points_t SELF_Points_t module~self_points->module~self_points_t module~self_mappedscalar_2d->module~self_mappedscalar_2d_t module~self_mappedscalar_2d~2 SELF_MappedScalar_2D module~self_mappedscalar_2d~2->module~self_mappedscalar_2d_t module~self_advection_diffusion_2d_t self_advection_diffusion_2d_t module~self_advection_diffusion_2d_t->module~self_dgmodel2d~2 module~self_ecdgmodel2d_t->module~self_dgmodel2d~2 module~self_mappedtwopointvector_2d~2 SELF_MappedTwoPointVector_2D module~self_ecdgmodel2d_t->module~self_mappedtwopointvector_2d~2 module~self_lineareuler2d_t->module~self_dgmodel2d~2 module~self_points_t->module~self_geometry_2d module~self_points_t->module~self_mappedscalar_2d module~self_mappedtwopointvector_2d_t SELF_MappedTwoPointVector_2D_t module~self_mappedtwopointvector_2d_t->module~self_geometry_2d module~self_linearshallowwater2d~2 self_LinearShallowWater2D module~self_linearshallowwater2d~2->module~self_linearshallowwater2d_t module~self_linearshallowwater2d self_LinearShallowWater2D module~self_linearshallowwater2d->module~self_linearshallowwater2d_t module~self_advection_diffusion_2d~2 self_advection_diffusion_2d module~self_advection_diffusion_2d~2->module~self_advection_diffusion_2d_t module~self_ecdgmodel2d~2 SELF_ECDGModel2D module~self_ecdgmodel2d~2->module~self_ecdgmodel2d_t module~self_ecdgmodel2d SELF_ECDGModel2D module~self_ecdgmodel2d->module~self_ecdgmodel2d_t module~self_lineareuler2d self_LinearEuler2D module~self_lineareuler2d->module~self_lineareuler2d_t module~self_points~2 SELF_Points module~self_points~2->module~self_points_t module~self_mappedtwopointvector_2d~2->module~self_mappedtwopointvector_2d_t module~self_nulldgmodel2d self_NullDGModel2D module~self_nulldgmodel2d->module~self_nulldgmodel2d_t module~self_lineareuler2d_pml self_LinearEuler2D_PML module~self_lineareuler2d_pml->module~self_lineareuler2d_pml_t module~self_nulldgmodel2d~2 self_NullDGModel2D module~self_nulldgmodel2d~2->module~self_nulldgmodel2d_t module~self_lineareuler2d_pml~2 self_LinearEuler2D_PML module~self_lineareuler2d_pml~2->module~self_lineareuler2d_pml_t module~self_esatmo2d_t->module~self_mappedscalar_2d module~self_esatmo2d_t->module~self_ecdgmodel2d~2 module~self_advection_diffusion_2d self_advection_diffusion_2d module~self_advection_diffusion_2d->module~self_advection_diffusion_2d_t module~self_lineareuler2d~2 self_LinearEuler2D module~self_lineareuler2d~2->module~self_lineareuler2d_t module~self_mappedtwopointvector_2d SELF_MappedTwoPointVector_2D module~self_mappedtwopointvector_2d->module~self_mappedtwopointvector_2d_t module~self_ecadvection2d_t->module~self_ecdgmodel2d~2 module~self_esatmo2d~2 SELF_ESAtmo2D module~self_esatmo2d~2->module~self_esatmo2d_t module~self_ecadvection2d SELF_ECAdvection2D module~self_ecadvection2d->module~self_ecadvection2d_t

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, public, parameter:: SELF_MESH_MATNAME_LENGTH =64
integer, public, parameter:: selfSide2D_East =2
integer, public, parameter:: selfSide2D_North =3
integer, public, parameter:: selfSide2D_South =1
integer, public, parameter:: selfSide2D_West =4

Derived Types

type, public, extends(SEMMesh) :: Mesh2D_t

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 :: nBCs
integer, public :: nCornerNodes
integer, public :: nElem
integer, public :: nGeo
integer, public :: nGlobalElem
integer, public :: nMaterials =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-Bound Procedures

procedure, public :: Free => Free_Mesh2D_t
procedure, public :: Init => Init_Mesh2D_t
procedure, public :: Read_HOHQMesh => Read_HOHQMesh_Mesh2D_t
procedure, public :: Read_HOPr => Read_HOPr_Mesh2D_t
procedure, public :: RecalculateFlip => RecalculateFlip_Mesh2D_t
procedure, public :: ResetBoundaryConditionType => ResetBoundaryConditionType_Mesh2D_t
generic, public :: StructuredMesh => UniformStructuredMesh_Mesh2D_t
procedure, private :: UniformStructuredMesh_Mesh2D_t
procedure, public :: UpdateDevice => UpdateDevice_Mesh2D_t
procedure, public :: Write_Mesh => Write_Mesh2D_t

Subroutines

public subroutine Free_Mesh2D_t(this)

Arguments

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

public subroutine Init_Mesh2D_t(this, nGeo, nElem, nSides, nNodes, nBCs)

Arguments

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

public subroutine Read_HOHQMesh_Mesh2D_t(this, meshFile)

Reader for HOHQMesh text mesh files in the ISM and ISM-MM formats. The format is auto-detected from the first line: * Line equal to "ISM-MM" (trimmed) => ISM-MM with per-element material name strings and a 4-int count line that includes an unused nEdges field (the ISM-MM writer in HOHQMesh does NOT emit an edge block). * Anything else is treated as plain ISM: the first line is itself the count line "nNodes nElems polyOrder" and there are no per-element material names.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(Mesh2D_t), intent(out) :: this
character, intent(in) :: meshFile

public subroutine Read_HOPr_Mesh2D_t(this, meshFile)

Arguments

TypeIntentOptionalAttributesName
class(Mesh2D_t), intent(out) :: this
character, intent(in) :: meshFile

public subroutine RecalculateFlip_Mesh2D_t(this)

Arguments

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

public subroutine ResetBoundaryConditionType_Mesh2D_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(Mesh2D_t), intent(inout) :: this
integer, intent(in) :: bcid

public subroutine UniformStructuredMesh_Mesh2D_t(this, nxPerTile, nyPerTile, nTileX, nTileY, dx, dy, bcids)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
class(Mesh2D_t), intent(out) :: this
integer, intent(in) :: nxPerTile
integer, intent(in) :: nyPerTile
integer, intent(in) :: nTileX
integer, intent(in) :: nTileY
real(kind=prec), intent(in) :: dx
real(kind=prec), intent(in) :: dy
integer, intent(in) :: bcids(1:4)

public subroutine UpdateDevice_Mesh2D_t(this)

Arguments

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

public subroutine Write_Mesh2D_t(this, meshFile)

Arguments

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

public subroutine build_nodeCoords_for_element(mesh, e, nGeo, cornerIDs, flag, edgeCurve, nodeXY)

Fill mesh%nodeCoords(:,:,:,e) for one element. Place the four corner nodes from the file's node table, then perform linear (nGeo=1) placement or transfinite interpolation (nGeo>1) using the (possibly curved) edge curves. For straight sides the edge curve is filled in here by linear interpolation between corners at Chebyshev-Gauss-Lobatto parametric coordinates.

Arguments

TypeIntentOptionalAttributesName
class(Mesh2D_t), intent(inout) :: mesh
integer, intent(in) :: e
integer, intent(in) :: nGeo
integer, intent(in) :: cornerIDs(1:4)
integer, intent(in) :: flag(1:4)
real(kind=prec), intent(in) :: edgeCurve(1:2,1:nGeo+1,1:4)
real(kind=prec), intent(in) :: nodeXY(:,:)

public subroutine corner_pair_for_side(corners, iSide, cN1, cN2)

Returns the two corner-node IDs delimiting a given local side using SELF's 2D side convention: Side 1 South = [CN1, CN2] Side 2 East = [CN2, CN3] Side 3 North = [CN4, CN3] Side 4 West = [CN1, CN4]

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: corners(1:4)
integer, intent(in) :: iSide
integer, intent(out) :: cN1
integer, intent(out) :: cN2