2018-03-06 18:25:48 +01:00
|
|
|
(** Set of contracted Gaussians with a given {!AngularMomentum.t}
|
2018-03-06 00:47:33 +01:00
|
|
|
|
|
|
|
{% \\[
|
2018-03-14 14:39:22 +01:00
|
|
|
\chi(r) = (x-X_A)^{n_x} (y-Y_A)^{n_y} (z-Z_A)^{n_z} \sum_{i=1}^{m} \mathcal{N}_i f_i d_i \exp \left( -\alpha_i |r-R_A|^2 \right)
|
2018-03-06 00:47:33 +01:00
|
|
|
\\] %}
|
|
|
|
|
|
|
|
where:
|
|
|
|
|
|
|
|
- {% $n_x + n_y + n_z = l$ %}, the total angular momentum
|
|
|
|
|
|
|
|
- {% $\alpha_i$ %} are the exponents (tabulated)
|
|
|
|
|
|
|
|
- {% $d_i$ %} are the contraction coefficients
|
|
|
|
|
|
|
|
- {% $\mathcal{N}_i$ %} is the normalization coefficient of the i-th primitive:
|
|
|
|
|
|
|
|
{% \\[
|
2018-03-06 18:25:48 +01:00
|
|
|
\mathcal{N}_i = \sqrt{\iiint \left[ (x-X_A)^{l} \exp (-\alpha_i |r-R_A|^2) \right]^2 \, dx\, dy\, dz}
|
2018-03-06 00:47:33 +01:00
|
|
|
\\] %}
|
|
|
|
|
|
|
|
- {% $f_i$ %} is a scaling factor adjusting the normalization coefficient for the
|
|
|
|
particular powers of {% $x,y,z$ %}:
|
|
|
|
|
|
|
|
{% \\[
|
|
|
|
f_i = \frac{1}{\mathcal{N}_i}
|
2018-03-06 18:25:48 +01:00
|
|
|
\sqrt{\iiint \left[ (x-X_A)^{n_x} (y-Y_A)^{n_y} (z-Z_A)^{n_z} \exp (-\alpha_i |r-R_A|^2) \right]^2 \, dx\, dy\, dz}
|
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
|
|
|
|
|
|
|
val to_string : t -> string
|
2018-03-13 18:56:28 +01:00
|
|
|
(** Pretty-printing of the contracted shell in a string *)
|
2018-02-23 18:44:31 +01:00
|
|
|
|
|
|
|
val make :
|
|
|
|
index:int ->
|
|
|
|
expo:float array ->
|
|
|
|
coef:float array ->
|
|
|
|
center:Coordinate.t -> totAngMom:AngularMomentum.t -> t
|
2018-03-13 18:56:28 +01:00
|
|
|
(** Creates a contracted shell *)
|
2018-02-23 18:44:31 +01:00
|
|
|
|
|
|
|
val with_index : t -> int -> t
|
2018-03-13 18:56:28 +01:00
|
|
|
(** Returns a copy of the contracted shell with a modified index *)
|
|
|
|
|
|
|
|
|
|
|
|
val expo : t -> float array
|
|
|
|
(** Array of exponents {% $\alpha_i$ %} *)
|
|
|
|
|
|
|
|
val coef : t -> float array
|
|
|
|
(** Array of contraction coefficients {% $d_i$ %} *)
|
|
|
|
|
|
|
|
val center : t -> Coordinate.t
|
|
|
|
(** Coordinate of the center {% $\mathbf{A} = (X_A,Y_A,Z_A)$ %} *)
|
|
|
|
|
|
|
|
val totAngMom : t -> AngularMomentum.t
|
|
|
|
(** Total angular momentum : {% $l = n_x + n_y + n_z$ %} *)
|
|
|
|
|
|
|
|
val size : t -> int
|
|
|
|
(** Number of contracted functions, {% $m$ %} in the formula *)
|
|
|
|
|
|
|
|
val norm_coef : t -> float array
|
|
|
|
(** Normalization coefficients of primitive functions {% $\mathcal{N}_i$ %} *)
|
|
|
|
|
|
|
|
val norm_coef_scale : t -> float array
|
|
|
|
(** Scaling factors {% $f_i$ %}, given in the same order as [AngularMomentum.zkey_array totAngMom]. *)
|
|
|
|
|
|
|
|
val index : t -> int
|
|
|
|
(** Index in the basis set, represented as an array of contracted shells. *)
|
|
|
|
|
|
|
|
val size_of_shell : t -> int
|
|
|
|
(** Number of contracted functions in the shell *)
|
|
|
|
|