10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-12-23 04:43:32 +01:00
QCaml/ao/lib/basis.mli

121 lines
2.5 KiB
OCaml

(** Data structure for Atomic Orbitals. *)
type t
type ao = Ao_dim.t
open Common
open Particles
open Operators
open Linear_algebra
(** Conversions *)
val of_nuclei_and_basis_filename :
?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 the name of the basis-set file.
Defaults:
- ~kind~ : ~`Gaussian~
- ~operators~ : ~[]~
- ~cartesian~ : ~false~
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
*)
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
*)
(** 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 *)
(*
val of_trexio : Trexio.trexio_file -> t
(** Reads the basis set from a TREXIO file *)
val to_trexio : Trexio.trexio_file -> t -> unit
(** Writes the basis set to a TREXIO file *)
*)
(* Printers *)
val pp : Format.formatter -> t -> unit