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_evaluation.hpp
Go to the documentation of this file.
1#ifndef EXTERIOR_EVALUATION_HPP
2#define EXTERIOR_EVALUATION_HPP
3
4#include "exterior.hpp"
5
6namespace Manicore {
8 // Initial basis evaluation
10
14 template<size_t d_outer, size_t d>
16 public:
17 Monomial_scalar_basis_linear_ID(double A, Eigen::Vector<double,d> const &C, Eigen::Matrix<double, d, d_outer> const &T,int r):
18 _r(r),_A(A),_C(C),_T(T) {static_assert(d < d_outer && "Object dimension should be less than space dimension");}
20
21 double evaluate(const Eigen::Vector<double, d_outer> &x, size_t i) const {
22 assert((_r >= 0) && "Basis not initialized");
23 assert((i < Dimension::PolyDim(_r,d)) && "Index out of range");
24 auto const & power = Monomial_powers<d>::complete(_r)[i];
25 Eigen::Vector<double, d> y = _A*_T*x + _C;
26 double rv = std::pow(y(0),power[0]);
27 for (size_t i = 1; i < d; ++i) {
28 rv *= std::pow(y(i),power[i]);
29 }
30 return rv;
31 }
32
33 private:
34 int _r;
35 double _A;
36 Eigen::Vector<double, d> _C;
37 Eigen::Matrix<double, d, d_outer> _T;
38 };
39
40 template<size_t d>
42 public:
43 Monomial_scalar_basis_linear_ID(double A, Eigen::Vector<double,d> const &C,Eigen::Matrix<double, d, d> const &T,int r):
44 _r(r),_A(A),_C(C) {;}
46
47 double evaluate(const Eigen::Vector<double, d> &x, size_t i) const {
48 assert((_r >= 0) && "Basis not initialized");
49 assert((i < Dimension::PolyDim(_r,d)) && "Index out of range");
50 auto const & power = Monomial_powers<d>::complete(_r)[i];
51 Eigen::Vector<double, d> y = _A*x + _C;
52 double rv = std::pow(y(0),power[0]);
53 for (size_t i = 1; i < d; ++i) {
54 rv *= std::pow(y(i),power[i]);
55 }
56 return rv;
57 }
58
59 private:
60 int _r;
61 double _A;
62 Eigen::Vector<double, d> _C;
63 };
64
65
66}
67
68#endif
69
Monomial_scalar_basis_linear_ID(double A, Eigen::Vector< double, d > const &C, Eigen::Matrix< double, d, d > const &T, int r)
Definition exterior_evaluation.hpp:43
double evaluate(const Eigen::Vector< double, d > &x, size_t i) const
Definition exterior_evaluation.hpp:47
Monomial_scalar_basis_linear_ID()
Definition exterior_evaluation.hpp:45
Definition exterior_evaluation.hpp:15
double evaluate(const Eigen::Vector< double, d_outer > &x, size_t i) const
Definition exterior_evaluation.hpp:21
Monomial_scalar_basis_linear_ID()
Definition exterior_evaluation.hpp:19
Monomial_scalar_basis_linear_ID(double A, Eigen::Vector< double, d > const &C, Eigen::Matrix< double, d, d_outer > const &T, int r)
Definition exterior_evaluation.hpp:17
constexpr size_t PolyDim(int r, size_t d) noexcept
Dimension of P^r(\Real^d)
Definition exterior_dimension.hpp:25
Definition exterior.hpp:24
static std::vector< std::array< size_t, d > > const & complete(const int r)
Definition exterior.hpp:299