50 : patternBuilt_(false), dimension_(0)
54 : patternBuilt_(false), dimension_(0)
60 : patternBuilt_(false), dimension_(0)
67 std::size_t numPat = patterns.size();
71 bool no_patterns_to_construct =
true;
72 TEUCHOS_TEST_FOR_EXCEPTION(no_patterns_to_construct,std::logic_error,
73 "GeometricAggFieldPattern::buildPattern requires at least one field pattern");
78 for(std::size_t i=1;i<patterns.size();i++)
80 TEUCHOS_TEST_FOR_EXCEPTION(not
sameGeometry,std::logic_error,
81 "GeometricAggFieldPattern::buildPattern(): Patterns must " 82 "have the same geometry!");
85 cellTopo_ = patterns[0]->getCellTopology();
94 subcellCount[d] = patterns[0]->getSubcellCount(d);
102 for(
int s=0;s<subcellCount[d];s++) {
104 for(std::size_t p=0;p<patterns.size();p++) {
105 RCP<const FieldPattern>
field = patterns[p];
108 const std::size_t num = ( (
field->getSubcellIndices(d,s).size() > 0) ? 1 : 0 );
110 if(current.size()<num) {
111 for(
int i=num-current.size();i>0;i--,counter++)
112 current.push_back(counter);
124 std::vector<Teuchos::RCP<const FieldPattern> > patterns;
125 patterns.push_back(pattern);
133 TEUCHOS_TEST_FOR_EXCEPTION(
true,std::logic_error,
134 "GeometricAggFieldPattern::getSubcellCount() cannot be called before " 135 "GeometricAggFieldPattern::buildPattern()");
142 TEUCHOS_TEST_FOR_EXCEPTION(
true,std::logic_error,
143 "GeometricAggFieldPattern::getSubcellIndices() cannot be called before " 144 "GeometricAggFieldPattern::buildPattern()");
151 TEUCHOS_TEST_FOR_EXCEPTION(
true,std::logic_error,
152 "GeometricAggFieldPattern::getDimension() cannot be called before " 153 "GeometricAggFieldPattern::buildPattern()");
160 TEUCHOS_TEST_FOR_EXCEPTION(
true,std::logic_error,
161 "GeometricAggFieldPattern::getCellTopology() cannot be called before " 162 "GeometricAggFieldPattern::buildPattern()");
std::vector< std::vector< std::vector< int > > > patternData_
virtual shards::CellTopology getCellTopology() const
GeometricAggFieldPattern()
PHX::MDField< ScalarT > vector
virtual const std::vector< int > & getSubcellIndices(int dim, int cellIndex) const
virtual int getDimension() const
PHX::MDField< const ScalarT, Cell, IP > field
virtual void buildPattern(const std::vector< Teuchos::RCP< const FieldPattern > > &patterns)
virtual int getSubcellCount(int dim) const
virtual bool sameGeometry(const FieldPattern &fp) const
shards::CellTopology cellTopo_