DFT-EFE
 
Loading...
Searching...
No Matches
QuadratureAttributes.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (c) 2021. *
3 * The Regents of the University of Michigan and DFT-EFE developers. *
4 * *
5 * This file is part of the DFT-EFE code. *
6 * *
7 * DFT-EFE is free software: you can redistribute it and/or modify *
8 * it under the terms of the Lesser GNU General Public License as *
9 * published by the Free Software Foundation, either version 3 of *
10 * the License, or (at your option) any later version. *
11 * *
12 * DFT-EFE is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
15 * See the Lesser GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License at the top level of DFT-EFE distribution. If not, see *
19 * <https://www.gnu.org/licenses/>. *
20 ******************************************************************************/
21
22/*
23 * @author Bikash Kanungo
24 */
25
26#ifndef dftefeQuadratureAttributes_h
27#define dftefeQuadratureAttributes_h
28
29#include <utils/TypeConfig.h>
30#include <map>
31#include <string>
32#include <quadrature/Defaults.h>
33namespace dftefe
34{
35 namespace quadrature
36 {
38 {
39 GAUSS, // Uniform Gauss quadrature rule across all cells in the domain
40 GLL, // Uniform Gauss-Legendre-Lobatto quadrature rule across all cells in
41 // the domain
42 GAUSS_VARIABLE, // Variable Gauss quadrature rule (i.e., different cells
43 // have different Gauss quadrature)
44 GLL_VARIABLE, // Variable Gauss-Legendre-Lobatto quadrature rule (i.e.,
45 // different cells have different Gauss-Legendre-Lobatto
46 // quadrature)
47 ADAPTIVE, // Adaptive quadrature rule
48 GAUSS_SUBDIVIDED // This family implies gauss iterated and but in an
49 // optimal manner where the {order, copy} pair is
50 // determined from an algorithm.
51 };
52
54 {
55
56 // Gauss quadrature rules
57 GAUSS_1,
58 GAUSS_2,
59 GAUSS_3,
60 GAUSS_4,
61 GAUSS_5,
62 GAUSS_6,
63 GAUSS_7,
64 GAUSS_8,
65 GAUSS_9,
70
71 // Gauss-Legendre-Lobatta quadrature rules
72 GLL_1,
73 GLL_2,
74 GLL_3,
75 GLL_4,
76 GLL_5,
77 GLL_6,
78 GLL_7,
79 GLL_8,
80 GLL_9,
81 GLL_10,
82 GLL_11,
83 GLL_12,
85
86 // Adaptive quadrature rule
88 };
89
90 static const std::map<QuadratureRuleType, size_type>
104
105
106 static const std::map<QuadratureRuleType, QuadratureFamily>
132
133
135 {
136 public:
139 const QuadratureFamily quadratureFamily,
141 const size_type num1DPoints =
143 const std::string tag = QuadratureRuleAttributesDefaults::TAG);
146 getQuadratureFamily() const;
147 bool
150 getNum1DPoints() const;
151 std::string
152 getTag() const;
153
154 bool
156 const QuadratureRuleAttributes &quadratureRuleAttributes) const;
157
158 private:
162 std::string d_tag;
163 }; // end of QuadratureRuleAttributes
164
171 {
172 public:
174 : cellId(0)
176 , quadPointId(0){};
177
179 const size_type inputCellId,
180 const QuadratureRuleAttributes *inputQuadratureRuleAttributesPtr,
181 const size_type inputQuadPointId)
182 : cellId(inputCellId)
183 , quadratureRuleAttributesPtr(inputQuadratureRuleAttributesPtr)
184 , quadPointId(inputQuadPointId){};
188 }; // end of class QuadraturePointAttributes
189 } // end of namespace quadrature
190} // end of namespace dftefe
191#endif
Class to store the attributes of a quad point, such as the cell Id it belongs, the quadPointId within...
Definition: QuadratureAttributes.h:171
size_type quadPointId
Definition: QuadratureAttributes.h:187
QuadraturePointAttributes(const size_type inputCellId, const QuadratureRuleAttributes *inputQuadratureRuleAttributesPtr, const size_type inputQuadPointId)
Definition: QuadratureAttributes.h:178
QuadraturePointAttributes()
Definition: QuadratureAttributes.h:173
size_type cellId
Definition: QuadratureAttributes.h:185
const QuadratureRuleAttributes * quadratureRuleAttributesPtr
Definition: QuadratureAttributes.h:186
static const size_type NUM_1D_POINTS
Setting all the QuadratureRuleAttributesDefaults.
Definition: Defaults.h:62
static const std::string TAG
Definition: Defaults.h:67
Definition: QuadratureAttributes.h:135
QuadratureRuleAttributes()
Definition: QuadratureAttributes.cpp:32
bool isCartesianTensorStructured() const
Definition: QuadratureAttributes.cpp:74
bool operator==(const QuadratureRuleAttributes &quadratureRuleAttributes) const
Definition: QuadratureAttributes.cpp:92
std::string d_tag
Definition: QuadratureAttributes.h:162
bool d_isCartesianTensorStructured
Definition: QuadratureAttributes.h:160
QuadratureFamily d_quadratureFamily
Definition: QuadratureAttributes.h:159
std::string getTag() const
Definition: QuadratureAttributes.cpp:86
size_type d_num1DPoints
Definition: QuadratureAttributes.h:161
size_type getNum1DPoints() const
Definition: QuadratureAttributes.cpp:80
QuadratureFamily getQuadratureFamily() const
Definition: QuadratureAttributes.cpp:68
static const std::map< QuadratureRuleType, size_type > _dftefe_quadrature_rule_to_1d_num_points_map_
Definition: QuadratureAttributes.h:91
QuadratureRuleType
Definition: QuadratureAttributes.h:54
QuadratureFamily
Definition: QuadratureAttributes.h:38
static const std::map< QuadratureRuleType, QuadratureFamily > _dftefe_quadrature_rule_to_quad_family_
Definition: QuadratureAttributes.h:107
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8