PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
VEM_PCC_3D_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_3D_Inertia_LocalSpace_HPP
13#define __VEM_PCC_3D_Inertia_LocalSpace_HPP
14
15#include "Eigen/Eigen"
19#include "Monomials_3D.hpp"
22#include "VEM_PCC_Utilities.hpp"
23#include <vector>
24
25namespace Polydim
26{
27namespace VEM
28{
29namespace PCC
30{
33{
34 private:
37
38 void InitializeProjectorsComputation(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
39 const Eigen::MatrixXd &polyhedronVertices,
40 const Eigen::MatrixXi &polyhedronEdges,
41 const std::vector<Eigen::MatrixXi> &polyhedronFaces,
42 const Eigen::Vector3d &polyhedronCentroid,
43 const double &polyhedronDiameter,
44 const Eigen::MatrixXd &internalQuadraturePoints,
45 const Eigen::VectorXd &internalQuadratureWeights,
46 const Eigen::MatrixXd &boundaryQuadraturePoints,
47 const Eigen::MatrixXd &edgeInternalQuadraturePoints,
49
50 void ComputePiNabla(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
51 const double &polyhedronMeasure,
52 const double &polyhedronDiameter,
53 const Eigen::VectorXd &internalQuadratureWeights,
54 const Eigen::VectorXd &boundaryQuadratureWeights,
55 const std::vector<Eigen::VectorXd> &boundaryQuadratureWeightsTimesNormal,
57
58 void ComputeL2ProjectorsOfDerivatives(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
59 const double &polyhedronMeasure,
60 const double &polyhedronDiameter,
61 const std::vector<Eigen::VectorXd> &boundaryQuadratureWeightsTimesNormal,
63
64 void ComputeL2Projectors(const double &polyhedronMeasure, Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace) const
65 {
66 utilities.ComputeL2Projectors(polyhedronMeasure,
67 localSpace.Order,
68 localSpace.Nkm1,
71 localSpace.NumBasisFunctions,
72 localSpace.Hmatrix,
73 localSpace.PiNabla,
74 localSpace.Cmatrix,
75 localSpace.Pi0km1,
76 localSpace.Pi0k);
77 };
78
79 void ComputeFaceProjectors(const Polydim::VEM::PCC::VEM_PCC_2D_Inertia_LocalSpace &faceVemValues,
80 const std::vector<Eigen::MatrixXi> &polyhedronFaces,
81 const std::vector<double> &polygonalFaces,
82 const Eigen::MatrixXd &boundaryQuadraturePoints,
83 const Eigen::VectorXd &boundaryQuadratureWeights,
85
86 void ComputePolynomialsDofs(const double &polytopeMeasure, Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace) const;
87
88 void ComputeGeometryProperties(const Gedim::GeometryUtilities &geometryUtilities,
89 const Polydim::Utilities::Inertia_Data &inertia_data,
91 PCC::VEM_PCC_3D_Polyhedron_Geometry &inertia_geometric_data,
92 std::vector<double> &inertia_faces_measure) const;
93
94 public:
96 const VEM_PCC_2D_ReferenceElement_Data &reference_element_data_2D,
97 const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data_3D,
99
101 const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
102 {
103 switch (projectionType)
104 {
106 return utilities.ComputeDofiDofiStabilizationMatrix(localSpace.PiNabla, localSpace.constantStiff, localSpace.Dmatrix);
108 return utilities.ComputeDofiDofiStabilizationMatrix(localSpace.Pi0k, localSpace.constantMass, localSpace.Dmatrix);
109 default:
110 throw std::runtime_error("not valid projection type");
111 }
112 }
113
115 const Polydim::VEM::PCC::ProjectionTypes &projectionType,
116 const Eigen::MatrixXd &coercivity_matrix,
117 const Eigen::VectorXd &vector_coefficients) const
118 {
119 switch (projectionType)
120 {
122 return utilities.ComputeDRecipeStabilizationMatrix(localSpace.PiNabla,
123 coercivity_matrix,
124 vector_coefficients,
125 localSpace.Dmatrix);
127 return utilities.ComputeDRecipeStabilizationMatrix(localSpace.Pi0k,
128 coercivity_matrix,
129 vector_coefficients,
130 localSpace.Dmatrix);
131 default:
132 throw std::runtime_error("not valid projection type");
133 }
134 }
135
137 const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
138 {
139 return utilities.ComputeBasisFunctionsValues(projectionType,
140 localSpace.Nkm1,
141 localSpace.Pi0km1,
142 localSpace.Pi0k,
143 localSpace.VanderInternal);
144 }
145
147 const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
148 {
149 std::vector<Eigen::MatrixXd> basisFunctionsDerivativeValues(localSpace.Dimension);
150 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
151 switch (projectionType)
152 {
154 basisFunctionsDerivativeValues.resize(localSpace.Dimension);
155 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
156 basisFunctionsDerivativeValues[i] = localSpace.VanderInternalDerivatives[i] * localSpace.PiNabla;
157 }
158 break;
160 basisFunctionsDerivativeValues.resize(localSpace.Dimension);
161 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
162 basisFunctionsDerivativeValues[i] = localSpace.VanderInternal.leftCols(localSpace.Nkm1) * localSpace.Pi0km1Der[i];
163 }
164 break;
165 default:
166 throw std::runtime_error("Unknown projector type");
167 }
168
169 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesBasisFunctionDerivativeValues(
170 localSpace.Dimension,
171 Eigen::MatrixXd::Zero(basisFunctionsDerivativeValues[0].rows(), basisFunctionsDerivativeValues[1].cols()));
172 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
173 {
174 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
175 {
176 fmatrixInvTranspTimesBasisFunctionDerivativeValues[d1] +=
177 FmatrixInvTransp(d1, d2) * basisFunctionsDerivativeValues[d2];
178 }
179 }
180
181 return fmatrixInvTranspTimesBasisFunctionDerivativeValues;
182 }
183
186 {
187 throw std::runtime_error("Unimplemented method");
188 }
189
190 inline Eigen::MatrixXd ComputeBasisFunctionsValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
192 const Polydim::VEM::PCC::ProjectionTypes &projectionType,
193 const Eigen::MatrixXd &points) const
194 {
195 const Eigen::MatrixXd referencePoints =
196 localSpace.inertia_data.FmatrixInv * (points.colwise() - localSpace.inertia_data.translation);
197 return utilities.ComputeBasisFunctionsValues(projectionType,
198 localSpace.Nkm1,
199 localSpace.Pi0km1,
200 localSpace.Pi0k,
201 ComputePolynomialsValues(reference_element_data, localSpace, referencePoints));
202 }
203
204 inline std::vector<Eigen::MatrixXd> ComputeBasisFunctionsDerivativeValues(
205 const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
207 const Polydim::VEM::PCC::ProjectionTypes &projectionType,
208 const Eigen::MatrixXd &points) const
209 {
210 const Eigen::MatrixXd referencePoints =
211 localSpace.inertia_data.FmatrixInv * (points.colwise() - localSpace.inertia_data.translation);
212
213 const Eigen::MatrixXd vander = ComputePolynomialsValues(reference_element_data, localSpace, referencePoints);
214
215 std::vector<Eigen::MatrixXd> basisFunctionsDerivativeValues(localSpace.Dimension);
216 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
217 switch (projectionType)
218 {
220 const std::vector<Eigen::MatrixXd> VanderDerivatives =
221 utilities.ComputePolynomialsDerivativeValues(reference_element_data.Monomials,
222 monomials,
223 localSpace.inertia_polyhedron.Diameter,
224 vander);
225
226 basisFunctionsDerivativeValues.resize(localSpace.Dimension);
227 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
228 basisFunctionsDerivativeValues[i] = VanderDerivatives[i] * localSpace.PiNabla;
229 }
230 break;
232 basisFunctionsDerivativeValues.resize(localSpace.Dimension);
233 for (unsigned short i = 0; i < localSpace.Dimension; ++i)
234 basisFunctionsDerivativeValues[i] = vander.leftCols(localSpace.Nkm1) * localSpace.Pi0km1Der[i];
235 }
236 break;
237 default:
238 throw std::runtime_error("Unknown projector type");
239 }
240
241 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesBasisFunctionDerivativeValues(
242 localSpace.Dimension,
243 Eigen::MatrixXd::Zero(basisFunctionsDerivativeValues[0].rows(), basisFunctionsDerivativeValues[1].cols()));
244 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
245 {
246 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
247 {
248 fmatrixInvTranspTimesBasisFunctionDerivativeValues[d1] +=
249 FmatrixInvTransp(d1, d2) * basisFunctionsDerivativeValues[d2];
250 }
251 }
252
253 return fmatrixInvTranspTimesBasisFunctionDerivativeValues;
254 }
255
259 const Eigen::MatrixXd &) const
260 {
261 throw std::runtime_error("Unimplemented method");
262 }
263
264 inline Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace) const
265 {
266 return localSpace.VanderInternal;
267 }
268
269 inline Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
271 const Eigen::MatrixXd &points) const
272 {
273 const Eigen::MatrixXd referencePoints =
274 localSpace.inertia_data.FmatrixInv * (points.colwise() - localSpace.inertia_data.translation);
275 return utilities.ComputePolynomialsValues(reference_element_data.Monomials,
276 monomials,
277 localSpace.inertia_polyhedron.Centroid,
278 localSpace.inertia_polyhedron.Diameter,
279 referencePoints);
280 }
281
282 inline std::vector<Eigen::MatrixXd> ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace) const
283 {
284 const std::vector<Eigen::MatrixXd> &polynomialDerivatives = localSpace.VanderInternalDerivatives;
285 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
286
287 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesPolynomialDerivatives(
288 localSpace.Dimension,
289 Eigen::MatrixXd::Zero(polynomialDerivatives[0].rows(), polynomialDerivatives[1].cols()));
290 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
291 {
292 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
293 {
294 fmatrixInvTranspTimesPolynomialDerivatives[d1] += FmatrixInvTransp(d1, d2) * polynomialDerivatives[d2];
295 }
296 }
297 return fmatrixInvTranspTimesPolynomialDerivatives;
298 }
299
300 inline std::vector<Eigen::MatrixXd> ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
302 const Eigen::MatrixXd &points) const
303 {
304 const Eigen::MatrixXd referencePoints =
305 localSpace.inertia_data.FmatrixInv * (points.colwise() - localSpace.inertia_data.translation);
306
307 const std::vector<Eigen::MatrixXd> polynomialDerivatives = utilities.ComputePolynomialsDerivativeValues(
308 reference_element_data.Monomials,
309 monomials,
310 localSpace.inertia_polyhedron.Diameter,
311 ComputePolynomialsValues(reference_element_data, localSpace, referencePoints));
312
313 const Eigen::MatrixXd FmatrixInvTransp = localSpace.inertia_data.FmatrixInv.transpose();
314
315 std::vector<Eigen::MatrixXd> fmatrixInvTranspTimesPolynomialDerivatives(
316 localSpace.Dimension,
317 Eigen::MatrixXd::Zero(polynomialDerivatives[0].rows(), polynomialDerivatives[1].cols()));
318 for (unsigned int d1 = 0; d1 < localSpace.Dimension; d1++)
319 {
320 for (unsigned int d2 = 0; d2 < localSpace.Dimension; d2++)
321 {
322 fmatrixInvTranspTimesPolynomialDerivatives[d1] += FmatrixInvTransp(d1, d2) * polynomialDerivatives[d2];
323 }
324 }
325 return fmatrixInvTranspTimesPolynomialDerivatives;
326 }
327
330 const Eigen::MatrixXd &) const
331 {
332 throw std::runtime_error("Unimplemented method");
333 }
334
335 inline Eigen::MatrixXd ComputeValuesOnEdge(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data,
337 const Eigen::VectorXd &pointsCurvilinearCoordinates) const
338 {
339 return utilities.ComputeValuesOnEdge(localSpace.EdgeInternalPoints.transpose(),
340 reference_element_data.Order,
341 localSpace.EdgeBasisCoefficients,
342 pointsCurvilinearCoordinates);
343 }
344
346 const unsigned int edge_local_index) const
347 {
348 return localSpace.EdgesDOFsCoordinates[edge_local_index];
349 }
350};
351} // namespace PCC
352} // namespace VEM
353} // namespace Polydim
354
355#endif
The GeometryUtilities class intersects 3D segments.
Definition GeometryUtilities.hpp:37
Definition Monomials_3D.hpp:22
Interface class for Primal Conforming Constant degree 3D Virtual Element Methods .
Definition I_VEM_PCC_3D_LocalSpace.hpp:31
Primal Conforming Constant degree Virtual Element Methods 2D with improvements for high-order .
Definition VEM_PCC_2D_Inertia_LocalSpace.hpp:28
Interface class for Primal Conforming Constant degree 3D Virtual Element Methods .
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:33
Eigen::MatrixXd ComputeBasisFunctionsValues(const Polydim::VEM::PCC::VEM_PCC_3D_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_3D_Inertia_LocalSpace.hpp:136
Eigen::MatrixXd ComputePolynomialsLaplacianValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &, const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &, const Eigen::MatrixXd &) const
Compute values of the laplacian of the polynomial basis at given points.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:328
std::vector< Eigen::MatrixXd > ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace, const Eigen::MatrixXd &points) const
Compute values of the derivatives of the polynomial basis at given points.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:300
Eigen::MatrixXd EdgeDOFsCoordinates(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace, const unsigned int edge_local_index) const
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:345
Eigen::MatrixXd ComputeValuesOnEdge(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace, const Eigen::VectorXd &pointsCurvilinearCoordinates) const
Compute values of the trace of VEM basis functions at given points on an edge.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:335
std::vector< Eigen::MatrixXd > ComputePolynomialsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace) const
Compute values of the derivatives of the polynomial basis at default quadrature points.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:282
Eigen::MatrixXd ComputeDRecipeStabilizationMatrix(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType, const Eigen::MatrixXd &coercivity_matrix, const Eigen::VectorXd &vector_coefficients) const
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:114
Eigen::MatrixXd ComputeDofiDofiStabilizationMatrix(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace, const Polydim::VEM::PCC::ProjectionTypes &projectionType) const
Compute matrix representation of dofi-dofi stabilization.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:100
Eigen::MatrixXd ComputeBasisFunctionsLaplacianValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &, const Polydim::VEM::PCC::VEM_PCC_3D_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_3D_Inertia_LocalSpace.hpp:256
std::vector< Eigen::MatrixXd > ComputeBasisFunctionsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_3D_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_3D_Inertia_LocalSpace.hpp:204
Eigen::MatrixXd ComputeBasisFunctionsLaplacianValues(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &, const Polydim::VEM::PCC::ProjectionTypes &) const
Compute values of a suitable projection of laplacian of basis functions at default quadrature points.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:184
std::vector< Eigen::MatrixXd > ComputeBasisFunctionsDerivativeValues(const Polydim::VEM::PCC::VEM_PCC_3D_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_3D_Inertia_LocalSpace.hpp:146
Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data CreateLocalSpace(const VEM_PCC_2D_ReferenceElement_Data &reference_element_data_2D, const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data_3D, const Polydim::VEM::PCC::VEM_PCC_3D_Polyhedron_Geometry &polyhedron) const
Compute data of VEM space on a polygon.
Definition VEM_PCC_3D_Inertia_LocalSpace.cpp:24
Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace, const Eigen::MatrixXd &points) const
Compute values of the polynomial basis at given points.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:269
Eigen::MatrixXd ComputeBasisFunctionsValues(const Polydim::VEM::PCC::VEM_PCC_3D_ReferenceElement_Data &reference_element_data, const Polydim::VEM::PCC::VEM_PCC_3D_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_3D_Inertia_LocalSpace.hpp:190
Eigen::MatrixXd ComputePolynomialsValues(const Polydim::VEM::PCC::VEM_PCC_3D_LocalSpace_Data &localSpace) const
Compute values of the polynomial basis at default quadrature points.
Definition VEM_PCC_3D_Inertia_LocalSpace.hpp:264
Definition VEM_PCC_3D_LocalSpace_Data.hpp:53
std::vector< Eigen::MatrixXd > Pi0km1Der
Definition VEM_PCC_3D_LocalSpace_Data.hpp:89
Eigen::MatrixXd PiNabla
Definition VEM_PCC_3D_LocalSpace_Data.hpp:85
Polydim::VEM::PCC::VEM_PCC_3D_Polyhedron_Geometry inertia_polyhedron
Definition VEM_PCC_3D_LocalSpace_Data.hpp:116
double constantMass
Definition VEM_PCC_3D_LocalSpace_Data.hpp:118
Polydim::Utilities::Inertia_Data inertia_data
Definition VEM_PCC_3D_LocalSpace_Data.hpp:115
Eigen::MatrixXd Dmatrix
Definition VEM_PCC_3D_LocalSpace_Data.hpp:96
unsigned int Dimension
Definition VEM_PCC_3D_LocalSpace_Data.hpp:60
Eigen::MatrixXd Cmatrix
Definition VEM_PCC_3D_LocalSpace_Data.hpp:93
std::vector< Eigen::MatrixXd > EdgesDOFsCoordinates
Definition VEM_PCC_3D_LocalSpace_Data.hpp:84
Eigen::MatrixXd Pi0km1
Definition VEM_PCC_3D_LocalSpace_Data.hpp:86
double constantStiff
Definition VEM_PCC_3D_LocalSpace_Data.hpp:117
unsigned int Nkm1
Definition VEM_PCC_3D_LocalSpace_Data.hpp:73
Eigen::MatrixXd Hmatrix
Definition VEM_PCC_3D_LocalSpace_Data.hpp:92
unsigned int NumInternalBasisFunctions
Definition VEM_PCC_3D_LocalSpace_Data.hpp:66
Eigen::VectorXd EdgeBasisCoefficients
Definition VEM_PCC_3D_LocalSpace_Data.hpp:83
unsigned int Order
Definition VEM_PCC_3D_LocalSpace_Data.hpp:61
unsigned int NumBasisFunctions
Definition VEM_PCC_3D_LocalSpace_Data.hpp:67
Eigen::MatrixXd Pi0k
Definition VEM_PCC_3D_LocalSpace_Data.hpp:87
std::vector< Eigen::MatrixXd > VanderInternalDerivatives
Definition VEM_PCC_3D_LocalSpace_Data.hpp:77
Eigen::MatrixXd VanderInternal
Definition VEM_PCC_3D_LocalSpace_Data.hpp:76
Eigen::RowVectorXd EdgeInternalPoints
Definition VEM_PCC_3D_LocalSpace_Data.hpp:120
unsigned int NumProjectorBasisFunctions
Definition VEM_PCC_3D_LocalSpace_Data.hpp:71
Definition VEM_PCC_3D_LocalSpace_Data.hpp:27
Eigen::Vector3d Centroid
Definition VEM_PCC_3D_LocalSpace_Data.hpp:36
double Diameter
Definition VEM_PCC_3D_LocalSpace_Data.hpp:38
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
Definition I_VEM_PCC_2D_ReferenceElement.hpp:26
Definition I_VEM_PCC_3D_ReferenceElement.hpp:25
unsigned int Order
Definition I_VEM_PCC_3D_ReferenceElement.hpp:27
Utilities::Monomials_Data Monomials
Definition I_VEM_PCC_3D_ReferenceElement.hpp:33
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::MatrixXd ComputeDRecipeStabilizationMatrix(const Eigen::MatrixXd &projector, const Eigen::MatrixXd &coercivity_matrix, const Eigen::VectorXd &vector_coefficients, const Eigen::MatrixXd &Dmatrix) const
Definition VEM_PCC_Utilities.hpp:245
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