10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-11-19 04:22:21 +01:00
QCaml/gaussian/lib/atomic_shell_pair_couple.mli

79 lines
2.3 KiB
OCaml

(** Atomic shell pair couple *)
(** An atomic shell pair couple is the cartesian product between two sets of
* functions, one set over electron one and one set over electron two. Both
* sets are atomic shell pairs.
*)
(** These are usually called /shell quartets/ in the literature, but we
* prefer to use /pair/ for two functions with the same electron, and
* /couple/ for two functions acting on different electrons, since they will
* be coupled by a two-electron operator.
*)
(** Type *)
type t
open Common
(** Access *)
val ang_mom : t -> Angular_momentum.t
(** Total angular momentum of the shell pair couple: sum of the angular
* momenta of all the shells.
*)
val atomic_shell_a : t -> Atomic_shell.t
(** Returns the first atomic shell of the first shell pair. *)
val atomic_shell_b : t -> Atomic_shell.t
(** Returns the second atomic shell of the first shell pair. *)
val atomic_shell_c : t -> Atomic_shell.t
(** Returns the first atomic shell of the second shell pair. *)
val atomic_shell_d : t -> Atomic_shell.t
(** Returns the second atomic shell of the second shell pair. *)
val atomic_shell_pair_p : t -> Atomic_shell_pair.t
(** Returns the first atomic shell pair that was used to build the shell
* pair.
*)
val atomic_shell_pair_q : t -> Atomic_shell_pair.t
(** Returns the second atomic shell pair that was used to build the shell
* pair.
*)
val contracted_shell_pair_couples : t -> Contracted_shell_pair_couple.t list
(** Returns the list of significant contracted shell pair couples. *)
val monocentric : t -> bool
(** True if all four atomic shells have the same center. *)
val norm_scales : t -> float array
(** Scaling factors of normalization coefficients inside the shell. The
* ordering is the same as ~zkey_array~.
*)
val zkey_array : t -> Zkey.t array
(** Returns the array of ~Zkey.t~ relative to the four shells of the shell
* pair couple.
*)
(** Creation *)
val make : ?cutoff:float -> Atomic_shell_pair.t -> Atomic_shell_pair.t -> t option
(** Creates an atomic shell pair couple using two atomic shell pairs.
* Default cutoff is $\epsilon$.
*)
(** Printers *)
val pp : Format.formatter -> t -> unit