1 #ifndef SMOLYAKQUADRATURE_H
2 #define SMOLYAKQUADRATURE_H
10 namespace Approximation {
26 virtual void Compute(
unsigned int order)
override;
28 virtual void Compute(Eigen::RowVectorXi
const& orders)
override;
30 virtual void Compute(std::shared_ptr<muq::Utilities::MultiIndexSet>
const& multis);
47 static Eigen::VectorXd
ComputeWeights(std::shared_ptr<muq::Utilities::MultiIndexSet>
const& multis);
50 std::shared_ptr<muq::Utilities::MultiIndexSet>
const& multis,
51 Eigen::VectorXd & multiWeights);
53 std::shared_ptr<muq::Utilities::MultiIndexSet>
BuildMultis(Eigen::RowVectorXi
const& orders)
const;
Base class for multivariate quadrature rules. @detail An abstract class for computing nodes and weigh...
Computes static Smolyak quadrature rules for multivariate integration.
std::vector< std::shared_ptr< Quadrature > > scalarRules
SmolyakQuadrature(unsigned int dim, std::shared_ptr< Quadrature > const &scalarRule)
static void UpdateWeights(unsigned int activeInd, std::shared_ptr< muq::Utilities::MultiIndexSet > const &multis, Eigen::VectorXd &multiWeights)
virtual void Compute(unsigned int order) override
virtual ~SmolyakQuadrature()=default
static Eigen::VectorXd ComputeWeights(std::shared_ptr< muq::Utilities::MultiIndexSet > const &multis)
std::shared_ptr< muq::Utilities::MultiIndexSet > BuildMultis(Eigen::RowVectorXi const &orders) const