10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-08-16 09:48:30 +02:00
QCaml/gaussian/atomic_shell.org

7.9 KiB

Atomic shell

Set of contracted Gaussians differing only by the powers of $x$, $y$ and $z$, with a constant Angular_momentum.t, all centered on the same point.

In other words, it is the set of all contracted shells sharing the same center.

\begin{align*} \chi_{n_x,n_y,n_z}(r) & = f(n_x,n_y,n_z) \sum_{j=1}^{n} \sum_{i=1}^{m} \mathcal{N}_{ij}\, d_{ij}\, g_{ij\,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_{j=1}^{n} \sum_{i=1}^{m} \mathcal{N}_{ij}\, d_{ij}\, \exp \left( -\alpha_{ij} |r-R_A|^2 \right) \end{align*}

where:

  • $g_{ij\,n_x,n_y,n_z}(r)$ is the $i$-th PrimitiveShell.t of the $j$-th Contracted_shell.t
  • $n_x + n_y + n_z = l$, the total angular momentum
  • $\alpha_{ij}$ are the exponents (tabulated) of the $j$-th Contracted_shell.t
  • $d_{ij}$ are the contraction coefficients of the $j$-th Contracted_shell.t
  • $\mathcal{N}_{ij}$ is the normalization coefficient of the $i$-th primitive shell (PrimitiveShell.norm_coef) of the $j$-th Contracted_shell.t
  • $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)

Type

type t

open Common

Access

val index : t -> int
(** Index in the basis set, represented as an array of contracted shells. *)

val center : t -> Coordinate.t
(** Coordinate of the center {% $\mathbf{A} = (X_A,Y_A,Z_A)$ %}. *)

val ang_mom : t -> Angular_momentum.t
(** Total angular momentum : {% $l = n_x + n_y + n_z$ %}. *)

val size : t -> int
(** Number of contracted functions, {% $n$ %} in the definition. *)

val contracted_shells: t -> Contracted_shell.t array
(** Array of contracted gaussians *)

val exponents : t -> float array array
(** Array of exponents {% $\alpha_{ij}$ %}. The first index is the index of
 the contracted function, and the second index is the index of the primitive.
*)

val coefficients : t -> float array array
(** Array of contraction coefficients {% $d_{ij}$ %}. The first index is the index of
 the contracted function, and the second index is the index of the primitive.
*)

val normalizations : t -> float array array
(** Normalization coefficients {% $\mathcal{N}_{ij}$ %}. The first index is the index of
 the contracted function, and the second index is the index of the primitive.
*)

val norm_scales : t -> float array
(** Scaling factors {% $f(n_x,n_y,n_z)$ %}, given in the same order as
 [Angular_momentum.zkey_array ang_mom]. *)

val size_of_shell : t -> int
(** Number of contracted functions in the shell: length of {!norm_coef_scale}. *)
index Index in the basis set, represented as an array of contracted shells.
center Coordinate of the center $\mathbf{A} = (X_A,Y_A,Z_A)$.
ang_mom Total angular momentum : $l = n_x + n_y + n_z$.
size Number of contracted functions, $n$ in the definition.
contracted_shells: Array of contracted gaussians
exponents Array of exponents $\alpha_{ij}$. The first index is the index of the contracted function, and the second index is the index of the primitive.
coefficients Array of contraction coefficients $d_{ij}$. The first index is the index of the contracted function, and the second index is the index of the primitive.
normalizations Normalization coefficients $\mathcal{N}_{ij}$. The first index is the index of the contracted function, and the second index is the index of the primitive.
norm_scales Scaling factors $f(n_x,n_y,n_z)$, given in the same order as Angular_momentum.zkey_array ang_mom.
size_of_shell Number of contracted functions in the shell: length of norm_coef_scale.

Creation

val make : ?index:int -> Contracted_shell.t array -> t 
(** Creates a contracted shell from a list of coefficients and primitives.  *)

val with_index  : t -> int -> t
(** Returns a copy of the contracted shell with a modified index. *)
make Creates a contracted shell from a list of coefficients and primitives.
with_index Returns a copy of the contracted shell with a modified index.

Printers

val pp : Format.formatter -> t -> unit