MADNESS  version 0.9
Public Member Functions | Public Attributes | Friends | List of all members
madness::CompositeFactory< T, NDIM, MDIM > Class Template Reference

Factory for facile setup of a CompositeFunctorInterface and its FuncImpl. More...

#include <function_factory.h>

Inheritance diagram for madness::CompositeFactory< T, NDIM, MDIM >:
Inheritance graph
[legend]
Collaboration diagram for madness::CompositeFactory< T, NDIM, MDIM >:
Collaboration graph
[legend]

Public Member Functions

 CompositeFactory (World &world)
 
CompositeFactoryket (const Function< T, NDIM > &f)
 provide directly the NDIM (6D) pair function ket More...
 
CompositeFactoryg12 (const Function< T, NDIM > &f)
 g12 is the interaction potential (6D) More...
 
CompositeFactoryV_for_particle1 (const Function< T, MDIM > &f)
 a one-particle potential, acting on particle 1 More...
 
CompositeFactoryV_for_particle2 (const Function< T, MDIM > &f)
 a one-particle potential, acting on particle 2 More...
 
CompositeFactoryparticle1 (const Function< T, MDIM > &f)
 
CompositeFactoryparticle2 (const Function< T, MDIM > &f)
 
std::shared_ptr
< FunctionFunctorInterface< T,
NDIM > > 
get_functor () const
 return the functor; override this if the functor needs deferred construction More...
 
CompositeFactoryself ()
 
- Public Member Functions inherited from madness::FunctionFactory< T, NDIM >
 FunctionFactory (World &world)
 
virtual ~FunctionFactory ()
 
FunctionFactoryfunctor (const std::shared_ptr< FunctionFunctorInterface< T, NDIM > > &f)
 
template<typename opT >
FunctionFactoryfunctor2 (const opT &op)
 
FunctionFactoryno_functor ()
 
FunctionFactoryf (T(*f)(const coordT &))
 
virtual FunctionFactoryk (int k)
 
virtual FunctionFactorythresh (double thresh)
 
FunctionFactoryinitial_level (int initial_level)
 
FunctionFactorymax_refine_level (int max_refine_level)
 
FunctionFactorytruncate_mode (int truncate_mode)
 
FunctionFactoryrefine (bool refine=true)
 
FunctionFactorynorefine (bool norefine=true)
 
FunctionFactoryempty ()
 
FunctionFactoryautorefine ()
 
FunctionFactorynoautorefine ()
 
FunctionFactorytruncate_on_project ()
 
FunctionFactorynotruncate_on_project ()
 
FunctionFactoryfence (bool fence=true)
 
FunctionFactorynofence ()
 
virtual FunctionFactoryis_on_demand ()
 
FunctionFactorypmap (const std::shared_ptr< WorldDCPmapInterface< Key< NDIM > > > &pmap)
 
int get_k () const
 
double get_thresh () const
 
Worldget_world () const
 
FunctionFactoryself ()
 implement this in all derived classes for correct chaining More...
 

Public Attributes

std::shared_ptr< FunctionImpl
< T, NDIM > > 
_ket
 supposedly a 6D pair function ket More...
 
std::shared_ptr< FunctionImpl
< T, NDIM > > 
_g12
 supposedly a interaction potential More...
 
std::shared_ptr< FunctionImpl
< T, MDIM > > 
_v1
 supposedly a potential for particle 1 More...
 
std::shared_ptr< FunctionImpl
< T, MDIM > > 
_v2
 supposedly a potential for particle 2 More...
 
std::shared_ptr< FunctionImpl
< T, MDIM > > 
_particle1
 supposedly particle 1 More...
 
std::shared_ptr< FunctionImpl
< T, MDIM > > 
_particle2
 supposedly particle 2 More...
 

Friends

class CompositeFunctorInterface< T, NDIM, MDIM >
 

Additional Inherited Members

- Protected Attributes inherited from madness::FunctionFactory< T, NDIM >
World_world
 
int _k
 
double _thresh
 
int _initial_level
 
int _max_refine_level
 
int _truncate_mode
 
bool _refine
 
bool _empty
 
bool _autorefine
 
bool _truncate_on_project
 
bool _fence
 
bool _is_on_demand
 
std::shared_ptr
< WorldDCPmapInterface< Key
< NDIM > > > 
_pmap
 

Detailed Description

template<typename T, std::size_t NDIM, std::size_t MDIM>
class madness::CompositeFactory< T, NDIM, MDIM >

Factory for facile setup of a CompositeFunctorInterface and its FuncImpl.

for the concept of a Factory see base class FunctionFactory here we need to provide two different dimensions, since the main purpose of this is to set up a pair function (6D), consisting of orbitals (3D), and also one- and two-electron potentials This Factory constructs a FuncImpl, and also the functor to it.

