DiFfRG
Loading...
Searching...
No Matches
DiFfRG::Integrator1DCartesianTBB< NT, KERNEL > Class Template Reference

Integration of an arbitrary 1D function from qx_min to qx_max using TBB. More...

#include <integrator_1D_cartesian_cpu.hh>

Public Types

using ctype = typename get_type::ctype<NT>
 Numerical type to be used for integration tasks e.g. the argument or possible jacobians.
 

Public Member Functions

 Integrator1DCartesianTBB (QuadratureProvider &quadrature_provider, const std::array< uint, 1 > grid_size, const ctype x_extent=0., const uint max_block_size=0, const ctype qx_min=-M_PI, const ctype qx_max=M_PI)
 Construct a new Integrator1DCartesianTBB object.
 
 Integrator1DCartesianTBB (QuadratureProvider &quadrature_provider, const std::array< uint, 1 > grid_size, const JSONValue &json)
 Construct a new Integrator1DCartesianTBB object.
 
 Integrator1DCartesianTBB (QuadratureProvider &quadrature_provider, const std::array< uint, 1 > grid_size, const ctype x_extent, const JSONValue &json)
 Construct a new Integrator1DCartesianTBB object.
 
 Integrator1DCartesianTBB (QuadratureProvider &quadrature_provider, const uint grid_size, const ctype x_extent=0., const ctype qx_min=-M_PI, const ctype qx_max=M_PI)
 Construct a new Integrator1DCartesianTBB object.
 
void set_qx_min (const ctype qx_min)
 Set the minimum value of the qx integration range.
 
void set_qx_max (const ctype qx_max)
 Set the maximum value of the qx integration range.
 
template<typename... T>
NT get (const ctype k, const T &...t) const
 Get the integration result.
 
template<typename... T>
std::future< NT > request (const ctype k, const T &...t) const
 Get the integration result asynchronously.
 

Private Attributes

const uint grid_size
 
ctype qx_min = -M_PI
 
ctype qx_extent = 2. * M_PI
 
const std::vector< ctype > & x_quadrature_p
 
const std::vector< ctype > & x_quadrature_w
 

Detailed Description

template<typename NT, typename KERNEL>
class DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >

Integration of an arbitrary 1D function from qx_min to qx_max using TBB.

Template Parameters
NTThe numerical type of the result.
KERNELThe kernel to integrate.

Member Typedef Documentation

◆ ctype

template<typename NT , typename KERNEL >
using DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::ctype = typename get_type::ctype<NT>

Numerical type to be used for integration tasks e.g. the argument or possible jacobians.

Constructor & Destructor Documentation

◆ Integrator1DCartesianTBB() [1/4]

template<typename NT , typename KERNEL >
DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::Integrator1DCartesianTBB ( QuadratureProvider & quadrature_provider,
const std::array< uint, 1 > grid_size,
const ctype x_extent = 0.,
const uint max_block_size = 0,
const ctype qx_min = -M_PI,
const ctype qx_max = M_PI )
inline

Construct a new Integrator1DCartesianTBB object.

Parameters
quadrature_providerThe quadrature provider to use.
grid_sizeThe number of grid points in x direction.
x_extentThe extent of the x integration range. This argument is not used, but kept for compatibility with flow classes.
qx_minThe minimum value of the x integration range.
qx_maxThe maximum value of the x integration range.

◆ Integrator1DCartesianTBB() [2/4]

template<typename NT , typename KERNEL >
DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::Integrator1DCartesianTBB ( QuadratureProvider & quadrature_provider,
const std::array< uint, 1 > grid_size,
const JSONValue & json )
inline

Construct a new Integrator1DCartesianTBB object.

Parameters
quadrature_providerThe quadrature provider to use.
grid_sizeThe number of grid points in x direction.
x_extentThis argument is not used, but kept for compatibility with flow classes.
max_block_sizeThe maximum block size to use on GPU. This argument is not used, but kept for compatibility.
qx_minThe minimum value of the x integration range.
qx_maxThe maximum value of the x integration range.

◆ Integrator1DCartesianTBB() [3/4]

template<typename NT , typename KERNEL >
DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::Integrator1DCartesianTBB ( QuadratureProvider & quadrature_provider,
const std::array< uint, 1 > grid_size,
const ctype x_extent,
const JSONValue & json )
inline

Construct a new Integrator1DCartesianTBB object.

Parameters
quadrature_providerThe quadrature provider to use.
grid_sizeThe number of grid points in x direction.
x_extentThis argument is not used, but kept for compatibility with flow classes.
qx_minThe minimum value of the x integration range.
qx_maxThe maximum value of the x integration range.

◆ Integrator1DCartesianTBB() [4/4]

template<typename NT , typename KERNEL >
DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::Integrator1DCartesianTBB ( QuadratureProvider & quadrature_provider,
const uint grid_size,
const ctype x_extent = 0.,
const ctype qx_min = -M_PI,
const ctype qx_max = M_PI )
inline

Construct a new Integrator1DCartesianTBB object.

Parameters
quadrature_providerThe quadrature provider to use.
grid_sizeThe number of grid points in x direction.
x_extentThis argument is not used, but kept for compatibility with flow classes.
qx_minThe minimum value of the x integration range.
qx_maxThe maximum value of the x integration range.

Member Function Documentation

◆ get()

template<typename NT , typename KERNEL >
template<typename... T>
NT DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::get ( const ctype k,
const T &... t ) const
inline

Get the integration result.

Template Parameters
TThe types of the additional arguments to the kernel.
Parameters
kThe current RG scale.
tThe additional arguments of the kernel.
Returns
NT The result of the integration.

◆ request()

template<typename NT , typename KERNEL >
template<typename... T>
std::future< NT > DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::request ( const ctype k,
const T &... t ) const
inline

Get the integration result asynchronously.

Template Parameters
TThe types of the additional arguments to the kernel.
Parameters
kThe current RG scale.
tThe additional arguments of the kernel.
Returns
An std::future<NT> which returns the result of the integration.

◆ set_qx_max()

template<typename NT , typename KERNEL >
void DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::set_qx_max ( const ctype qx_max)
inline

Set the maximum value of the qx integration range.

◆ set_qx_min()

template<typename NT , typename KERNEL >
void DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::set_qx_min ( const ctype qx_min)
inline

Set the minimum value of the qx integration range.

Member Data Documentation

◆ grid_size

template<typename NT , typename KERNEL >
const uint DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::grid_size
private

◆ qx_extent

template<typename NT , typename KERNEL >
ctype DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::qx_extent = 2. * M_PI
private

◆ qx_min

template<typename NT , typename KERNEL >
ctype DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::qx_min = -M_PI
private

◆ x_quadrature_p

template<typename NT , typename KERNEL >
const std::vector<ctype>& DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::x_quadrature_p
private

◆ x_quadrature_w

template<typename NT , typename KERNEL >
const std::vector<ctype>& DiFfRG::Integrator1DCartesianTBB< NT, KERNEL >::x_quadrature_w
private

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