HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face and cell polynomials as unknowns
polynomialspacedimension.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 // - Dimension of ull and partial polynomial spaces on the element, faces, and edges
5 //
6 // Author: Daniele Di Pietro (daniele.di-pietro@umontpellier.fr)
7 //
8 
9 /*
10  *
11  * This library was developed around HHO methods, although some parts of it have a more
12  * general purpose. If you use this code or part of it in a scientific publication,
13  * please mention the following book as a reference for the underlying principles
14  * of HHO schemes:
15  *
16  * The Hybrid High-Order Method for Polytopal Meshes: Design, Analysis, and Applications.
17  * D. A. Di Pietro and J. Droniou. Modeling, Simulation and Applications, vol. 19.
18  * Springer International Publishing, 2020, xxxi + 525p. doi: 10.1007/978-3-030-37203-3.
19  * url: https://hal.archives-ouvertes.fr/hal-02151813.
20  *
21  */
22 
23 /*
24  * The DDR sequence has been designed in
25  *
26  * Fully discrete polynomial de Rham sequences of arbitrary degree on polygons and polyhedra.
27  * D. A. Di Pietro, J. Droniou, and F. Rapetti, 33p, 2019. url: https://arxiv.org/abs/1911.03616.
28  *
29  * If you use this code in a scientific publication, please mention the above article.
30  *
31  */
32 #ifndef POLYNOMIALSPACEDIMENSION_HPP
33 #define POLYNOMIALSPACEDIMENSION_HPP
34 
35 #include <mesh.hpp>
36 
37 namespace HArDCore3D
38 {
39 
52  template<typename GeometricSupport>
54  {
55  // Only specializations are relevant
56  };
57 
58  template<>
60  {
62  static size_t Poly(int k)
63  {
64  return (k >= 0 ? (k+1)*(k+2)*(k+3)/6 : 0);
65  }
67  static size_t Goly(int k)
68  {
69  return (k >= 0 ? PolynomialSpaceDimension<Cell>::Poly(k + 1) - 1 : 0);
70  }
72  static size_t GolyCompl(int k)
73  {
75  }
77  static size_t Roly(int k)
78  {
79  return (k >= 0 ? PolynomialSpaceDimension<Cell>::GolyCompl(k + 1) : 0);
80  }
82  static size_t RolyCompl(int k)
83  {
85  }
86  };
87 
88  template<>
90  {
92  static size_t Poly(int k)
93  {
94  return (k >= 0 ? (k + 1) * (k + 2) / 2 : 0);
95  }
97  static size_t Goly(int k)
98  {
99  return (k >= 0 ? PolynomialSpaceDimension<Face>::Poly(k + 1) - 1 : 0);
100  }
102  static size_t GolyCompl(int k)
103  {
105  }
107  static size_t Roly(int k)
108  {
109  return (k >= 0 ? PolynomialSpaceDimension<Face>::Poly(k + 1) - 1 : 0);
110  }
112  static size_t RolyCompl(int k)
113  {
115  }
116  };
117 
118  template<>
120  {
122  static size_t Poly(int k)
123  {
124  return (k >= 0 ? k + 1 : 0);
125  }
126  };
127 
129 
130 } // namespace HArDCore3D
131 #endif
static size_t GolyCompl(int k)
Dimension of Gck(T)
Definition: polynomialspacedimension.hpp:72
static size_t RolyCompl(int k)
Dimension of Rck(T)
Definition: polynomialspacedimension.hpp:82
static size_t Poly(int k)
Dimension of Pk(F)
Definition: polynomialspacedimension.hpp:92
static size_t Roly(int k)
Dimension of Rk(T)
Definition: polynomialspacedimension.hpp:77
static size_t Goly(int k)
Dimension of Gk(T)
Definition: polynomialspacedimension.hpp:67
static size_t Poly(int k)
Dimension of Pk(T)
Definition: polynomialspacedimension.hpp:62
static size_t Goly(int k)
Dimension of Gk(F)
Definition: polynomialspacedimension.hpp:97
static size_t GolyCompl(int k)
Dimension of Gck(F)
Definition: polynomialspacedimension.hpp:102
static size_t RolyCompl(int k)
Dimension of Rck(F)
Definition: polynomialspacedimension.hpp:112
static size_t Poly(int k)
Dimension of Pk(E)
Definition: polynomialspacedimension.hpp:122
static size_t Roly(int k)
Dimension of Rk(F)
Definition: polynomialspacedimension.hpp:107
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
Basis dimensions for various polynomial spaces on edges/faces/elements (when relevant): Pk,...
Definition: polynomialspacedimension.hpp:54