|
occ
|
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 | CoulombMetric |
| Factorization of a density-fitting Coulomb metric V = (P|Q). More... | |
| class | DFIntegrals |
| Builds metric-folded density-fitting "B" tensors for correlated methods. More... | |
| class | EDIIS |
| struct | Energy |
| struct | FockBuildProperties |
What a method guarantees about its Fock build, so the SCF driver can decide whether to accumulate F += G(ΔD) instead of rebuilding from H each cycle. More... | |
| class | GradientEvaluator |
| struct | Guess |
| The starting point a guess produces. More... | |
| struct | GuessRequest |
| What a guess needs to know about the system. More... | |
| 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 | ScopedRangeSeparation |
| Applies a range-separation parameter for the duration of a scope, and puts back whatever was there before however the scope is left. More... | |
| 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 | GuessKind { Auto , Core , Soad , Sap , AtomicScf } |
| Where the SCF starts from. More... | |
| 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 () |
| std::string_view | guess_kind_name (GuessKind kind) |
| const std::vector< std::pair< std::string, GuessKind > > & | guess_kind_names () |
| The names a user may write, and what each selects. | |
| std::optional< GuessKind > | guess_kind_from_string (std::string_view name) |
| Parse a guess name. Returns nothing for an unrecognised one. | |
| bool | minimal_basis_covers (const gto::AOBasis &basis) |
Whether the shipped minimal basis has shells for every atom in basis. | |
| GuessKind | select_guess (GuessKind requested, const gto::AOBasis &basis) |
Resolve Auto into a concrete kind; anything else passes through unchanged, so an explicit request is honoured even where it is a poor choice. | |
| Guess | build_guess (GuessKind kind, const GuessRequest &request) |
Build kind for request. | |
| template<typename T > | |
| ScopedRangeSeparation (T &, double) -> ScopedRangeSeparation< T > | |
| 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::Atom > | merge_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) |
| constexpr bool | supports_incremental_fock_build (const FockBuildProperties &properties) |
| F can only be accumulated when the build is linear and the core Hamiltonian is fixed; screening decides whether it is worth doing. | |
| 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> |
quantum mechanics/quantum chemistry functionality including Hartree-Fock and more
| 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.
| using occ::qm::HessianMatrix = typedef Mat |
| typedef std::vector< occ::core::PointCharge > occ::qm::PointChargeList |
| using occ::qm::ShellPairList = typedef std::vector<std::vector<size_t> > |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
Where the SCF starts from.
Every kind here ends in the same place – diagonalise a Fock matrix built from something cheaper than the answer – and differs only in what that something is. See <occ/qm/initial_guess.h> for how each is built.
This lives apart from the rest of the guess API, and depends on nothing, so that input handling can name a guess without taking on a dependency on the SCF itself.
| Enumerator | |
|---|---|
| Auto | Choose per system; see |
| Core | No guess: diagonalise the bare core Hamiltonian. Always available, and always the worst starting point that still converges. |
| Soad | Superposition of atomic densities: tabulated ground-state occupations spread over a minimal basis, projected into the orbital basis. Cheap and good, but only for elements the shipped minimal basis covers. |
| Sap | Superposition of atomic potentials: a fitted effective potential per element added to the core Hamiltonian. Covers every element, but has no sound treatment of effective core potentials. |
| AtomicScf | Superposition of converged isolated-atom densities, one small SCF per element in this calculation's own basis. Costs more than the others and works wherever the orbital basis does, ECPs included. |
|
strong |
| Guess occ::qm::build_guess | ( | GuessKind | kind, |
| const GuessRequest & | request | ||
| ) |
Build kind for request.
Falls back to Core – an empty Guess – when the guess cannot be built for this system, having said why in the log. Every caller therefore gets a usable starting point.
| Vec occ::qm::chelpg_charges | ( | const Wavefunction & | wfn | ) |
| int occ::qm::cosx_nbf_crossover | ( | ) |
| TA::Scalar occ::qm::expectation | ( | const TA & | left, |
| const TA & | right | ||
| ) |
| TA::Scalar occ::qm::expectation | ( | SpinorbitalKind | sk, |
| const TA & | left, | ||
| const TA & | right | ||
| ) |
| void occ::qm::from_json | ( | const nlohmann::json & | J, |
| Energy & | energy | ||
| ) |
| 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
|
inline |
Parse a guess name. Returns nothing for an unrecognised one.
|
inline |
|
inline |
The names a user may write, and what each selects.
Shared by the command line and by any other input route, so they cannot drift apart.
|
constexpr |
|
inlineconstexpr |
| std::vector< occ::core::Atom > occ::qm::merge_atoms | ( | const std::vector< occ::core::Atom > & | , |
| const std::vector< occ::core::Atom > & | |||
| ) |
| std::pair< Mat, Vec > occ::qm::merge_molecular_orbitals | ( | const Mat & | , |
| const Mat & | , | ||
| const Vec & | , | ||
| const Vec & | , | ||
| bool | sort_by_energy = false |
||
| ) |
| bool occ::qm::minimal_basis_covers | ( | const gto::AOBasis & | basis | ) |
Whether the shipped minimal basis has shells for every atom in basis.
build_sto3g_shells drops elements it has no entry for rather than failing, so loading the minimal basis is not itself a coverage test: an uncovered atom simply comes back carrying no shells.
| Vec occ::qm::mulliken_partition | ( | const AOBasis & | basis, |
| const MolecularOrbitals & | mo, | ||
| Eigen::Ref< const Mat > | op | ||
| ) |
| std::string occ::qm::resolve_fitting_basis | ( | const std::string & | orbital_basis_name, |
| FittingKind | kind | ||
| ) |
| occ::qm::ScopedRangeSeparation | ( | T & | , |
| double | |||
| ) | -> ScopedRangeSeparation< T > |
| GuessKind occ::qm::select_guess | ( | GuessKind | requested, |
| const gto::AOBasis & | basis | ||
| ) |
Resolve Auto into a concrete kind; anything else passes through unchanged, so an explicit request is honoured even where it is a poor choice.
Logs the reason whenever Auto picks something other than SOAD.
|
inlinenoexcept |
|
constexpr |
F can only be accumulated when the build is linear and the core Hamiltonian is fixed; screening decides whether it is worth doing.
| void occ::qm::to_json | ( | nlohmann::json & | J, |
| const Energy & | energy | ||
| ) |
|
constexpr |
|
constexpr |
|
constexpr |