8#ifndef model_QUADRATURE_H_
9#define model_QUADRATURE_H_
20 template<
short unsigned int dim,
size_t qOrder>
31 template<
size_t qOrder>
48 template<
short unsigned int dim,
size_t qOrder,
template <
short unsigned int,
size_t>
class QuadratureRule = GaussLegendre>
66 static const double&
weight(
const short unsigned int &
k)
80 template<
typename IntegrandType>
81 static void integrate(IntegrandType (*fp)(
const double&), IntegrandType &intgrl)
105 for(
size_t k=0;
k<qOrder;++
k)
112 template <
typename AnyClass,
typename IntegrandType,
typename ...Args>
113 static void integrate(
const AnyClass*
const C, IntegrandType &intgrl, IntegrandType (AnyClass::*mfp)(
const VectorDim&,
const Args&...)
const,
const Args&...args)
153 for(
size_t k=0;
k<qOrder;++
k)
160 template <
typename AnyClass,
typename IntegrandType,
typename ...Args>
161 static void integrate(
const AnyClass*
const C, IntegrandType &intgrl, IntegrandType (AnyClass::*mfp)(
const int&,
const Args&... )
const,
const Args&...args)
197 for(
size_t k=0;
k<qOrder;++
k)
199 intgrl+=(C->*mfp)(
k,args...) *
weights(
k);
204 template <
typename AnyClass,
typename ...Args>
205 static void execute(AnyClass*
const C,
void (AnyClass::*mfp)(
const VectorDim&,
const Args&...),
const Args&...args)
209 for(
size_t k=0;
k<qOrder;++
k)
216 template <
typename AnyClass,
typename ...Args>
217 static void execute(AnyClass*
const C,
void (AnyClass::*mfp)(
const int&,
const Args&...),
const Args&...args)
221 for(
size_t k=0;
k<qOrder;++
k)
223 (C->*mfp)(
k,args...);
232 template<
short unsigned int dim,
size_t qOrder,
template <
short unsigned int,
size_t>
class QuadratureRule>
237 template<
short unsigned int dim,
size_t qOrder,
template <
short unsigned int,
size_t>
class QuadratureRule>
const Eigen::MatrixXd Quadrature< dim, qOrder, QuadratureRule >::abscissas
The static const member data abscissas is initialized only once when Quadrature<1,...
A static class template for generating quadrature abcsissas and weights for arbitrary-order and Quadr...
static const Eigen::MatrixXd weights
static const VectorDim abscissa(const short unsigned int &k)
static const double & weight(const short unsigned int &k)
static constexpr size_t quadratureOrder
static void integrate(const AnyClass *const C, IntegrandType &intgrl, IntegrandType(AnyClass::*mfp)(const int &, const Args &...) const, const Args &...args)
static void integrate(IntegrandType(*fp)(const double &), IntegrandType &intgrl)
static void execute(AnyClass *const C, void(AnyClass::*mfp)(const VectorDim &, const Args &...), const Args &...args)
static void integrate(const AnyClass *const C, IntegrandType &intgrl, IntegrandType(AnyClass::*mfp)(const VectorDim &, const Args &...) const, const Args &...args)
static void execute(AnyClass *const C, void(AnyClass::*mfp)(const int &, const Args &...), const Args &...args)
static const Eigen::MatrixXd abscissas
VectorDimTypeSelector< dim, qOrder >::VectorDim VectorDim
static const VectorDim & abscissa(const short unsigned int &k, const Eigen::Matrix< double, 1, qOrder > &abscissas)
static const VectorDim abscissa(const short unsigned int &k, const Eigen::Matrix< double, dim, qOrder > &abscissas)
Eigen::Matrix< double, dim, 1 > VectorDim