occ
Loading...
Searching...
No Matches
occ::qm Namespace Reference

quantum mechanics/quantum chemistry functionality including Hartree-Fock and more More...

Namespaces

namespace  basis_sets
 
namespace  block
 
namespace  cc
 
namespace  cint
 
namespace  cosx
 
namespace  guess
 
namespace  impl
 
namespace  orb
 

Classes

class  ADIIS
 ADIIS (Augmented Direct Inversion in Iterative Subspace) Based on Hu & Yang, J. More...
 
struct  AutoAuxResult
 Statistics about the auto auxiliary basis generation. More...
 
class  CanonicalOrthogonalizer
 
class  CDIIS
 
class  ConvergenceAccelerator
 Encapsulates SCF convergence acceleration strategies (CDIIS, EDIIS, ADIIS) More...
 
class  DFIntegrals
 Builds metric-folded density-fitting "B" tensors for correlated methods. More...
 
class  EDIIS
 
struct  Energy
 
class  GradientEvaluator
 
class  HartreeFock
 
class  HessianEvaluator
 Evaluates molecular Hessian matrices (second derivatives of energy) More...
 
class  IntegralEngine
 
class  IntegralEngineDF
 
struct  JKPair
 
struct  JKTriple
 
class  MOIntegralEngine
 Lightweight holder of molecular-orbital information for post-HF methods, plus a brute-force single MO electron-repulsion integral evaluator kept as a reference/testing utility. More...
 
struct  MolecularOrbitals
 
class  MP2
 
struct  Oniom
 
struct  OrbitalSmearing
 
struct  PointChargePotential
 Plain external point charges (vacuum Coulomb). More...
 
class  PostHFMethod
 
struct  SCF
 
struct  SCFContext
 
struct  SCFConvergenceSettings
 
class  SCFMethodBase
 
class  SplitRIJ
 Split-RI-J: Coulomb matrix via Hermite Gaussian basis (Neese 2003) More...
 
struct  Wavefunction
 
struct  WolfPointChargePotential
 Wolf-summed periodic point charges. More...
 

Concepts

concept  ExternalPotential
 Concept for an external-potential model: a self-contained engine that produces a one-electron potential matrix V_ext and the nuclear–external interaction energy when handed an SCF procedure (HF/DFT/etc.).
 
concept  SCFMethod
 
concept  DensityFittingMethod
 
concept  PointChargeMethod
 

Typedefs

using PointChargeList = std::vector< occ::core::PointCharge >
 
using DispersionGradientFunc = std::function< std::pair< double, Mat3N >(const AOBasis &, const MolecularOrbitals &, int)>
 Callback that computes a dispersion energy and nuclear gradient for the given basis / orbitals / charge.
 
using HessianMatrix = Mat
 
using ShellPairList = std::vector< std::vector< size_t > >
 

Enumerations

enum class  FittingKind { JK , Correlation }
 
enum class  DispersionType { None , D4 }
 
enum class  CoulombMethod { Traditional , SplitRIJ }
 Method for computing Coulomb matrix in density fitting. More...
 
enum class  DiisStrategy { CDIIS , EDIIS_CDIIS , ADIIS_CDIIS }
 Strategy for DIIS extrapolation during SCF. More...
 
enum class  SpinComponent { Total , Alpha , Beta }
 

Functions

AutoAuxResult generate_auto_aux (const AOBasis &basis, double threshold=1e-7, std::optional< int > max_l=std::nullopt)
 Generate automatic auxiliary basis using pivoted Cholesky decomposition Based on Lehtola, J.
 
Vec chelpg_charges (const Wavefunction &wfn)
 
template<SpinorbitalKind kind, typename TA >
TA::Scalar expectation (const TA &left, const TA &right)
 
template<typename TA >
TA::Scalar expectation (SpinorbitalKind sk, const TA &left, const TA &right)
 
std::string resolve_fitting_basis (const std::string &orbital_basis_name, FittingKind kind)
 
int cosx_nbf_crossover ()
 
void from_json (const nlohmann::json &J, Energy &energy)
 
void to_json (nlohmann::json &J, const Energy &energy)
 
std::pair< Mat, Vec > merge_molecular_orbitals (const Mat &, const Mat &, const Vec &, const Vec &, bool sort_by_energy=false)
 
AOBasis merge_basis_sets (const AOBasis &, const AOBasis &)
 
std::vector< occ::core::Atommerge_atoms (const std::vector< occ::core::Atom > &, const std::vector< occ::core::Atom > &)
 
Vec mulliken_partition (const AOBasis &basis, const MolecularOrbitals &mo, Eigen::Ref< const Mat > op)
 
template<SpinorbitalKind sk, Shell::Kind kind>
Mat shellblock_norm (const AOBasis &basis, const Mat &matrix) noexcept
 
template<SpinorbitalKind kind>
constexpr std::pair< size_t, size_t > matrix_dimensions (size_t nbf)
 
constexpr std::pair< size_t, size_t > matrix_dimensions (SpinorbitalKind kind, size_t nbf)
 

Variables

template<typename T >
constexpr bool is_scf_method_v = SCFMethod<T>
 
