2023-06-27 10:15:50 +02:00
|
|
|
(** Gaussian basis
|
|
|
|
|
|
|
|
Data structure for Gaussian Atomic Orbitals:
|
|
|
|
|
|
|
|
\[
|
|
|
|
\chi_i(\mathbf{r}) = P_i(\mathbf{r}) \sum_k c_k \exp\left( -\alpha_k (\mathbf{r-R_A})^2 \r$
|
|
|
|
\]
|
|
|
|
|
|
|
|
where the polynomial $P_i$ and the Gaussian part are both centered on
|
|
|
|
nucleus $A$.
|
|
|
|
|
|
|
|
*)
|
2021-01-04 23:15:27 +01:00
|
|
|
|
2020-10-09 09:47:57 +02:00
|
|
|
open Common
|
|
|
|
open Particles
|
|
|
|
open Linear_algebra
|
|
|
|
open Gaussian_integrals
|
|
|
|
open Operators
|
2020-10-02 23:35:56 +02:00
|
|
|
|
2021-01-04 23:15:27 +01:00
|
|
|
type t
|
2020-10-02 23:35:56 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Access *)
|
|
|
|
|
|
|
|
val basis : t -> Gaussian.Basis.t
|
|
|
|
(** One-electron basis set *)
|
|
|
|
|
|
|
|
val cartesian : t -> bool
|
|
|
|
(** If true, use cartesian Gaussians (6d, 10f, ...) *)
|
|
|
|
|
|
|
|
val ee_ints : t -> Eri.t
|
|
|
|
(* Electron-electron potential integrals *)
|
|
|
|
|
|
|
|
val ee_lr_ints : t -> Eri_long_range.t
|
|
|
|
(** Electron-electron long-range potential integrals *)
|
|
|
|
|
|
|
|
val eN_ints : t -> Electron_nucleus.t
|
|
|
|
(** Electron-nucleus potential integrals *)
|
2020-10-02 23:35:56 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
val f12_ints : t -> F12.t
|
|
|
|
(** Electron-electron potential integrals *)
|
2020-10-02 23:35:56 +02:00
|
|
|
|
2020-10-03 00:54:17 +02:00
|
|
|
val f12_over_r12_ints : t -> Screened_eri.t
|
2023-06-27 10:15:50 +02:00
|
|
|
(**lectron-electron potential integrals *)
|
|
|
|
|
|
|
|
val kin_ints : t -> Kinetic.t
|
|
|
|
(** Kinetic energy integrals *)
|
|
|
|
|
|
|
|
val multipole : t -> Multipole.t
|
|
|
|
(** Multipole matrices *)
|
|
|
|
|
|
|
|
val ortho : t -> Orthonormalization.t
|
|
|
|
(** Orthonormalization matrix of the overlap *)
|
|
|
|
|
2021-01-04 23:15:27 +01:00
|
|
|
val overlap : t -> Overlap.t
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Overlap matrix *)
|
2020-10-03 00:54:17 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
val size : t -> int
|
|
|
|
(** Number of atomic orbitals *)
|
2020-10-02 23:35:56 +02:00
|
|
|
|
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Computation *)
|
2021-01-04 23:15:27 +01:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
val values : t -> Coordinate.t -> Gaussian.Basis.t Vector.t
|
|
|
|
(** Returns the values of all the AOs evaluated at a given point *)
|
2021-01-04 23:15:27 +01:00
|
|
|
|
2020-10-02 23:35:56 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Creation *)
|
|
|
|
|
2021-01-04 23:15:27 +01:00
|
|
|
val make : basis:Gaussian.Basis.t ->
|
|
|
|
?operators:Operator.t list ->
|
|
|
|
?cartesian:bool ->
|
2023-06-27 10:15:50 +02:00
|
|
|
Nuclei.t -> t
|
|
|
|
|
|
|
|
(** Creates the data structure for atomic orbitals from a Gaussian basis and the
|
|
|
|
molecular geometry ~Nuclei.t~.
|
|
|
|
|
|
|
|
Defaults:
|
|
|
|
- ~operators~ : ~[]~
|
|
|
|
- ~cartesian~ : ~false~
|
|
|
|
|
|
|
|
Example:
|
|
|
|
#+begin_example
|
|
|
|
let b = Ao.Basis_gaussian.make ~basis nuclei ;;
|
|
|
|
val b : Ao.Basis_gaussian.t = Gaussian Basis, spherical, 15 AOs
|
|
|
|
#+end_example
|
|
|
|
*)
|
2020-10-02 23:35:56 +02:00
|
|
|
|
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Printers *)
|
2020-10-02 23:35:56 +02:00
|
|
|
|
2021-01-04 23:15:27 +01:00
|
|
|
val pp : Format.formatter -> t -> unit
|