2023-06-27 10:15:50 +02:00
|
|
|
(** Data structure for Atomic Orbitals. *)
|
2021-01-04 23:15:27 +01:00
|
|
|
|
2021-01-04 09:19:35 +01:00
|
|
|
type t
|
2023-04-24 19:01:42 +02:00
|
|
|
type ao = Ao_dim.t
|
2020-10-02 23:35:56 +02:00
|
|
|
|
2020-10-09 09:47:57 +02:00
|
|
|
open Common
|
|
|
|
open Particles
|
|
|
|
open Operators
|
|
|
|
open Linear_algebra
|
2020-10-07 17:54:15 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Conversions *)
|
2020-10-07 17:54:15 +02:00
|
|
|
|
2021-01-04 09:19:35 +01:00
|
|
|
val of_nuclei_and_basis_filename :
|
2021-01-28 00:34:26 +01:00
|
|
|
?kind:[> `Gaussian ] ->
|
|
|
|
?operators:Operator.t list ->
|
|
|
|
?cartesian:bool ->
|
|
|
|
nuclei:Nuclei.t ->
|
2023-06-27 10:15:50 +02:00
|
|
|
string -> t
|
|
|
|
(** Creates the data structure for the atomic orbitals basis from a
|
|
|
|
molecule ~Nuclei.t~ and the name of the basis-set file.
|
2020-10-07 17:54:15 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
Defaults:
|
|
|
|
- ~kind~ : ~`Gaussian~
|
|
|
|
- ~operators~ : ~[]~
|
|
|
|
- ~cartesian~ : ~false~
|
2023-04-24 19:01:42 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
Example:
|
|
|
|
#+begin_example
|
|
|
|
let b = Ao.Basis.of_nuclei_and_basis_filename ~nuclei filename;;
|
|
|
|
val b : Ao.Basis.t = Gaussian Basis, spherical, 15 AOs
|
|
|
|
#+end_example
|
2023-04-24 19:01:42 +02:00
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
|
2024-09-06 11:05:54 +02:00
|
|
|
val of_nuclei_and_basis_string :
|
|
|
|
?kind:[> `Gaussian ] ->
|
|
|
|
?operators:Operator.t list ->
|
|
|
|
?cartesian:bool ->
|
|
|
|
nuclei:Nuclei.t ->
|
|
|
|
string -> t
|
|
|
|
(** Creates the data structure for the atomic orbitals basis from a
|
|
|
|
molecule ~Nuclei.t~ and a basis-set string.
|
|
|
|
|
|
|
|
Defaults:
|
|
|
|
- ~kind~ : ~`Gaussian~
|
|
|
|
- ~operators~ : ~[]~
|
|
|
|
- ~cartesian~ : ~false~
|
|
|
|
|
|
|
|
Example:
|
|
|
|
#+begin_example
|
|
|
|
let b = Ao.Basis.of_nuclei_and_basis_string ~nuclei "
|
|
|
|
HYDROGEN
|
|
|
|
S 1
|
|
|
|
1 0.0395061728 1.00000000
|
|
|
|
|
|
|
|
"
|
|
|
|
;;
|
|
|
|
val b : Ao.Basis.t = Gaussian Basis, spherical, 1 AOs
|
|
|
|
#+end_example
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Access *)
|
|
|
|
|
|
|
|
val size : t -> int
|
|
|
|
(** Number of atomic orbitals in the AO basis set *)
|
|
|
|
|
|
|
|
val ao_basis : t -> Basis_poly.t
|
|
|
|
(** One-electron basis set *)
|
|
|
|
|
|
|
|
val overlap : t -> (ao,ao) Matrix.t
|
|
|
|
(** Overlap matrix *)
|
|
|
|
|
|
|
|
val multipole : t -> string -> (ao,ao) Matrix.t
|
|
|
|
(** Multipole matrices *)
|
|
|
|
|
|
|
|
val ortho : t -> (ao,'a) Matrix.t
|
|
|
|
(** Orthonormalization matrix of the overlap *)
|
|
|
|
|
|
|
|
val eN_ints : t -> (ao,ao) Matrix.t
|
|
|
|
(** Electron-nucleus potential integrals *)
|
|
|
|
|
|
|
|
val kin_ints : t -> (ao,ao) Matrix.t
|
|
|
|
(** Kinetic energy integrals *)
|
|
|
|
|
|
|
|
val ee_ints : t -> ao Four_idx_storage.t
|
|
|
|
(** Electron-electron potential integrals *)
|
|
|
|
|
|
|
|
val ee_lr_ints : t -> ao Four_idx_storage.t
|
|
|
|
(** Electron-electron long-range potential integrals *)
|
|
|
|
|
|
|
|
val f12_ints : t -> ao Four_idx_storage.t
|
|
|
|
(** Electron-electron potential integrals *)
|
|
|
|
|
|
|
|
val f12_over_r12_ints : t -> ao Four_idx_storage.t
|
|
|
|
(** ectron-electron potential integrals *)
|
|
|
|
|
|
|
|
val cartesian : t -> bool
|
|
|
|
(** If true, use cartesian Gaussians (6d, 10f, ...) *)
|
|
|
|
|
|
|
|
val values : t -> Coordinate.t -> ao Vector.t
|
|
|
|
(** Values of the AOs evaluated at a given point *)
|
|
|
|
|
|
|
|
|
|
|
|
(** TREXIO *)
|
2023-04-24 19:01:42 +02:00
|
|
|
|
|
|
|
(*
|
2023-06-27 10:15:50 +02:00
|
|
|
val of_trexio : Trexio.trexio_file -> t
|
|
|
|
(** Reads the basis set from a TREXIO file *)
|
|
|
|
|
2023-04-24 19:01:42 +02:00
|
|
|
val to_trexio : Trexio.trexio_file -> t -> unit
|
2023-06-27 10:15:50 +02:00
|
|
|
(** Writes the basis set to a TREXIO file *)
|
2023-04-24 19:01:42 +02:00
|
|
|
*)
|
|
|
|
|
2020-10-07 17:54:15 +02:00
|
|
|
|
2023-06-27 10:15:50 +02:00
|
|
|
(* Printers *)
|
2020-10-07 17:54:15 +02:00
|
|
|
|
2021-01-04 09:19:35 +01:00
|
|
|
val pp : Format.formatter -> t -> unit
|