(** Data structure for Atomic Orbitals. *) module GB = Qcaml_gaussian_basis module GI = Qcaml_gaussian_integrals type t = { basis : GB.Basis.t ; overlap : GI.Overlap.t lazy_t; multipole : GI.Multipole.t lazy_t; ortho : GI.Orthonormalization.t lazy_t; eN_ints : GI.Electron_nucleus.t lazy_t; kin_ints : GI.Kinetic.t lazy_t; ee_ints : GI.Eri.t lazy_t; ee_lr_ints : GI.Eri_long_range.t lazy_t; f12_ints : GI.F12.t lazy_t; f12_over_r12_ints : GI.Screened_eri.t lazy_t; } (* (** {1 Accessors} *) val basis : t -> 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 -> NucInt.t (** Electron-nucleus potential integrals *) val ee_ints : t -> ERI.t (** Electron-electron potential integrals *) val ee_lr_ints : t -> ERI_lr.t (** Electron-electron long-range potential integrals *) val f12_ints : t -> F12.t (** Electron-electron potential integrals *) val kin_ints : t -> KinInt.t (** Kinetic energy integrals *) val cartesian : t -> bool (** If true, use cartesian Gaussians (6d, 10f, ...) *) val values : t -> Coordinate.t -> Vec.t (** Values of the AOs evaluated at a given point *) (** {1 Creators} *) val make : cartesian:bool -> basis:Basis.t -> ?f12:F12factor.t -> Nuclei.t -> t (** Creates the data structure for atomic orbitals from a {Basis.t} and the molecular geometry {Nuclei.t} *) (** {2 Tests} *) val test_case : string -> t -> unit Alcotest.test_case list *)