HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
quad1d.hpp
Go to the documentation of this file.
1 // Creates quadrature rule on an edge
2 //
3 // Author: Jerome Droniou (jerome.droniou@monash.edu)
4 //
5 
6 /*
7 *
8 * This library was developed around HHO methods, although some parts of it have a more
9 * general purpose. If you use this code or part of it in a scientific publication,
10 * please mention the following book as a reference for the underlying principles
11 * of HHO schemes:
12 *
13 * The Hybrid High-Order Method for Polytopal Meshes: Design, Analysis, and Applications.
14 * D. A. Di Pietro and J. Droniou. Modeling, Simulation and Applications, vol. 19.
15 * Springer International Publishing, 2020, xxxi + 525p. doi: 10.1007/978-3-030-37203-3.
16 * url: https://hal.archives-ouvertes.fr/hal-02151813.
17 *
18 */
19 
20 
21 
22 #ifndef QUAD1D_HPP
23 #define QUAD1D_HPP
24 #include<stddef.h>
25 namespace HArDCore2D { // forward dec
26 class LegendreGauss;
27 }
28 
35 namespace HArDCore2D {
36 
37 class QuadRuleEdge {
38  static constexpr size_t max_doe = 20;
39 
40 public:
41  QuadRuleEdge(size_t doe, bool warn);
42  ~QuadRuleEdge();
43 
44  size_t nq();
45  double xq(size_t i);
46  double yq(size_t i);
47  double wq(size_t i);
48  void setup(double xV[], double yV[]);
49 
50 private:
51  size_t _npts;
52  LegendreGauss* _rule;
53  double* _w;
54  double* _xr;
55  double* _yr;
56  double _length;
57 };
58 
60 public:
61  LegendreGauss(size_t doe); //, double x[] double y[], double w[]);
63 
64  void sub_rule_01();
65  void sub_rule_02();
66  void sub_rule_03();
67  void sub_rule_04();
68  void sub_rule_05();
69  void sub_rule_06();
70  void sub_rule_07();
71  void sub_rule_08();
72  void sub_rule_09();
73  void sub_rule_10();
74  void sub_rule_11();
75  size_t npts();
76  double wq(size_t i);
77  double tq(size_t i);
78 
79 private:
80  size_t _doe;
81  size_t _npts;
82  double* _t;
83  double* _w;
84 };
86 }
87 
88 #endif /* QUAD1D_HPP */
Definition: quad1d.hpp:59
Definition: quad1d.hpp:37
Compute max and min eigenvalues of all matrices for i
Definition: compute_eigs.m:5
void sub_rule_03()
Definition: quad1d.cpp:114
size_t npts()
Definition: quad1d.cpp:296
double xq(size_t i)
Definition: quad1d.cpp:33
double wq(size_t i)
Definition: quad1d.cpp:297
void sub_rule_02()
Definition: quad1d.cpp:105
double wq(size_t i)
Definition: quad1d.cpp:35
~QuadRuleEdge()
Definition: quad1d.cpp:23
~LegendreGauss()
Definition: quad1d.cpp:94
LegendreGauss(size_t doe)
Definition: quad1d.cpp:50
void sub_rule_08()
Definition: quad1d.cpp:192
void sub_rule_04()
Definition: quad1d.cpp:125
void setup(double xV[], double yV[])
Definition: quad1d.cpp:38
void sub_rule_11()
Definition: quad1d.cpp:264
void sub_rule_07()
Definition: quad1d.cpp:172
double tq(size_t i)
Definition: quad1d.cpp:304
void sub_rule_05()
Definition: quad1d.cpp:138
void sub_rule_01()
Definition: quad1d.cpp:99
void sub_rule_10()
Definition: quad1d.cpp:238
QuadRuleEdge(size_t doe, bool warn)
Definition: quad1d.cpp:13
double yq(size_t i)
Definition: quad1d.cpp:34
void sub_rule_09()
Definition: quad1d.cpp:214
size_t nq()
Definition: quad1d.cpp:30
void sub_rule_06()
Definition: quad1d.cpp:154
Definition: ddr-klplate.hpp:27