10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-07-16 16:10:22 +02:00
QCaml/ao/lib/basis_gaussian.mli

92 lines
1.9 KiB
OCaml
Raw Normal View History

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