HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
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
38namespace 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
Definition ddr-klplate.hpp:27
Basis dimensions for various polynomial spaces on edges/faces/elements (when relevant): Pk,...
Definition polynomialspacedimension.hpp:55