MADNESS 0.10.1
|
a SO projector class More...
#include <projector.h>
Public Member Functions | |
StrongOrthogonalityProjector (World &world) | |
default ctor | |
vecfuncT | bra1 () const |
return the orbital space for the bra of particle 1 | |
vecfuncT | bra2 () const |
return the orbital space for the bra of particle 2 | |
std::pair< std::vector< Function< T, NDIM > >, std::vector< Function< T, NDIM > > > | get_vectors_for_outer_product (const Function< T, 2 *NDIM > &f) const |
apply the projection parts of the strong orthogonality operator Q12 on a function f | |
vecfuncT | ket1 () const |
return the orbital space for the ket of particle 1 | |
vecfuncT | ket2 () const |
return the orbital space for the ket of particle 2 | |
template<typename argT > | |
argT | operator() (const argT &argument) const |
Function< T, 2 *NDIM > | operator() (const Function< T, 2 *NDIM > &f) const |
apply the strong orthogonality operator Q12 on a function f | |
void | set_particle (const int p) override |
void | set_spaces (const vecfuncT &bra1, const vecfuncT &ket1, const vecfuncT &bra2, const vecfuncT &ket2) |
set different spaces for the projectors for particle 1 and 2 | |
void | set_spaces (const vecfuncT &p) |
set the same spaces for the projectors for particle 1 and 2 | |
std::string | type () const override |
Public Member Functions inherited from madness::ProjectorBase | |
virtual | ~ProjectorBase () |
virtual int | get_particle () const |
Private Types | |
typedef std::vector< Function< T, NDIM > > | vecfuncT |
Private Attributes | |
std::vector< Function< T, NDIM > > | bra1_ |
std::vector< Function< T, NDIM > > | bra2_ |
std::vector< Function< T, NDIM > > | ket1_ |
the spaces of the projector of particles 1 and 2 | |
std::vector< Function< T, NDIM > > | ket2_ |
World & | world |
the world | |
Additional Inherited Members | |
Protected Attributes inherited from madness::ProjectorBase | |
int | particle =-1 |
a projector might work only on a subset of dimensions, e.g. P(1) | \psi(1,2) > | |
a SO projector class
The SO projector is defined as Q12 = (1-O1)(1-O2), O = \sum_i | i >< i | where O1 and O2 are projectors for electron 1 and 2 on the occupied space As a special case there might be a similarity transformed occupied space, resulting in different bras and kets
|
private |
|
inline |
default ctor
|
inline |
return the orbital space for the bra of particle 1
References madness::StrongOrthogonalityProjector< T, NDIM >::bra1_.
Referenced by madness::StrongOrthogonalityProjector< T, NDIM >::set_spaces().
|
inline |
return the orbital space for the bra of particle 2
References madness::StrongOrthogonalityProjector< T, NDIM >::bra2_.
Referenced by madness::StrongOrthogonalityProjector< T, NDIM >::set_spaces().
|
inline |
apply the projection parts of the strong orthogonality operator Q12 on a function f
The SO operator is defined as 1-O1-O2+O1O2, where O1 and O2 are projectors return the term -O1-O2+O1O2 only, such that Q12 f = 1 + outer(result.first,result.second)
References madness::append(), madness::StrongOrthogonalityProjector< T, NDIM >::bra1_, madness::StrongOrthogonalityProjector< T, NDIM >::bra2_, madness::change_tree_state(), madness::f, madness::WorldGopInterface::fence(), madness::World::gop, madness::inner(), k, madness::StrongOrthogonalityProjector< T, NDIM >::ket1_, madness::StrongOrthogonalityProjector< T, NDIM >::ket2_, madness::CompositeFactory< T, NDIM, MDIM >::particle1(), madness::CompositeFactory< T, NDIM, MDIM >::particle2(), madness::reconstruct(), madness::reconstructed, madness::transform(), madness::transpose(), and madness::StrongOrthogonalityProjector< T, NDIM >::world.
Referenced by madness::StrongOrthogonalityProjector< T, NDIM >::operator()().
|
inline |
return the orbital space for the ket of particle 1
References madness::StrongOrthogonalityProjector< T, NDIM >::ket1_.
Referenced by madness::StrongOrthogonalityProjector< T, NDIM >::set_spaces().
|
inline |
return the orbital space for the ket of particle 2
References madness::StrongOrthogonalityProjector< T, NDIM >::ket2_.
Referenced by madness::StrongOrthogonalityProjector< T, NDIM >::set_spaces().
|
inline |
References madness::apply().
|
inline |
apply the strong orthogonality operator Q12 on a function f
notation of the equations follows J. Chem. Phys., vol. 139, no. 11, p. 114106, 2013.
References madness::copy(), madness::f, madness::FunctionDefaults< NDIM >::get_thresh(), madness::StrongOrthogonalityProjector< T, NDIM >::get_vectors_for_outer_product(), madness::hartree_product(), madness::FunctionDefaults< NDIM >::set_thresh(), thresh, and madness::Function< T, NDIM >::truncate().
|
inlineoverridevirtual |
Reimplemented from madness::ProjectorBase.
References MADNESS_EXCEPTION.
|
inline |
set different spaces for the projectors for particle 1 and 2
the SO projector is Q12 = (1 - O1) (1 - O2) O1 = \sum_i | ket1_i >< bra1_i | O2 = \sum_i | ket2_i >< bra2_i | this case occurs for a similarity transformed Q12
References madness::StrongOrthogonalityProjector< T, NDIM >::bra1(), madness::StrongOrthogonalityProjector< T, NDIM >::bra1_, madness::StrongOrthogonalityProjector< T, NDIM >::bra2(), madness::StrongOrthogonalityProjector< T, NDIM >::bra2_, madness::StrongOrthogonalityProjector< T, NDIM >::ket1(), madness::StrongOrthogonalityProjector< T, NDIM >::ket1_, madness::StrongOrthogonalityProjector< T, NDIM >::ket2(), madness::StrongOrthogonalityProjector< T, NDIM >::ket2_, and MADNESS_CHECK_THROW.
|
inline |
set the same spaces for the projectors for particle 1 and 2
References madness::StrongOrthogonalityProjector< T, NDIM >::bra1_, madness::StrongOrthogonalityProjector< T, NDIM >::bra2_, madness::StrongOrthogonalityProjector< T, NDIM >::ket1_, madness::StrongOrthogonalityProjector< T, NDIM >::ket2_, and p().
Referenced by madness::MP2::get_residue(), test_projector(), test_projector_outer(), test_Q12_projector(), and madness::MP2::value().
|
inlineoverridevirtual |
Implements madness::ProjectorBase.
|
private |
the spaces of the projector of particles 1 and 2
Referenced by madness::StrongOrthogonalityProjector< T, NDIM >::get_vectors_for_outer_product(), madness::StrongOrthogonalityProjector< T, NDIM >::ket1(), madness::StrongOrthogonalityProjector< T, NDIM >::set_spaces(), and madness::StrongOrthogonalityProjector< T, NDIM >::set_spaces().
|
private |
the world
Referenced by madness::StrongOrthogonalityProjector< T, NDIM >::get_vectors_for_outer_product().