|
occ
|
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 | |
| ESPEvaluator & | operator= (const ESPEvaluator &)=delete |
| ESPEvaluator (ESPEvaluator &&) noexcept | |
| ESPEvaluator & | operator= (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, int > | angular_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. | |
| 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. | |
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);
| using occ::ints::ESPEvaluator< T >::Mat3N = Eigen::Matrix<T, 3, Eigen::Dynamic> |
| using occ::ints::ESPEvaluator< T >::MatRM = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> |
|
explicit |
Construct evaluator with Boys function table.
| occ::ints::ESPEvaluator< T >::~ESPEvaluator | ( | ) |
|
delete |
|
noexcept |
| 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.
| 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.
| spherical | If true, output integrals in spherical basis |
| std::pair< int, int > occ::ints::ESPEvaluator< T >::angular_momenta | ( | size_t | shell_idx | ) | const |
Get angular momenta for a shell pair.
| void occ::ints::ESPEvaluator< T >::clear | ( | ) |
Clear all precomputed shell pairs.
| 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)
| shell_idx | Index returned by add_shell_pair |
| C | Grid point coordinates [3 x npts] column-major |
| integrals | Output buffer [npts x nab] row-major |
| workspace | External workspace buffer [npts x nherm] row-major |
| void occ::ints::ESPEvaluator< T >::evaluate_overlap | ( | size_t | shell_idx, |
| T * | integrals | ||
| ) |
Evaluate overlap integrals for a precomputed shell pair.
| shell_idx | Index returned by add_shell_pair |
| integrals | Output buffer [nab] |
| bool occ::ints::ESPEvaluator< T >::is_spherical | ( | size_t | shell_idx | ) | const |
Check if a shell pair uses spherical harmonics.
| int occ::ints::ESPEvaluator< T >::nab | ( | size_t | shell_idx | ) | const |
Get number of basis function pairs for a shell pair.
| int occ::ints::ESPEvaluator< T >::nherm | ( | size_t | shell_idx | ) | const |
Get number of Hermite Gaussians for a shell pair (workspace cols needed)
| size_t occ::ints::ESPEvaluator< T >::num_shell_pairs | ( | ) | const |
Number of precomputed shell pairs.
|
delete |
|
noexcept |
| 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.
| 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.
| size_t occ::ints::ESPEvaluator< T >::workspace_size | ( | size_t | shell_idx, |
| int | npts | ||
| ) | const |
Get required workspace size for a shell pair.