10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-12-22 12:23:31 +01:00
QCaml/MOBasis/MOBasis.mli

44 lines
1.3 KiB
OCaml

(** Data structure to represent the molecular orbitals. *)
open Lacaml.D
type mo_class =
| Core of int
| Inactive of int
| Active of int
| Virtual of int
| Deleted of int
type mo_type =
| RHF | ROHF | CASSCF
| Natural of string
| Localized of string
type t = private
{
ao_basis : AOBasis.t; (* Atomic basis set on which the MOs are built. *)
mo_type : mo_type; (* Kind of MOs (RHF, CASSCF, Localized... *)
mo_class : mo_class array; (* CI-Class of the MOs *)
mo_occupation : Vec.t; (* Occupation numbers *)
mo_coef : Mat.t; (* Matrix of the MO coefficients in the AO basis *)
eN_ints : NucInt.t lazy_t; (* Electron-nucleus potential integrals *)
ee_ints : ERI.t lazy_t; (* Electron-electron potential integrals *)
kin_ints : KinInt.t lazy_t; (* Kinetic energy integrals *)
}
val make : ao_basis:AOBasis.t ->
mo_type:mo_type ->
mo_class:mo_class array ->
mo_occupation:Vec.t ->
mo_coef:Mat.t ->
unit -> t
(** Function to build a data structure representing the molecular orbitals. *)
val of_hartree_fock : frozen_core:bool -> HartreeFock_type.t -> t
(** Build MOs from a Restricted Hartree-Fock calculation. *)