10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-12-27 14:53:32 +01:00
QCaml/Basis/ContractedShell.mli

76 lines
2.3 KiB
OCaml
Raw Normal View History

2018-03-14 21:51:27 +01:00
(** Set of contracted Gaussians differing only by the powers of x, y and z, with a
constant {!AngularMomentum.t}.
2018-03-06 00:47:33 +01:00
2018-03-14 21:51:27 +01:00
{%
\begin{align*}
\chi_{n_x,n_y,n_z}(r) & = f(n_x,n_y,n_z) \sum_{i=1}^{m} \mathcal{N}_i d_i g_{i\,n_x,n_y,n_z}(r) \\
& = (x-X_A)^{n_x} (y-Y_A)^{n_y} (z-Z_A)^{n_z} f(n_x,n_y,n_z) \sum_{i=1}^{m} \mathcal{N}_i d_i \exp \left( -\alpha_i |r-R_A|^2 \right)
\end{align*}
%}
2018-03-06 00:47:33 +01:00
where:
2018-03-14 21:51:27 +01:00
- {% $g_{i\,n_x,n_y,n_z}(r)$ %} is the i-th {!PrimitiveShell.t}
2018-03-06 00:47:33 +01:00
- {% $n_x + n_y + n_z = l$ %}, the total angular momentum
- {% $\alpha_i$ %} are the exponents (tabulated)
- {% $d_i$ %} are the contraction coefficients
2018-03-14 21:51:27 +01:00
- {% $\mathcal{N}_i$ %} is the normalization coefficient of the i-th primitive shell
({!PrimitiveShell.norm_coef})
2018-03-06 00:47:33 +01:00
2018-03-14 21:51:27 +01:00
- {% $f(n_x,n_y,n_z)$ %} is a scaling factor adjusting the normalization coefficient for the
particular powers of {% $x,y,z$ %} ({!PrimitiveShell.norm_coef_scale})
2018-03-06 00:47:33 +01:00
*)
2018-03-13 18:56:28 +01:00
type t
2018-02-23 18:44:31 +01:00
2018-03-14 16:22:08 +01:00
val make : ?index:int -> (float * PrimitiveShell.t) array -> t
2018-03-15 19:35:10 +01:00
(** Creates a contracted shell from a list of coefficients and primitives. *)
2018-02-23 18:44:31 +01:00
val with_index : t -> int -> t
2018-03-14 21:51:27 +01:00
(** Returns a copy of the contracted shell with a modified index. *)
2018-03-13 18:56:28 +01:00
2018-03-20 14:11:31 +01:00
val index : t -> int
(** Index in the basis set, represented as an array of contracted shells. *)
2018-03-13 18:56:28 +01:00
val center : t -> Coordinate.t
2018-03-14 21:51:27 +01:00
(** Coordinate of the center {% $\mathbf{A} = (X_A,Y_A,Z_A)$ %}. *)
2018-03-13 18:56:28 +01:00
2018-03-21 15:01:39 +01:00
val ang_mom : t -> AngularMomentum.t
2018-03-14 21:51:27 +01:00
(** Total angular momentum : {% $l = n_x + n_y + n_z$ %}. *)
2018-03-13 18:56:28 +01:00
val size : t -> int
2018-03-20 14:11:31 +01:00
(** Number of primitive functions, {% $m$ %} in the definition. *)
2018-03-13 18:56:28 +01:00
2018-03-20 14:11:31 +01:00
val primitives : t -> PrimitiveShell.t array
(** Array of primitive gaussians *)
val exponents : t -> float array
(** Array of exponents {% $\alpha_i$ %}. *)
val coefficients : t -> float array
(** Array of contraction coefficients {% $d_i$ %}. *)
val normalizations : t -> float array
2018-03-14 21:51:27 +01:00
(** Normalization coefficients {% $\mathcal{N}_i$ %} of the primitive shells. *)
2018-03-13 18:56:28 +01:00
2018-03-20 14:11:31 +01:00
val norm_scales : t -> float array
2018-03-14 21:51:27 +01:00
(** Scaling factors {% $f(n_x,n_y,n_z)$ %}, given in the same order as
2018-03-21 15:01:39 +01:00
[AngularMomentum.zkey_array ang_mom]. *)
2018-03-13 18:56:28 +01:00
val size_of_shell : t -> int
2018-03-20 14:11:31 +01:00
(** Number of contracted functions in the shell: length of {!norm_coef_scale}. *)
2018-03-13 18:56:28 +01:00
2018-03-22 00:29:14 +01:00
val zkey_array : t -> Zkey.t array
(** Returns the array of Zkeys associated with the contracted shell. *)
2018-03-15 15:25:49 +01:00
(** {2 Printers} *)
val pp : Format.formatter -> t -> unit