|
| | HartreeFock (const AOBasis &basis) |
| |
| const auto & | aobasis () const |
| |
| auto | nbf () const |
| |
| bool | usual_scf_energy () const |
| |
| void | update_scf_energy (occ::core::EnergyComponents &) const |
| |
| FockBuildProperties | fock_build_properties () const |
| |
| bool | have_effective_core_potentials () const |
| |
| void | set_density_fitting_basis (const std::string &, double auto_aux_threshold=1e-4) |
| |
| void | set_density_fitting_policy (IntegralEngineDF::Policy policy) |
| |
| void | set_coulomb_method (CoulombMethod method) |
| |
| void | set_cosx_exchange (occ::numint::COSXGridLevel level=occ::numint::COSXGridLevel::Grid1) |
| |
| void | set_cosx_settings (const occ::qm::cosx::Settings &settings) |
| |
| bool | using_cosx () const |
| |
| bool | using_density_fitting () const |
| |
| HartreeFock | with_new_basis (const AOBasis &new_basis) const |
| | Create a new HartreeFock instance with the same settings but different basis.
|
| |
| void | set_precision (double precision) |
| |
| double | integral_precision () const |
| |
| double | nuclear_point_charge_interaction_energy (const PointChargeList &) const |
| |
| double | wolf_point_charge_interaction_energy (const PointChargeList &, const std::vector< double > &partial_charges, double alpha, double rc) const |
| |
| Mat | compute_fock (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| |
| Mat3N | additional_atomic_gradients (const MolecularOrbitals &mo) const |
| |
| MatTriple | compute_fock_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| |
| Mat | compute_fock_mixed_basis (const MolecularOrbitals &mo_minbs, const gto::AOBasis &bs, bool is_shell_diagonal) |
| |
| Mat | compute_fock_from_density (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| | Fock matrix from a density already expressed in this method's own basis.
|
| |
| JKPair | compute_JK (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| |
| JKTriple | compute_JK_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| |
| std::vector< JKPair > | compute_JK_list (const std::vector< MolecularOrbitals > &mo, const Mat &Schwarz=Mat()) const |
| |
| Mat | compute_J (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| |
| Mat | compute_K (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| |
| JKPair | coulomb_and_range_separated_exchange (const MolecularOrbitals &mo, double omega, double alpha, double beta, const Mat &Schwarz=Mat()) |
| |
| MatTriple | compute_J_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const |
| |
| std::vector< Mat > | compute_J_list (const std::vector< MolecularOrbitals > &mo, const Mat &Schwarz=Mat()) const |
| |
| Mat | compute_kinetic_matrix () const |
| |
| MatTriple | compute_kinetic_gradient () const |
| |
| Mat | compute_overlap_matrix () const |
| |
| Mat | compute_overlap_matrix_for_basis (const occ::gto::AOBasis &basis) const |
| |
| MatTriple | compute_overlap_gradient () const |
| |
| Mat | compute_nuclear_attraction_matrix () const |
| |
| MatTriple | compute_nuclear_attraction_gradient () const |
| |
| MatTriple | compute_rinv_gradient_for_atom (size_t atom_index) const |
| |
| Mat | compute_effective_core_potential_matrix () const |
| |
| Mat | compute_point_charge_interaction_matrix (const PointChargeList &point_charges, double alpha=1e16) const |
| |
| Mat | compute_wolf_interaction_matrix (const PointChargeList &point_charges, const std::vector< double > &partial_charges, double alpha, double rc) const |
| |
| Mat3N | electronic_electric_field_contribution (const MolecularOrbitals &mo, const Mat3N &) const |
| |
| Vec | electronic_electric_potential_contribution (const MolecularOrbitals &mo, const Mat3N &) const |
| |
| Mat | compute_schwarz_ints () const |
| |
| void | update_core_hamiltonian (const MolecularOrbitals &mo, Mat &H) |
| |
| template<int order> |
| occ::core::Multipole< order > | compute_electronic_multipoles (const MolecularOrbitals &mo, const Vec3 &o={0.0, 0.0, 0.0}) const |
| |
| template<unsigned int order = 1> |
| auto | compute_nuclear_multipoles (const Vec3 &o={0.0, 0.0, 0.0}) const |
| |
| template<int order> |
| auto | compute_multipoles (const MolecularOrbitals &mo, const Vec3 &o={0.0, 0.0, 0.0}) const |
| |
| Mat | compute_K_long_range (const MolecularOrbitals &mo, double omega, const Mat &Schwarz=Mat()) const |
| | Exchange built with the attenuated operator erf(omega r)/r.
|
| |
| MatTriple | compute_K_gradient_long_range (const MolecularOrbitals &mo, double omega, const Mat &Schwarz=Mat()) const |
| | Exchange gradient with the attenuated operator, as above.
|
| |
| std::string | name () const |
| |
| | SCFMethodBase (const std::vector< core::Atom > &) |
| |
| const auto & | atoms () const |
| |
| int | system_charge () const |
| |
| int | total_electrons () const |
| |
| int | active_electrons () const |
| |
| const auto & | frozen_electrons () const |
| |
| Vec3 | center_of_mass () const |
| |
| void | set_system_charge (int charge) |
| |
| double | nuclear_repulsion_energy () const |
| |
| Mat3N | nuclear_repulsion_gradient () const |
| |
| Vec | nuclear_electric_potential_contribution (const Mat3N &) const |
| |
| Mat3N | nuclear_electric_field_contribution (const Mat3N &) const |
| |
| void | set_frozen_electrons (const std::vector< int > &) |
| |
Fock matrix from a density already expressed in this method's own basis.
The conventional four-centre build, which reads mo.D and screens on it as well as on Schwarz. Density fitting and COSX cannot serve here: both build exchange from the occupied coefficients, and a guess has a density before it has any orbitals.
Distinct from compute_fock_mixed_basis, which exists to project a density out of a different basis. Handing that function this method's own basis makes it duplicate every shell as auxiliary and run the full four-index loop unscreened – on a 566-function system that cost 256 s against 59 s for the whole rest of an SCF iteration.
Exchange built with the attenuated operator erf(omega r)/r.
The attenuated operator gets its own engines, fixed to it for the life of the calculation, rather than being produced by toggling omega on the shared ones and toggling it back. Omega is constant for a calculation – it comes from the functional – so the only thing the toggling ever bought was letting one engine serve two operators, and it cost exception safety, const-correctness, and the ability to cache anything that belongs to an operator rather than to a basis.
COSX is the exception and takes omega as a plain argument: nothing in it is cached per operator, so a second grid and shell-pair map would be pure duplication.