(** The atomic basis set is represented as an array of {!ContractedShell.t}. *) type t = private { size : int ; (** Number of contracted Gaussians *) contracted_shells : ContractedShell.t array ; (** Contracted shells *) } val to_string : t -> string (** Pretty prints the basis set in a string. *) val of_nuclei_and_general_basis : Nuclei.t -> GeneralBasis.t list -> t (** Takes an array of {!Nuclei.t}, and a {!GeneralBasis.t} (such as cc-pVDZ for instance) and creates the corresponding atomic basis set. All the {!Element.t}s of the array of {!Nuclei.t} are searched in the {!GeneralBasis.t}, and the basis is built by creating {!ContractedShell.t}s centered on the nuclei with the exponents and contraction coefficients given by the {!GeneralBasis.t}. *) val of_nuclei_and_basis_filename : nuclei:Nuclei.t -> filename:string -> t (** Same as {!of_nuclei_and_general_basis}, but taking the {!GeneralBasis.t} from a file. *)