Chi-Tech
quadrature.h
Go to the documentation of this file.
1#ifndef CHI_MATH_QUADRATURE_H
2#define CHI_MATH_QUADRATURE_H
3
4#include "ChiObject.h"
5#include "mesh/chi_mesh.h"
6
7#include <vector>
8
9namespace chi_math
10{
11// clang-format off
12 enum class QuadratureOrder : int {
13 CONSTANT = 0, FIRST = 1, SECOND = 2, THIRD = 3,
14 FOURTH = 4, FIFTH = 5, SIXTH = 6, SEVENTH = 7,
15 EIGHTH = 8, NINTH = 9, TENTH = 10, ELEVENTH = 11,
16 TWELFTH = 12, THIRTEENTH = 13, FOURTEENTH = 14, FIFTEENTH = 15,
17 SIXTEENTH = 16, SEVENTEENTH = 17, EIGHTTEENTH = 18, NINETEENTH = 19,
18 TWENTIETH = 20, TWENTYFIRST = 21, TWENTYSECOND = 22, TWENTYTHIRD = 23,
20 TWENTYEIGHTH = 28, TWENTYNINTH = 29, THIRTIETH = 30, THIRTYFIRST = 31,
21 THIRTYSECOND = 32, THIRTYTHIRD = 33, THIRTYFOURTH = 34, THIRTYFIFTH = 35,
23 FORTIETH = 40, FORTYFIRST = 41, FORTYSECOND = 42, FORTYTHIRD = 43,
25 };
26// clang-format on
28class Quadrature;
29} // namespace chi_math
30
31// ######################################################### Class def
32/**Parent class for quadratures.*/
34{
35public:
37 std::vector<chi_math::QuadraturePointXYZ> qpoints_;
38 std::vector<double> weights_;
39
41
42protected:
43 /**Interval on which the quadrature is defined
44 * (relevant for one-dimensional quadratures only).*/
45 std::pair<double, double> range_;
46 bool verbose_ = false;
47
48protected:
49 explicit Quadrature(const chi::InputParameters& params);
50 explicit Quadrature(QuadratureOrder in_order)
51 : order_(in_order), range_({0, 0})
52 {
53 }
54
55public:
56 /**Get the range on which the quadrature is defined
57 * (relevant for one-dimensional quadratures only).*/
58 const std::pair<double, double>& GetRange() const { return range_; }
59 /**Set the range on which the quadrature is defined.
60 * (relevant for one-dimensional quadratures only).
61 * Note that calling this method results in translation
62 * of the abscissae and scaling of the weights.*/
63 void SetRange(const std::pair<double, double>& in_range);
64};
65
66#endif // CHI_MATH_QUADRATURE_H
const std::pair< double, double > & GetRange() const
Definition: quadrature.h:58
static chi::InputParameters GetInputParameters()
Definition: quadrature.cc:66
void SetRange(const std::pair< double, double > &in_range)
Definition: quadrature.cc:91
std::vector< chi_math::QuadraturePointXYZ > qpoints_
Definition: quadrature.h:37
std::pair< double, double > range_
Definition: quadrature.h:45
Quadrature(QuadratureOrder in_order)
Definition: quadrature.h:50
Quadrature(const chi::InputParameters &params)
Definition: quadrature.cc:84
QuadratureOrder order_
Definition: quadrature.h:36
std::vector< double > weights_
Definition: quadrature.h:38
QuadratureOrder
Definition: quadrature.h:12
chi_mesh::Vector3 QuadraturePointXYZ
Definition: quadrature.h:27