36 std::size_t numPat = patterns.size();
40 bool no_patterns_to_construct =
true;
41 TEUCHOS_TEST_FOR_EXCEPTION(no_patterns_to_construct,std::logic_error,
42 "GeometricAggFieldPattern::buildPattern requires at least one field pattern");
47 for(std::size_t i=1;i<patterns.size();i++)
48 sameGeometry &= patterns[0].second->sameGeometry(*(patterns[i].second));
49 TEUCHOS_TEST_FOR_EXCEPTION(not
sameGeometry,std::logic_error,
50 "GeometricAggFieldPattern::buildPattern(): Patterns must "
51 "have the same geometry!");
54 cellTopo_ = patterns[0].second->getCellTopology();
57 dimension_ = patterns[0].second->getDimension();
63 subcellCount[d] = patterns[0].second->getSubcellCount(d);
73 for(
int s=0;s<subcellCount[d];s++) {
75 for(std::size_t p=0;p<patterns.size();p++) {
77 RCP<const FieldPattern>
field = (patterns[p]).second;
79 const std::size_t num = ( (
field->getSubcellIndices(d,s).size() > 0) ? 1 : 0 );
80 if(current.size()<num) {
81 for(
int i=num-current.size();i>0;i--,counter++)
82 current.push_back(counter);
93 for(
int s=0;s<subcellCount[d];s++) {
95 for(std::size_t p=0;p<patterns.size();p++) {
97 RCP<const FieldPattern>
field = (patterns[p]).second;
99 const std::size_t num = ( (
field->getSubcellIndices(d,s).size() > 0) ? 1 : 0 );
100 if(current.size()<num) {
101 for(
int i=num-current.size();i>0;i--,counter++)
102 current.push_back(counter);
PHX::MDField< ScalarT, panzer::Cell, panzer::BASIS > field
A field to which we'll contribute, or in which we'll store, the result of computing this integral.