19 #ifndef GEOSX_MESH_FACEMANAGER_HPP_ 20 #define GEOSX_MESH_FACEMANAGER_HPP_ 29 class ElementRegionManager;
30 class CellElementSubRegion;
63 {
return "FaceManager"; }
221 bool const overwriteUpMaps,
222 bool const overwriteDownMaps )
override;
264 std::vector< std::vector< globalIndex > > & faceToNodes )
override;
278 static constexpr
auto nodeListString =
"nodeList";
279 static constexpr
auto edgeListString =
"edgeList";
280 static constexpr
auto elementRegionListString =
"elemRegionList";
281 static constexpr
auto elementSubRegionListString =
"elemSubRegionList";
282 static constexpr
auto elementListString =
"elemList";
283 constexpr
static auto faceAreaString =
"faceArea";
284 constexpr
static auto faceCenterString =
"faceCenter";
285 constexpr
static auto faceNormalString =
"faceNormal";
443 template<
bool DOPACK >
471 constexpr
static int MAX_FACE_NODES = 9;
ElemMapType const & toElementRelation() const
Get an immutable accessor to the faces-to-element-index relation.
virtual void resize(localIndex const newsize) override
Extend base class resize method resizing m_nodeList, m_edgeList member containers.
arrayView2d< localIndex const > elementSubRegionList() const
Get an immutable accessor to the faces-to-ElementSubRegion relation.
NodeMapType & nodeList()
Get a mutable accessor to a map containing the list of each nodes for each faces. ...
void SortAllFaceNodes(NodeManager const *const nodeManager, ElementRegionManager const *const elemManager)
Sort all faces nodes counterclockwisely in m_nodeList.
struct to serve as a container for group strings and keys
array2d< localIndex > const & elementList()
Get a mutable accessor to the faces-to-element-index relation.
This class serves to provide a sliced multidimensional interface to the family of LvArray classes...
void depopulateUpMaps(std::set< localIndex > const &receivedFaces, ElementRegionManager const &elemRegionManager)
Clean up the mappings from faces to element index, region, subregion on a new (updated) list of faces...
arrayView1d< real64 const > faceArea() const
Get an immutable accessor to a table containing all the face area.
array2d< real64 > const & faceNormal()
Get a mutable accessor to a table containing all the face normals.
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data...
Base template for ordered and unordered maps.
static const string CatalogName()
Return the name of the FaceManager in the object catalog.
FaceManager()=delete
Deleted default constructor.
virtual const string getCatalogName() const override
Provide a virtual access to CatalogName().
virtual localIndex PackUpDownMapsSize(arrayView1d< localIndex const > const &packList) const override
Calculate the size that a list would have if it were packed, but without actually packing it...
virtual localIndex UnpackUpDownMaps(buffer_unit_type const *&buffer, localIndex_array &packList, bool const overwriteUpMaps, bool const overwriteDownMaps) override
Unpack a buffer to an array of node indices.
This class serves to provide a "view" of a multidimensional array.
void compressRelationMaps()
Compress FaceManager face-to-node and face-to-edge containers so that the values of each array are co...
array1d< real64 > & faceArea()
Get a mutable accessor to a table containing all the face area.
The ObjectManagerBase is the base object of all object managers in the mesh data hierachy.
Group::wrapperMap::KeyIndex ViewKey
Type alias for KeyIndexT type used for wrapper lookups.
virtual groupKeyStruct & groupKeys()
Get the group keys for Group access.
NodeMapType const & nodeList() const
Get an immutable accessor to a map containing the list of each nodes for each faces.
arrayView2d< real64 const > faceNormal() const
Get an immutable accessor to a table containing all the face normals.
arrayView2d< real64 const > faceCenter() const
Get an immutable accessor to a table containing all the face centers.
virtual localIndex PackUpDownMaps(buffer_unit_type *&buffer, arrayView1d< localIndex const > const &packList) const override
Pack an array of node indices into a buffer.
virtual viewKeyStruct & viewKeys()
Get the view keys for Group access.
signed char buffer_unit_type
Type stored in communication buffers.
void BuildFaces(NodeManager *const nodeManager, ElementRegionManager *const elemManager)
Build faces in filling face-to-node and face-to-element mappings.
static localIndex nodeMapExtraSpacePerFace()
Get the default number of node per face in node list.
EdgeMapType const & edgeList() const
Get an immutable accessor to a map containing the list of each edges for each faces.
arrayView2d< localIndex const > elementList() const
Get an imutable accessor to the faces-to-element-index relation.
void FixUpDownMaps(bool const clearIfUnmapped)
Call FixUpDownMaps for nodes-to-edges and nodes-to-faces maps.
std::ptrdiff_t localIndex
Local index type (for indexing objects within an MPI partition).
virtual void ExtractMapFromObjectForAssignGlobalIndexNumbers(ObjectManagerBase const *const nodeManager, std::vector< std::vector< globalIndex > > &faceToNodes) override
Extract a face-to-nodes map with global indexed for boundary faces.
void SetIsExternal()
Flag faces on boundary or external to the DomainPartition.
array2d< localIndex > const & elementRegionList()
Get a mutable accessor to the faces-to-ElementRegion relation.
ElemMapType & toElementRelation()
Get a mutable accessor to the faces-to-element-index relation.
virtual void ViewPackingExclusionList(SortedArray< localIndex > &exclusionList) const override
Create an array listing all excluded local face indices values.
void SetDomainBoundaryObjects(NodeManager *const nodeManager)
Flag face and nodes'face with at least one element on the boundary.
void SortFaceNodes(arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const &X, arraySlice1d< real64 const > const elementCenter, localIndex *const faceNodes, localIndex const numFaceNodes)
Reorder face nodes to be labeled counter-clockwise resulting in outgoing normal.
localIndex getMaxFaceNodes() const
Return the number of nodes of the faces with the greatest number of nodes.
EdgeMapType & edgeList()
Get a mutable accessor to a map containing the list of each edges for each faces. ...
array2d< localIndex > const & elementSubRegionList()
Get a mutable accessor to the faces-to-ElementSubRegion relation.
arrayView2d< localIndex const > elementRegionList() const
Get an immutable accessor to the faces-to-ElementRegion relation.
The ElementRegionManager class provides an interface to ObjectManagerBase in order to manage ElementR...
virtual ~FaceManager() override
Destructor override from ObjectManager.
ToElementRelation< array2d< localIndex > > FixedToManyElementRelation
A ToElementRelation where each object is related to the same number of elements.
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data...
static localIndex edgeMapExtraSpacePerFace()
Get the default number of edge per face in edge list.
virtual void enforceStateFieldConsistencyPostTopologyChange(std::set< localIndex > const &targetIndices) override
Enforce child faces and parent faces to have opposite normals.
contains added group access keys to be bound with class in group hierarchy
This class provides a fixed dimensional resizeable array interface in addition to an interface simila...
struct to serve as a container for variable strings and keys
constexpr int maxFacesPerNode() const
Get the constant upper limit for number of faces per Node.
void computeGeometry(NodeManager const *const nodeManager)
Compute faces center, area and normal.