(** Data structure for Atomic Orbitals. *) open Qcaml_common open Qcaml_particles open Qcaml_linear_algebra open Qcaml_gaussian_integrals open Qcaml_operators type t (** {1 Accessors} *) val size : t -> int (** Number of atomic orbitals *) val basis : t -> Qcaml_gaussian_basis.Basis.t (** One-electron basis set *) val overlap : t -> Overlap.t (** Overlap matrix *) val multipole : t -> Multipole.t (** Multipole matrices *) val ortho : t -> Orthonormalization.t (** Orthonormalization matrix of the overlap *) val eN_ints : t -> Electron_nucleus.t (** Electron-nucleus potential integrals *) val ee_ints : t -> Eri.t (** Electron-electron potential integrals *) val ee_lr_ints : t -> Eri_long_range.t (** Electron-electron long-range potential integrals *) val f12_ints : t -> F12.t (** Electron-electron potential integrals *) val f12_over_r12_ints : t -> Screened_eri.t (** Electron-electron potential integrals *) val kin_ints : t -> Kinetic.t (** Kinetic energy integrals *) val cartesian : t -> bool (** If true, use cartesian Gaussians (6d, 10f, ...) *) val values : t -> Coordinate.t -> Qcaml_gaussian_basis.Basis.t Vector.t (** Values of the AOs evaluated at a given point *) (** {1 Creators} *) val make : basis:Qcaml_gaussian_basis.Basis.t -> ?operators:Operator.t list -> ?cartesian:bool -> Nuclei.t -> t (** Creates the data structure for atomic orbitals from a Gaussian basis and the molecular geometry {Nuclei.t} *)