Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_GeometricAggFieldPattern.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Panzer: A partial differential equation assembly
4 // engine for strongly coupled complex multiphysics systems
5 //
6 // Copyright 2011 NTESS and the Panzer contributors.
7 // SPDX-License-Identifier: BSD-3-Clause
8 // *****************************************************************************
9 // @HEADER
10 
11 #ifndef __Panzer_GeometricAggFieldPattern_hpp__
12 #define __Panzer_GeometricAggFieldPattern_hpp__
13 
14 #include "Panzer_FieldPattern.hpp"
15 #include "Panzer_FieldType.hpp"
16 #include "Teuchos_RCP.hpp"
17 
18 namespace panzer {
19 
40 public:
42 
47  GeometricAggFieldPattern(std::vector<std::pair<FieldType,Teuchos::RCP<const FieldPattern>>> & patterns);
48 
53  GeometricAggFieldPattern(const FieldType& fieldType,
54  const Teuchos::RCP<const FieldPattern> & pattern);
55 
57 
59  {return Teuchos::rcp(new GeometricAggFieldPattern(*this));}
60 
70  virtual void buildPattern(const std::vector<std::pair<FieldType,Teuchos::RCP<const FieldPattern>>> & patterns);
71 
75  virtual void buildPattern(const FieldType& fieldType,
76  const Teuchos::RCP<const FieldPattern> & pattern);
77 
81  virtual int getSubcellCount(int dim) const;
82 
86  virtual const std::vector<int> & getSubcellIndices(int dim,int cellIndex) const;
87 
88  /* This function has no functionality in this case.
89  * If called it will throw an assertion failure
90  */
91  virtual void getSubcellClosureIndices(int /* dim */, int /* cellIndex */, std::vector<int>& /* indices */) const
92  { TEUCHOS_ASSERT(false); }
93 
97  virtual int getDimension() const;
98 
101  virtual shards::CellTopology getCellTopology() const;
102 
103 protected:
105  std::size_t dimension_;
106  std::vector<std::vector<std::vector<int> > > patternData_;
107  shards::CellTopology cellTopo_;
108 };
109 
110 }
111 
112 #endif
std::vector< std::vector< std::vector< int > > > patternData_
virtual const std::vector< int > & getSubcellIndices(int dim, int cellIndex) const
Teuchos::RCP< panzer::FieldPattern > clone() const
FieldType
The type of discretization to use for a field pattern.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
virtual void getSubcellClosureIndices(int, int, std::vector< int > &) const
virtual void buildPattern(const std::vector< std::pair< FieldType, Teuchos::RCP< const FieldPattern >>> &patterns)
#define TEUCHOS_ASSERT(assertion_test)
virtual shards::CellTopology getCellTopology() const