43 #ifndef __Panzer_WorksetDescriptor_hpp__
44 #define __Panzer_WorksetDescriptor_hpp__
103 "WorksetDescriptor constr: Element block name must be non-empty!");
116 const std::string & sideset,
126 "WorksetDescriptor constr: Element block name must be non-empty!");
128 "WorksetDescriptor constr: Side set name must be non-empty!");
147 const std::string & sideset,
159 "WorksetDescriptor constr: Element block name must be non-empty!");
161 "WorksetDescriptor constr: Side set name must be non-empty!");
183 const std::string & elementBlock_1,
184 const std::string & sideset_0,
185 const std::string & sideset_1,
199 "WorksetDescriptor constr: Element block 0 name must be non-empty!");
201 "WorksetDescriptor constr: Side set 0 name must be non-empty!");
203 "WorksetDescriptor constr: Element block 1 name must be non-empty!");
205 "WorksetDescriptor constr: Side set 1 name must be non-empty!");
318 std::size_t seed = 0;
334 os <<
"Side descriptor: "
337 <<
"side assembly = " << (wd.
sideAssembly() ?
"on" :
"off");
339 os <<
"Block descriptor: "
369 struct hash<panzer::WorksetDescriptor>
373 std::size_t seed = 0;
Backwards compatibility mode that ignores the worksetSize in the WorksetDescriptor.
WorksetSizeType
Special values for the workset size. When the workset size is set on the WorksetDescriptor an interge...
const std::string & getSideset(const int block=0) const
Get sideset name.
std::size_t hash_value(const WorksetDescriptor &wd)
Hash function that satisifies the stl hash interface.
bool connectsElementBlocks() const
Identifies this workset as an interface between two element blocks.
bool applyOrientations_
Apply orientations - used for continuous discretizations with edge/face elements. ...
std::string sideset_
Side set, must be non-empty if useSideset_ is true.
bool requiresPartitioning_
Marks if the mesh require partitioning before generating worksets.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
int worksetSize_
Requested workset size.
const std::string & getElementBlock(const int block=0) const
Get element block name.
bool useSideset() const
This descriptor is for a side set.
WorksetDescriptor sidesetDescriptor(const std::string &eBlock, const std::string &sideset)
WorksetDescriptor(const std::string &elementBlock, const int worksetSize=WorksetSizeType::CLASSIC_MODE, const bool requiresPartitioning=false, const bool applyOrientations=true)
WorksetDescriptor(const std::string &elementBlock, const std::string &sideset, const int worksetSize=WorksetSizeType::CLASSIC_MODE, const bool requiresPartitioning=false, const bool applyOrientations=true)
bool operator==(const WorksetDescriptor &a, const WorksetDescriptor &b)
Equality operation for use with hash tables and maps.
WorksetDescriptor(const std::string &elementBlock, const std::string &sideset, const bool sideAssembly)
std::size_t operator()(const panzer::WorksetDescriptor &wd) const
WorksetDescriptor sidesetVolumeDescriptor(const std::string &eBlock, const std::string &sideset)
std::string elementBlock_
Element block, required to be non-empty.
bool applyOrientations() const
const std::vector< std::pair< int, LocalOrdinal > > &pid_and_lid const
std::string sideset_2_
Side set on other side of side, must be non-empty if useSideset_ is true and elementBlock2_ is not em...
Workset size is set to zero.
bool sideAssembly() const
Expects side set assembly on volume.
void hash_combine(std::size_t &seed, const T &v)
std::ostream & operator<<(std::ostream &os, const AssemblyEngineInArgs &in)
WorksetDescriptor(const std::string &elementBlock_0, const std::string &elementBlock_1, const std::string &sideset_0, const std::string &sideset_1, const int worksetSize=WorksetSizeType::CLASSIC_MODE, const bool requiresPartitioning=false, const bool applyOrientations=true)
WorksetDescriptor blockDescriptor(const std::string &eBlock)
int getWorksetSize() const
Get the requested workset size (default -2 (workset size is set elsewhere), -1 (largest possible work...
bool requiresPartitioning() const
Do we need to partition the local mesh prior to generating worksets.
std::string elementBlock_2_
Element block on other side of side.
Workset size is set to the total number of local elements in the MPI process.