type t = { basis : Basis.t; nuclei : Nuclei.t; overlap : Overlap.t lazy_t; eN_ints : NucInt.t lazy_t; kin_ints : KinInt.t lazy_t; ee_ints : ERI.t lazy_t; nuclear_repulsion : float; } let make ~nuclei ~basis = { basis ; nuclei ; overlap = lazy (Overlap.of_basis basis); eN_ints = lazy (NucInt.of_basis_nuclei basis nuclei); kin_ints = lazy (KinInt.of_basis basis); ee_ints = lazy (ERI.of_basis basis); nuclear_repulsion = Nuclei.repulsion nuclei; } let of_filenames ~basis ~nuclei = let nuclei = Nuclei.of_filename ~filename:nuclei in let basis = Basis.of_nuclei_and_basis_filename ~nuclei ~filename:basis in make ~nuclei ~basis