(** Data structure for Atomic Orbitals. *) open Common open Particles open Linear_algebra open Gaussian_integrals open Operators type t (** {1 Accessors} *) val size : t -> int (** Number of atomic orbitals *) val basis : t -> Gaussian.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 -> Gaussian.Basis.t Vector.t (** Values of the AOs evaluated at a given point *) (** {1 Creators} *) val make : basis:Gaussian.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} *)