mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine > Class Template Reference

Documentation

template<typename Tile, typename ComputeTile = Tile, typename Engine = libint2::Engine>
class mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >

Builds integrals from an array of bases and an integral engine pool.

Parameters
Opis a function or functor that takes a Tile&& and returns a Tile object. The simplest type of Op is simply the following:
auto op = [](Tile && t){ return std::move(t) };

Public Types

using Op = std::function< Tile(ComputeTile &&)>
 
using range_type = typename ComputeTile::range_type
 

Public Member Functions

 IntegralBuilder (ShrPool< Engine > shr_epool, const BasisShrVector &bases, std::shared_ptr< Screener > screen, Op op, std::function< shellpair_data_accessor_t(const Basis *, const Basis *)> make_shellpair_data_accessor={}, std::shared_ptr< const math::PetiteList > plist=math::PetiteList::make_trivial())
 Constructor which copies all shared_ptr members. More...
 
virtual ~IntegralBuilder ()
 
const auto & bases () const
 
template<typename Idx >
Tile operator() (Idx &&idx, range_type range={})
 Compute a tile corresponding to the given cluster shellset. More...
 
template<typename Idx >
Tile integrals (Idx &&idx, range_type range={})
 Compute a tile corresponding to the given cluster shellset. More...
 
template<libint2::Operator libint2_oper, typename Idx >
std::array< ComputeTile, libint2::operator_traits< libint2_oper >::nopers > integrals (Idx &&idx, range_type range={})
 This computes an std::array of integrals for operators that have nopers components, e.g. multipole moments, geometrical derivatives, etc. Note that only one tile is computed for each component, and all nopers tiles share the same index and range. More...
 
Tile op (ComputeTile &&tensor)
 

Member Typedef Documentation

◆ Op

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
using mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::Op = std::function<Tile(ComputeTile &&)>

◆ range_type

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
using mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::range_type = typename ComputeTile::range_type

Constructor & Destructor Documentation

◆ IntegralBuilder()

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::IntegralBuilder ( ShrPool< Engine >  shr_epool,
const BasisShrVector bases,
std::shared_ptr< Screener screen,
Op  op,
std::function< shellpair_data_accessor_t(const Basis *, const Basis *)>  make_shellpair_data_accessor = {},
std::shared_ptr< const math::PetiteList >  plist = math::PetiteList::make_trivial() 
)
inline

Constructor which copies all shared_ptr members.

Parameters
shr_epoola shared pointer to an IntegralTSPool
basesa vector of shared_ptr's to Basis
screena shared pointer to a Screener type
opa thread-safe function or functor that takes a rvalue to Tile and returns a Tile object.
make_shellpair_data_accessora functor that makes shellpair data accessors; such accessors are to accept basis function indices, rather than shell indices
plistthe PetiteList object describing the symmetry properties of the set of AO integrals

◆ ~IntegralBuilder()

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
virtual mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::~IntegralBuilder ( )
inlinevirtual

Member Function Documentation

◆ bases()

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
const auto& mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::bases ( ) const
inline

Bases accessor

Returns
bases

◆ integrals() [1/2]

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
template<typename Idx >
Tile mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::integrals ( Idx &&  idx,
range_type  range = {} 
)
inline

Compute a tile corresponding to the given cluster shellset.

Template Parameters
Idxan integer range type
Parameters
idxthe indices of shell clusters for each dimension, given as a range of integers of size equal to or greater than the order of bases.
rangethe Range object to use to construct tile; if not given, will be computed assuming the function indices in the basis start at 0
Returns
the Tile object contaning the cluster shellset of integrals

◆ integrals() [2/2]

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
template<libint2::Operator libint2_oper, typename Idx >
std::array<ComputeTile, libint2::operator_traits<libint2_oper>::nopers> mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::integrals ( Idx &&  idx,
range_type  range = {} 
)
inline

This computes an std::array of integrals for operators that have nopers components, e.g. multipole moments, geometrical derivatives, etc. Note that only one tile is computed for each component, and all nopers tiles share the same index and range.

Template Parameters
libint2_operlibint2 operator type
Parameters
idxindex of the target tile
rangethe Range object to use to construct tile; if not given, will be computed assuming the function indices in the basis start at 0
Returns
the Tile object contaning the cluster shellset of integrals

◆ op()

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
Tile mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::op ( ComputeTile &&  tensor)
inline

◆ operator()()

template<typename Tile , typename ComputeTile = Tile, typename Engine = libint2::Engine>
template<typename Idx >
Tile mpqc::lcao::gaussian::IntegralBuilder< Tile, ComputeTile, Engine >::operator() ( Idx &&  idx,
range_type  range = {} 
)
inline

Compute a tile corresponding to the given cluster shellset.

Template Parameters
Idxan integer range type
Parameters
idxthe indices of shell clusters for each dimension, given as a range of integers of size equal to or greater than the order of bases.
rangethe Range object to use to construct tile; if not given, will be computed assuming the function indices in the basis start at 0
Returns
the Tile object containing the cluster shellset of integrals

The documentation for this class was generated from the following file:
Tile op(ComputeTile &&tensor)
Definition: integral_builder.h:265