template<typename T >
constexpr bool supports_density_fitting_v = DensityFittingMethod<T>
 
template<typename T >
constexpr bool supports_point_charges_v = PointChargeMethod<T>
 

Detailed Description

quantum mechanics/quantum chemistry functionality including Hartree-Fock and more

Typedef Documentation

◆ DispersionGradientFunc

using occ::qm::DispersionGradientFunc = typedef std::function<std::pair<double, Mat3N>( const AOBasis &, const MolecularOrbitals &, int)>

Callback that computes a dispersion energy and nuclear gradient for the given basis / orbitals / charge.

Used to inject corrections (e.g. XDM) that live in libraries above occ_qm, so occ_qm need not depend on them.

◆ HessianMatrix

using occ::qm::HessianMatrix = typedef Mat

◆ PointChargeList

◆ ShellPairList

using occ::qm::ShellPairList = typedef std::vector<std::vector<size_t> >

Enumeration Type Documentation

◆ CoulombMethod

enum class occ::qm::CoulombMethod
strong

Method for computing Coulomb matrix in density fitting.

Enumerator
Traditional 

libcint 3-center integrals (default)

SplitRIJ 

MMD kernels using Hermite basis (no atomics)

◆ DiisStrategy

enum class occ::qm::DiisStrategy
strong

Strategy for DIIS extrapolation during SCF.

Enumerator
CDIIS 

Standard commutator DIIS only.

EDIIS_CDIIS 

EDIIS early, switch to CDIIS when error is small.

ADIIS_CDIIS 

ADIIS early, switch to CDIIS when error is small (recommended)

◆ DispersionType

enum class occ::qm::DispersionType
strong
Enumerator
None 
D4 

◆ FittingKind

enum class occ::qm::FittingKind
strong
Enumerator
JK 
Correlation 

◆ SpinComponent

enum class occ::qm::SpinComponent
strong
Enumerator
Total 
Alpha 
Beta 

Function Documentation

◆ chelpg_charges()

Vec occ::qm::chelpg_charges ( const Wavefunction wfn)

◆ cosx_nbf_crossover()

int occ::qm::cosx_nbf_crossover ( )

◆ expectation() [1/2]

template<SpinorbitalKind kind, typename TA >
TA::Scalar occ::qm::expectation ( const TA &  left,
const TA &  right 
)

◆ expectation() [2/2]

template<typename TA >
TA::Scalar occ::qm::expectation ( SpinorbitalKind  sk,
const TA &  left,
const TA &  right 
)

◆ from_json()

void occ::qm::from_json ( const nlohmann::json &  J,
Energy energy 
)

◆ generate_auto_aux()

AutoAuxResult occ::qm::generate_auto_aux ( const AOBasis basis,
double  threshold = 1e-7,
std::optional< int >  max_l = std::nullopt 
)

Generate automatic auxiliary basis using pivoted Cholesky decomposition Based on Lehtola, J.

Chem. Theory Comput. 2021, 17, 6886-6900

◆ matrix_dimensions() [1/2]

template<SpinorbitalKind kind>
constexpr std::pair< size_t, size_t > occ::qm::matrix_dimensions ( size_t  nbf)
constexpr

◆ matrix_dimensions() [2/2]

constexpr std::pair< size_t, size_t > occ::qm::matrix_dimensions ( SpinorbitalKind  kind,
size_t  nbf 
)
inlineconstexpr

◆ merge_atoms()

std::vector< occ::core::Atom > occ::qm::merge_atoms ( const std::vector< occ::core::Atom > &  ,
const std::vector< occ::core::Atom > &   
)

◆ merge_basis_sets()

AOBasis occ::qm::merge_basis_sets ( const AOBasis ,
const AOBasis  
)

◆ merge_molecular_orbitals()

std::pair< Mat, Vec > occ::qm::merge_molecular_orbitals ( const Mat ,
const Mat ,
const Vec &  ,
const Vec &  ,
bool  sort_by_energy = false 
)

◆ mulliken_partition()

Vec occ::qm::mulliken_partition ( const AOBasis basis,
const MolecularOrbitals mo,
Eigen::Ref< const Mat op 
)

◆ resolve_fitting_basis()

std::string occ::qm::resolve_fitting_basis ( const std::string &  orbital_basis_name,
FittingKind  kind 
)

◆ shellblock_norm()

template<SpinorbitalKind sk, Shell::Kind kind>
Mat occ::qm::shellblock_norm ( const AOBasis basis,
const Mat matrix 
)
inlinenoexcept

◆ to_json()

void occ::qm::to_json ( nlohmann::json &  J,
const Energy energy 
)

Variable Documentation

◆ is_scf_method_v

template<typename T >
constexpr bool occ::qm::is_scf_method_v = SCFMethod<T>
constexpr

◆ supports_density_fitting_v

template<typename T >
constexpr bool occ::qm::supports_density_fitting_v = DensityFittingMethod<T>
constexpr

◆ supports_point_charges_v

template<typename T >
constexpr bool occ::qm::supports_point_charges_v = PointChargeMethod<T>
constexpr