(** Data structure for Atomic Orbitals. *) type t = private { basis : Basis.t ; (* One-electron basis set *) overlap : Overlap.t lazy_t; (* Overlap matrix *) ortho : Orthonormalization.t lazy_t; (* Orthonormalization matrix of the overlap *) 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 *) cartesian : bool ; (* If true, use cartesian Gaussians (6d, 10f, ...) *) } val make : cartesian:bool -> basis:Basis.t -> Nuclei.t -> t (** Creates the data structure for atomic orbitals from a {Basis.t} and the molecular geometry {Nuclei.t} *)