occ
|
functionality related to Kohn-Sham density functional theory More...
Namespaces | |
namespace | cosx |
namespace | grid |
namespace | impl |
namespace | kernels |
Classes | |
struct | AtomGrid |
Structure to hold atom-centered grid data. More... | |
class | DensityFunctional |
class | DFT |
struct | DFTMethod |
struct | FuncComponent |
class | HirshfeldPartition |
Class implementing Hirshfeld atomic charge analysis. More... | |
struct | MethodDefinition |
class | MolecularGrid |
Class for molecular integration grids in DFT. More... | |
class | MolecularGridPoints |
Class for storing and managing molecular grid points. More... | |
class | NonLocalCorrelationFunctional |
struct | PartitionMethod |
struct | RadialGrid |
Structure to hold radial grid data. More... | |
struct | RangeSeparatedParameters |
Typedefs | |
using | PointChargeList = std::vector< occ::core::PointCharge > |
using | dfid = DensityFunctional::Identifier |
Enumerations | |
enum class | PartitionFunction { Becke , StratmannScuseria } |
Enumeration of available partition functions for atomic weight calculation. More... | |
enum class | RadialGridMethod { LMG , TreutlerAlrichs , MuraKnowles , Becke , GaussChebyshev , EulerMaclaurin } |
Enumeration of available radial grid generation methods. More... | |
Functions | |
DFTMethod | get_dft_method (const std::string &method_string) |
DFTMethod | create_dft_method_from_definition (const MethodDefinition &def, bool polarized=false) |
ankerl::unordered_dense::map< std::string, MethodDefinition > | load_method_definitions (const std::string &filename) |
void | export_method_definitions (const std::string &filename, const ankerl::unordered_dense::map< std::string, MethodDefinition > &definitions) |
std::string | dfid_to_string (DensityFunctional::Identifier id) |
DensityFunctional::Identifier | string_to_dfid (const std::string &name) |
uint_fast16_t | nearest_grid_level_at_or_above (uint_fast16_t n) |
Find the nearest Lebedev grid level at or above the requested number of points. | |
uint_fast16_t | nearest_grid_level_below (uint_fast16_t n) |
Find the nearest Lebedev grid level below the requested number of points. | |
size_t | angular_point_count (size_t level) |
Get the number of points in a Lebedev grid. | |
double | get_atomic_radius (size_t atomic_number) |
Get the atomic radius for a given atomic number. | |
Vec | becke_partition (const Vec &w) |
Apply the Becke partition function. | |
Vec | stratmann_scuseria_partition (const Vec &w) |
Apply the Stratmann-Scuseria partition function. | |
Mat | calculate_interatomic_distances (const Mat3N &positions) |
Calculate interatomic distances. | |
Mat | calculate_atomic_grid_weights (PartitionMethod method, const Mat &grid_points, const Mat &atomic_positions, const Vec &radii, const Mat &interatomic_distances) |
Calculate Becke atomic weights for grid points. | |
IVec | prune_nwchem_scheme (size_t nuclear_charge, size_t max_angular, size_t num_radial, const Vec &radii) |
Apply the NWChem pruning scheme to a radial grid. | |
IVec | prune_numgrid_scheme (size_t atomic_number, size_t max_angular, size_t min_angular, const Vec &radii) |
Apply the NumGrid pruning scheme to a radial grid. | |
RadialGrid | generate_becke_radial_grid (size_t num_points, double rm=1.0) |
Generate a Becke radial grid. | |
RadialGrid | generate_mura_knowles_radial_grid (size_t num_points, size_t charge) |
Generate a Mura-Knowles radial grid. | |
RadialGrid | generate_treutler_alrichs_radial_grid (size_t num_points) |
Generate a Treutler-Alrichs radial grid. | |
RadialGrid | generate_gauss_chebyshev_radial_grid (size_t num_points) |
Generate a Gauss-Chebyshev radial grid. | |
RadialGrid | generate_euler_maclaurin_radial_grid (size_t num_points, double alpha) |
Generate a Euler-Maclaurin radial grid. | |
RadialGrid | generate_lmg_radial_grid (size_t atomic_number, double radial_precision, double alpha_max, int l_max, const occ::Vec &alpha_min) |
Generate a Lindh-Malmqvist-Gagliardi (LMG) radial grid. | |
double | lmg_inner (const double max_error, const double alpha_inner) |
Helper function to calculate LMG inner radial boundary. | |
double | lmg_outer (const double max_error, const double alpha_outer, const int l, const double guess) |
Helper function to calculate LMG outer radial boundary. | |
double | lmg_h (const double max_error, const int l, const double guess) |
Helper function to calculate LMG grid spacing parameter. | |
AtomGrid | generate_atom_grid (size_t atomic_number, const GridSettings &settings, RadialGridMethod method=RadialGridMethod::LMG, double alpha_max=0.0, int l_max=0, const Vec &alpha_min=Vec()) |
Generate an atom-centered grid using the specified method. | |
Vec | calculate_hirshfeld_charges (const occ::qm::AOBasis &basis, const occ::qm::MolecularOrbitals &mo, int charge=0) |
Calculate Hirshfeld charges for a molecule. | |
std::vector< occ::core::Multipole< 4 > > | calculate_hirshfeld_multipoles (const occ::qm::AOBasis &basis, const occ::qm::MolecularOrbitals &mo, int max_multipole_order=4, int charge=0) |
Calculate Hirshfeld multipoles for a molecule. | |
template<occ::qm::SpinorbitalKind spinorbital_kind, int derivative_order> | |
void | xc_potential_matrix (const DensityFunctional::Result &res, MatConstRef rho, const occ::gto::GTOValues >o_vals, MatRef KK, double &energy)=delete |
template<> | |
void | xc_potential_matrix< Restricted, 0 > (const DensityFunctional::Result &res, MatConstRef rho, const occ::gto::GTOValues >o_vals, MatRef KK, double &energy) |
template<> | |
void | xc_potential_matrix< Restricted, 1 > (const DensityFunctional::Result &res, MatConstRef rho, const occ::gto::GTOValues >o_vals, MatRef KK, double &energy) |
template<> | |
void | xc_potential_matrix< Restricted, 2 > (const DensityFunctional::Result &res, MatConstRef rho, const occ::gto::GTOValues >o_vals, MatRef KK, double &energy) |
template<> | |
void | xc_potential_matrix< Unrestricted, 0 > (const DensityFunctional::Result &res, MatConstRef rho, const occ::gto::GTOValues >o_vals, MatRef KK, double &energy) |
template<> | |
void | xc_potential_matrix< Unrestricted, 1 > (const DensityFunctional::Result &res, MatConstRef rho, const occ::gto::GTOValues >o_vals, MatRef KK, double &energy) |
template<> | |
void | xc_potential_matrix< Unrestricted, 2 > (const DensityFunctional::Result &res, MatConstRef rho, const occ::gto::GTOValues >o_vals, MatRef KK, double &energy) |
Variables | |
const std::array< uint_fast16_t, 33 > | lebedev_grid_levels |
Array of available Lebedev grid levels. | |
functionality related to Kohn-Sham density functional theory
part of the occ::qm, occ:gto, occ:io module
using occ::dft::dfid = typedef DensityFunctional::Identifier |
using occ::dft::PointChargeList = typedef std::vector<occ::core::PointCharge> |
|
strong |
|
strong |
size_t occ::dft::angular_point_count | ( | size_t | level | ) |
Get the number of points in a Lebedev grid.
level | The Lebedev grid level |
Vec occ::dft::becke_partition | ( | const Vec & | w | ) |
Apply the Becke partition function.
w | Input values to partition |
Mat occ::dft::calculate_atomic_grid_weights | ( | PartitionMethod | method, |
const Mat & | grid_points, | ||
const Mat & | atomic_positions, | ||
const Vec & | radii, | ||
const Mat & | interatomic_distances | ||
) |
Calculate Becke atomic weights for grid points.
grid_points | Grid points (3 x N) |
atomic_positions | Atomic positions (3 x M) |
radii | atomic radii (M) |
interatomic_distances | Matrix of interatomic distances (M x M) |
Vec occ::dft::calculate_hirshfeld_charges | ( | const occ::qm::AOBasis & | basis, |
const occ::qm::MolecularOrbitals & | mo, | ||
int | charge = 0 |
||
) |
Calculate Hirshfeld charges for a molecule.
Convenience function to compute Hirshfeld charges in a single call.
basis | Basis set for the molecule |
mo | Molecular orbitals containing the density matrix |
charge | Total molecular charge |
std::vector< occ::core::Multipole< 4 > > occ::dft::calculate_hirshfeld_multipoles | ( | const occ::qm::AOBasis & | basis, |
const occ::qm::MolecularOrbitals & | mo, | ||
int | max_multipole_order = 4 , |
||
int | charge = 0 |
||
) |
Calculate Hirshfeld multipoles for a molecule.
Convenience function to compute Hirshfeld multipoles in a single call.
basis | Basis set for the molecule |
mo | Molecular orbitals containing the density matrix |
max_multipole_order | Maximum order of multipoles to compute (0-4) |
charge | Total molecular charge |
Mat occ::dft::calculate_interatomic_distances | ( | const Mat3N & | positions | ) |
Calculate interatomic distances.
positions | Atomic positions (3 x N) |
DFTMethod occ::dft::create_dft_method_from_definition | ( | const MethodDefinition & | def, |
bool | polarized = false |
||
) |
std::string occ::dft::dfid_to_string | ( | DensityFunctional::Identifier | id | ) |
void occ::dft::export_method_definitions | ( | const std::string & | filename, |
const ankerl::unordered_dense::map< std::string, MethodDefinition > & | definitions | ||
) |
AtomGrid occ::dft::generate_atom_grid | ( | size_t | atomic_number, |
const GridSettings & | settings, | ||
RadialGridMethod | method = RadialGridMethod::LMG , |
||
double | alpha_max = 0.0 , |
||
int | l_max = 0 , |
||
const Vec & | alpha_min = Vec() |
||
) |
Generate an atom-centered grid using the specified method.
atomic_number | Atomic number of the center atom |
settings | Grid generation settings |
method | The radial grid method to use |
alpha_max | Maximum exponent from basis set (optional) |
l_max | Maximum angular momentum from basis set (optional) |
alpha_min | Minimum exponents for each angular momentum (optional) |
RadialGrid occ::dft::generate_becke_radial_grid | ( | size_t | num_points, |
double | rm = 1.0 |
||
) |
Generate a Becke radial grid.
Reference: A. D. Becke, J. Chem. Phys. 88, 2547 (1988)
num_points | Number of radial points |
rm | Scaling parameter |
RadialGrid occ::dft::generate_euler_maclaurin_radial_grid | ( | size_t | num_points, |
double | alpha | ||
) |
Generate a Euler-Maclaurin radial grid.
num_points | Number of radial points |
alpha |
RadialGrid occ::dft::generate_gauss_chebyshev_radial_grid | ( | size_t | num_points | ) |
Generate a Gauss-Chebyshev radial grid.
num_points | Number of radial points |
RadialGrid occ::dft::generate_lmg_radial_grid | ( | size_t | atomic_number, |
double | radial_precision, | ||
double | alpha_max, | ||
int | l_max, | ||
const occ::Vec & | alpha_min | ||
) |
Generate a Lindh-Malmqvist-Gagliardi (LMG) radial grid.
Reference: T. Helgaker, P. Jørgensen, J. Olsen, "Molecular Electronic Structure Theory", John Wiley & Sons, 2000
atomic_number | Atomic number |
radial_precision | Precision parameter for the radial grid |
alpha_max | Maximum exponent |
l_max | Maximum angular momentum |
alpha_min | Minimum exponents for each angular momentum |
RadialGrid occ::dft::generate_mura_knowles_radial_grid | ( | size_t | num_points, |
size_t | charge | ||
) |
Generate a Mura-Knowles radial grid.
Reference: M. E. Mura and P. J. Knowles, J. Chem. Phys. 104, 9848 (1996)
num_points | Number of radial points |
charge | Atomic number |
RadialGrid occ::dft::generate_treutler_alrichs_radial_grid | ( | size_t | num_points | ) |
Generate a Treutler-Alrichs radial grid.
Reference: O. Treutler and R. Ahlrichs, J. Chem. Phys. 102, 346 (1995)
num_points | Number of radial points |
double occ::dft::get_atomic_radius | ( | size_t | atomic_number | ) |
Get the atomic radius for a given atomic number.
atomic_number | The atomic number |
DFTMethod occ::dft::get_dft_method | ( | const std::string & | method_string | ) |
double occ::dft::lmg_h | ( | const double | max_error, |
const int | l, | ||
const double | guess | ||
) |
Helper function to calculate LMG grid spacing parameter.
max_error | Maximum error parameter |
l | Angular momentum |
guess | Initial guess for the spacing |
double occ::dft::lmg_inner | ( | const double | max_error, |
const double | alpha_inner | ||
) |
Helper function to calculate LMG inner radial boundary.
max_error | Maximum error parameter |
alpha_inner | Inner alpha parameter |
double occ::dft::lmg_outer | ( | const double | max_error, |
const double | alpha_outer, | ||
const int | l, | ||
const double | guess | ||
) |
Helper function to calculate LMG outer radial boundary.
max_error | Maximum error parameter |
alpha_outer | Outer alpha parameter |
l | Angular momentum |
guess | Initial guess for the boundary |
ankerl::unordered_dense::map< std::string, MethodDefinition > occ::dft::load_method_definitions | ( | const std::string & | filename | ) |
uint_fast16_t occ::dft::nearest_grid_level_at_or_above | ( | uint_fast16_t | n | ) |
Find the nearest Lebedev grid level at or above the requested number of points.
n | Requested number of angular points |
uint_fast16_t occ::dft::nearest_grid_level_below | ( | uint_fast16_t | n | ) |
Find the nearest Lebedev grid level below the requested number of points.
n | Requested number of angular points |
IVec occ::dft::prune_numgrid_scheme | ( | size_t | atomic_number, |
size_t | max_angular, | ||
size_t | min_angular, | ||
const Vec & | radii | ||
) |
Apply the NumGrid pruning scheme to a radial grid.
atomic_number | Atomic number |
max_angular | Maximum number of angular points |
min_angular | Minimum number of angular points |
radii | Radial grid points |
IVec occ::dft::prune_nwchem_scheme | ( | size_t | nuclear_charge, |
size_t | max_angular, | ||
size_t | num_radial, | ||
const Vec & | radii | ||
) |
Apply the NWChem pruning scheme to a radial grid.
nuclear_charge | Atomic number |
max_angular | Maximum number of angular points |
num_radial | Number of radial points |
radii | Radial grid points |
Vec occ::dft::stratmann_scuseria_partition | ( | const Vec & | w | ) |
Apply the Stratmann-Scuseria partition function.
w | Input values to partition |
DensityFunctional::Identifier occ::dft::string_to_dfid | ( | const std::string & | name | ) |
|
delete |
void occ::dft::xc_potential_matrix< Restricted, 0 > | ( | const DensityFunctional::Result & | res, |
MatConstRef | rho, | ||
const occ::gto::GTOValues & | gto_vals, | ||
MatRef | KK, | ||
double & | energy | ||
) |
void occ::dft::xc_potential_matrix< Restricted, 1 > | ( | const DensityFunctional::Result & | res, |
MatConstRef | rho, | ||
const occ::gto::GTOValues & | gto_vals, | ||
MatRef | KK, | ||
double & | energy | ||
) |
void occ::dft::xc_potential_matrix< Restricted, 2 > | ( | const DensityFunctional::Result & | res, |
MatConstRef | rho, | ||
const occ::gto::GTOValues & | gto_vals, | ||
MatRef | KK, | ||
double & | energy | ||
) |
void occ::dft::xc_potential_matrix< Unrestricted, 0 > | ( | const DensityFunctional::Result & | res, |
MatConstRef | rho, | ||
const occ::gto::GTOValues & | gto_vals, | ||
MatRef | KK, | ||
double & | energy | ||
) |
void occ::dft::xc_potential_matrix< Unrestricted, 1 > | ( | const DensityFunctional::Result & | res, |
MatConstRef | rho, | ||
const occ::gto::GTOValues & | gto_vals, | ||
MatRef | KK, | ||
double & | energy | ||
) |
void occ::dft::xc_potential_matrix< Unrestricted, 2 > | ( | const DensityFunctional::Result & | res, |
MatConstRef | rho, | ||
const occ::gto::GTOValues & | gto_vals, | ||
MatRef | KK, | ||
double & | energy | ||
) |
|
extern |
Array of available Lebedev grid levels.
Each element in the array represents a valid number of Lebedev grid points.