20 #ifndef GEOS_MESH_NODEMANAGER_HPP_
21 #define GEOS_MESH_NODEMANAGER_HPP_
23 #include "mesh/generators/CellBlockManagerABC.hpp"
33 class ElementRegionManager;
118 {
return "NodeManager"; }
167 bool isBaseMeshLevel );
220 bool const overwriteUpMaps,
221 bool const overwriteDownMaps )
override;
413 {
return m_referencePosition; }
428 template<
bool DO_PACKING >
Abstract base class for CellBlockManager.
static constexpr localIndex elemMapExtraSpacePerNode()
Extra space for node to elements mapping.
static constexpr localIndex edgeMapExtraSpacePerNode()
Extra space for node to edges mapping.
static constexpr localIndex faceMapExtraSpacePerNode()
Extra space for node to faces mapping.
This class provides an interface to ObjectManagerBase in order to manage edge data.
The ElementRegionManager class provides an interface to ObjectManagerBase in order to manage ElementR...
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data.
Manager of the simple geometric objects.
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data.
void compressRelationMaps()
Compress all NodeManager member arrays so that the values of each array are contiguous with no extra ...
NodeManager(string const &name, dataRepository::Group *const parent)
Main constructor for NodeManager Objects.
static constexpr localIndex getElemMapOverAllocation()
return default size of the value array in the node-to-element mapping
void setDomainBoundaryObjects(FaceManager const &faceManager, EdgeManager const &edgeManager)
Builds the node-on-domain-boundary indicator.
virtual void resize(localIndex const newsize) override
Resize the NodeManager, and all its member vectors that relate nodes to faces, to edges,...
static constexpr localIndex getEdgeMapOverallocation()
return default size of the value array in the node-to-edge mapping
void buildSets(CellBlockManagerABC const &cellBlockManager, GeometricObjectManager const &geometries)
Build sets from sources.
static constexpr localIndex getFaceMapOverallocation()
return default size of the value in the node-to-face mapping
void fixUpDownMaps(bool const clearIfUnmapped)
Call fixUpDownMaps for nodes-to-edges and nodes-to-faces maps.
void depopulateUpMaps(std::set< localIndex > const &receivedNodes, array2d< localIndex > const &edgesToNodes, ArrayOfArraysView< localIndex const > const &facesToNodes, ElementRegionManager const &elemRegionManager)
Clean up the mappings between nodes and edges, faces, elements based on a new (updated) list of nodes...
geos::NodeManager::viewKeyStruct viewKeys
viewKeys
InterObjectRelation< ArrayOfSets< localIndex > > FaceMapType
nodeToFace map type
OrderedVariableToManyElementRelation ElemMapType
nodeToElement map type
void constructGlobalToLocalMap(CellBlockManagerABC const &cellBlockManager)
Copies the local to global mapping from cellBlockManager and invert to create the global to local map...
virtual localIndex packUpDownMaps(buffer_unit_type *&buffer, arrayView1d< localIndex const > const &packList) const override
Packs an array of node indices into a buffer.
void setGeometricalRelations(CellBlockManagerABC const &cellBlockManager, ElementRegionManager const &elemRegionManager, bool isBaseMeshLevel)
Copies the nodes positions and the nodes to (edges|faces|elements) mappings from cellBlockManager.
string getCatalogName() const override final
Provide a virtual access to catalogName().
void setupRelatedObjectsInRelations(EdgeManager const &edgeManager, FaceManager const &faceManager, ElementRegionManager const &elemRegionManager)
Link the current manager to other managers.
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.
static string catalogName()
Return the name of the node manager in the object catalog.
InterObjectRelation< ArrayOfSets< localIndex > > EdgeMapType
nodeToEdge map type
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.
void buildGeometricSets(GeometricObjectManager const &geometries)
Build sets from geometric objects.
The ObjectManagerBase is the base object of all object managers in the mesh data hierachy.
BASETYPE m_toElementIndex
The relationship between object indices and element indices.
BASETYPE m_toElementSubRegion
The relationship between object indices and element subregions.
BASETYPE m_toElementRegion
The relationship between object indices and element regions.
Base template for ordered and unordered maps.
ElemMapType const & toElementRelation() const
Provide a const accessor to the nodes-to-elements relation.
ArrayOfArraysView< localIndex const > elementSubRegionList() const
Provide an immutable arrayView to the nodes-to-elements-subregions relation.
FaceMapType & faceList()
Get the nodes-to-faces relation.
ArrayOfArraysView< localIndex const > elementList() const
Provide an immutable arrayView to the nodes-to-elements indices.
ArrayOfArraysView< localIndex const > elementRegionList() const
Provide an immutable arrayView to the nodes-to-elements-regions relation.
FaceMapType const & faceList() const
Provide a const accessor to the nodes-to-faces relation.
ArrayOfArrays< localIndex > & elementRegionList()
Get the mutable nodes-to-elements-regions relation.
ElemMapType & toElementRelation()
Get the nodes-to-elements relation.
ArrayOfArrays< localIndex > & elementSubRegionList()
Get the mutable nodes-to-elements-subregions relation.
EdgeMapType & edgeList()
Get a mutable accessor to the node-to-edges relation.
EdgeMapType const & edgeList() const
Provide an immutable accessor to the nodes-to-edges relation.
array2d< real64, nodes::REFERENCE_POSITION_PERM > & referencePosition()
Get the mutable reference position array. This table will contain all the node coordinates.
ArrayOfArrays< localIndex > & elementList()
Get the mutable nodes-to-elements relation.
arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > referencePosition() const
Provide an immutable arrayView of the reference position. This table will contain all the node coordi...
Group::wrapperMap::KeyIndex ViewKey
Type alias for KeyIndexT type used for wrapper lookups.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
array1d< localIndex > localIndex_array
A 1-dimensional array of geos::localIndex types.
Array< T, 2, PERMUTATION > array2d
Alias for 2D array.
LvArray::ArrayOfArraysView< T, INDEX_TYPE const, CONST_SIZES, LvArray::ChaiBuffer > ArrayOfArraysView
View of array of variable-sized arrays. See LvArray::ArrayOfArraysView for details.
ToElementRelation< ArrayOfArrays< localIndex > > OrderedVariableToManyElementRelation
A ToElementRelation where each object is related to an arbitrary number of elements.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
signed char buffer_unit_type
Type stored in communication buffers.
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
LvArray::ArrayOfArrays< T, INDEX_TYPE, LvArray::ChaiBuffer > ArrayOfArrays
Array of variable-sized arrays. See LvArray::ArrayOfArrays for details.
contains the added view access keys to be bound with class data member.
static constexpr char const * elementListString()
dataRepository::ViewKey elementSubRegionList
Accessor to element subregion map.
dataRepository::ViewKey faceList
Accessor to face map.
static constexpr char const * elementSubRegionListString()
static constexpr char const * EmbSurfNodesPositionString()
dataRepository::ViewKey referencePosition
Accessor to reference position.
static constexpr char const * referencePositionString()
static constexpr char const * faceListString()
dataRepository::ViewKey elementList
Accessor to element map.
dataRepository::ViewKey elementRegionList
Accessor to element region map.
dataRepository::ViewKey edgeList
Accessor to edge map.
static constexpr char const * edgeListString()
static constexpr char const * elementRegionListString()
struct to serve as a container for variable strings and keys