19 #ifndef GEOSX_MESH_ELEMENTREGIONMANAGER_HPP 20 #define GEOSX_MESH_ELEMENTREGIONMANAGER_HPP 23 #include "constitutive/ConstitutiveManager.hpp" 25 #include "CellElementSubRegion.hpp" 55 template<
typename VIEWTYPE >
63 template<
typename VIEWTYPE >
71 template<
typename VIEWTYPE >
78 template<
typename VIEWTYPE >
86 template<
typename VIEWTYPE >
93 template<
typename CONSTITUTIVE_TYPE >
101 {
return "ZoneManager"; }
126 template<
typename T = ElementSubRegionBase >
132 numElem += cellBlock.size();
171 virtual Group *
CreateChild(
string const & childKey,
string const & childName )
override;
187 integer documentationType )
override;
229 template<
typename T=ElementRegionBase >
240 template<
typename T=ElementRegionBase >
251 template<
typename T=ElementRegionBase >
262 template<
typename T=ElementRegionBase >
289 template<
typename REGIONTYPE =
ElementRegionBase,
typename ... REGIONTYPES,
typename LAMBDA >
293 elementRegions->
forSubGroups< REGIONTYPE, REGIONTYPES... >( std::forward< LAMBDA >( lambda ) );
302 template<
typename REGIONTYPE =
ElementRegionBase,
typename ... REGIONTYPES,
typename LAMBDA >
306 elementRegions->
forSubGroups< REGIONTYPE, REGIONTYPES... >( std::forward< LAMBDA >( lambda ) );
317 template<
typename REGIONTYPE =
ElementRegionBase,
typename ... REGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
321 elementRegions->
forSubGroups< REGIONTYPE, REGIONTYPES... >( targetRegions, std::forward< LAMBDA >( lambda ) );
332 template<
typename REGIONTYPE =
ElementRegionBase,
typename ... REGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
336 elementRegions->
forSubGroups< REGIONTYPE, REGIONTYPES... >( targetRegions, std::forward< LAMBDA >( lambda ) );
344 template<
typename LAMBDA >
356 template<
typename LAMBDA >
369 template<
typename REGIONTYPE,
typename ... REGIONTYPES,
typename LAMBDA >
378 lambda( er, castedRegion );
389 template<
typename REGIONTYPE,
typename ... REGIONTYPES,
typename LAMBDA >
398 lambda( er, castedRegion );
410 template<
typename LOOKUP_CONTAINER,
typename LAMBDA >
424 template<
typename LOOKUP_CONTAINER,
typename LAMBDA >
439 template<
typename REGIONTYPE,
typename ... REGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
443 auto & elementRegion )
445 lambda( targetIndex, elementRegion.getIndexInParent(), elementRegion );
457 template<
typename REGIONTYPE,
typename ... REGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
461 auto const & elementRegion )
463 lambda( targetIndex, elementRegion.getIndexInParent(), elementRegion );
472 template<
typename LAMBDA >
485 template<
typename LAMBDA >
499 template<
typename LOOKUP_CONTAINER,
typename LAMBDA >
513 template<
typename LOOKUP_CONTAINER,
typename LAMBDA >
526 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LAMBDA >
530 [lambda = std::forward< LAMBDA >( lambda )](
localIndex const,
546 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LAMBDA >
550 [lambda = std::forward< LAMBDA >( lambda )](
localIndex const,
553 auto const & subRegion )
567 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
571 [lambda = std::forward< LAMBDA >( lambda )](
localIndex const targetIndex,
577 lambda( targetIndex, subRegion );
589 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
593 [lambda = std::forward< LAMBDA >( lambda )](
localIndex const targetIndex,
597 auto const & subRegion )
599 lambda( targetIndex, subRegion );
608 template<
typename LAMBDA >
620 template<
typename LAMBDA >
634 template<
typename LOOKUP_CONTAINER,
typename LAMBDA >
637 forElementSubRegionsComplete< CellElementSubRegion, FaceElementSubRegion, EmbeddedSurfaceSubRegion, WellElementSubRegion >( targetRegions,
638 std::forward< LAMBDA >( lambda ) );
648 template<
typename LOOKUP_CONTAINER,
typename LAMBDA >
651 forElementSubRegionsComplete< CellElementSubRegion, FaceElementSubRegion, EmbeddedSurfaceSubRegion, WellElementSubRegion >( targetRegions,
652 std::forward< LAMBDA >( lambda ) );
661 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LAMBDA >
674 lambda( er, esr, elementRegion, castedSubRegion );
686 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LAMBDA >
699 lambda( er, esr, elementRegion, castedSubRegion );
713 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
726 lambda( targetIndex, er, esr, elementRegion, castedSubRegion );
740 template<
typename SUBREGIONTYPE,
typename ... SUBREGIONTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
753 lambda( targetIndex, er, esr, elementRegion, castedSubRegion );
766 template<
typename VIEWTYPE,
typename LHS=VIEWTYPE >
777 template<
typename VIEWTYPE,
typename LHS=VIEWTYPE >
789 template<
typename T,
int NDIM >
800 template<
typename VIEWTYPE >
811 template<
typename VIEWTYPE >
822 template<
typename VIEWTYPE,
typename LHS=VIEWTYPE >
825 constitutive::ConstitutiveManager
const *
const cm )
const;
834 template<
typename VIEWTYPE,
typename LHS=VIEWTYPE >
837 constitutive::ConstitutiveManager
const *
const cm );
850 template<
typename VIEWTYPE,
typename LHS=VIEWTYPE >
855 bool const allowMissingViews =
false )
const;
868 template<
typename VIEWTYPE,
typename LHS=VIEWTYPE >
873 bool const allowMissingViews =
false );
885 template<
typename T,
int NDIM >
890 bool const allowMissingViews =
false )
const;
898 template<
typename CONSTITUTIVE_TYPE >
909 template<
typename CONSTITUTIVE_TYPE >
1029 bool const overwriteMap );
1051 template<
bool DOPACK >
1062 template<
bool DOPACK >
1072 template<
bool DOPACK,
typename T >
1075 T
const & packList )
const;
1082 template<
typename T >
1099 template<
typename VIEWTYPE,
typename LHS >
1114 if( !neighborName.empty() )
1121 viewAccessor[kReg][kSubReg] = group->
getReference< VIEWTYPE >( viewName );
1125 return viewAccessor;
1129 template<
typename VIEWTYPE,
typename LHS >
1145 if( !neighborName.empty() )
1152 viewAccessor[kReg][kSubReg] = group->
getReference< VIEWTYPE >( viewName );
1156 return viewAccessor;
1159 template<
typename T,
int NDIM >
1167 template<
typename VIEWTYPE >
1183 if( !neighborName.empty() )
1190 viewAccessor[kReg][kSubReg].set( group->
getReference< VIEWTYPE >( viewName ));
1194 return viewAccessor;
1197 template<
typename VIEWTYPE >
1213 if( !neighborName.empty() )
1220 viewAccessor[kReg][kSubReg].set( group->
getReference< VIEWTYPE >( viewName ));
1224 return viewAccessor;
1227 template<
typename VIEWTYPE,
typename LHS >
1231 constitutive::ConstitutiveManager
const *
const cm )
const 1245 accessor[kReg][kSubReg].
resize( cm->numSubGroups() );
1247 for(
localIndex matIndex=0; matIndex<cm->numSubGroups(); ++matIndex )
1249 string constitutiveName = cm->GetGroup( matIndex )->getName();
1251 if( constitutiveRelation !=
nullptr )
1254 wrapper = constitutiveRelation->
getWrapper< VIEWTYPE >( viewName );
1256 if( wrapper !=
nullptr )
1258 accessor[kReg][kSubReg][matIndex] = wrapper->
reference();
1267 template<
typename VIEWTYPE,
typename LHS >
1271 constitutive::ConstitutiveManager
const *
const cm )
1285 accessor[kReg][kSubReg].
resize( cm->numSubGroups() );
1287 for(
localIndex matIndex=0; matIndex<cm->numSubGroups(); ++matIndex )
1289 string constitutiveName = cm->GetGroup( matIndex )->getName();
1291 if( constitutiveRelation !=
nullptr )
1294 wrapper = constitutiveRelation->
getWrapper< VIEWTYPE >( viewName );
1296 if( wrapper !=
nullptr )
1298 accessor[kReg][kSubReg][matIndex] = wrapper->
reference();
1307 template<
typename VIEWTYPE,
typename LHS >
1312 bool const allowMissingViews )
const 1321 accessor[kReg].resize(
GetRegion( kReg )->numSubRegions() );
1339 "Material " << materialNames[k] <<
" not found in " << regionNames[k] <<
'/' << subRegion.
getName() );
1341 GEOSX_ERROR_IF( !allowMissingViews && wrapper ==
nullptr,
"Material " << materialNames[k] <<
" does not contain " << viewName );
1342 if( wrapper !=
nullptr )
1344 accessor[er][esr] = wrapper->reference();
1351 template<
typename VIEWTYPE,
typename LHS >
1356 bool const allowMissingViews )
1365 accessor[kReg].resize(
GetRegion( kReg )->numSubRegions() );
1382 "Material " << materialNames[k] <<
" not found in " << regionNames[k] <<
'/' << subRegion.
getName() );
1384 GEOSX_ERROR_IF( !allowMissingViews && wrapper ==
nullptr,
"Material " << materialNames[k] <<
" does not contain " << viewName );
1385 if( wrapper !=
nullptr )
1387 accessor[er][esr] = wrapper->reference();
1394 template<
typename T,
int NDIM >
1400 bool const allowMissingViews )
const 1405 allowMissingViews );
1408 template<
typename CONSTITUTIVE_TYPE >
1424 accessor[kReg][kSubReg].
resize( cm->numSubGroups() );
1426 for(
localIndex matIndex=0; matIndex<cm->numSubGroups(); ++matIndex )
1428 string const constitutiveName = cm->GetGroup( matIndex )->getName();
1430 CONSTITUTIVE_TYPE *
const 1431 constitutiveRelation = constitutiveGroup->
GetGroup< CONSTITUTIVE_TYPE >( constitutiveName );
1432 if( constitutiveRelation !=
nullptr )
1434 accessor[kReg][kSubReg][matIndex] = constitutiveRelation;
1442 template<
typename CONSTITUTIVE_TYPE >
1458 accessor[kReg][kSubReg].
resize( cm->numSubGroups() );
1460 for(
localIndex matIndex=0; matIndex<cm->numSubGroups(); ++matIndex )
1462 string const constitutiveName = cm->GetGroup( matIndex )->getName();
1464 CONSTITUTIVE_TYPE *
const 1465 constitutiveRelation = constitutiveGroup->
GetGroup< CONSTITUTIVE_TYPE >( constitutiveName );
1466 if( constitutiveRelation !=
nullptr )
1468 accessor[kReg][kSubReg][matIndex] = constitutiveRelation;
ElementViewAccessor< LHS > ConstructViewAccessor(string const &name, string const &neighborName=string()) const
This is a const function to construct a ElementViewAccessor to access the data registered on the mesh...
subGroupMap & GetRegions()
Get a collection of element regions.
static const string CatalogName()
The function is to return the name of the ElementRegionManager in the object catalog.
void forElementSubRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda) const
This const function is used to launch kernel function over the specified target element subregions...
virtual Group * CreateChild(string const &childKey, string const &childName) override
Create a new ElementRegion object as a child of this group.
virtual localIndex UnpackUpDownMaps(buffer_unit_type const *&buffer, array1d< localIndex > &packList, bool const overwriteUpMaps, bool const overwriteDownMaps)
Unpacks the specific elements in the @ packList.
virtual ~ElementRegionManager() override
Destructor.
ConstitutiveRelationAccessor< CONSTITUTIVE_TYPE > ConstructFullConstitutiveAccessor(constitutive::ConstitutiveManager const *const cm) const
Construct a ConstitutiveRelationAccessor.
pugi::xml_node xmlNode
Alias for the type of an xml node.
void forElementRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA lambda)
This function is used to launch kernel function over the specified target element regions with region...
void GenerateAggregates(FaceManager const *const faceManager, NodeManager const *const nodeManager)
Generate the aggregates.
virtual localIndex PackGlobalMapsSize(arrayView1d< localIndex const > const &packList, integer const recursive) const
Computes the pack size of the global maps elements in the @ packList.
This class specializes the element region for the case of a well. This class is also in charge of sta...
void GenerateWells(MeshManager *const meshManager, MeshLevel *const meshLevel)
Generate the wells.
struct to serve as a container for group strings and keys
void forElementSubRegions(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda) const
This const function is used to launch kernel function over the specified target element subregions...
void forElementSubRegionsComplete(LAMBDA &&lambda)
This function is used to launch kernel function over all the element subregions that can be casted to...
void forElementRegions(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda) const
This const function is used to launch kernel function over the target element regions with region typ...
Class facilitating the representation of a multi-level discretization of a MeshBody.
INDEX_TYPE size() const noexcept
virtual void SetSchemaDeviations(xmlWrapper::xmlNode schemaRoot, xmlWrapper::xmlNode schemaParent, integer documentationType) override
Inform the schema generator of any deviations between the xml and GEOS data structures.
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data...
localIndex numSubRegions() const
Get the number of subregions in the region.
int PackGlobalMaps(buffer_unit_type *&buffer, ElementViewAccessor< arrayView1d< localIndex > > const &packList) const
Pack a buffer.
void forElementRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA lambda)
This function is used to launch kernel function over the specified target element regions...
void forElementRegions(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda)
This function is used to launch kernel function over the target element regions with region type = El...
Group key associated with elementRegionsGroup struct groupKeyStruct : public ObjectManagerBase::group...
bool hasWrapper(LOOKUP_TYPE const &lookup) const
Check if a wrapper exists.
virtual void ExpandObjectCatalogs() override
Expand any catalogs in the data structure.
void forElementSubRegionsComplete(LAMBDA &&lambda) const
This const function is used to launch kernel function over all the element subregions that can be cas...
void forElementSubRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda)
This function is used to launch kernel function over the specified target element subregions...
void forElementSubRegionsComplete(LAMBDA &&lambda) const
This const function is used to launch kernel function over the element subregions of all subregion ty...
int UnpackUpDownMaps(buffer_unit_type const *&buffer, ElementReferenceAccessor< localIndex_array > &packList, bool const overwriteMap)
Unpack element-to-node and element-to-face maps.
void forElementSubRegionsComplete(LAMBDA &&lambda)
This function is used to launch kernel function over the element subregions of all subregion types...
virtual void resize(localIndex const newSize)
Resize the group and all contained wrappers that resize with parent.
void GenerateMesh(Group *const cellBlockManager)
Generate the mesh.
typename ElementViewAccessor< VIEWTYPE >::NestedViewType ElementView
The ElementViewAccessor at the ElementRegionManager level is the type resulting from ElementViewAcces...
int PackGlobalMapsSize(ElementViewAccessor< arrayView1d< localIndex > > const &packList) const
Get the size of the buffer to be packed.
This class serves to provide a "view" of a multidimensional array.
void forElementRegionsComplete(LAMBDA lambda) const
This const function is used to launch kernel function over all the types of element regions...
void forElementSubRegions(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda) const
This const function is used to launch kernel function over the specified target element subregions wi...
int UnpackGlobalMaps(buffer_unit_type const *&buffer, ElementViewAccessor< ReferenceWrapper< localIndex_array > > &packList)
Unpack a buffer.
localIndex getNumberOfElements() const
Get the number of elements in all ElementSubRegions of type T.
void forElementSubRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda) const
This const function is used to launch kernel function over the specified target element subregions th...
ElementViewAccessor< ReferenceWrapper< VIEWTYPE > > ConstructReferenceAccessor(string const &viewName, string const &neighborName=string()) const
This is a const function to construct a ElementViewAccessor to access the data registered on the mesh...
The ObjectManagerBase is the base object of all object managers in the mesh data hierachy.
#define GEOSX_ASSERT_EQ(lhs, rhs)
Assert that two values compare equal in debug builds.
void forElementSubRegionsIndex(LAMBDA &&lambda) const
Apply LAMBDA to the subregions, loop using subregion indices.
void SetMaxGlobalIndex()
Set the maximum local and global index.
SUBREGIONTYPE const * GetSubRegion(string const ®ionName) const
Get a pointer to a subregion by specifying its name.
typename ElementViewAccessor< VIEWTYPE >::NestedViewTypeConst ElementViewConst
The ElementViewAccessor at the ElementRegionManager level is the type resulting from ElementViewAcces...
void forElementSubRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda)
This function is used to launch kernel function over the specified target element subregions that can...
static constexpr auto neighborDataString
String key to the Groupholding all the NeighborData objects.
int PackSize(string_array const &wrapperNames, ElementViewAccessor< arrayView1d< localIndex > > const &packList) const
Get the buffer size needed to pack a list of wrappers.
static bool applyLambdaToContainer(CONTAINERTYPE &container, LAMBDA &&lambda)
Apply a given functor to a container if the container can be cast to one of the specified types...
ElementViewAccessor< LHS > ConstructMaterialViewAccessor(string const &viewName, arrayView1d< string const > const ®ionNames, arrayView1d< string const > const &materialNames, bool const allowMissingViews=false) const
This is a const function to construct a MaterialViewAccessor to access the material data for specifie...
ElementViewAccessor< ArrayView< T const, NDIM > > ConstructArrayViewAccessor(string const &name, string const &neighborName=string()) const
This is a function to construct a ElementViewAccessor to access array data registered on the mesh...
GEOSX_DECLTYPE_AUTO_RETURN getReference(LOOKUP_TYPE const &lookup) const
Look up a wrapper and get reference to wrapped object.
T const * GetRegion(string const ®ionName) const
Get a element region.
T const * GetRegion(localIndex const index) const
This is a const function to get a element region.
int PackUpDownMapsSize(ElementViewAccessor< arrayView1d< localIndex > > const &packList) const
Get the buffer size needed to pack element-to-node and element-to-face maps.
int Pack(buffer_unit_type *&buffer, string_array const &wrapperNames, ElementViewAccessor< arrayView1d< localIndex > > const &packList) const
Pack a list of wrappers to a buffer.
virtual localIndex PackUpDownMapsSize(arrayView1d< localIndex const > const &packList) const
Computes the pack size of the specific elements in the @ packList.
MaterialViewAccessor< LHS > ConstructFullMaterialViewAccessor(string const &viewName, constitutive::ConstitutiveManager const *const cm) const
This is a const function to construct a MaterialViewAccessor to access the material data...
void forElementRegionsComplete(LAMBDA lambda)
This function is used to launch kernel function over all the element regions that can be casted to on...
signed char buffer_unit_type
Type stored in communication buffers.
void forElementRegionsComplete(LAMBDA lambda)
This function is used to launch kernel function over all the types of element regions.
#define GEOSX_ERROR_IF_EQ_MSG(lhs, rhs, msg)
Raise a hard error if two values are equal.
T * GetRegion(localIndex const index)
This is a function to get a element region.
Wrapper< T > const * getWrapper(LOOKUP_TYPE const &index) const
Retrieve a Wrapper stored in this group.
localIndex getIndexInParent() const
Get the group's index withing its parent group.
virtual localIndex PackSize(string_array const &wrapperNames, integer const recursive, bool on_device=false) const
Get the size required to pack a list of wrappers.
void GenerateCellToEdgeMaps(FaceManager const *const faceManager)
Generate the cell-to-edge map.
T * GetRegion(string const ®ionName)
Get a element region.
static constexpr INDEX_TYPE invalid_index
the value of an invalid index
localIndex indexType
The default index type for entries the hierarchy.
virtual localIndex PackUpDownMaps(buffer_unit_type *&buffer, arrayView1d< localIndex const > const &packList) const
Packs the specific elements in the @ packList.
virtual const string getCatalogName() const override final
Virtual access to CatalogName()
std::int32_t integer
Signed integer type.
const string getName() const
Get group name.
The ElementRegionBase is the base class to manage the data stored at the element level.
ElementRegionManager(string const &name, Group *const parent)
Constructor.
void forElementRegionsComplete(LAMBDA lambda) const
This const function is used to launch kernel function over all the element regions that can be casted...
void forElementSubRegions(LAMBDA &&lambda) const
This const function is used to launch kernel function over the element subregions of the specified su...
virtual std::type_info const & get_typeid() const =0
Get the typeid of T.
T & reference()
Accessor for m_data.
void resize(int const numDims, DIMS_TYPE const *const dims)
Resize the dimensions of the Array to match the given dimensions.
void forElementRegions(LAMBDA &&lambda) const
This const function is used to launch kernel function over all the element regions with region type =...
void resize(integer_array const &numElements, string_array const ®ionNames, string_array const &elementTypes)
Set the number of elements for a set of element regions.
std::ptrdiff_t localIndex
Local index type (for indexing objects within an MPI partition).
geosx::ElementRegionManager::groupKeyStruct m_ElementRegionManagerKeys
Element region manager keys.
ElementViewAccessor< ArrayView< T const, NDIM > > ConstructMaterialArrayViewAccessor(string const &viewName, arrayView1d< string const > const ®ionNames, arrayView1d< string const > const &materialNames, bool const allowMissingViews=false) const
Construct a view accessor for material data, assuming array as storage type.
void forSubGroups(LAMBDA lambda)
Apply the given functor to subgroups that can be casted to one of specified types.
localIndex numCellBlocks() const
Get number of the cell blocks.
virtual localIndex UnpackGlobalMaps(buffer_unit_type const *&buffer, localIndex_array &packList, integer const recursive)
Unpacks the global maps from buffer.
void forElementRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA lambda) const
This const function is used to launch kernel function over the specified target element regions...
This class manages the mesh objects in GEOSX (reservoir mesh, well mesh)
static constexpr int maxNumNodesPerElem
void forElementSubRegions(LAMBDA &&lambda)
This function is used to launch kernel function over the element subregions of the specified subregio...
dataRepository::Group const * GetConstitutiveModels() const
Get the group in which the constitutive models of this subregion are registered.
int PackUpDownMaps(buffer_unit_type *&buffer, ElementViewAccessor< arrayView1d< localIndex > > const &packList) const
Pack element-to-node and element-to-face maps.
The ElementRegionManager class provides an interface to ObjectManagerBase in order to manage ElementR...
#define GEOSX_ERROR_IF(EXP, msg)
Conditionally raise a hard error and terminate the program.
static constexpr auto elementRegionsGroup
element regions group string key
void forElementRegionsComplete(LOOKUP_CONTAINER const &targetRegions, LAMBDA lambda) const
This const function is used to launch kernel function over the specified target element regions with ...
virtual localIndex PackGlobalMaps(buffer_unit_type *&buffer, arrayView1d< localIndex const > const &packList, integer const recursive) const
Packs the global maps elements in the @ packList.
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data...
void forElementRegions(LAMBDA &&lambda)
This function is used to launch kernel function over all the element regions with region type = Eleme...
INDEX_TYPE getIndex(KEY_TYPE const &key) const
void forElementSubRegions(LAMBDA &&lambda) const
This const function is used to launch kernel function over the element subregions of all the subregio...
void forElementSubRegions(LAMBDA &&lambda)
This function is used to launch kernel function over the element subregions of all the subregion type...
virtual localIndex Pack(buffer_unit_type *&buffer, string_array const &wrapperNames, integer const recursive, bool on_device=false) const
Pack a list of wrappers to a buffer.
WrapperBase const * getWrapperBase(indexType const index) const
Retrieve a WrapperBase stored in this group.
This class provides a fixed dimensional resizeable array interface in addition to an interface simila...
void forElementSubRegions(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda)
This function is used to launch kernel function over the specified target element subregions...
virtual localIndex Unpack(buffer_unit_type const *&buffer, arrayView1d< localIndex > &packList, integer const recursive, bool on_device=false) override
Unpack a buffer.
This class describes a collection of local well elements and perforations.
T * GetGroup(localIndex index)
Retrieve a sub-group from the current Group using an index.
int Unpack(buffer_unit_type const *&buffer, ElementViewAccessor< arrayView1d< localIndex > > &packList)
Unpack a buffer.
subGroupMap const & GetRegions() const
Get a collection of element regions.
localIndex numRegions() const
Get number of the regions.
void forElementSubRegions(LOOKUP_CONTAINER const &targetRegions, LAMBDA &&lambda)
This function is used to launch kernel function over the specified target element subregions with the...