HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge 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 2D
2 //
3 // Provides:
4 // - Dimension of ull and partial polynomial spaces on the element and edges
5 //
6 // Authors: Daniele Di Pietro (daniele.di-pietro@umontpellier.fr), Jerome Droniou (jerome.droniou@monash.edu)
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 //#include <edge.hpp>
37 
38 namespace HArDCore2D
39 {
40 
53  template<typename GeometricSupport>
55  {
56  // Only specializations are relevant
57  };
58 
59  template<>
61  {
63  static size_t Poly(int k)
64  {
65  return (k >= 0 ? (k + 1) * (k + 2) / 2 : 0);
66  }
68  static size_t Goly(int k)
69  {
70  return (k >= 0 ? PolynomialSpaceDimension<Cell>::Poly(k + 1) - 1 : 0);
71  }
73  static size_t GolyCompl(int k)
74  {
76  }
77 
79  static size_t Roly(int k)
80  {
81  return (k >= 0 ? PolynomialSpaceDimension<Cell>::Poly(k + 1) - 1 : 0);
82  }
84  static size_t RolyCompl(int k)
85  {
87  }
88 
90  static size_t Holy(int k)
91  {
92  return (k+4) * (k+3) / 2 - 3;
93  }
94 
96  static size_t HolyCompl(int k)
97  {
98  return (k+1) * k;
99  }
100  };
101 
102  template<>
104  {
106  static size_t Poly(int k)
107  {
108  return (k >= 0 ? k + 1 : 0);
109  }
110  };
111 
113 
114 } // namespace HArDCore2D
115 #endif
static size_t HolyCompl(int k)
Dimension of Hck(T)
Definition: polynomialspacedimension.hpp:96
static size_t Goly(int k)
Dimension of Gk(T)
Definition: polynomialspacedimension.hpp:68
static size_t Poly(int k)
Dimension of Pk(E)
Definition: polynomialspacedimension.hpp:106
static size_t Poly(int k)
Dimension of Pk(T)
Definition: polynomialspacedimension.hpp:63
static size_t GolyCompl(int k)
Dimension of Gck(T)
Definition: polynomialspacedimension.hpp:73
static size_t Roly(int k)
Dimension of Rk(T)
Definition: polynomialspacedimension.hpp:79
static size_t RolyCompl(int k)
Dimension of Rck(T)
Definition: polynomialspacedimension.hpp:84
static size_t Holy(int k)
Dimension of Hk(T)
Definition: polynomialspacedimension.hpp:90
Polytope< DIMENSION > Cell
Definition: Polytope2D.hpp:151
Polytope< 1 > Edge
A Face is a Polytope with object_dim = DIMENSION - 1.
Definition: Polytope2D.hpp:147
Definition: ddr-klplate.hpp:27
Basis dimensions for various polynomial spaces on edges/faces/elements (when relevant): Pk,...
Definition: polynomialspacedimension.hpp:55