10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-11-14 10:03:39 +01:00
QCaml/gaussian/lib/primitive_shell.mli

69 lines
2.0 KiB
OCaml
Raw Normal View History

(** Set of Gaussians differing only by the powers of x, y and z, with a
2020-09-26 12:02:53 +02:00
constant {!Angular_momentum.t}.
2018-03-14 16:22:08 +01:00
{% \\[
g_{n_x,n_y,n_z}(\mathbf{r}) = (x-X_A)^{n_x} (y-Y_A)^{n_y} (z-Z_A)^{n_z}
\exp \left( -\alpha |\mathbf{r}-\mathbf{A}|^2 \right)
2018-03-14 16:22:08 +01:00
\\] %}
where:
- {% $\mathbf{r} = (x,y,z)$ %} is the electron coordinate
- {% $\mathbf{A} = (X_A,Y_A,Z_A)$ %} is the coordinate of center A
2018-03-14 16:22:08 +01:00
- {% $n_x + n_y + n_z = l$ %}, the total angular momentum
- {% $\alpha$ %} is the exponent
*)
type t
2020-10-09 09:47:57 +02:00
open Common
2020-09-26 12:02:53 +02:00
2018-03-14 16:22:08 +01:00
val to_string : t -> string
(** Pretty-printing of the primitive shell in a string. *)
2020-09-26 12:02:53 +02:00
val make : Angular_momentum.t -> Coordinate.t -> float -> t
2018-03-14 16:22:08 +01:00
(** Creates a primitive shell from the total angular momentum, the coordinates of the
center and the exponent. *)
2018-03-20 15:16:24 +01:00
val exponent : t -> float
(** Exponent {% $\alpha$ %}. *)
2018-03-14 16:22:08 +01:00
val center : t -> Coordinate.t
(** Coordinate {% $\mathbf{A}$ %}.of the center. *)
2018-03-14 16:22:08 +01:00
2020-09-26 12:02:53 +02:00
val ang_mom : t -> Angular_momentum.t
2018-03-14 16:22:08 +01:00
(** Total angular momentum : {% $l = n_x + n_y + n_z$ %}. *)
val norm : t -> float
(** Norm of the shell, defined as
{% \\[ || g_{l,0,0}(\mathbf{r}) || =
\sqrt{ \iiint \left[ (x-X_A)^{l}
\exp (-\alpha |\mathbf{r}-\mathbf{A}|^2) \right]^2 \, dx\, dy\, dz}
\\] %}
*)
2018-03-14 16:22:08 +01:00
2018-03-20 15:16:24 +01:00
val normalization : t -> float
(** Normalization coefficient by which the shell has to be multiplied
to be normalized :
{% \\[ \mathcal{N} = \frac{1}{|| g_{l,0,0}(\mathbf{r}) ||} \\] %}.
2018-03-14 16:22:08 +01:00
*)
2018-03-20 15:16:24 +01:00
val norm_scales : t -> float array
(** Scaling factors {% $f(n_x,n_y,n_z)$ %} adjusting the normalization coefficient
for the powers of {% $x,y,z$ %}. The normalization coefficients of the
functions of the shell are given by {% $\mathcal{N}\times f$ %}. They are
2020-09-26 12:02:53 +02:00
given in the same order as [Angular_momentum.zkey_array ang_mom]:
{% \\[ f(n_x,n_y,n_z) = \frac{|| g_{l,0,0}(\mathbf{r}) ||}{|| g_{n_x,n_y,n_z}(\mathbf{r}) ||} \\] %}
2018-03-14 16:22:08 +01:00
*)
val size_of_shell : t -> int
(** Number of functions in the shell. *)
2018-03-22 00:29:14 +01:00
val zkey_array : t -> Zkey.t array
(** Returns the array of Zkeys associated with the primitive shell. *)