PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
Monomials_3D.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_3D_HPP
13#define __Monomials_3D_HPP
14
16
17namespace Polydim
18{
19namespace Utilities
20{
21class Monomials_3D 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 inline Eigen::MatrixXd D_y(const Polydim::Utilities::Monomials_Data &data) const
45 {
46 return data.DerivativeMatrices[1];
47 }
48
49 inline Eigen::MatrixXd D_z(const Polydim::Utilities::Monomials_Data &data) const
50 {
51 return data.DerivativeMatrices[2];
52 }
53
54 int Index(const Eigen::VectorXi &exponents) const;
55 std::vector<int> DerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const;
56 std::vector<int> SecondDerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const;
57
58 inline Eigen::MatrixXd Vander(const Polydim::Utilities::Monomials_Data &data,
59 const Eigen::MatrixXd &points,
60 const Eigen::Vector3d &centroid,
61 const double &diam) const
62 {
63 return utilities.Vander(data, points, centroid, diam);
64 }
65 inline std::vector<Eigen::MatrixXd> VanderDerivatives(const Polydim::Utilities::Monomials_Data &data,
66 const Eigen::MatrixXd &vander,
67 const double &diam) const
68 {
69 return utilities.VanderDerivatives(data, (*this), vander, diam);
70 }
71
72 inline Eigen::MatrixXd VanderLaplacian(const Polydim::Utilities::Monomials_Data &data,
73 const Eigen::MatrixXd &vander,
74 const double &diam) const
75 {
76 return utilities.VanderLaplacian(data, (*this), vander, diam);
77 }
78
79 inline void MGSOrthonormalize(const Eigen::VectorXd &weights,
80 const Eigen::MatrixXd &Vander,
81 Eigen::MatrixXd &Hmatrix,
82 Eigen::MatrixXd &QmatrixInv,
83 Eigen::MatrixXd &Qmatrix) const
84 {
85 return utilities.MGSOrthonormalize(weights, Vander, Hmatrix, QmatrixInv, Qmatrix);
86 };
87};
88} // namespace Utilities
89} // namespace Polydim
90
91#endif
Definition Monomials_3D.hpp:22
std::vector< int > SecondDerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const
Definition Monomials_3D.cpp:89
Eigen::MatrixXd VanderLaplacian(const Polydim::Utilities::Monomials_Data &data, const Eigen::MatrixXd &vander, const double &diam) const
Definition Monomials_3D.hpp:72
Eigen::MatrixXd D_y(const Polydim::Utilities::Monomials_Data &data) const
Definition Monomials_3D.hpp:44
Eigen::MatrixXd D_x(const Polydim::Utilities::Monomials_Data &data) const
Definition Monomials_3D.hpp:39
Eigen::MatrixXd Vander(const Polydim::Utilities::Monomials_Data &data, const Eigen::MatrixXd &points, const Eigen::Vector3d &centroid, const double &diam) const
Definition Monomials_3D.hpp:58
Polydim::Utilities::Monomials_Data Compute(const unsigned int polynomial_degree) const
Definition Monomials_3D.cpp:22
void MGSOrthonormalize(const Eigen::VectorXd &weights, const Eigen::MatrixXd &Vander, Eigen::MatrixXd &Hmatrix, Eigen::MatrixXd &QmatrixInv, Eigen::MatrixXd &Qmatrix) const
Definition Monomials_3D.hpp:79
Eigen::MatrixXd DerivativeMatrix(const Polydim::Utilities::Monomials_Data &data, const unsigned int &i) const
Definition Monomials_3D.hpp:34
std::vector< Eigen::MatrixXd > VanderDerivatives(const Polydim::Utilities::Monomials_Data &data, const Eigen::MatrixXd &vander, const double &diam) const
Definition Monomials_3D.hpp:65
Eigen::MatrixXi Exponents(const Polydim::Utilities::Monomials_Data &data) const
Definition Monomials_3D.hpp:29
Eigen::MatrixXd D_z(const Polydim::Utilities::Monomials_Data &data) const
Definition Monomials_3D.hpp:49
std::vector< int > DerivativeIndices(const Polydim::Utilities::Monomials_Data &data, const unsigned int &index) const
Definition Monomials_3D.cpp:75
int Index(const Eigen::VectorXi &exponents) const
Definition Monomials_3D.cpp:62
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