6 template<
typename BasisType>
12 typedef std::function<
typename BasisType::FunctionValue(
const Eigen::Vector2d &)>
FunctionType;
16 const BasisType & basis,
22 m_basis_quad(basis_quad),
26 assert( basis.dimension() == basis_quad.shape()[0] && quad.size() == basis_quad.shape()[1] );
32 Eigen::VectorXd b = Eigen::VectorXd::Zero(m_basis.dimension());
33 for (
size_t i = 0;
i < m_basis.dimension();
i++) {
34 for (
size_t iqn = 0; iqn < m_quad.size(); iqn++) {
39 return m_cholesky_mass.solve(b);
47 for (
size_t iqn = 0; iqn < m_quad.size(); iqn++) {
49 for (
size_t i = 1;
i < m_basis.dimension();
i++) {
50 f_iqn += f_dofs(
i) * m_basis_quad[
i][iqn];
74 Eigen::LDLT<Eigen::MatrixXd> m_cholesky_mass;
80 const Eigen::VectorXd & f_dofs,
82 const boost::multi_array<T, 2> & basis_quad
86 for (
size_t iqn = 0; iqn < quad.size(); iqn++) {
87 T f_iqn = f_dofs(0) * basis_quad[0][iqn];
88 for (
size_t i = 1;
i < basis_quad.shape()[0];
i++) {
89 f_iqn += f_dofs(
i) * basis_quad[
i][iqn];
100 const Eigen::VectorXd & f_dofs,
102 const boost::multi_array<T, 2> & basis_quad
Compute the L2-orthogonal projection of a function.
Definition l2projection.hpp:8
boost::multi_array< FunctionValue, 2 > BasisEvaluation
Definition l2projection.hpp:11
L2Projection(const BasisType &basis, QuadratureRule &quad, const BasisEvaluation &basis_quad)
Constructor.
Definition l2projection.hpp:15
double squared_error(const FunctionType &f, const Eigen::VectorXd &f_dofs) const
Definition l2projection.hpp:44
Eigen::VectorXd compute(const FunctionType &f) const
Compute the projection of a function.
Definition l2projection.hpp:30
const BasisEvaluation & basisQuad()
Return the basis evaluation.
Definition l2projection.hpp:65
double error(const FunctionType &f, const Eigen::VectorXd &f_dofs) const
Compute the error between the L2-orthogonal projection and the function.
Definition l2projection.hpp:59
BasisType::FunctionValue FunctionValue
Definition l2projection.hpp:10
std::function< typename BasisType::FunctionValue(const Eigen::Vector2d &)> FunctionType
Definition l2projection.hpp:12
Compute max and min eigenvalues of all matrices for i
Definition compute_eigs.m:5
double scalar_product(const double &x, const double &y)
Scalar product between two reals.
Definition basis.cpp:163
Eigen::MatrixXd compute_gram_matrix(const boost::multi_array< VectorRd, 2 > &B1, const boost::multi_array< double, 2 > &B2, const QuadratureRule &qr)
Compute the Gram-like matrix given a family of vector-valued and one of scalar-valued functions by te...
Definition basis.cpp:225
std::vector< QuadratureNode > QuadratureRule
Definition quadraturerule.hpp:55
if(strcmp(field, 'real')) % real valued entries T
Definition mmread.m:93
double squared_l2_norm(const Eigen::VectorXd &f_dofs, const QuadratureRule &quad, const boost::multi_array< T, 2 > &basis_quad)
Compute the squared L2-norm of a discrete function.
Definition l2projection.hpp:79
double l2_norm(const Eigen::VectorXd &f_dofs, const QuadratureRule &quad, const boost::multi_array< T, 2 > &basis_quad)
Compute the L2-norm of a discrete function.
Definition l2projection.hpp:99
Definition ddr-klplate.hpp:27