FEDomainConnectivity
This data type handles the connectivity between two domains.
Structure
This class is designed for generating mapping between two domains or parts of two domains.
The structure of DomainConnectivity is given below.
TYPE :: DomainConnectivity_
PRIVATE
LOGICAL(LGT), PUBLIC :: isInitiated = .FALSE.
LOGICAL(LGT), PUBLIC :: isFacetToCell = .FALSE.
LOGICAL(LGT), PUBLIC :: isNodeToNode = .FALSE.
LOGICAL(LGT), PUBLIC :: isCellToCell = .FALSE.
INTEGER(I4B), ALLOCATABLE :: nodeToNode(:)
INTEGER(I4B), ALLOCATABLE :: cellToCell(:)
INTEGER(I4B), ALLOCATABLE :: cellToCellExtraData(:, :)
TYPE(FacetConnectivity_), ALLOCATABLE :: facetToCell(:)
TYPE(ElementConnectivity_), ALLOCATABLE :: elemToElem(:)
END TYPE
Two domains can have the following relation between them
p-type
pType has the following properties:
- Same geometry
- Same number of elements
CellToCellis an identity- Different number of nodes
- Different order
h-type
hType has the following properties:
- Same geometry
- Different number of elements
- Different number of nodes
- order is same.
- Same element topology for a given mesh
CellToCellwill be a collection of elements in Domain 2.
r-type
rType has the following properties:
- Same geometry
- Same number of nodes
- Same number of elements
CellToCellis identity matrixNodeToNodeis an identity matrix- Spatial position of nodes would be different
More details
-
isInitiated, is true if an instance ofDomainConnectivityis initiated -
isFacetToCellis true iffacetToCelldata is initiated -
isNodeToNodeis true ifnodeToNodedata is initiated -
isCellToCellis true ifcellToCelldata is initiated -
nodeToNode, contains the node-to-node mapping from one mesh/domain to another mesh/domain.- We can create mapping between parts of domain (mesh) or domains. See InitiateNodeToNodeData
- Size of NodeToNode is equal to the largest node number in domain-1 or mesh-1 (depending upon how the data is initiated)
NodeToNode(i)implies global node number in domain-2/mesh-2, corresponding to global node numberiin domain-1/mesh-1.
-
cellToCellcontains the cell-to-cell mapping from one mesh/domain to another mesh/domain.- We can create mapping between parts of domain (mesh) or domains. See, InitiateCellToCellData
- Size of
cellToCellis equal to the largest element number in domain-1 or mesh-1 (depending upon how the data is initiated) cellToCell(i) denotes global element number in domain-2/ mesh-2, corresponding to global element numberiin domain-1/ mesh-1
-
cellToCellExtraData: Currently,cellToCellExtraDatahas two rows (a) the first row is dim, (b) the second row is entityNum.- each column represents the element number, for example
iel1in domain1, thencellToCell(iel1) gives iel2 in domain2cellToCellExtraData(1, iel1) gives dimension of mesh which contains iel2cellToCellExtraData(2, iel1) givesentityNumof mesh which contains iel2- In this way,
domain2%getMeshPointer(dim, entityNum)can give us the pointer to the mesh which contains the iel2
-
facetToCell, facet to cell-connectivity data.
-
elemToElem, currently, we do not know how to implement it (TODO).
FacetConnectivity
TYPE :: FacetConnectivity_
INTEGER(I4B) :: facetID = 0
!! global element number of facet element in facet mesh
INTEGER(I4B) :: GlobalCellData(4, 2) = 0
!! 1,1 --> Global element number of master cell
!! 2,1 --> master cell's local facet number connected to facet-elem
!! 3,1 --> master mesh dimension
!! 4,1 --> master mesh entity number
!! 1,2 --> Global element number of slave cell
!! 2,2 --> slave cell's local facet number connected to facet-elem
!! 3,2 --> slave mesh dimension
!! 4,2 --> slave mesh entity number
END TYPE FacetConnectivity_
ElementConnectivity
TYPE :: ElementConnectivity_
INTEGER(I4B) :: masterGlobalElemNum = 0
INTEGER(I4B) :: masterLocalFacetID = 0
INTEGER(I4B) :: slaveGlobalElemNum = 0
INTEGER(I4B) :: slaveLocalFacetID = 0
END TYPE ElementConnectivity_
All methods
📄️ Structure
This class is designed for generating mapping between two domains or parts of two domains.
📄️ Deallocate
This routine removes (cleans) the memory occupied by FEDomainConnectivity
📄️ GlobalFacetID
Returns the global facet id.
📄️ InitiateCellToCellData
This routine initiates cellToCell data (mapping) between two Domain or Mesh.
📄️ InitiateFacetToCellData
This method creates the facet to cell element-data.
📄️ InitiateNodeToNodeData
This routine initiates nodeToNode data (mapping) between two domains or parts of domains.
📄️ MasterCellNumber
Returns master cell number of given facet number.
📄️ MasterDimTag
Returns (dim, entityNum) of master cell.
📄️ MasterFacetLocalID
Returns the local facet id in master cell.
📄️ SlaveCellNumber
Returns slave cell number of given facet number.
📄️ SlaveDimTag
Returns (dim, entityNum) of master cell.
📄️ SlaveFacetLocalID
Returns the local facet id in slave cell.