11 #ifndef PANZER_WORKSET_HPP
12 #define PANZER_WORKSET_HPP
28 #include "Phalanx_KokkosDeviceTypes.hpp"
34 struct LocalMeshPartition;
36 class SubcellConnectivity;
38 class OrientationsInterface;
50 side_assembly_(false),
51 align_side_points_(false)
108 mutable std::vector<Teuchos::RCP<panzer::IntegrationValues2<double> > >
int_rules;
116 mutable std::vector<Teuchos::RCP< panzer::BasisValues2<double> > >
bases;
212 const bool lazy_version=
false)
const;
228 const bool lazy_version=
false)
const;
246 const bool lazy_version=
false)
const;
263 const bool lazy_version=
false)
const;
287 const int ghost_cells,
288 const int virtual_cells);
int num_cells
DEPRECATED - use: numCells()
bool hasSubcellConnectivity(const unsigned int subcell_dimension) const
Check if subcell connectivity exists for a given dimension.
std::map< size_t, Teuchos::RCP< const panzer::IntegrationRule > > _integration_rule_map
PHX::View< const int * > cell_local_ids_k
std::size_t getIdentifier() const
Get the unique identifier for this workset, this is not an index!
Teuchos::RCP< panzer::SubcellConnectivity > face_connectivity_
unsigned int numDimensions() const
Get the cell dimension for the mesh.
std::map< size_t, std::map< size_t, Teuchos::RCP< panzer::BasisValues2< double > > > > basis_point_values_map_
const SubcellConnectivity & getSubcellConnectivity(const unsigned int subcell_dimension) const
Get the subcell connectivity for the workset topology.
void setDetailsIndex(const int di)
An evaluator builder sets the details index.
std::vector< size_t > cell_local_ids
bool nonnull(const std::shared_ptr< T > &p)
Used to define options for lazy evaluation of BasisValues and IntegrationValues objects.
WorksetOptions()
Default constructor.
void setIdentifier(std::size_t identifier)
Set the unique identifier for this workset, this is not an index!
bool evaluate_transient_terms
Teuchos::RCP< std::vector< int > > ir_degrees
If workset corresponds to a sub cell, what is the index?
std::vector< Teuchos::RCP< panzer::BasisValues2< double > > > bases
Static basis function data, key is basis name, value is index in the static_bases vector...
std::map< size_t, Teuchos::RCP< const panzer::IntegrationValues2< double > > > integration_values_map_
Teuchos::RCP< std::vector< std::string > > basis_names
Value corresponds to basis type. Use the offest for indexing.
panzer::PointValues2< double > & getPointValues(const panzer::PointDescriptor &point_description) const
Grab the basis values for a given basis description and integration description (throws error if it d...
int subcell_dim
DEPRECATED - use: getSubcellDimension()
int numOwnedCells() const
Number of cells owned by this workset.
int getSubcellIndex() const
Get the subcell index (returns -1 if not a subcell)
std::map< size_t, Teuchos::RCP< const panzer::PureBasis > > _pure_basis_map
int numGhostCells() const
Number of cells owned by a different workset.
Workset(std::size_t identifier)
Constructor that that requires a unique identifier.
void setNumberOfCells(const int owned_cells, const int ghost_cells, const int virtual_cells)
Provides access to set numbers of cells (required for backwards compatibility)
Teuchos::RCP< const shards::CellTopology > cell_topology_
std::map< size_t, Teuchos::RCP< const panzer::PointRule > > _point_rule_map
const panzer::PureBasis & getBasis(const panzer::BasisDescriptor &description) const
Grab the pure basis (contains data layouts) for a given basis description (throws error if integratio...
Teuchos::RCP< WorksetDetails > other
PHX::MDField< double, Cell, NODE, Dim > CellCoordArray
Teuchos::RCP< const OrientationsInterface > orientations_
Must be set to apply orientations - if it is set, then orientations will be applied to basis values...
WorksetDetailsAccessor()
Default value is 0, which is backwards compatible.
bool side_assembly_
Build integration values for sides.
std::vector< Teuchos::RCP< panzer::IntegrationValues2< double > > > int_rules
std::map< size_t, Teuchos::RCP< panzer::PointValues2< double > > > point_values_map_
std::vector< double > gather_seeds
size_t numDetails() const
Return the number of WorksetDetails this Workset holds.
const WorksetDetails & operator()(const Workset &workset) const
const accessor.
const std::string & getSideset() const
Get the sideset id (returns "" if not a sideset)
WorksetDetails & operator()(const int i)
op(0) return *this; op(1) returns *other.
std::map< size_t, std::map< size_t, Teuchos::RCP< panzer::BasisValues2< double > > > > basis_integration_values_map_
const panzer::IntegrationValues2< double > & getIntegrationValues(const panzer::IntegrationDescriptor &description, const bool lazy_version=false) const
Get the integration values for a given integration description.
Kokkos::View< const int *, PHX::Device > getLocalCellIDs() const
Get the local cell IDs for the workset.
std::string block_id
DEPRECATED - use: getElementBlock()
const WorksetDetails & details(const int i) const
WorksetDetails()
Default constructor.
const panzer::IntegrationRule & getIntegrationRule(const panzer::IntegrationDescriptor &description) const
Grab the integration rule for a given integration description (throws error if integration doesn't ex...
int subcell_index
DEPRECATED - use: getSubcellIndex()
int getDetailsIndex() const
int numCells() const
Number of total cells in workset (owned, ghost, and virtual)
int getSubcellDimension() const
Get the subcell dimension.
CellCoordArray getCellNodes() const
Get the node coordinates for the cells.
std::ostream & operator<<(std::ostream &os, const AssemblyEngineInArgs &in)
WorksetDetails & details(const int i)
Convenience wrapper to operator() for pointer access.
bool align_side_points_
If workset side integration values must align with another workset, there must be a unique order assi...
CellCoordArray cell_node_coordinates
DEPRECATED - use: getCellNodes()
const std::string & getElementBlock() const
Get the element block id.
int numVirtualCells() const
Number of cells not owned by any workset - these are used for boundary conditions.
Description and data layouts associated with a particular basis.
#define TEUCHOS_ASSERT(assertion_test)
WorksetDetails & operator()(Workset &workset) const
Workset wrapper to extract the correct details. Example: wda(workset).bases[i].
const panzer::SubcellConnectivity & getFaceConnectivity() const
void setup(const LocalMeshPartition &partition, const WorksetOptions &options)
Constructs the workset details from a given chunk of the mesh.
Workset()
Default constructor, identifier is a useless 0 by default.
const panzer::BasisValues2< double > & getBasisValues(const panzer::BasisDescriptor &basis_description, const bool lazy_version=false) const
const WorksetDetails & operator()(const int i) const
const accessor.