Structure
The structure of Domain CLASS is given below.
TYPE :: Domain_
PRIVATE
LOGICAL(LGT), PUBLIC :: isInitiated = .FALSE.
!! flag
TYPE(String) :: engine
!! Engine used for generating the meshes
INTEGER(I4B) :: majorVersion = 0
!! Major version
INTEGER(I4B) :: minorVersion = 0
!! Minor version
REAL(DFP) :: version = 0.0_DFP
!! Version MajorVersion.MinorVersion
INTEGER(I4B) :: nsd = 0_I4B
!! number of spatial dimension
INTEGER(I4B), PUBLIC :: maxNptrs = 0
!! Largest node number in the domain
INTEGER(I4B), PUBLIC :: minNptrs = 0
!! Smallest node number in the domain
INTEGER(I4B) :: tNodes = 0
!! Total number of nodes in the mesh
LOGICAL(I4B) :: isNodeNumberSparse = .FALSE.
!! True if node numbers are not continuous
INTEGER(I4B), PUBLIC :: maxElemNum = 0
!! Largest element number in the domain
INTEGER(I4B), PUBLIC :: minElemNum = 0
!! Smallest element number in the domain
LOGICAL(LGT) :: isElemNumberSparse = .FALSE.
!! True if element numbers are sparse
INTEGER(I4B) :: tEntitiesForNodes = 0
!! Total number of entities required for reading nodes
INTEGER(I4B) :: tEntitiesForElements = 0
!! Total number of entities required for reading elements
INTEGER(I4B) :: tElements(0:3) = [0, 0, 0, 0]
!! Total number of elements inside the domain
!! tElements( 0 ) = total number of point elements
!! tElements( 1 ) = total number of line elements
!! tElements( 2 ) = total number of surface elements
!! tElements( 3 ) = total number of volume/cell elements
INTEGER(I4B) :: tEntities(0:3) = [0, 0, 0, 0]
!! Total number of entities inside the domain
!! tEntities( 0 ) = total number of point mesh entities, mesh of Points
!! tEntities( 1 ) = total number of line mesh entities, mesh of Edge
!! tEntities( 2 ) = total number of surface mesh entities, mesh Boundary
!! tEntities( 3 ) = total number of volume mesh entities, Omega
REAL(DFP), ALLOCATABLE, PUBLIC :: nodeCoord(:, :)
!! Nodal coordinates in XiJ format
!! Number of rows are 3, and number of columns is total nodes
INTEGER(I4B), ALLOCATABLE, PUBLIC :: local_nptrs(:)
!! local_nptrs are required to access the nodeCoord
INTEGER(I4B), ALLOCATABLE, PUBLIC :: global_nptrs(:)
!! global nptrs
TYPE(MeshPointerVector_), ALLOCATABLE :: meshList(:)
!! meshList( 0 ) list of meshes of point entities
!! meshList( 1 ) list of meshes of line entities
!! meshList( 2 ) list of meshes of surface entities
!! meshList( 3 ) list of meshes of volume entities
TYPE(MeshFacetData_), ALLOCATABLE, PUBLIC :: meshFacetData(:)
TYPE(CSRSparsity_) :: meshMap
-
isInitiated
It is true if the domain is initiated. -
engine
It is the name of the engine used to create the mesh -
majorVersion
It is the major version of the mesh engine -
minorVersion
It is the minor version of the mesh engine -
version
this is the version of the mesh engine -
nsd
this is the spatial dimension of the domain -
maxNptrs
, the largest node number in the domain -
minNptrs
, the smallest node number in the domain -
isElemNumberSparse
True if the element numbers are sparse -
tEntitiesForNodes
Total number of entities for the nodes -
tEntitiesForElements
total number of entities for the mesh. -
tElements
It is an integer vector of length 4. Lower bound is 0 and upper bound is 1.tElements(0)
denotes the total number of point elementstElements(1)
denotes the total number of curve elementstElements(2)
denotes the total number of surface elementstElements(3)
denotes the total number of volume elements.
-
tEntities
It is an integer vector of length 4. It denotes the total number of entities of a given co dimension.tEntities(0)
total number of entities (mesh) of point elementstEntities(1)
total number of entities (mesh) of curve elementstEntities(2)
total number of entities (mesh) of surface elementstEntities(3)
total number of entities (mesh) of volume elements.
-
nodeCoord
nodal coordinates. rows of nodeCoord represent the spatial dimension. columns of nodeCoord represents the spatial node number. -
local_nptrs
It is the index mapping which converts global node number to local node number. -
global_nptrs
, local to global node number mapping. -
meshList
meshList(0)
list of meshes of point entitiesmeshList( 1 )
list of meshes of line entitiesmeshList( 2 )
list of meshes of surface entitiesmeshList( 3 )
list of meshes of volume entities
meshFacetData
mesh facet data is given below.
TYPE MeshFacetData_
INTEGER(I4B) :: masterMesh = 0
INTEGER(I4B) :: slaveMesh = 0
INTEGER(I4B), ALLOCATABLE :: masterCellNumber(:)
INTEGER(I4B), ALLOCATABLE :: slaveCellNumber(:)
INTEGER(I4B), ALLOCATABLE :: masterLocalFacetID(:)
INTEGER(I4B), ALLOCATABLE :: slaveLocalFacetID(:)
! CLASS( Halo_ ), POINTER :: halo => NULL()
END TYPE MeshFacetData_
meshMap
contains the connectivity of meshes of dimension nsd
(that is, meshes of cell ).
Let us say there are meshes of cell elements. That is,
- In 1D, cell means line elements
- In 2D, cell means surface elements
- In 3D, cell means volume elements
Then, we constructs a sparse matrix, , of dimension . If is 1 then mesh-I and mesh-J are connected with each other. Otherwise, they are not connected with each other. This information is stored in an instance of CSRSparsity in meshMap