MADNESS  version 0.9
Public Types | Public Member Functions | Public Attributes | List of all members
madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM > Struct Template Reference

given a ket and the 1- and 2-electron potentials, construct the function V phi More...

#include <funcimpl.h>

Collaboration diagram for madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >:
Collaboration graph
[legend]

Public Types

typedef Vphi_op_NS< opT, LDIM > this_type
 
typedef CoeffTracker< T, NDIMctT
 
typedef CoeffTracker< T, LDIM > ctL
 

Public Member Functions

bool randomize () const
 
 Vphi_op_NS ()
 
 Vphi_op_NS (implT *result, const opT &leaf_op, const ctT &iaket, const ctL &iap1, const ctL &iap2, const ctL &iav1, const ctL &iav2, const implT *eri)
 
std::pair< bool, coeffToperator() (const Key< NDIM > &key) const
 make and insert the coefficients into result's tree More...
 
std::pair< bool, coeffTcontinue_recursion (const std::vector< bool > child_is_leaf, const tensorT &coeffs, const keyT &key) const
 loop over all children and either insert their sum coeffs or continue the recursion More...
 
tensorT eri_values (const keyT &key) const
 return the values of the 2-particle potential More...
 
coeffT make_sum_coeffs (const keyT &key) const
 make the sum coeffs for key More...
 
tensorT make_childrens_sum_coeffs (const keyT &key) const
 make the sum coeffs for all children of key More...
 
this_type make_child (const keyT &child) const
 
Future< this_typeactivate () const
 
this_type forward_ctor (implT *result1, const opT &leaf_op, const ctT &iaket1, const ctL &iap11, const ctL &iap21, const ctL &iav11, const ctL &iav21, const implT *eri1)
 
template<typename Archive >
void serialize (const Archive &ar)
 serialize this (needed for use in recursive_op) More...
 

Public Attributes

implTresult
 where to construct Vphi, no need to track parents More...
 
opT leaf_op
 deciding if a given FunctionNode will be a leaf node More...
 
ctT iaket
 the ket of a pair function (exclusive with p1, p2) More...
 
ctL iap1
 
ctL iap2
 the particles 1 and 2 (exclusive with ket) More...
 
ctL iav1
 
ctL iav2
 potentials for particles 1 and 2 More...
 
const implTeri
 2-particle potential, must be on-demand More...
 

Detailed Description

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
struct madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >

given a ket and the 1- and 2-electron potentials, construct the function V phi

small memory footstep version of Vphi_op: use the NS form to have information about parent and children to determine if a box is a leaf. This will require compression of the constituent functions, which will lead to more memory usage there, but will avoid oversampling of the result function.

Member Typedef Documentation

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
typedef CoeffTracker<T,LDIM> madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::ctL
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
typedef CoeffTracker<T,NDIM> madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::ctT
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
typedef Vphi_op_NS<opT,LDIM> madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::this_type

Constructor & Destructor Documentation

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::Vphi_op_NS ( )
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::Vphi_op_NS ( implT result,
const opT &  leaf_op,
const ctT iaket,
const ctL iap1,
const ctL iap2,
const ctL iav1,
const ctL iav2,
const implT eri 
)
inline

Member Function Documentation

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
Future<this_type> madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::activate ( ) const
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
std::pair<bool,coeffT> madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::continue_recursion ( const std::vector< bool >  child_is_leaf,
const tensorT coeffs,
const keyT key 
) const
inline

loop over all children and either insert their sum coeffs or continue the recursion

Parameters
[in]child_is_leaffor each child: is it a leaf?
[in]coeffscoefficient tensor with 2^N sum coeffs (=unfiltered NS coeffs)
[in]keythe key for the NS coeffs (=parent key of the children)
Returns
to avoid recursion outside this return: std::pair<is_leaf,coeff> = true,coeffT()

References madness::FunctionImpl< T, NDIM >::child_patch(), madness::copy(), madness::FunctionImpl< T, NDIM >::forward_traverse(), madness::FunctionImpl< T, NDIM >::get_coeffs(), madness::FunctionImpl< T, NDIM >::get_tensor_args(), madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::make_child(), madness::WorldContainer< keyT, valueT, hashfunT >::owner(), and madness::WorldObject< Derived >::task().

Referenced by madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::operator()().

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
tensorT madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::eri_values ( const keyT key) const
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
this_type madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::forward_ctor ( implT result1,
const opT &  leaf_op,
const ctT iaket1,
const ctL iap11,
const ctL iap21,
const ctL iav11,
const ctL iav21,
const implT eri1 
)
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
this_type madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::make_child ( const keyT child) const
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
tensorT madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::make_childrens_sum_coeffs ( const keyT key) const
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
coeffT madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::make_sum_coeffs ( const keyT key) const
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
std::pair<bool,coeffT> madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::operator() ( const Key< NDIM > &  key) const
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
bool madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::randomize ( ) const
inline
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
template<typename Archive >
void madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::serialize ( const Archive &  ar)
inline

serialize this (needed for use in recursive_op)

References madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::iav2.

Member Data Documentation

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
const implT* madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::eri

2-particle potential, must be on-demand

Referenced by madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::make_child().

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
ctT madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::iaket

the ket of a pair function (exclusive with p1, p2)

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
ctL madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::iap1
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
ctL madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::iap2

the particles 1 and 2 (exclusive with ket)

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
ctL madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::iav1
template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
ctL madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::iav2

potentials for particles 1 and 2

Referenced by madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::serialize().

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
opT madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::leaf_op

deciding if a given FunctionNode will be a leaf node

Referenced by madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::operator()().

template<typename T, std::size_t NDIM>
template<typename opT, size_t LDIM>
implT* madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::result

where to construct Vphi, no need to track parents


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