Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_IntegrationDescriptor.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_INTEGRATION_DESCRIPTOR_HPP
12 #define PANZER_INTEGRATION_DESCRIPTOR_HPP
13 
14 #include <functional>
15 
16 namespace panzer {
17 
19 {
20 public:
21 
25  enum {
26  NONE,
29  SIDE,
33  };
34 
39 
41  virtual ~IntegrationDescriptor() = default;
42 
49  IntegrationDescriptor(const int cubature_order, const int integration_type, const int side=-1);
50 
55  const int & getType() const {return _integration_type;}
56 
61  const int & getOrder() const {return _cubature_order;}
62 
67  const int & getSide() const {return _side;}
68 
74  std::size_t getKey() const {return _key;}
75 
76 protected:
77 
84  void setup(const int cubature_order, const int integration_type, const int side=-1);
85 
88 
91 
93  int _side;
94 
96  std::size_t _key;
97 
98 };
99 
100 }
101 
102 
103 namespace std {
104 
105 template <>
106 struct hash<panzer::IntegrationDescriptor>
107 {
108  std::size_t operator()(const panzer::IntegrationDescriptor& desc) const;
109 };
110 
111 }
112 
113 
114 #endif
std::size_t getKey() const
Get unique key associated with integrator of this order and type The key is used to sort through a ma...
int _cubature_order
Order of integration (Order of polynomial this integrator is designed for)
IntegrationDescriptor()
Constructor for empty integrator.
Integral over a specific side of cells (side must be set)
No integral specified - default state.
const int & getType() const
Get type of integrator.
void setup(const int cubature_order, const int integration_type, const int side=-1)
Setup function.
std::size_t _key
Unique key associated with integrator.
const int & getSide() const
Get side associated with integration - this is for backward compatibility.
Integral over all sides of cells (closed surface integral)
virtual ~IntegrationDescriptor()=default
Destructor.
int _side
Side associated with integration - this is for backward compatibility.
const int & getOrder() const
Get order of integrator.