MADNESS 0.10.1
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple Class Reference
Inheritance diagram for madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple:
Inheritance graph
[legend]
Collaboration diagram for madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple:
Collaboration graph
[legend]

Classes

class  MacroTaskPartitionerExchange
 custom partitioning for the exchange operator in exchangeoperator.h More...
 

Public Types

typedef std::tuple< const std::vector< Function< T, NDIM > > &, const std::vector< Function< T, NDIM > > &, const std::vector< Function< T, NDIM > > & > argtupleT
 
using resultT = std::vector< Function< T, NDIM > >
 

Public Member Functions

 MacroTaskExchangeSimple (const long nresult, const double lo, const double mul_tol, const bool symmetric)
 
resultT allocator (World &world, const argtupleT &argtuple) const
 
vecfuncT compute_batch_in_asymmetric_matrix (World &subworld, const vecfuncT &ket_batch, const vecfuncT &bra_batch, const vecfuncT &vf_batch) const
 compute a batch of the exchange matrix, with non-identical ranges
 
vecfuncT compute_diagonal_batch_in_symmetric_matrix (World &subworld, const vecfuncT &ket_batch, const vecfuncT &bra_batch, const vecfuncT &vf_batch) const
 compute a batch of the exchange matrix, with identical ranges, exploiting the matrix symmetry
 
std::pair< vecfuncT, vecfuncTcompute_offdiagonal_batch_in_symmetric_matrix (World &subworld, const vecfuncT &ket, const vecfuncT &bra_batch, const vecfuncT &vf_batch) const
 compute a batch of the exchange matrix, with non-identical ranges
 
std::vector< Function< T, NDIM > > operator() (const std::vector< Function< T, NDIM > > &vf_batch, const std::vector< Function< T, NDIM > > &bra_batch, const std::vector< Function< T, NDIM > > &vket)
 
- Public Member Functions inherited from madness::MacroTaskOperationBase
 MacroTaskOperationBase ()
 

Private Attributes

double lo = 1.e-4
 
double mul_tol = 1.e-7
 
long nresult
 
bool symmetric = false
 

Additional Inherited Members

- Public Attributes inherited from madness::MacroTaskOperationBase
Batch batch
 
std::string name ="unknown_task"
 
std::shared_ptr< MacroTaskPartitionerpartitioner =0
 

Member Typedef Documentation

◆ argtupleT

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
typedef std::tuple<const std::vector<Function<T, NDIM> >&, const std::vector<Function<T, NDIM> >&, const std::vector<Function<T, NDIM> >&> madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::argtupleT

◆ resultT

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
using madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::resultT = std::vector<Function<T, NDIM> >

Constructor & Destructor Documentation

◆ MacroTaskExchangeSimple()

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::MacroTaskExchangeSimple ( const long  nresult,
const double  lo,
const double  mul_tol,
const bool  symmetric 
)
inline

Member Function Documentation

◆ allocator()

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
resultT madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::allocator ( World world,
const argtupleT argtuple 
) const
inline

◆ compute_batch_in_asymmetric_matrix()

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
vecfuncT madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::compute_batch_in_asymmetric_matrix ( World subworld,
const vecfuncT ket_batch,
const vecfuncT bra_batch,
const vecfuncT vf_batch 
) const
inline

compute a batch of the exchange matrix, with non-identical ranges

Parameters
subworldthe world we're computing in
cloudwhere to store the results
bra_batchthe bra batch of orbitals (including the nuclear correlation factor square)
ket_batchthe ket batch of orbitals, i.e. the orbitals to premultiply with
vf_batchthe argument of the exchange operator

References lo.

◆ compute_diagonal_batch_in_symmetric_matrix()

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
vecfuncT madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::compute_diagonal_batch_in_symmetric_matrix ( World subworld,
const vecfuncT ket_batch,
const vecfuncT bra_batch,
const vecfuncT vf_batch 
) const
inline

compute a batch of the exchange matrix, with identical ranges, exploiting the matrix symmetry

Parameters
subworldthe world we're computing in
cloudwhere to store the results
bra_batchthe bra batch of orbitals (including the nuclear correlation factor square)
ket_batchthe ket batch of orbitals, i.e. the orbitals to premultiply with
vf_batchthe argument of the exchange operator

References lo.

◆ compute_offdiagonal_batch_in_symmetric_matrix()

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
std::pair< std::vector< Function< T, NDIM > >, std::vector< Function< T, NDIM > > > madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::compute_offdiagonal_batch_in_symmetric_matrix ( World subworld,
const vecfuncT mo_ket,
const vecfuncT bra_batch,
const vecfuncT vf_batch 
) const

compute a batch of the exchange matrix, with non-identical ranges

Parameters
subworldthe world we're computing in
cloudwhere to store the results
bra_batchthe bra batch of orbitals (including the nuclear correlation factor square)
ket_batchthe ket batch of orbitals, i.e. the orbitals to premultiply with
vf_batchthe argument of the exchange operator
subworldthe world we're computing in
cloudwhere to store the results
bra_batchthe bra batch of orbitals (including the nuclear correlation factor square)
ket_batchthe ket batch of orbitals, also the orbitals to premultiply with
vf_batchthe argument of the exchange operator

References madness::_(), madness::apply(), madness::cpu_time(), madness::dot(), madness::WorldGopInterface::fence(), madness::flatten(), madness::World::gop, ij(), lo, MADNESS_CHECK, set_poisson(), and madness::truncate().

◆ operator()()

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
std::vector< Function< T, NDIM > > madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::operator() ( const std::vector< Function< T, NDIM > > &  vf_batch,
const std::vector< Function< T, NDIM > > &  bra_batch,
const std::vector< Function< T, NDIM > > &  vket 
)
inline

References MADNESS_CHECK.

Member Data Documentation

◆ lo

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
double madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::lo = 1.e-4
private

◆ mul_tol

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
double madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::mul_tol = 1.e-7
private

◆ nresult

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
long madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::nresult
private

◆ symmetric

template<typename T , std::size_t NDIM>
template<typename T , std::size_t NDIM>
bool madness::Exchange< T, NDIM >::ExchangeImpl< T, NDIM >::MacroTaskExchangeSimple::symmetric = false
private

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