HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face 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 
26 namespace HArDCore3D { // forward dec
27 
28 class LegendreGauss;
29 }
30 
37 namespace HArDCore3D {
38 
39 class QuadRuleEdge {
40 
41 public:
42  QuadRuleEdge(size_t doe, bool warn);
43  ~QuadRuleEdge();
44 
45  size_t nq();
46  double xq(size_t i);
47  double yq(size_t i);
48  double zq(size_t i);
49  double wq(size_t i);
50  void setup(double xV[], double yV[], double zV[]);
51 
52 private:
53  size_t _npts;
54  LegendreGauss* _rule;
55  double* _w;
56  double* _xr;
57  double* _yr;
58  double* _zr;
59  double _length;
60 };
61 
63 public:
64  LegendreGauss(size_t doe);
66 
67  void sub_rule_01();
68  void sub_rule_02();
69  void sub_rule_03();
70  void sub_rule_04();
71  void sub_rule_05();
72  void sub_rule_06();
73  void sub_rule_07();
74  void sub_rule_08();
75  void sub_rule_09();
76  void sub_rule_10();
77  void sub_rule_11();
78  size_t npts();
79  double wq(size_t i);
80  double tq(size_t i);
81 
82 private:
83  size_t _doe;
84  size_t _npts;
85  double* _t;
86  double* _w;
87 };
89 }
90 
91 #endif /* QUAD1D_HPP */
Definition: quad1d.hpp:62
Definition: quad1d.hpp:39
void sub_rule_03()
Definition: quad1d.cpp:121
size_t npts()
Definition: quad1d.cpp:303
double xq(size_t i)
Definition: quad1d.cpp:37
double zq(size_t i)
Definition: quad1d.cpp:39
double wq(size_t i)
Definition: quad1d.cpp:304
void setup(double xV[], double yV[], double zV[])
Definition: quad1d.cpp:43
void sub_rule_02()
Definition: quad1d.cpp:112
double wq(size_t i)
Definition: quad1d.cpp:40
~QuadRuleEdge()
Definition: quad1d.cpp:26
~LegendreGauss()
Definition: quad1d.cpp:101
LegendreGauss(size_t doe)
Definition: quad1d.cpp:57
void sub_rule_08()
Definition: quad1d.cpp:199
void sub_rule_04()
Definition: quad1d.cpp:132
void sub_rule_11()
Definition: quad1d.cpp:271
void sub_rule_07()
Definition: quad1d.cpp:179
double tq(size_t i)
Definition: quad1d.cpp:311
void sub_rule_05()
Definition: quad1d.cpp:145
void sub_rule_01()
Definition: quad1d.cpp:106
void sub_rule_10()
Definition: quad1d.cpp:245
QuadRuleEdge(size_t doe, bool warn)
Definition: quad1d.cpp:15
double yq(size_t i)
Definition: quad1d.cpp:38
void sub_rule_09()
Definition: quad1d.cpp:221
size_t nq()
Definition: quad1d.cpp:34
void sub_rule_06()
Definition: quad1d.cpp:161
Definition: ddr-magnetostatics.hpp:40