occ
Loading...
Searching...
No Matches
occ::ints::ESPEvaluator< T > Class Template Reference

High-level ESP integral evaluator. More...

#include <esp.h>

Public Types

using Mat3N = Eigen::Matrix< T, 3, Eigen::Dynamic >
 
using MatRM = Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >
 

Public Member Functions

 ESPEvaluator (const T *boys_table)
 Construct evaluator with Boys function table.
 
 ~ESPEvaluator ()
 
 ESPEvaluator (const ESPEvaluator &)=delete
 
ESPEvaluatoroperator= (const ESPEvaluator &)=delete
 
 ESPEvaluator (ESPEvaluator &&) noexcept
 
ESPEvaluatoroperator= (ESPEvaluator &&) noexcept
 
size_t add_shell_pair (int la, int lb, int na_prim, int nb_prim, const T *exponents_a, const T *exponents_b, const T *coeffs_a, const T *coeffs_b, const T *A, const T *B)
 Add a shell pair and precompute its E-matrices (Cartesian) Returns index for later evaluation.
 
size_t add_shell_pair (int la, int lb, int na_prim, int nb_prim, const T *exponents_a, const T *exponents_b, const T *coeffs_a, const T *coeffs_b, const T *A, const T *B, bool spherical)
 Add a shell pair with option for spherical harmonics.
 
void evaluate (size_t shell_idx, const Eigen::Ref< const Mat3N > &C, Eigen::Ref< MatRM > integrals, Eigen::Ref< MatRM > workspace)
 Evaluate ESP integrals for a precomputed shell pair (Eigen interface)
 
size_t workspace_size (size_t shell_idx, int npts) const
 Get required workspace size for a shell pair.
 
void evaluate_overlap (size_t shell_idx, T *integrals)
 Evaluate overlap integrals for a precomputed shell pair.
 
int nab (size_t shell_idx) const
 Get number of basis function pairs for a shell pair.
 
int nherm (size_t shell_idx) const
 Get number of Hermite Gaussians for a shell pair (workspace cols needed)
 
std::pair< int, intangular_momenta (size_t shell_idx) const
 Get angular momenta for a shell pair.
 
void clear ()
 Clear all precomputed shell pairs.
 
size_t num_shell_pairs () const
 Number of precomputed shell pairs.
 
bool is_spherical (size_t shell_idx) const
 Check if a shell pair uses spherical harmonics.
 
std::array< T, 3 > pair_center (size_t shell_idx) const
 Get the effective center of a shell pair (overlap region) Based on the most diffuse primitive combination.
 
pair_extent (size_t shell_idx) const
 Get the extent of a shell pair (radius where pair density < 1e-12) Based on the most diffuse primitive combination.
 

Detailed Description

template<typename T>
class occ::ints::ESPEvaluator< T >

High-level ESP integral evaluator.

This class manages precomputed shell pair data and workspace buffers for efficient evaluation of ESP integrals over many grid points.

Usage: ESPEvaluator<double> esp(boys_table); esp.add_shell_pair(la, lb, na_prim, nb_prim, ...); esp.evaluate(shell_idx, grid_points, integrals, workspace);

Member Typedef Documentation

◆ Mat3N

template<typename T >
using occ::ints::ESPEvaluator< T >::Mat3N = Eigen::Matrix<T, 3, Eigen::Dynamic>

◆ MatRM

template<typename T >
using occ::ints::ESPEvaluator< T >::MatRM = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>

Constructor & Destructor Documentation

◆ ESPEvaluator() [1/3]

template<typename T >
occ::ints::ESPEvaluator< T >::ESPEvaluator ( const T *  boys_table)
explicit

Construct evaluator with Boys function table.

◆ ~ESPEvaluator()

◆ ESPEvaluator() [2/3]

template<typename T >
occ::ints::ESPEvaluator< T >::ESPEvaluator ( const ESPEvaluator< T > &  )
delete

◆ ESPEvaluator() [3/3]

template<typename T >
occ::ints::ESPEvaluator< T >::ESPEvaluator ( ESPEvaluator< T > &&  )
noexcept

