PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
GBasis_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 __GBasis_3D_HPP
13#define __GBasis_3D_HPP
14
15#include "GBasis_Data.hpp"
16#include "Monomials_3D.hpp"
17
18namespace Polydim
19{
20namespace Utilities
21{
22class GBasis_3D final
23{
24 private:
27
41 std::vector<Eigen::Vector4i> VectorDecompositionIndices(const Polydim::Utilities::GBasis_Data &data,
42 const Eigen::VectorXi &expo) const;
43
44 public:
59 Polydim::Utilities::GBasis_Data Compute(const unsigned int polynomial_degree);
60
75 std::vector<Eigen::MatrixXd> VanderGBigOPlus(const Polydim::Utilities::GBasis_Data &data, const Eigen::MatrixXd &vander) const;
76
89 std::vector<std::vector<Eigen::MatrixXd>> VectorDecomposition(const Polydim::Utilities::GBasis_Data &data) const
90 {
91 std::vector<std::vector<Eigen::MatrixXd>> result(3);
92 for (unsigned int i = 0; i < data.Dimension; i++)
93 {
94 result[i].resize(2);
95 result[i][0] = data.VectorDecomposition[i][0];
96 result[i][1].setZero(data.Nk, 2 * data.Nkm1 + data.DimFirstBasis);
97 result[i][1] << data.VectorDecomposition[i][1], data.VectorDecomposition[i][2], data.VectorDecomposition[i][3];
98 }
99 return result;
100 }
101};
102} // namespace Utilities
103} // namespace Polydim
104
105#endif
Definition GBasis_3D.hpp:23
Polydim::Utilities::GBasis_Data Compute(const unsigned int polynomial_degree)
Build the vector polynomial G-basis of a given degree in 3D.
Definition GBasis_3D.cpp:22
std::vector< Eigen::MatrixXd > VanderGBigOPlus(const Polydim::Utilities::GBasis_Data &data, const Eigen::MatrixXd &vander) const
Evaluate the Vandermonde matrix of the block.
Definition GBasis_3D.cpp:138
std::vector< std::vector< Eigen::MatrixXd > > VectorDecomposition(const Polydim::Utilities::GBasis_Data &data) const
Assemble the vector decomposition into a two-block ( , ) form.
Definition GBasis_3D.hpp:89
Definition Monomials_3D.hpp:22
Definition FEM_MCC_2D_LocalSpace.cpp:17
Definition GBasis_Data.hpp:24
unsigned int Nk
Definition GBasis_Data.hpp:30
unsigned int Dimension
Definition GBasis_Data.hpp:26
unsigned int DimFirstBasis
Definition GBasis_Data.hpp:39
unsigned int Nkm1
Definition GBasis_Data.hpp:31
std::vector< std::vector< Eigen::MatrixXd > > VectorDecomposition
Definition GBasis_Data.hpp:35