PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
VEM_PCC_2D_Inertia_LocalSpace.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 __VEM_PCC_2D_Inertia_LocalSpace_HPP
13#define __VEM_PCC_2D_Inertia_LocalSpace_HPP
14
16#include "Monomials_2D.hpp"
17
18namespace Polydim
19{
20namespace VEM
21{
22namespace PCC
23{
24
28{
29 private:
30 VEM_PCC_Utilities utilities;
32
33 void InitializeProjectorsComputation(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
34 const Eigen::MatrixXd &polygonVertices,
35 const Eigen::Vector3d &polygonCentroid,
36 const double &polygonDiameter,
37 const Eigen::MatrixXd &internalQuadraturePoints,
38 const Eigen::VectorXd &internalQuadratureWeights,
39 const Eigen::MatrixXd &boundaryQuadraturePoints,
41
42 void ComputePiNabla(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
43 const double &polygonMeasure,
44 const double &polygonDiameter,
45 const Eigen::VectorXd &internalQuadratureWeights,
46 const Eigen::VectorXd &boundaryQuadratureWeights,
47 const std::vector<Eigen::VectorXd> &boundaryQuadratureWeightsTimesNormal,
49
50 void ComputeL2ProjectorsOfDerivatives(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
51 const double &polygonMeasure,
52 const double &polygonDiameter,
53 const std::vector<Eigen::VectorXd> &boundaryQuadratureWeightsTimesNormal,
55
56 void ComputeL2Projectors(const double &polygonMeasure, Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace) const
57 {
58 utilities.ComputeL2Projectors(polygonMeasure,
59 localSpace.Order,
60 localSpace.Nkm1,
63 localSpace.NumBasisFunctions,
64 localSpace.Hmatrix,
65 localSpace.PiNabla,
66 localSpace.Cmatrix,
67 localSpace.Pi0km1,
68 localSpace.Pi0k);
69 };
70
71 void ComputeGeometryProperties(const Gedim::GeometryUtilities &geometryUtilities,
72 const Polydim::Utilities::Inertia_Data &inertia_data,
74 PCC::VEM_PCC_2D_Polygon_Geometry &inertia_geometric_data) const;
75
76 void ComputePolynomialsDofs(const double &polytopeMeasure, Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace) const;
77
78 public:
81
84
86 const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
87 {
88 switch (projectionType)
89 {
91 return utilities.ComputeDofiDofiStabilizationMatrix(localSpace.PiNabla, localSpace.constantStiff, localSpace.Dmatrix);
93 return utilities.ComputeDofiDofiStabilizationMatrix(localSpace.Pi0k, localSpace.constantMass, localSpace.Dmatrix);
94 default:
95 throw std::runtime_error("not valid projection type");
96 }
97 }
98
100 const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
101 {
102 return utilities.ComputeBasisFunctionsValues(projectionType,
103 localSpace.Nkm1,
104 localSpace.Pi0km1,
105 localSpace.Pi0k,
106 localSpace.VanderInternal);
107 }
108
110 const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
111 {
112 std::vector<Eigen::MatrixXd> basisFunctionsDerivativeValues(localSpace.Dimension);
113 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
114 switch (projectionType)
115 {
117 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
118 basisFunctionsDerivativeValues[i] = localSpace.VanderInternalDerivatives[i] * localSpace.PiNabla;
119 }
120 break;
122 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
123 basisFunctionsDerivativeValues[i] = localSpace.VanderInternal.leftCols(localSpace.Nkm1) * localSpace.Pi0km1Der[i];
124 }
125 break;
126 default:
127 throw std::runtime_error("Unknown projector type");
128 }
129
130 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesBasisFunctionDerivativeValues2D(
131 localSpace.Dimension,
132 Eigen::MatrixXd::Zero(basisFunctionsDerivativeValues[0].rows(), basisFunctionsDerivativeValues[1].cols()));
133 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
134 {
135 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
136 {
137 fmatrixInvTranspTimesBasisFunctionDerivativeValues2D[d1] +=
138 FmatrixInvTransp(d1, d2) * basisFunctionsDerivativeValues[d2];
139 }
140 }
141
142 return fmatrixInvTranspTimesBasisFunctionDerivativeValues2D;
143 }
144
145 inline Eigen::MatrixXd ComputeBasisFunctionsValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
147 const Polydim::VEM::PCC::ProjectionTypes &projectionType,
148 const Eigen::MatrixXd &points) const
149 {
150 return utilities.ComputeBasisFunctionsValues(projectionType,
151 localSpace.Nkm1,
152 localSpace.Pi0km1,
153 localSpace.Pi0k,
154 ComputePolynomialsValues(reference_element_data, localSpace, points));
155 }
156
157 inline std::vector<Eigen::MatrixXd> ComputeBasisFunctionsDerivativeValues(
158 const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
160 const Polydim::VEM::PCC::ProjectionTypes &projectionType,
161 const Eigen::MatrixXd &points) const
162 {
163 const Eigen::MatrixXd vander = ComputePolynomialsValues(reference_element_data, localSpace, points);
164
165 std::vector<Eigen::MatrixXd> basisFunctionsDerivativeValues(localSpace.Dimension);
166 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
167 switch (projectionType)
168 {
170 const std::vector<Eigen::MatrixXd> VanderDerivatives =
171 utilities.ComputePolynomialsDerivativeValues(reference_element_data.Monomials,
172 monomials,
173 localSpace.inertia_polygon.Diameter,
174 vander);
175
176 basisFunctionsDerivativeValues.resize(localSpace.Dimension);
177 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
178 basisFunctionsDerivativeValues[i] = VanderDerivatives[i] * localSpace.PiNabla;
179 }
180 break;
182 basisFunctionsDerivativeValues.resize(localSpace.Dimension);
183 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
184 basisFunctionsDerivativeValues[i] = vander.leftCols(localSpace.Nkm1) * localSpace.Pi0km1Der[i];
185 }
186 break;
187 default:
188 throw std::runtime_error("Unknown projector type");
189 }
190
191 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesBasisFunctionDerivativeValues2D(
192 localSpace.Dimension,
193 Eigen::MatrixXd::Zero(basisFunctionsDerivativeValues[0].rows(), basisFunctionsDerivativeValues[1].cols()));
194 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
195 {
196 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
197 {
198 fmatrixInvTranspTimesBasisFunctionDerivativeValues2D[d1] +=
199 FmatrixInvTransp(d1, d2) * basisFunctionsDerivativeValues[d2];
200 }
201 }
202
203 return fmatrixInvTranspTimesBasisFunctionDerivativeValues2D;
204 }
205
206 inline Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace) const
207 {
208 return localSpace.VanderInternal;
209 }
210
212 {
213 return (1.0 / (localSpace.inertia_polygon.Measure * localSpace.inertia_data.absDetFmatrix)) *
214 localSpace.VanderInternal.leftCols(localSpace.Nkm2);
215 }
216
217 inline Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
219 const Eigen::MatrixXd &points) const
220 {
221 const Eigen::MatrixXd referencePoints =
222 localSpace.inertia_data.FmatrixInv * (points.colwise() - localSpace.inertia_data.translation);
223 return utilities.ComputePolynomialsValues(reference_element_data.Monomials,
224 monomials,
225 localSpace.inertia_polygon.Centroid,
226 localSpace.inertia_polygon.Diameter,
227 referencePoints);
228 }
229
230 inline std::vector<Eigen::MatrixXd> ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace) const
231 {
232 const std::vector<Eigen::MatrixXd> &polynomialDerivatives = localSpace.VanderInternalDerivatives;
233 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
234
235 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesPolynomialDerivatives(
236 localSpace.Dimension,
237 Eigen::MatrixXd::Zero(polynomialDerivatives[0].rows(), polynomialDerivatives[1].cols()));
238 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
239 {
240 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
241 {
242 fmatrixInvTranspTimesPolynomialDerivatives[d1] += FmatrixInvTransp(d1, d2) * polynomialDerivatives[d2];
243 }
244 }
245 return fmatrixInvTranspTimesPolynomialDerivatives;
246 }
247
248 inline std::vector<Eigen::MatrixXd> ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
250 const Eigen::MatrixXd &points) const
251 {
252 const std::vector<Eigen::MatrixXd> polynomialDerivatives =
253 utilities.ComputePolynomialsDerivativeValues(reference_element_data.Monomials,
254 monomials,
255 localSpace.inertia_polygon.Diameter,
256 ComputePolynomialsValues(reference_element_data, localSpace, points));
257
258 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
259
260 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesPolynomialDerivatives(
261 localSpace.Dimension,
262 Eigen::MatrixXd::Zero(polynomialDerivatives[0].rows(), polynomialDerivatives[1].cols()));
263 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
264 {
265 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
266 {
267 fmatrixInvTranspTimesPolynomialDerivatives[d1] += FmatrixInvTransp(d1, d2) * polynomialDerivatives[d2];
268 }
269 }
270 return fmatrixInvTranspTimesPolynomialDerivatives;
271 }
272
273 inline Eigen::MatrixXd ComputeValuesOnEdge(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data,
274 const Eigen::VectorXd &pointsCurvilinearCoordinates) const
275 {
276 Eigen::VectorXd edgeInternalPoints;
277 if (reference_element_data.Quadrature.ReferenceEdgeDOFsInternalPoints.rows() > 0)
278 edgeInternalPoints = reference_element_data.Quadrature.ReferenceEdgeDOFsInternalPoints.row(0).transpose();
279 const Eigen::VectorXd edgeBasisCoefficients =
280 utilities.ComputeEdgeBasisCoefficients(reference_element_data.Order, edgeInternalPoints);
281
282 return utilities.ComputeValuesOnEdge(edgeInternalPoints.transpose(), reference_element_data.Order, edgeBasisCoefficients, pointsCurvilinearCoordinates);
283 }
284
286 const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
287 {
288 const Eigen::MatrixXd FmatrixInvTimesFmatrixInvTransp =
289 localSpace.inertia_data.FmatrixInv * localSpace.inertia_data.FmatrixInv.transpose();
290
291 switch (projectionType)
292 {
294 Eigen::MatrixXd basisFunctionsLaplacianValues =
295 Eigen::MatrixXd::Zero(localSpace.VanderInternalDerivatives[0].rows(), localSpace.NumBasisFunctions);
296
297 for (unsigned short d1 = 0; d1 < localSpace.Dimension; d1++)
298 for (unsigned short d2 = 0; d2 < localSpace.Dimension; d2++)
299 basisFunctionsLaplacianValues += FmatrixInvTimesFmatrixInvTransp(d2, d1) *
300 localSpace.VanderInternalDerivatives[d1].leftCols(localSpace.Nkm1) *
301 localSpace.Pi0km1Der[d2];
302
303 return basisFunctionsLaplacianValues;
304 }
305 default:
306 throw std::runtime_error("Unknown projector type");
307 }
308 }
309
313 const Eigen::MatrixXd &) const
314 {
315 throw std::runtime_error("Unimplemented method");
316 }
319 const Eigen::MatrixXd &) const
320 {
321 throw std::runtime_error("Unimplemented method");
322 }
323};
324} // namespace PCC
325} // namespace VEM
326} // namespace Polydim
327
328#endif
The GeometryUtilities class intersects 3D segments.
Definition GeometryUtilities.hpp:37
Definition Monomials_2D.hpp:22
Interface class for Primal Conforming Constant degree 2D Virtual Element Methods .
Definition I_VEM_PCC_2D_LocalSpace.hpp:30
Primal Conforming Constant degree Virtual Element Methods 2D with improvements for high-order .
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:28
Eigen::MatrixXd ComputeDofiDofiStabilizationMatrix(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
Compute matrix representation of dofi-dofi stabilization.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:85
std::vector< Eigen::MatrixXd > ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace) const
Compute values of the derivatives of the polynomial basis at default quadrature points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:230
Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data Compute3DUtilities(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_2D_Polygon_Geometry &polygon) const
Definition VEM_PCC_2D_Inertia_LocalSpace.cpp:120
Eigen::MatrixXd ComputeValuesOnEdge(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data, const Eigen::VectorXd &pointsCurvilinearCoordinates) const
Compute values of the trace of VEM basis functions at given points on an edge.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:273
Eigen::MatrixXd ComputeBasisFunctionsValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType, const Eigen::MatrixXd &points) const
Compute values of a suitable projection of basis functions at given points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:145
Eigen::MatrixXd ComputePolynomialsLaplacianValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &, const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &, const Eigen::MatrixXd &) const
Compute values of the laplacian of the polynomial basis at given points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:317
Eigen::MatrixXd ComputeBasisFunctionsValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
Compute values of a suitable projection of basis functions at default quadrature points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:99
Eigen::MatrixXd ComputeBasisFunctionsLaplacianValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
Compute values of a suitable projection of laplacian of basis functions at default quadrature points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:285
Eigen::MatrixXd ComputeBasisFunctionsLaplacianValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &, const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &, const Polydim::VEM::PCC::ProjectionTypes &, const Eigen::MatrixXd &) const
Compute values of a suitable projection of laplacian of basis functions at default quadrature points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:310
std::vector< Eigen::MatrixXd > ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Eigen::MatrixXd &points) const
Compute values of the derivatives of the polynomial basis at given points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:248
Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data CreateLocalSpace(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_2D_Polygon_Geometry &polygon) const
Compute data of VEM space on a polygon.
Definition VEM_PCC_2D_Inertia_LocalSpace.cpp:24
Eigen::MatrixXd ComputeScaledPolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace) const
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:211
std::vector< Eigen::MatrixXd > ComputeBasisFunctionsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType, const Eigen::MatrixXd &points) const
Compute values of a suitable projection of derivatives of basis functions at given points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:157
Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_2D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Eigen::MatrixXd &points) const
Compute values of the polynomial basis at given points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:217
std::vector< Eigen::MatrixXd > ComputeBasisFunctionsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
Compute values of a suitable projection of derivatives of basis functions at default quadrature point...
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:109
Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_2D_LocalSpace_Data &localSpace) const
Compute values of the polynomial basis at default quadrature points.
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:206
Definition VEM_PCC_2D_LocalSpace_Data.hpp:44
Polydim::Utilities::Inertia_Data inertia_data
Definition VEM_PCC_2D_LocalSpace_Data.hpp:98
unsigned int Dimension
Definition VEM_PCC_2D_LocalSpace_Data.hpp:46
unsigned int Nkm2
Definition VEM_PCC_2D_LocalSpace_Data.hpp:59
Eigen::MatrixXd VanderInternal
Definition VEM_PCC_2D_LocalSpace_Data.hpp:72
Polydim::VEM::PCC::VEM_PCC_2D_Polygon_Geometry inertia_polygon
Definition VEM_PCC_2D_LocalSpace_Data.hpp:99
Eigen::MatrixXd PiNabla
Definition VEM_PCC_2D_LocalSpace_Data.hpp:79
Eigen::MatrixXd Hmatrix
Definition VEM_PCC_2D_LocalSpace_Data.hpp:85
Eigen::MatrixXd Cmatrix
Definition VEM_PCC_2D_LocalSpace_Data.hpp:88
unsigned int NumInternalBasisFunctions
Definition VEM_PCC_2D_LocalSpace_Data.hpp:54
unsigned int Nkm1
Definition VEM_PCC_2D_LocalSpace_Data.hpp:58
unsigned int NumBasisFunctions
Definition VEM_PCC_2D_LocalSpace_Data.hpp:55
double constantMass
Definition VEM_PCC_2D_LocalSpace_Data.hpp:101
unsigned int NumProjectorBasisFunctions
Definition VEM_PCC_2D_LocalSpace_Data.hpp:57
Eigen::MatrixXd Dmatrix
Definition VEM_PCC_2D_LocalSpace_Data.hpp:91
Eigen::MatrixXd Pi0k
Definition VEM_PCC_2D_LocalSpace_Data.hpp:81
double constantStiff
Definition VEM_PCC_2D_LocalSpace_Data.hpp:100
std::vector< Eigen::MatrixXd > Pi0km1Der
Definition VEM_PCC_2D_LocalSpace_Data.hpp:83
Eigen::MatrixXd Pi0km1
Definition VEM_PCC_2D_LocalSpace_Data.hpp:80
unsigned int Order
Definition VEM_PCC_2D_LocalSpace_Data.hpp:47
std::vector< Eigen::MatrixXd > VanderInternalDerivatives
Definition VEM_PCC_2D_LocalSpace_Data.hpp:74
Definition VEM_PCC_2D_LocalSpace_Data.hpp:27
Eigen::Vector3d Centroid
Definition VEM_PCC_2D_LocalSpace_Data.hpp:33
double Diameter
Definition VEM_PCC_2D_LocalSpace_Data.hpp:35
double Measure
Definition VEM_PCC_2D_LocalSpace_Data.hpp:34
ProjectionTypes
Definition VEM_PCC_Utilities.hpp:28
Definition FEM_MCC_2D_LocalSpace.cpp:17
Affine map data aligning a polytope with its principal axes of inertia.
Definition Inertia_Utilities.hpp:30
Eigen::Matrix3d FmatrixInv
Definition Inertia_Utilities.hpp:32
Eigen::Vector3d translation
Definition Inertia_Utilities.hpp:33
double absDetFmatrix
Definition Inertia_Utilities.hpp:34
Definition I_VEM_PCC_2D_ReferenceElement.hpp:26
Quadrature::VEM_QuadratureData_2D Quadrature
Definition I_VEM_PCC_2D_ReferenceElement.hpp:34
Utilities::Monomials_Data Monomials
Definition I_VEM_PCC_2D_ReferenceElement.hpp:33
unsigned int Order
Definition I_VEM_PCC_2D_ReferenceElement.hpp:28
Definition VEM_PCC_Utilities.hpp:37
Eigen::MatrixXd ComputePolynomialsValues(const Eigen::MatrixXd &vanderInternal) const
Definition VEM_PCC_Utilities.hpp:176
std::vector< Eigen::MatrixXd > ComputePolynomialsDerivativeValues(const std::vector< Eigen::MatrixXd > &vanderInternalDerivatives) const
Definition VEM_PCC_Utilities.hpp:200
void ComputeL2Projectors(const double &measure, const unsigned int &order, const unsigned int &Nkm1, const unsigned int &Nk, const unsigned int &NumInternalBasisFunctions, const unsigned int &NumBasisFunctions, const Eigen::MatrixXd &Hmatrix, const Eigen::MatrixXd &PiNabla, Eigen::MatrixXd &Cmatrix, Eigen::MatrixXd &Pi0km1, Eigen::MatrixXd &Pi0k) const
Definition VEM_PCC_Utilities.hpp:46
Eigen::MatrixXd ComputeBasisFunctionsValues(const Polydim::VEM::PCC::ProjectionTypes &projectionType, const unsigned int &Nkm1, const Eigen::MatrixXd &pi0km1, const Eigen::MatrixXd &pi0k, const Eigen::MatrixXd &vanderInternal) const
Definition VEM_PCC_Utilities.hpp:152
Eigen::VectorXd ComputeEdgeBasisCoefficients(const unsigned int &order, const Eigen::VectorXd &edgeInternalPoints) const
Definition VEM_PCC_Utilities.hpp:38
Eigen::MatrixXd ComputeValuesOnEdge(const Eigen::RowVectorXd &edgeInternalPoints, const unsigned int &order, const Eigen::VectorXd &edgeBasisCoefficients, const Eigen::VectorXd &pointsCurvilinearCoordinates) const
Definition VEM_PCC_Utilities.hpp:224
Eigen::MatrixXd ComputeDofiDofiStabilizationMatrix(const Eigen::MatrixXd &projector, const double &coefficient, const Eigen::MatrixXd &Dmatrix) const
Definition VEM_PCC_Utilities.hpp:234
Eigen::MatrixXd ReferenceEdgeDOFsInternalPoints
Definition VEM_Quadrature_2D.hpp:34