Member Function Documentation

◆ add_shell_pair() [1/2]

template<typename T >
size_t occ::ints::ESPEvaluator< T >::add_shell_pair ( int  la,
int  lb,
int  na_prim,
int  nb_prim,
const T *  exponents_a,
const T *  exponents_b,
const T *  coeffs_a,
const T *  coeffs_b,
const T *  A,
const T *  B 
)

Add a shell pair and precompute its E-matrices (Cartesian) Returns index for later evaluation.

◆ add_shell_pair() [2/2]

template<typename T >
size_t occ::ints::ESPEvaluator< T >::add_shell_pair ( int  la,
int  lb,
int  na_prim,
int  nb_prim,
const T *  exponents_a,
const T *  exponents_b,
const T *  coeffs_a,
const T *  coeffs_b,
const T *  A,
const T *  B,
bool  spherical 
)

Add a shell pair with option for spherical harmonics.

Parameters
sphericalIf true, output integrals in spherical basis

◆ angular_momenta()

template<typename T >
std::pair< int, int > occ::ints::ESPEvaluator< T >::angular_momenta ( size_t  shell_idx) const

Get angular momenta for a shell pair.

◆ clear()

template<typename T >
void occ::ints::ESPEvaluator< T >::clear ( )

Clear all precomputed shell pairs.

◆ evaluate()

template<typename T >
void occ::ints::ESPEvaluator< T >::evaluate ( size_t  shell_idx,
const Eigen::Ref< const Mat3N > &  C,
Eigen::Ref< MatRM integrals,
Eigen::Ref< MatRM workspace 
)

Evaluate ESP integrals for a precomputed shell pair (Eigen interface)

Parameters
shell_idxIndex returned by add_shell_pair
CGrid point coordinates [3 x npts] column-major
integralsOutput buffer [npts x nab] row-major
workspaceExternal workspace buffer [npts x nherm] row-major

◆ evaluate_overlap()

template<typename T >
void occ::ints::ESPEvaluator< T >::evaluate_overlap ( size_t  shell_idx,
T *  integrals 
)

Evaluate overlap integrals for a precomputed shell pair.

Parameters
shell_idxIndex returned by add_shell_pair
integralsOutput buffer [nab]

◆ is_spherical()

template<typename T >
bool occ::ints::ESPEvaluator< T >::is_spherical ( size_t  shell_idx) const

Check if a shell pair uses spherical harmonics.

◆ nab()

template<typename T >
int occ::ints::ESPEvaluator< T >::nab ( size_t  shell_idx) const

Get number of basis function pairs for a shell pair.

◆ nherm()

template<typename T >
int occ::ints::ESPEvaluator< T >::nherm ( size_t  shell_idx) const

Get number of Hermite Gaussians for a shell pair (workspace cols needed)

◆ num_shell_pairs()

template<typename T >
size_t occ::ints::ESPEvaluator< T >::num_shell_pairs ( ) const

Number of precomputed shell pairs.

◆ operator=() [1/2]

template<typename T >
ESPEvaluator & occ::ints::ESPEvaluator< T >::operator= ( const ESPEvaluator< T > &  )
delete

◆ operator=() [2/2]

template<typename T >
ESPEvaluator & occ::ints::ESPEvaluator< T >::operator= ( ESPEvaluator< T > &&  )
noexcept

◆ pair_center()

template<typename T >
std::array< T, 3 > occ::ints::ESPEvaluator< T >::pair_center ( size_t  shell_idx) const

Get the effective center of a shell pair (overlap region) Based on the most diffuse primitive combination.

◆ pair_extent()

template<typename T >
T occ::ints::ESPEvaluator< T >::pair_extent ( size_t  shell_idx) const

Get the extent of a shell pair (radius where pair density < 1e-12) Based on the most diffuse primitive combination.

◆ workspace_size()

template<typename T >
size_t occ::ints::ESPEvaluator< T >::workspace_size ( size_t  shell_idx,
int  npts 
) const

Get required workspace size for a shell pair.


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