43 #ifndef __Panzer_FieldAggPattern_hpp__ 44 #define __Panzer_FieldAggPattern_hpp__ 51 #include "Teuchos_RCP.hpp" 52 #include "Teuchos_Tuple.hpp" 73 const Teuchos::RCP<const FieldPattern> & geomAggPattern=Teuchos::null);
86 const Teuchos::RCP<const FieldPattern> & geomAggPattern=Teuchos::null);
96 virtual void print(std::ostream & os)
const;
104 virtual Teuchos::RCP<const FieldPattern>
getFieldPattern(
int fieldId)
const;
139 const std::vector<int> &
localOffsets(
int fieldId)
const;
153 const std::pair<std::vector<int>,std::vector<int> > &
159 typedef Teuchos::RCP<const FieldPattern>
FPPtr;
203 std::vector<std::pair<int,Teuchos::RCP<const FieldPattern> > >
patterns_;
209 {
bool operator()(
const Teuchos::Tuple<int,3> & a,
const Teuchos::Tuple<int,3> & b)
const; };
210 mutable std::map<Teuchos::Tuple<int,3>, std::pair<std::vector<int>,std::vector<int> >,
LessThan>
void buildFieldPatternData()
void mergeFieldPatterns(int dim, int subcell)
std::map< int, std::vector< int > > fieldOffsets_
virtual ~FieldAggPattern()
std::map< Teuchos::Tuple< int, 3 >, std::pair< std::vector< int >, std::vector< int > >, LessThan > fieldSubcellOffsets_closure_
std::vector< int > numFields_
std::map< int, int > fieldIdToPatternIdx_
std::vector< std::pair< int, Teuchos::RCP< const FieldPattern > > > patterns_
virtual const std::vector< int > & getSubcellIndices(int dimension, int subcell) const
std::vector< std::vector< std::vector< int > > > patternData_
virtual Teuchos::RCP< const FieldPattern > getFieldPattern(int fieldId) const
bool operator()(const Teuchos::Tuple< int, 3 > &a, const Teuchos::Tuple< int, 3 > &b) const
Teuchos::RCP< const FieldPattern > geomAggPattern_
PHX::MDField< ScalarT > vector
virtual void buildPattern(const std::vector< std::pair< int, Teuchos::RCP< const FieldPattern > > > &patterns, const Teuchos::RCP< const FieldPattern > &geomAggPattern=Teuchos::null)
void localOffsets_build(int fieldId, std::vector< int > &offsets) const
virtual int getDimension() const
const std::vector< int > & numFieldsPerId() const
Lenght of vector is number of Ids, value is how many ids per field.
void buildFieldIdToPatternIdx()
virtual Teuchos::RCP< const FieldPattern > getGeometricAggFieldPattern() const
void addAllPatternSubcellIndices(int dim, int sc, std::vector< int > &indices)
virtual void print(std::ostream &os) const
Print this pattern.
const std::vector< int > & localOffsets(int fieldId) const
virtual void getSubcellClosureIndices(int, int, std::vector< int > &) const
void buildFieldIdsVector()
virtual shards::CellTopology getCellTopology() const
virtual int getSubcellCount(int dimension) const
Teuchos::RCP< const FieldPattern > FPPtr
const std::vector< int > & fieldIds() const
Kokkos::View< const int *, PHX::Device > offsets
std::vector< int > fieldIds_
const std::pair< std::vector< int >, std::vector< int > > & localOffsets_closure(int fieldId, int subcellDim, int subcellId) const