NOTE: pass in only copies of functions, since use in here will corrupt the tree structure and functions will not pass the VERIFY test after this.

Constructor & Destructor Documentation

template<typename T, std::size_t NDIM, std::size_t MDIM>
madness::CompositeFactory< T, NDIM, MDIM >::CompositeFactory ( World world)
inline

Member Function Documentation

template<typename T, std::size_t NDIM, std::size_t MDIM>
CompositeFactory& madness::CompositeFactory< T, NDIM, MDIM >::g12 ( const Function< T, NDIM > &  f)
inline

g12 is the interaction potential (6D)

References madness::Function< T, NDIM >::get_impl().

template<typename T, std::size_t NDIM, std::size_t MDIM>
std::shared_ptr<FunctionFunctorInterface<T, NDIM> > madness::CompositeFactory< T, NDIM, MDIM >::get_functor ( ) const
inlinevirtual

return the functor; override this if the functor needs deferred construction

Reimplemented from madness::FunctionFactory< T, NDIM >.

template<typename T, std::size_t NDIM, std::size_t MDIM>
CompositeFactory& madness::CompositeFactory< T, NDIM, MDIM >::ket ( const Function< T, NDIM > &  f)
inline

provide directly the NDIM (6D) pair function ket

References madness::Function< T, NDIM >::get_impl().

Referenced by apply_U_mix(), compute_R2f2_psi(), reconstruct_psi(), and test_U_el().

template<typename T, std::size_t NDIM, std::size_t MDIM>
CompositeFactory& madness::CompositeFactory< T, NDIM, MDIM >::particle1 ( const Function< T, MDIM > &  f)
inline

provide particle 1, used with particle 2 to set up a pair function by direct product

References madness::Function< T, NDIM >::get_impl().

Referenced by compute_energy().

template<typename T, std::size_t NDIM, std::size_t MDIM>
CompositeFactory& madness::CompositeFactory< T, NDIM, MDIM >::particle2 ( const Function< T, MDIM > &  f)
inline

provide particle 2, used with particle 1 to set up a pair function by direct product

References madness::Function< T, NDIM >::get_impl().

Referenced by compute_energy().

template<typename T, std::size_t NDIM, std::size_t MDIM>
CompositeFactory& madness::CompositeFactory< T, NDIM, MDIM >::self ( )
inline
template<typename T, std::size_t NDIM, std::size_t MDIM>
CompositeFactory& madness::CompositeFactory< T, NDIM, MDIM >::V_for_particle1 ( const Function< T, MDIM > &  f)
inline

a one-particle potential, acting on particle 1

References madness::Function< T, NDIM >::get_impl().

Referenced by apply_U_ncf().

template<typename T, std::size_t NDIM, std::size_t MDIM>
CompositeFactory& madness::CompositeFactory< T, NDIM, MDIM >::V_for_particle2 ( const Function< T, MDIM > &  f)
inline

a one-particle potential, acting on particle 2

References madness::Function< T, NDIM >::get_impl().

Referenced by apply_U_mix(), and apply_U_ncf().

Friends And Related Function Documentation

template<typename T, std::size_t NDIM, std::size_t MDIM>
friend class CompositeFunctorInterface< T, NDIM, MDIM >
friend

Member Data Documentation

template<typename T, std::size_t NDIM, std::size_t MDIM>
std::shared_ptr<FunctionImpl<T,NDIM> > madness::CompositeFactory< T, NDIM, MDIM >::_g12

supposedly a interaction potential

template<typename T, std::size_t NDIM, std::size_t MDIM>
std::shared_ptr<FunctionImpl<T,NDIM> > madness::CompositeFactory< T, NDIM, MDIM >::_ket

supposedly a 6D pair function ket

template<typename T, std::size_t NDIM, std::size_t MDIM>
std::shared_ptr<FunctionImpl<T,MDIM> > madness::CompositeFactory< T, NDIM, MDIM >::_particle1

supposedly particle 1

template<typename T, std::size_t NDIM, std::size_t MDIM>
std::shared_ptr<FunctionImpl<T,MDIM> > madness::CompositeFactory< T, NDIM, MDIM >::_particle2

supposedly particle 2

template<typename T, std::size_t NDIM, std::size_t MDIM>
std::shared_ptr<FunctionImpl<T,MDIM> > madness::CompositeFactory< T, NDIM, MDIM >::_v1

supposedly a potential for particle 1

template<typename T, std::size_t NDIM, std::size_t MDIM>
std::shared_ptr<FunctionImpl<T,MDIM> > madness::CompositeFactory< T, NDIM, MDIM >::_v2

supposedly a potential for particle 2


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