open Lacaml.D type t = { basis : Basis.t ; overlap : Overlap.t lazy_t; ortho : Orthonormalization.t lazy_t; eN_ints : NucInt.t lazy_t; ee_ints : ERI.t lazy_t; kin_ints : KinInt.t lazy_t; cartesian : bool; } let make ~cartesian ~basis nuclei = let overlap = lazy ( Overlap.of_basis basis ) in let ortho = lazy ( Orthonormalization.make ~cartesian ~basis (Lazy.force overlap) ) in let eN_ints = lazy ( NucInt.of_basis_nuclei ~basis nuclei ) in let kin_ints = lazy ( KinInt.of_basis basis ) in let ee_ints = lazy ( ERI.of_basis basis ) in { basis ; overlap ; ortho ; eN_ints ; kin_ints ; ee_ints ; cartesian ; }