PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
Monomials_1D.hpp
Go to the documentation of this file.
1// _LICENSE_HEADER_
2//
3// Copyright (C) 2019 - 2025.
4// Terms register on the GPL-3.0 license.
5//
6// This file can be redistributed and/or modified under the license terms.
7//
8// See top level LICENSE file for more details.
9//
10// This file can be used citing references in CITATION.cff file.
11
12#ifndef __Monomials_1D_HPP
13#define __Monomials_1D_HPP
14
16
17namespace Polydim
18{
19namespace Utilities
20{
21class Monomials_1D final
22{
23 private:
25
26 public:
27 Polydim::Utilities::Monomials_Data Compute(const unsigned int polynomial_degree) const;
28
29 inline Eigen::MatrixXi Exponents(const Polydim::Utilities::Monomials_Data &data) const
30 {
31 return utilities.Exponents(data);
32 }
33
34 inline Eigen::MatrixXd DerivativeMatrix(const Polydim::Utilities::Monomials_Data &data, const unsigned int &i) const
35 {
36 return data.DerivativeMatrices[i];
37 }
38
39 inline Eigen::MatrixXd D_x(const Polydim::Utilities::Monomials_Data &data) const
40 {
41 return data.DerivativeMatrices[0];
42 }
43
44 int Index(const Eigen::VectorXi &exponents) const;
45 std::vector<int> DerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const;
46 std::vector<int> SecondDerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const;
47
48 inline Eigen::MatrixXd Vander(const Polydim::Utilities::Monomials_Data &data,
49 const Eigen::MatrixXd &points,
50 const Eigen::Vector3d &centroid,
51 const double &diam) const
52 {
53 return utilities.Vander(data, points, centroid, diam);
54 }
55
56 inline std::vector<Eigen::MatrixXd> VanderDerivatives(const Polydim::Utilities::Monomials_Data &data,
57 const Eigen::MatrixXd &vander,
58 const double &diam) const
59 {
60 return utilities.VanderDerivatives(data, (*this), vander, diam);
61 }
62
63 inline Eigen::MatrixXd VanderLaplacian(const Polydim::Utilities::Monomials_Data &data,
64 const Eigen::MatrixXd &vander,
65 const double &diam) const
66 {
67 return utilities.VanderLaplacian(data, (*this), vander, diam);
68 }
69
70 inline void MGSOrthonormalize(const Eigen::VectorXd &weights,
71 const Eigen::MatrixXd &Vander,
72 Eigen::MatrixXd &Hmatrix,
73 Eigen::MatrixXd &QmatrixInv,
74 Eigen::MatrixXd &Qmatrix) const
75 {
76 return utilities.MGSOrthonormalize(weights, Vander, Hmatrix, QmatrixInv, Qmatrix);
77 };
78};
79} // namespace Utilities
80} // namespace Polydim
81
82#endif
Definition Monomials_1D.hpp:22
std::vector< int > SecondDerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const
Definition Monomials_1D.cpp:73
std::vector< int > DerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const
Definition Monomials_1D.cpp:61
Eigen::MatrixXi Exponents(const Polydim::Utilities::Monomials_Data &data) const
Definition Monomials_1D.hpp:29
std::vector< Eigen::MatrixXd > VanderDerivatives(const Polydim::Utilities::Monomials_Data &data, const Eigen::MatrixXd &vander, const double &diam) const
Definition Monomials_1D.hpp:56
Eigen::MatrixXd D_x(const Polydim::Utilities::Monomials_Data &data) const
Definition Monomials_1D.hpp:39
Polydim::Utilities::Monomials_Data Compute(const unsigned int polynomial_degree) const
Definition Monomials_1D.cpp:22
int Index(const Eigen::VectorXi &exponents) const
Definition Monomials_1D.cpp:53
Eigen::MatrixXd Vander(const Polydim::Utilities::Monomials_Data &data, const Eigen::MatrixXd &points, const Eigen::Vector3d &centroid, const double &diam) const
Definition Monomials_1D.hpp:48
Eigen::MatrixXd DerivativeMatrix(const Polydim::Utilities::Monomials_Data &data, const unsigned int &i) const
Definition Monomials_1D.hpp:34
Eigen::MatrixXd VanderLaplacian(const Polydim::Utilities::Monomials_Data &data, const Eigen::MatrixXd &vander, const double &diam) const
Definition Monomials_1D.hpp:63
void MGSOrthonormalize(const Eigen::VectorXd &weights, const Eigen::MatrixXd &Vander, Eigen::MatrixXd &Hmatrix, Eigen::MatrixXd &QmatrixInv, Eigen::MatrixXd &Qmatrix) const
Definition Monomials_1D.hpp:70
Definition FEM_MCC_2D_LocalSpace.cpp:17
Definition Monomials_Data.hpp:23
std::vector< Eigen::MatrixXd > DerivativeMatrices
Matrices used to compute derivatives of monomials.
Definition Monomials_Data.hpp:28
Definition Monomials_Utilities.hpp:23
Eigen::MatrixXd VanderLaplacian(const Polydim::Utilities::Monomials_Data &data, const MonomialType &monomials, const Eigen::MatrixXd &Vander, const double &diam) const
Evaluate the Vandermonde matrix of the monomial Laplacian.
Definition Monomials_Utilities.hpp:155
void MGSOrthonormalize(const Eigen::VectorXd &weights, const Eigen::MatrixXd &Vander, Eigen::MatrixXd &Hmatrix, Eigen::MatrixXd &QmatrixInv, Eigen::MatrixXd &Qmatrix) const
-orthonormalize the monomial basis via modified Gram–Schmidt.
Definition Monomials_Utilities.hpp:202
Eigen::MatrixXi Exponents(const Polydim::Utilities::Monomials_Data &data) const
Collect the monomial exponents into a single matrix.
Definition Monomials_Utilities.hpp:29
Eigen::MatrixXd Vander(const Polydim::Utilities::Monomials_Data &data, const Eigen::MatrixXd &points, const Eigen::Vector3d &centroid, const double &diam) const
Evaluate the Vandermonde matrix of the scaled monomial basis.
Definition Monomials_Utilities.hpp:53
std::vector< Eigen::MatrixXd > VanderDerivatives(const Polydim::Utilities::Monomials_Data &data, const MonomialType &monomials, const Eigen::MatrixXd &Vander, const double &diam) const
Evaluate the Vandermonde matrices of the first-order partial derivatives.
Definition Monomials_Utilities.hpp:108