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
exterior_dimension.hpp
Go to the documentation of this file.
1#ifndef EXTERIOR_DIMENSION_HPP
2#define EXTERIOR_DIMENSION_HPP
3
4#include <cstddef>
5
7 constexpr size_t binom(size_t n, size_t k) noexcept
8 {
9 return
10 ( k> n )? 0 : // out of range
11 (k==0 || k==n )? 1 : // edge
12 (k==1 || k==n-1)? n : // first
13 ( k+k < n )? // recursive:
14 (binom(n-1,k-1) * n)/k : // path to k=1 is faster
15 (binom(n-1,k) * n)/(n-k); // path to k=n-1 is faster
16 }
17
19 constexpr size_t ExtDim(size_t l,size_t d) noexcept
20 {
21 return binom(d,l);
22 }
23
25 constexpr size_t PolyDim(int r,size_t d) noexcept
26 {
27 return (r >= 0) ? binom(r+d,d):0;
28 }
29
31 constexpr size_t HDim(int r, size_t d) noexcept
32 {
33 return PolyDim(r,d) - PolyDim(r-1,d);
34 }
35
37 constexpr size_t PLDim(int r, size_t l, size_t d) noexcept
38 {
39 return ExtDim(l,d)*PolyDim(r,d);
40 }
41
43 constexpr size_t kHDim(int r, size_t l, size_t d) noexcept
44 {
45 return
46 (l > d) ? 0 :
47 (l == 0) ? 0 :
48 (r < 0) ? 0 :
49 binom(d+r,d-l)*binom(r+l-1,l-1);
50 }
52 constexpr size_t dHDim(int r, size_t l, size_t d) noexcept
53 {
54 return kHDim(r-1,l+1,d);
55 }
57 constexpr size_t kPLDim(int r, size_t l, size_t d) noexcept
58 {
59 size_t sum = 0;
60 for (int i = 0; i <= r; ++i) {
61 sum += kHDim(i,l,d);
62 }
63 return sum;
64 }
65
67 constexpr size_t dPLDim(int r, size_t l, size_t d) noexcept
68 {
69 size_t sum = 0;
70 for (int i = 0; i <= r; ++i) {
71 sum += dHDim(i,l,d);
72 }
73 return sum;
74 }
75
76 // Dimension of trimmed polynomial spaces
77 constexpr size_t PLtrimmedDim(int r, size_t l, size_t d) noexcept
78 {
79 return (l == 0)?
80 ((r >= 0)? kPLDim(r-1,l+1,d) + 1 : 0) // We must add P_0\Lambda^0
81 : kPLDim(r-1,l+1,d) + dPLDim(r,l-1,d);
82 }
83
84}
85
86#endif
87
Definition exterior_dimension.hpp:6
constexpr size_t ExtDim(size_t l, size_t d) noexcept
Dimension of the exterior algebra.
Definition exterior_dimension.hpp:19
constexpr size_t PLtrimmedDim(int r, size_t l, size_t d) noexcept
Definition exterior_dimension.hpp:77
constexpr size_t binom(size_t n, size_t k) noexcept
Definition exterior_dimension.hpp:7
constexpr size_t dPLDim(int r, size_t l, size_t d) noexcept
Dimension of the image of d on polynomials.
Definition exterior_dimension.hpp:67
constexpr size_t PolyDim(int r, size_t d) noexcept
Dimension of P^r(\Real^d)
Definition exterior_dimension.hpp:25
constexpr size_t kPLDim(int r, size_t l, size_t d) noexcept
Dimension of the image of Koszul on polynomials.
Definition exterior_dimension.hpp:57
constexpr size_t PLDim(int r, size_t l, size_t d) noexcept
Dimension of $P_r\Lambda^l(R^d)$.
Definition exterior_dimension.hpp:37
constexpr size_t dHDim(int r, size_t l, size_t d) noexcept
Dimension of the image of d on homogeneous polynomials.
Definition exterior_dimension.hpp:52
constexpr size_t HDim(int r, size_t d) noexcept
Dimension of homogeneous polynomials.
Definition exterior_dimension.hpp:31
constexpr size_t kHDim(int r, size_t l, size_t d) noexcept
Dimension of the image of Koszul on homogeneous polynomials.
Definition exterior_dimension.hpp:43