Panzer Version of the Day
Loading...
Searching...
No Matches
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
16namespace panzer {
17
19{
20public:
21
25 enum {
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
76protected:
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
103namespace std {
104
105template <>
106struct hash<panzer::IntegrationDescriptor>
107{
108 std::size_t operator()(const panzer::IntegrationDescriptor& desc) const;
109};
110
111}
112
113
114#endif
@ VOLUME
No integral specified - default state.
@ CV_VOLUME
Integral over a specific side of cells (side must be set)
@ CV_BOUNDARY
Control volume side integral.
@ SIDE
Integral over all sides of cells (closed surface integral)
std::size_t _key
Unique key associated with integrator.
const int & getOrder() const
Get order of integrator.
int _side
Side associated with integration - this is for backward compatibility.
virtual ~IntegrationDescriptor()=default
Destructor.
const int & getSide() const
Get side associated with integration - this is for backward compatibility.
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...
const int & getType() const
Get type of integrator.
IntegrationDescriptor()
Constructor for empty integrator.
void setup(const int cubature_order, const int integration_type, const int side=-1)
Setup function.
int _cubature_order
Order of integration (Order of polynomial this integrator is designed for)