HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face and cell polynomials as unknowns
quadraturerule.hpp
Go to the documentation of this file.
1 // Core data structures and methods required to implement the discrete de Rham sequence in 3D
2 //
3 // Provides:
4 // - Generation of quadrature rules over cells and faces of the mesh
5 //
6 // Author: Daniele Di Pietro (daniele.di-pietro@umontpellier.fr)
7 // Author: Jérome Droniou (jerome.droniou@monash.edu)
8 //
9 
10 /*
11  *
12  * This library was developed around HHO methods, although some parts of it have a more
13  * general purpose. If you use this code or part of it in a scientific publication,
14  * please mention the following book as a reference for the underlying principles
15  * of HHO schemes:
16  *
17  * The Hybrid High-Order Method for Polytopal Meshes: Design, Analysis, and Applications.
18  * D. A. Di Pietro and J. Droniou. Modeling, Simulation and Applications, vol. 19.
19  * Springer International Publishing, 2020, xxxi + 525p. doi: 10.1007/978-3-030-37203-3.
20  * url: https://hal.archives-ouvertes.fr/hal-02151813.
21  *
22  */
23 
24 #ifndef QUADRATURERULE_HPP
25 #define QUADRATURERULE_HPP
26 
27 #include <vector>
28 
29 #include <mesh.hpp>
30 
31 
38 namespace HArDCore3D {
39 
47  {
48  double x, y, z, w;
49  QuadratureNode(double x, double y, double z, double w)
50  : x(x), y(y), z(z), w(w)
51  {
52  // Do nothing
53  }
54 
56  inline Eigen::Vector3d vector() const {
57  return Eigen::Vector3d(x,y,z);
58  }
59  };
60 
61  typedef std::vector<QuadratureNode> QuadratureRule;
62 
65  const Cell & T,
66  const int doe,
67  const bool force_split = false
68  );
72  const Face & F,
73  const int doe
74  );
78  const Edge & E,
79  const int doe
80  );
82 } // end of namespace HArDCore3D
83 #endif
QuadratureRule generate_quadrature_rule(const Cell &T, const int doe, const bool force_split)
Generate quadrature rule on mesh element.
Definition: quadraturerule.cpp:11
double x
Definition: quadraturerule.hpp:48
std::vector< QuadratureNode > QuadratureRule
Definition: quadraturerule.hpp:61
QuadratureNode(double x, double y, double z, double w)
Definition: quadraturerule.hpp:49
Eigen::Vector3d vector() const
Returns the quadrature point as an Eigen vector.
Definition: quadraturerule.hpp:56
double z
Definition: quadraturerule.hpp:48
double w
Definition: quadraturerule.hpp:48
double y
Definition: quadraturerule.hpp:48
Definition: ddr-magnetostatics.hpp:40
MeshND::Edge< 2 > Edge
Definition: Mesh2D.hpp:11
MeshND::Face< 2 > Face
Definition: Mesh2D.hpp:12
MeshND::Cell< 2 > Cell
Definition: Mesh2D.hpp:13
Description of one node and one weight from a quadrature rule.
Definition: quadraturerule.hpp:47