Psi4
Public Member Functions | List of all members
psi::PCMPotentialInt Class Reference

#include <potentialint.h>

Inheritance diagram for psi::PCMPotentialInt:
psi::PotentialInt psi::OneBodyAOInt

Public Member Functions

 PCMPotentialInt (std::vector< SphericalTransform > &, std::shared_ptr< BasisSet >, std::shared_ptr< BasisSet >, int deriv=0)
 
template<typename PCMPotentialIntFunctor >
void compute (PCMPotentialIntFunctor &functor)
 Drives the loops over all shell pairs, to compute integrals. More...
 
- Public Member Functions inherited from psi::PotentialInt
 PotentialInt (std::vector< SphericalTransform > &, std::shared_ptr< BasisSet >, std::shared_ptr< BasisSet >, int deriv=0)
 Constructor. Assumes nuclear centers/charges as the potential. More...
 
virtual ~PotentialInt ()
 
virtual void compute_deriv1 (std::vector< SharedMatrix > &result)
 Computes the first derivatives and stores them in result. More...
 
virtual void compute_deriv1_no_charge_term (std::vector< SharedMatrix > &result)
 Computes the first derivatives and stores them in result. More...
 
void compute_shell_deriv1_no_charge_term (int, int)
 
virtual void compute_deriv2 (std::vector< SharedMatrix > &result)
 Computes the second derivatives and store them in result. More...
 
void set_charge_field (SharedMatrix Zxyz)
 Set the field of charges. More...
 
SharedMatrix charge_field () const
 Get the field of charges. More...
 
bool has_deriv1 ()
 Does the method provide first derivatives? More...
 
- Public Member Functions inherited from psi::OneBodyAOInt
virtual ~OneBodyAOInt ()
 
std::shared_ptr< BasisSetbasis ()
 Basis set on center one. More...
 
std::shared_ptr< BasisSetbasis1 ()
 Basis set on center one. More...
 
std::shared_ptr< BasisSetbasis2 ()
 Basis set on center two. More...
 
int nchunk () const
 Number of chunks. Normally 1, but dipoles (3) quadrupoles (6). More...
 
void set_force_cartesian (bool t_f)
 Sets whether we're forcing this object to always generate Cartesian integrals. More...
 
const double * buffer () const
 Buffer where the integrals are placed. More...
 
void compute_shell (int, int)
 Compute the integrals between basis function in the given shell pair. More...
 
virtual void compute (std::vector< SharedMatrix > &result)
 Computes all integrals and stores them in result by default this method throws. More...
 
virtual bool has_deriv2 ()
 Does the method provide second derivatives? More...
 
int deriv () const
 What order of derivative was requested? More...
 
virtual void compute_shell_deriv1 (int, int)
 Computes the integrals between basis function in the given shell pair. More...
 
virtual void compute_shell_deriv2 (int, int)
 Computes the integrals between basis function in the given shell pair. More...
 
virtual bool cloneable () const
 Return true if the clone member can be called. By default returns false. More...
 
virtual OneBodyAOIntclone () const
 Returns a clone of this object. By default throws an exception. More...
 
Vector3 origin () const
 Returns the origin (useful for properties) More...
 
void set_origin (const Vector3 &_origin)
 Set the origin (useful for properties) More...
 
void compute (SharedMatrix &result)
 

Additional Inherited Members

- Protected Member Functions inherited from psi::OneBodyAOInt
 OneBodyAOInt (std::vector< SphericalTransform > &, std::shared_ptr< BasisSet > bs1, std::shared_ptr< BasisSet > bs2, int deriv=0)
 
void set_chunks (int nchunk)
 
void pure_transform (const GaussianShell &, const GaussianShell &, int=1)
 
void normalize_am (const GaussianShell &, const GaussianShell &, int nchunk=1)
 Normalize Cartesian functions based on angular momentum. More...
 
- Protected Attributes inherited from psi::PotentialInt
ObaraSaikaTwoCenterVIRecursionpotential_recur_
 Recursion object that does the heavy lifting. More...
 
SharedMatrix Zxyz_
 Matrix of coordinates/charges of partial charges. More...
 
- Protected Attributes inherited from psi::OneBodyAOInt
std::shared_ptr< BasisSetbs1_
 
std::shared_ptr< BasisSetbs2_
 
std::vector< SphericalTransform > & spherical_transforms_
 
Vector3 origin_
 
double * buffer_
 
double * target_
 
double * tformbuf_
 
bool force_cartesian_
 Whether we want to always generate Cartesian integrals;. More...
 
unsigned int count_
 
int deriv_
 
int natom_
 
int nchunk_
 
int buffer_size_
 

Detailed Description

This is a cheesy modification to PotentialInt, to allow the in-place handling of integrals to avoid storage N.B. The integrals are computed directly in the Cartesian basis and are not transformed, for efficiency. To use this code, you should transform any matrices to be contracted with these integrals to the Cartesian basis first.

By defining the compute function of integral to be a template class, we can write classes (functors) that will be inlined into the innermost loops, allowing us to do different tasks without re-writing the code or having to make function calls. (AS)

NB: This code must be specified in the .h file in order for the compiler to properly in-line the functors. (TDC)

Constructor & Destructor Documentation

psi::PCMPotentialInt::PCMPotentialInt ( std::vector< SphericalTransform > &  trans,
std::shared_ptr< BasisSet bs1,
std::shared_ptr< BasisSet bs2,
int  deriv = 0 
)

Member Function Documentation

template<typename PCMPotentialIntFunctor >
void psi::PCMPotentialInt::compute ( PCMPotentialIntFunctor &  functor)

Drives the loops over all shell pairs, to compute integrals.


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