PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
VEM_MCC_PerformanceAnalysis.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_MCC_PerformanceAnalysis_HPP
13#define __VEM_MCC_PerformanceAnalysis_HPP
14
15#include "Eigen/Eigen"
16
17#include "LAPACK_utilities.hpp"
18#include "VEM_MCC_Utilities.hpp"
19
20namespace Polydim
21{
22namespace VEM
23{
24namespace MCC
25{
27{
28 double VmatrixConditioning = -1.0;
29 double HmatrixConditioning = -1.0;
30 double Pi0kConditioning = -1.0;
31 double GmatrixConditioning = -1.0;
32 double ErrorPi0k = -1.0;
33 double StabNorm = -1.0;
34 double ErrorStabilization = -1.0;
35 double ErrorGBD = -1.0;
36};
37
39{
40 template <typename VEM_Monomials_Type, typename VEM_Monomials_Data_Type, typename VEM_LocalSpace_Type, typename VEM_LocalSpaceData_Type>
41 VEM_MCC_PerformanceAnalysis_Data Compute(const VEM_Monomials_Type &vem_monomials,
42 const VEM_Monomials_Data_Type &vem_monomials_data,
43 const VEM_LocalSpace_Type &vem_local_space,
44 const VEM_LocalSpaceData_Type &vem_local_space_data) const
45 {
46 Gedim::Utilities::Unused(vem_monomials);
47 Gedim::Utilities::Unused(vem_monomials_data);
48
50
51 const Eigen::MatrixXd &Vmatrix = vem_local_space_data.Vmatrix;
52 const Eigen::MatrixXd &Hmatrix = vem_local_space_data.Hmatrix;
53 const Eigen::MatrixXd &Gmatrix = vem_local_space_data.Gmatrix;
54 const Eigen::MatrixXd &pi0k = vem_local_space_data.Pi0k;
55
60
61 const unsigned int Nk = vem_local_space_data.Nk;
62 const unsigned int dimension = vem_local_space_data.Dimension;
63
64 const Eigen::MatrixXd identity = Eigen::MatrixXd::Identity(dimension * Nk, dimension * Nk);
65
66 const Eigen::MatrixXd &polynomialBasisDofs = vem_local_space_data.Dmatrix;
67 result.ErrorPi0k = (pi0k * polynomialBasisDofs - identity).norm() / identity.norm();
68
69 const Eigen::MatrixXd stabilizationMatrix =
70 vem_local_space.ComputeDofiDofiStabilizationMatrix(vem_local_space_data, ProjectionTypes::Pi0k);
71 result.StabNorm = stabilizationMatrix.norm();
72 result.ErrorStabilization = (stabilizationMatrix * polynomialBasisDofs).norm();
73
74 if (vem_local_space_data.Gmatrix.size() > 0 && vem_local_space_data.Bmatrix.size() > 0)
75 result.ErrorGBD = (vem_local_space_data.Gmatrix - vem_local_space_data.Bmatrix * polynomialBasisDofs).norm() /
76 vem_local_space_data.Gmatrix.norm();
77
78 return result;
79 }
80};
81
82} // namespace MCC
83} // namespace VEM
84} // namespace Polydim
85
86#endif
static void Unused(const T &)
Tells the compiler the parameter is unused.
Definition CommonUtilities.hpp:28
double cond(const Eigen::VectorXd &s)
Compute condition number in norm 2 given singular values.
Definition LAPACK_utilities.hpp:38
void svd(Eigen::MatrixXd A, Eigen::MatrixXd &V, Eigen::VectorXd &S)
Given A = U * S * V' returns only S and V'.
Definition LAPACK_utilities.cpp:166
Definition FEM_MCC_2D_LocalSpace.cpp:17
Definition VEM_MCC_PerformanceAnalysis.hpp:27
double ErrorPi0k
Definition VEM_MCC_PerformanceAnalysis.hpp:32
double GmatrixConditioning
Definition VEM_MCC_PerformanceAnalysis.hpp:31
double StabNorm
Definition VEM_MCC_PerformanceAnalysis.hpp:33
double HmatrixConditioning
Definition VEM_MCC_PerformanceAnalysis.hpp:29
double ErrorGBD
Definition VEM_MCC_PerformanceAnalysis.hpp:35
double Pi0kConditioning
Definition VEM_MCC_PerformanceAnalysis.hpp:30
double VmatrixConditioning
Definition VEM_MCC_PerformanceAnalysis.hpp:28
double ErrorStabilization
Definition VEM_MCC_PerformanceAnalysis.hpp:34
Definition VEM_MCC_PerformanceAnalysis.hpp:39
VEM_MCC_PerformanceAnalysis_Data Compute(const VEM_Monomials_Type &vem_monomials, const VEM_Monomials_Data_Type &vem_monomials_data, const VEM_LocalSpace_Type &vem_local_space, const VEM_LocalSpaceData_Type &vem_local_space_data) const
Definition VEM_MCC_PerformanceAnalysis.hpp:41