HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face 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 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
37namespace 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 }
77 static size_t Roly(int k)
78 {
79 return (k >= 0 ? PolynomialSpaceDimension<Cell>::GolyCompl(k + 1) : 0);
80 }
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 }
107 static size_t Roly(int k)
108 {
109 return (k >= 0 ? PolynomialSpaceDimension<Face>::Poly(k + 1) - 1 : 0);
110 }
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
@ Matrix
Definition basis.hpp:67
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:41
Basis dimensions for various polynomial spaces on edges/faces/elements (when relevant): Pk,...
Definition polynomialspacedimension.hpp:54