44#ifndef PANZER_WORKSET_HPP
45#define PANZER_WORKSET_HPP
61#include "Phalanx_KokkosDeviceTypes.hpp"
67 struct LocalMeshPartition;
69 class SubcellConnectivity;
71 class OrientationsInterface;
83 side_assembly_(false),
84 align_side_points_(false)
141 mutable std::vector<Teuchos::RCP<panzer::IntegrationValues2<double> > >
int_rules;
149 mutable std::vector<Teuchos::RCP< panzer::BasisValues2<double> > >
bases;
193 Kokkos::View<const int*,PHX::Device>
245 const bool lazy_version=
false)
const;
261 const bool lazy_version=
false)
const;
279 const bool lazy_version=
false)
const;
296 const bool lazy_version=
false)
const;
320 const int ghost_cells,
321 const int virtual_cells);
387 TEUCHOS_ASSERT(i == 0 || (i == 1 && Teuchos::nonnull(
other)));
392 TEUCHOS_ASSERT(i == 0 || (i == 1 && Teuchos::nonnull(
other)));
Description and data layouts associated with a particular basis.
const WorksetDetails & operator()(const Workset &workset) const
const accessor.
void setDetailsIndex(const int di)
An evaluator builder sets the details index.
WorksetDetails & operator()(Workset &workset) const
Workset wrapper to extract the correct details. Example: wda(workset).bases[i].
int getDetailsIndex() const
WorksetDetailsAccessor()
Default value is 0, which is backwards compatible.
int numOwnedCells() const
Number of cells owned by this workset.
const std::string & getSideset() const
Get the sideset id (returns "" if not a sideset)
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...
std::string block_id
DEPRECATED - use: getElementBlock()
Teuchos::RCP< panzer::SubcellConnectivity > face_connectivity_
std::map< size_t, Teuchos::RCP< const panzer::IntegrationValues2< double > > > integration_values_map_
std::map< size_t, std::map< size_t, Teuchos::RCP< panzer::BasisValues2< double > > > > basis_integration_values_map_
const panzer::SubcellConnectivity & getFaceConnectivity() const
int subcell_dim
DEPRECATED - use: getSubcellDimension()
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::vector< Teuchos::RCP< panzer::IntegrationValues2< double > > > int_rules
Teuchos::RCP< const shards::CellTopology > cell_topology_
const std::string & getElementBlock() const
Get the element block id.
PHX::View< const int * > cell_local_ids_k
std::map< size_t, Teuchos::RCP< const panzer::IntegrationRule > > _integration_rule_map
PHX::MDField< double, Cell, NODE, Dim > CellCoordArray
unsigned int numDimensions() const
Get the cell dimension for the mesh.
Kokkos::View< const int *, PHX::Device > getLocalCellIDs() const
Get the local cell IDs for the workset.
int num_cells
DEPRECATED - use: numCells()
bool hasSubcellConnectivity(const unsigned int subcell_dimension) const
Check if subcell connectivity exists for a given dimension.
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 numCells() const
Number of total cells in workset (owned, ghost, and virtual)
Teuchos::RCP< std::vector< std::string > > basis_names
Value corresponds to basis type. Use the offest for indexing.
std::map< size_t, Teuchos::RCP< const panzer::PointRule > > _point_rule_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.
std::map< size_t, Teuchos::RCP< const panzer::PureBasis > > _pure_basis_map
std::map< size_t, std::map< size_t, Teuchos::RCP< panzer::BasisValues2< double > > > > basis_point_values_map_
int numGhostCells() const
Number of cells owned by a different workset.
Teuchos::RCP< std::vector< int > > ir_degrees
If workset corresponds to a sub cell, what is the index?
CellCoordArray getCellVertices() const
Get the vertices for the cells.
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...
const SubcellConnectivity & getSubcellConnectivity(const unsigned int subcell_dimension) const
Get the subcell connectivity for the workset topology.
int getSubcellDimension() const
Get the subcell dimension.
int subcell_index
DEPRECATED - use: getSubcellIndex()
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)
const panzer::BasisValues2< double > & getBasisValues(const panzer::BasisDescriptor &basis_description, const bool lazy_version=false) const
std::map< size_t, Teuchos::RCP< panzer::PointValues2< double > > > point_values_map_
WorksetDetails()
Default constructor.
int getSubcellIndex() const
Get the subcell index (returns -1 if not a subcell)
int numVirtualCells() const
Number of cells not owned by any workset - these are used for boundary conditions.
std::vector< size_t > cell_local_ids
CellCoordArray cell_vertex_coordinates
DEPRECATED - use: getCellVertices()
void setup(const LocalMeshPartition &partition, const WorksetOptions &options)
Constructs the workset details from a given chunk of the mesh.
std::size_t getIdentifier() const
Get the unique identifier for this workset, this is not an index!
Workset(std::size_t identifier)
Constructor that that requires a unique identifier.
bool evaluate_transient_terms
Workset()
Default constructor, identifier is a useless 0 by default.
size_t numDetails() const
Return the number of WorksetDetails this Workset holds.
WorksetDetails & operator()(const int i)
op(0) return *this; op(1) returns *other.
std::vector< double > gather_seeds
const WorksetDetails & operator()(const int i) const
const accessor.
const WorksetDetails & details(const int i) const
void setIdentifier(std::size_t identifier)
Set the unique identifier for this workset, this is not an index!
WorksetDetails & details(const int i)
Convenience wrapper to operator() for pointer access.
Teuchos::RCP< WorksetDetails > other
std::ostream & operator<<(std::ostream &os, const AssemblyEngineInArgs &in)
Used to define options for lazy evaluation of BasisValues and IntegrationValues objects.
bool align_side_points_
If workset side integration values must align with another workset, there must be a unique order assi...
Teuchos::RCP< const OrientationsInterface > orientations_
Must be set to apply orientations - if it is set, then orientations will be applied to basis values.
bool side_assembly_
Build integration values for sides.
WorksetOptions()
Default constructor.