MADNESS 0.10.1
Public Member Functions | Private Attributes | List of all members
madness::PotentialManager Class Reference

Manages molecular potentials and core projections for quantum chemistry calculations. More...

#include <potentialmanager.h>

Collaboration diagram for madness::PotentialManager:
Collaboration graph
[legend]

Public Member Functions

 PotentialManager (const Molecule &molecule, const std::string &core_type)
 
void apply_nonlocal_potential (World &world, const vector_real_function_3d &amo, vector_real_function_3d Vpsi)
 
vector_real_function_3d core_projection (World &world, const vector_real_function_3d &psi, const bool include_Bc=true)
 Projects the input wavefunctions onto the atomic core orbitals.
 
double core_projector_derivative (World &world, const vector_real_function_3d &mo, const real_tensor &occ, int atom, int axis)
 Computes the derivative of the core projector operator with respect to a given axis for a specified atom.
 
const std::string & core_type () const
 
void make_nuclear_potential (World &world)
 
const Moleculemolecule () const
 
const real_function_3dvnuclear ()
 

Private Attributes

std::string core_type_
 
Molecule mol
 
real_function_3d vnuc
 

Detailed Description

Manages molecular potentials and core projections for quantum chemistry calculations.

This class encapsulates the management of nuclear and core potentials for a given molecule, including the construction of nuclear potentials, application of nonlocal core projectors, and calculation of core projector derivatives. It provides interfaces to access the molecule, core type, and nuclear potential, as well as to perform core projections and apply nonlocal potentials.

Constructor & Destructor Documentation

◆ PotentialManager()

madness::PotentialManager::PotentialManager ( const Molecule molecule,
const std::string &  core_type 
)
inline

Member Function Documentation

◆ apply_nonlocal_potential()

void madness::PotentialManager::apply_nonlocal_potential ( World world,
const vector_real_function_3d amo,
vector_real_function_3d  Vpsi 
)
inline

References madness::gaxpy().

◆ core_projection()

vector_real_function_3d madness::PotentialManager::core_projection ( World world,
const vector_real_function_3d psi,
const bool  include_Bc = true 
)
inline

Projects the input wavefunctions onto the atomic core orbitals.

This function computes the projection of the given set of wavefunctions (psi) onto the core orbitals of each atom in the molecule. The projection is performed for each atom and each of its core orbitals, accumulating the result in the returned vector of functions. Optionally, the projection can include the core boundary condition factor (Bc).

Parameters
worldThe MADNESS World object for parallel execution and data management.
psiThe input vector of real 3D functions (wavefunctions) to be projected.
include_BcIf true, includes the core boundary condition factor in the projection (default: true).
Returns
A vector of real 3D functions representing the projection of psi onto the core orbitals.

References madness::Atom::atomic_number, c, madness::WorldGopInterface::fence(), madness::Molecule::get_atom(), madness::Molecule::get_core_bc(), madness::Molecule::get_core_l(), madness::World::gop, inner(), m, madness::Molecule::n_core_orb(), madness::Molecule::natom(), print(), psi(), madness::World::rank(), and madness::Function< T, NDIM >::scale().

◆ core_projector_derivative()

double madness::PotentialManager::core_projector_derivative ( World world,
const vector_real_function_3d mo,
const real_tensor occ,
int  atom,
int  axis 
)
inline

Computes the derivative of the core projector operator with respect to a given axis for a specified atom.

This function projects the core orbitals and their derivatives onto the molecular orbitals, then evaluates the sum:

\[
\sum_i \mathrm{occ}_i \langle \psi_i | \left( \sum_c B_c \frac{d}{dx} | \mathrm{core} \rangle \langle \mathrm{core} | \right) | \psi_i \rangle
\]

where $ \psi_i $ are molecular orbitals, $ \mathrm{occ}_i $ are their occupations, and the sum over $ c $ runs over the core orbitals of the specified atom.

Parameters
worldThe MADNESS World object for parallel computation.
moThe vector of molecular orbitals as real-valued 3D functions.
occThe occupation numbers for each molecular orbital.
atomThe index of the atom for which the core projector derivative is computed.
axisThe spatial axis (0=x, 1=y, 2=z) along which the derivative is taken.
Returns
The computed derivative value as a double.

References madness::Atom::atomic_number, axis, c, func(), madness::Molecule::get_atom(), madness::Molecule::get_core_bc(), madness::Molecule::get_core_l(), inner(), m, and madness::Molecule::n_core_orb().

◆ core_type()

const std::string & madness::PotentialManager::core_type ( ) const
inline

◆ make_nuclear_potential()

void madness::PotentialManager::make_nuclear_potential ( World world)
inline

◆ molecule()

const Molecule & madness::PotentialManager::molecule ( ) const
inline

◆ vnuclear()

const real_function_3d & madness::PotentialManager::vnuclear ( )
inline

References vnuc().

Member Data Documentation

◆ core_type_

std::string madness::PotentialManager::core_type_
private

◆ mol

Molecule madness::PotentialManager::mol
private

◆ vnuc

real_function_3d madness::PotentialManager::vnuc
private

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