open Util open Constants type t = { expo : float; (* alpha + beta *) expo_inv : float; (* 1/(alpha + beta) *) center : Coordinate.t; (* P = (alpha * A + beta B)/(alpha+beta) *) center_a : Coordinate.t; (* P - A *) center_ab: Coordinate.t; (* A - B *) norm_sq : float; (* |A-B|^2 *) norm_coef: float; (* norm_coef_a * norm_coef_b *) coef : float; (* norm_coef * coef_a * coef_b * g, with g = (pi/(alpha+beta))^(3/2) exp (-|A-B|^2 * alpha*beta/(alpha+beta)) *) i : int; j : int; shell_a : Contracted_shell.t; shell_b : Contracted_shell.t; monocentric : bool } (** Returns an integer characteristic of a primitive shell pair *) let hash a = Hashtbl.hash a let equivalent a b = a = b (* Hashtbl.hash (a.expo, a.center_a, a.center_ab, a.coef, Contracted_shell.totAngMom a.shell_a, Contracted_shell.totAngMom a.shell_b) *) (** Comparison function, used for sorting *) let cmp a b = hash a - hash b