Manicore
Library to implement schemes on n-dimensionnal manifolds.
dcell_integral.hpp
Go to the documentation of this file.
1 #ifndef DCELL_INTEGRAL_HPP_INCLUDED
2 #define DCELL_INTEGRAL_HPP_INCLUDED
3 
4 #include "integral.hpp"
5 
9 namespace Manicore {
12 
14 
17  template<size_t dimension,size_t d> requires(d > 0 && d <= dimension)
18  struct dCell_mass {
19  dCell_mass(size_t i_cell , int r , const QuadratureRule<d> & quad , const Integral<dimension,d> &integral );
21  dCell_mass() {;}
22 
24 
25  std::array<Eigen::MatrixXd,dimension+1> masses;
26  };
27 
29 
32  template<size_t dimension,size_t d> requires(d > 0 && d <= dimension)
33  struct dCell_traces {
34  dCell_traces(size_t i_cell , int r , int dqr ,
35  const std::vector<dCell_mass<dimension,d-1>> & b_masses ,
36  const Integral<dimension,d> &integral ,
37  const Integral<dimension,d-1> &integral_b );
39  dCell_traces() {;}
40 
41  // The array index is the form degree (0 to d-1), and the vector index is the boundary
43 
49  std::array<std::vector<Eigen::MatrixXd>,dimension> traces;
50  std::array<std::vector<Eigen::MatrixXd>,dimension> starTraces; // TODO: only used for the stabilization term in the L2-product, check if this is really necessary
51  };
53  template<size_t dimension>
54  struct dCell_traces<dimension,1> {
55  dCell_traces(size_t i_cell , int r , const Mesh<dimension>* mesh );
58 
59  // The array index is the form degree (0 to d-1), and the vector index is the boundary
61 
67  std::array<std::vector<Eigen::MatrixXd>,dimension> traces;
68  std::array<std::vector<Eigen::MatrixXd>,dimension> starTraces;
69  };
71 }
72 
73 #endif
74 
Main data structure for the mesh.
Definition: mesh.hpp:54
requires(d > 0 &&d<=dimension) struct dCell_mass
Compute the mass matrices of a d-cell.
Definition: dcell_integral.hpp:17
std::vector< QuadratureNode< d > > QuadratureRule
Vector of locations and weights.
Definition: quadraturerule.hpp:41
Generate quadrature and evaluate them.
Definition: maxwell.hpp:21
dCell_traces(size_t i_cell, int r, const Mesh< dimension > *mesh)
dCell_traces()
Do nothing.
Definition: dcell_integral.hpp:57
std::array< std::vector< Eigen::MatrixXd >, dimension > traces
Trace matrices for all form degree and all boundary cell.
Definition: dcell_integral.hpp:67
std::array< std::vector< Eigen::MatrixXd >, dimension > starTraces
Definition: dcell_integral.hpp:68