2019-03-01 21:56:46 +01:00
|
|
|
open Lacaml.D
|
|
|
|
|
|
|
|
(** Data structure representing the output of a Hartree-Fock caculation *)
|
|
|
|
|
|
|
|
type hartree_fock_data
|
|
|
|
|
|
|
|
type hartree_fock_kind =
|
|
|
|
| RHF (** Restricted Hartree-Fock *)
|
|
|
|
| ROHF (** Restricted Open-shell Hartree-Fock *)
|
|
|
|
| UHF (** Unrestricted Hartree-Fock *)
|
|
|
|
|
|
|
|
|
|
|
|
type t
|
|
|
|
|
|
|
|
val kind : t -> hartree_fock_kind
|
|
|
|
(** Kind of simulation : RHF, ROHF or UHF. *)
|
|
|
|
|
|
|
|
val simulation : t -> Simulation.t
|
|
|
|
(** Simulation which was used for HF calculation *)
|
|
|
|
|
|
|
|
val guess : t -> Guess.t
|
|
|
|
(** Initial guess *)
|
|
|
|
|
|
|
|
val eigenvectors : t -> Mat.t
|
|
|
|
(** Final eigenvectors *)
|
|
|
|
|
|
|
|
val eigenvalues : t -> Vec.t
|
|
|
|
(** Final eigenvalues *)
|
|
|
|
|
|
|
|
val occupation : t -> Vec.t
|
|
|
|
(** Diagonal of the density matrix *)
|
|
|
|
|
|
|
|
val energy : t -> float
|
|
|
|
(** Final energy *)
|
|
|
|
|
|
|
|
val nuclear_repulsion : t -> float
|
|
|
|
(** Nucleus-Nucleus potential energy *)
|
|
|
|
|
|
|
|
val kin_energy : t -> float
|
|
|
|
(** Kinetic energy *)
|
|
|
|
|
|
|
|
val eN_energy : t -> float
|
|
|
|
(** Electron-nucleus potential energy *)
|
|
|
|
|
|
|
|
val coulomb_energy : t -> float
|
|
|
|
(** Electron-Electron potential energy *)
|
|
|
|
|
|
|
|
val exchange_energy : t -> float
|
|
|
|
(** Exchange energy *)
|
|
|
|
|
|
|
|
val nocc : t -> int
|
|
|
|
(** Number of occupied MOs *)
|
|
|
|
|
|
|
|
val empty: hartree_fock_data
|
|
|
|
(** Empty data *)
|
|
|
|
|
|
|
|
|
|
|
|
val make :
|
|
|
|
?kind:hartree_fock_kind ->
|
2019-03-04 19:01:54 +01:00
|
|
|
?guess:[ `Hcore | `Huckel | `Matrix of Mat.t ] ->
|
2019-03-01 21:56:46 +01:00
|
|
|
?max_scf:int ->
|
2019-03-04 19:01:54 +01:00
|
|
|
?level_shift:float -> ?threshold_SCF:float ->
|
|
|
|
Simulation.t -> t
|
2019-03-01 21:56:46 +01:00
|
|
|
|
|
|
|
|
|
|
|
(** {1 Printers} *)
|
|
|
|
|
|
|
|
val pp_hf : Format.formatter -> t -> unit
|
|
|
|
|
|
|
|
val pp_iterations : Format.formatter -> t -> unit
|
|
|
|
|
|
|
|
val pp_summary : Format.formatter -> t -> unit
|
|
|
|
|
|
|
|
(*
|
|
|
|
val pp_mos : Format.formatter -> t -> unit
|
|
|
|
#*)
|
|
|
|
|