11 #ifndef __Panzer_WorksetDescriptor_hpp__
12 #define __Panzer_WorksetDescriptor_hpp__
71 "WorksetDescriptor constr: Element block name must be non-empty!");
84 const std::string & sideset,
94 "WorksetDescriptor constr: Element block name must be non-empty!");
96 "WorksetDescriptor constr: Side set name must be non-empty!");
115 const std::string & sideset,
127 "WorksetDescriptor constr: Element block name must be non-empty!");
129 "WorksetDescriptor constr: Side set name must be non-empty!");
151 const std::string & elementBlock_1,
152 const std::string & sideset_0,
153 const std::string & sideset_1,
167 "WorksetDescriptor constr: Element block 0 name must be non-empty!");
169 "WorksetDescriptor constr: Side set 0 name must be non-empty!");
171 "WorksetDescriptor constr: Element block 1 name must be non-empty!");
173 "WorksetDescriptor constr: Side set 1 name must be non-empty!");
286 std::size_t seed = 0;
302 os <<
"Side descriptor: "
305 <<
"side assembly = " << (wd.
sideAssembly() ?
"on" :
"off");
307 os <<
"Block descriptor: "
337 struct hash<panzer::WorksetDescriptor>
341 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)
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
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.
bool operator==(const panzer::BasisDescriptor &left, const panzer::BasisDescriptor &right)
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)
const std::vector< std::pair< int, LocalOrdinal > > &pid_and_lid const
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.