type t (** Returns an array of the basis set per atom *) let of_nuclei_and_general_basis n b = Array.map (fun (e, center) -> List.assoc e b |> Array.map (fun (totAngMom, shell) -> let expo = Array.map (fun General_basis.{exponent ; coefficient} -> exponent) shell and coef = Array.map (fun General_basis.{exponent ; coefficient} -> coefficient) shell in Contracted_shell.create ~expo ~coef ~totAngMom ~center) ) n let to_string b = let line =" ----------------------------------------------------------------------- " in " Atomic Basis set ---------------- ----------------------------------------------------------------------- Angular Coordinates (Bohr) Exponents Coefficients Momentum X Y Z ----------------------------------------------------------------------- " ^( Array.mapi (fun atom_id basis -> Array.map (fun i -> Contracted_shell.to_string i) basis |> Array.to_list |> String.concat line ) b |> Array.to_list |> String.concat line) ^ line