“Know how to solve every problem that has been solved.” “What I cannot create, I do not understand.” — Richard Feynman
cpp 27 lines · 632 B
#pragma once

#include "qc/integrals.hpp"
#include "qc/matrix.hpp"

#include <cstddef>
#include <vector>

namespace qc {

struct RhfResult {
  double electronic_energy{0.0};
  double nuclear_repulsion{0.0};
  double total_energy{0.0};
  Vector orbital_energies;
  Matrix C;
  Matrix P;
  int iterations{0};
  bool converged{false};
};

RhfResult rhf_closed_shell(const MolecularIntegrals& ints, std::size_t n_electrons,
                           double conv_tol = 1e-10, int max_iter = 100,
                           int diis_subspace = 6,
                           const std::vector<Atom>* atoms = nullptr);

}  // namespace qc