Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
model::Quadrature< dim, qOrder, QuadratureRule > Struct Template Reference

A static class template for generating quadrature abcsissas and weights for arbitrary-order and QuadratureRule and dimension. More...

#include <Quadrature.h>

Collaboration diagram for model::Quadrature< dim, qOrder, QuadratureRule >:

Public Types

typedef VectorDimTypeSelector< dim, qOrder >::VectorDim VectorDim

Static Public Member Functions

static const double & weight (const short unsigned int &k)
static const VectorDim abscissa (const short unsigned int &k)
template<typename IntegrandType>
static void integrate (IntegrandType(*fp)(const double &), IntegrandType &intgrl)
template<typename AnyClass, typename IntegrandType, typename ... Args>
static void integrate (const AnyClass *const C, IntegrandType &intgrl, IntegrandType(AnyClass::*mfp)(const VectorDim &, const Args &...) const, const Args &...args)
template<typename AnyClass, typename IntegrandType, typename ... Args>
static void integrate (const AnyClass *const C, IntegrandType &intgrl, IntegrandType(AnyClass::*mfp)(const int &, const Args &...) const, const Args &...args)
template<typename AnyClass, typename ... Args>
static void execute (AnyClass *const C, void(AnyClass::*mfp)(const VectorDim &, const Args &...), const Args &...args)
template<typename AnyClass, typename ... Args>
static void execute (AnyClass *const C, void(AnyClass::*mfp)(const int &, const Args &...), const Args &...args)

Static Public Attributes

static constexpr size_t quadratureOrder =qOrder
static const Eigen::MatrixXd abscissas
 the static matrix storing abcsissa values
static const Eigen::MatrixXd weights
 the static vector storing weight values

Detailed Description

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
struct model::Quadrature< dim, qOrder, QuadratureRule >

A static class template for generating quadrature abcsissas and weights for arbitrary-order and QuadratureRule and dimension.

Definition at line 49 of file Quadrature.h.

Member Typedef Documentation

◆ VectorDim

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
typedef VectorDimTypeSelector<dim,qOrder>::VectorDim model::Quadrature< dim, qOrder, QuadratureRule >::VectorDim

Definition at line 55 of file Quadrature.h.

Member Function Documentation

◆ abscissa()

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
const VectorDim model::Quadrature< dim, qOrder, QuadratureRule >::abscissa ( const short unsigned int & k)
inlinestatic

Definition at line 73 of file Quadrature.h.

◆ execute() [1/2]

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
template<typename AnyClass, typename ... Args>
void model::Quadrature< dim, qOrder, QuadratureRule >::execute ( AnyClass *const C,
void(AnyClass::* mfp )(const int &, const Args &...),
const Args &... args )
inlinestatic

Execute non-static member function of arbitrary class, at quadrature points in range [0,1]

Definition at line 217 of file Quadrature.h.

◆ execute() [2/2]

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
template<typename AnyClass, typename ... Args>
void model::Quadrature< dim, qOrder, QuadratureRule >::execute ( AnyClass *const C,
void(AnyClass::* mfp )(const VectorDim &, const Args &...),
const Args &... args )
inlinestatic

Execute non-static member function of arbitrary class, at quadrature points in range [0,1]

Definition at line 205 of file Quadrature.h.

◆ integrate() [1/3]

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
template<typename AnyClass, typename IntegrandType, typename ... Args>
void model::Quadrature< dim, qOrder, QuadratureRule >::integrate ( const AnyClass *const C,
IntegrandType & intgrl,
IntegrandType(AnyClass::* mfp )(const int &, const Args &...) const,
const Args &... args )
inlinestatic

Integrates non-static member function of arbitrary class in range [0,1]

Parameters
[out]intgrlThe memory area to copy to.
[in]mfpThe member function pointer.
[in]CThe pointer to ...

Sample code:

#include <iostream>
#include <Eigen/Dense>
#include <Quadrature.h>
class SomeClass{
Eigen::Matrix<double,3,3> integrand(const double& u) const {
return Eigen::Matrix<double,3,3>::Ones()*u*u;
}
public:
template <size_t qOrder>
void compute_integral(){
Eigen::Matrix<double,3,3> I=Eigen::Matrix<double,3,3>::Zero();
std::cout<< I <<std::endl;
}
};
int main(){
SomeClass sc;
sc.compute_integral<16>();
return 0;
}
The q vector I
static void integrate(IntegrandType(*fp)(const double &), IntegrandType &intgrl)
Definition Quadrature.h:81
REAL u[4]
int main(int argc, char **argv) int main(argc

Definition at line 161 of file Quadrature.h.

◆ integrate() [2/3]

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
template<typename AnyClass, typename IntegrandType, typename ... Args>
void model::Quadrature< dim, qOrder, QuadratureRule >::integrate ( const AnyClass *const C,
IntegrandType & intgrl,
IntegrandType(AnyClass::* mfp )(const VectorDim &, const Args &...) const,
const Args &... args )
inlinestatic

Integrates non-static member function of arbitrary class in range [0,1]

Parameters
[in]CThe pointer to the class instance
[out]intgrlthe returned integral (values are accumulated)
[in]mfpthe member function pointer.

Sample code:

#include <iostream>
#include <Eigen/Dense>
#include <Quadrature.h>
class SomeClass
{
Eigen::Matrix<double,3,3> integrand(const double& u) const
{
return Eigen::Matrix<double,3,3>::Ones()*u*u;
}
public:
template <size_t qOrder>
void compute_integral()
{
Eigen::Matrix<double,3,3> I=Eigen::Matrix<double,3,3>::Zero();
std::cout<< I <<std::endl;
}
};
int main()
{
SomeClass sc;
sc.compute_integral<16>();
return 0;
}

Definition at line 113 of file Quadrature.h.

◆ integrate() [3/3]

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
template<typename IntegrandType>
void model::Quadrature< dim, qOrder, QuadratureRule >::integrate ( IntegrandType(* fp )(const double &),
IntegrandType & intgrl )
inlinestatic

Integrates function in range [0,1]

Parameters
[in]fpthe function pointer.
[out]intgrlthe returned integral (values are accumulated)

Sample code:

#include <iostream>
#include <Eigen/Dense>
#include <Quadrature.h>
Eigen::Matrix<double,3,3> integrand(const double& u)
{
return Eigen::Matrix<double,3,3>::Ones()*u*u;
}
int main()
{
Eigen::Matrix<double,3,3> I=Eigen::Matrix<double,3,3>::Zero();
Q.integrate(&integrand,I);
std::cout<< I <<std::endl;
return 0;
}
Q

Definition at line 81 of file Quadrature.h.

◆ weight()

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
const double & model::Quadrature< dim, qOrder, QuadratureRule >::weight ( const short unsigned int & k)
inlinestatic

Definition at line 66 of file Quadrature.h.

Member Data Documentation

◆ abscissas

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
const Eigen::MatrixXd model::Quadrature< dim, qOrder, QuadratureRule >::abscissas
static

the static matrix storing abcsissa values

Definition at line 59 of file Quadrature.h.

◆ quadratureOrder

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
size_t model::Quadrature< dim, qOrder, QuadratureRule >::quadratureOrder =qOrder
staticconstexpr

Definition at line 52 of file Quadrature.h.

◆ weights

template<short unsigned int dim, size_t qOrder, template< short unsigned int, size_t > class QuadratureRule = GaussLegendre>
const Eigen::MatrixXd model::Quadrature< dim, qOrder, QuadratureRule >::weights
static

the static vector storing weight values

Definition at line 63 of file Quadrature.h.


The documentation for this struct was generated from the following file: