From d2b4928352b4ef8bdbaaf3fe67f51b720ea47c03 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 4 Jan 2021 23:15:27 +0100 Subject: [PATCH] Added gaussian basis --- Makefile | 4 + ao/basis.org | 35 ++- ao/basis_gaussian.org | 223 +++++++++++++++++ ao/lib/ao_dim.mli | 9 +- ao/lib/basis.ml | 27 +- ao/lib/basis.mli | 9 +- ao/lib/basis_gaussian.ml | 67 ++++- ao/lib/basis_gaussian.mli | 78 +++--- ao/lib/basis_poly.ml | 2 + ao/lib/basis_poly.mli | 7 +- docs/ao.html | 310 ++++++++++++++++++++--- docs/common.html | 462 +++++++++++++++++------------------ docs/gaussian.html | 6 +- docs/gaussian_integrals.html | 6 +- docs/index.html | 12 +- docs/linear_algebra.html | 6 +- docs/mo.html | 42 ++-- docs/particles.html | 170 ++++++------- docs/perturbation.html | 46 ++-- docs/top.html | 6 +- top/lib/install_printers.ml | 2 + 21 files changed, 1044 insertions(+), 485 deletions(-) create mode 100644 ao/basis_gaussian.org diff --git a/Makefile b/Makefile index d0f4fd5..8d4cd8e 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,10 @@ docs/%.html: %/*.org %/lib/*.ml %/lib/*.mli %/test/*.ml - ./bin/tangle.sh $* - ./bin/build_doc.sh $* +docs/top.html: */*.org */lib/*.ml */lib/*.mli + - ./bin/tangle.sh top + - ./bin/build_doc.sh top + doc: $(DOCS) build: doc diff --git a/ao/basis.org b/ao/basis.org index d54a0dc..3782712 100644 --- a/ao/basis.org +++ b/ao/basis.org @@ -18,14 +18,25 @@ ** Dimensions :noexports: - #+NAME: types #+begin_src ocaml :tangle lib/ao_dim.mli :exports none type t #+end_src -** Type +** Polymorphic types #+NAME: types + #+begin_src ocaml :tangle lib/basis_poly.mli +type t = + | Unknown + | Gaussian of Basis_gaussian.t + #+end_src + + #+begin_src ocaml :tangle lib/basis_poly.ml :exports none +<> + #+end_src + +** Types + #+begin_src ocaml :tangle (eval mli) type t type ao = Ao_dim.t @@ -58,6 +69,16 @@ val of_nuclei_and_basis_filename : | ~of_nuclei_and_basis_filename~ | 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~ + + #+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 + #+begin_src ocaml :tangle (eval ml) :exports none let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false) ~nuclei filename = @@ -214,10 +235,10 @@ val pp : Format.formatter -> t -> unit #+begin_src ocaml :tangle (eval ml) :exports none let pp ppf t = - if t.cartesian then - Format.fprintf ppf "@[Basis (cartesian coord)@]" - else - Format.fprintf ppf "@[Basis (spherical coord)@]" + begin + match t.ao_basis with + | Basis_poly.Gaussian b -> Basis_gaussian.pp ppf b + | _ -> not_implemented () + end #+end_src -** Tests diff --git a/ao/basis_gaussian.org b/ao/basis_gaussian.org new file mode 100644 index 0000000..0d23ed0 --- /dev/null +++ b/ao/basis_gaussian.org @@ -0,0 +1,223 @@ +#+begin_src elisp tangle: no :results none :exports none +(setq pwd (file-name-directory buffer-file-name)) +(setq name (file-name-nondirectory (substring buffer-file-name 0 -4))) +(setq lib (concat pwd "lib/")) +(setq testdir (concat pwd "test/")) +(setq mli (concat lib name ".mli")) +(setq ml (concat lib name ".ml")) +(setq test-ml (concat testdir name ".ml")) +(org-babel-tangle) +#+end_src + +* Gaussian basis + :PROPERTIES: + :header-args: :noweb yes :comments both + :END: + + Data structure for Gaussian Atomic Orbitals: + + $$ + \chi(r) = P(X_A,Y_A,Z_A) \sum_k a_k \exp\left( -\alpha_k (\mathbf{r-R_A})^2 \right) + $$ + + where the polynomial $P$ and the Gaussian part are both centered on + nucleus $A$. + +** Type + + #+NAME: types + #+begin_src ocaml :tangle (eval mli) +open Common +open Particles +open Linear_algebra +open Gaussian_integrals +open Operators + +type t + #+end_src + + #+begin_src ocaml :tangle (eval ml) :exports none +open Linear_algebra +open Gaussian +open Gaussian_integrals +open Operators + +module Basis = Gaussian.Basis + +type t = +{ + basis : Basis.t ; + overlap : Overlap.t lazy_t; + multipole : Multipole.t lazy_t; + ortho : Orthonormalization.t lazy_t; + eN_ints : Electron_nucleus.t lazy_t; + kin_ints : Kinetic.t lazy_t; + ee_ints : Eri.t lazy_t; + ee_lr_ints : Eri_long_range.t lazy_t; + f12_ints : F12.t lazy_t; + f12_over_r12_ints : Screened_eri.t lazy_t; + cartesian : bool ; +} + #+end_src + +** Access + + #+begin_src ocaml :tangle (eval mli) +val basis : t -> Gaussian.Basis.t +val cartesian : t -> bool +val ee_ints : t -> Eri.t +val ee_lr_ints : t -> Eri_long_range.t +val eN_ints : t -> Electron_nucleus.t +val f12_ints : t -> F12.t +val f12_over_r12_ints : t -> Screened_eri.t +val kin_ints : t -> Kinetic.t +val multipole : t -> Multipole.t +val ortho : t -> Orthonormalization.t +val overlap : t -> Overlap.t +val size : t -> int + #+end_src + + | ~basis~ | One-electron basis set | + | ~cartesian~ | If true, use cartesian Gaussians (6d, 10f, ...) | + | ~ee_ints~ | Electron-electron potential integrals | + | ~ee_lr_ints~ | Electron-electron long-range potential integrals | + | ~eN_ints~ | Electron-nucleus potential integrals | + | ~f12_ints~ | Electron-electron potential integrals | + | ~f12_over_r12_ints~ | Electron-electron potential integrals | + | ~kin_ints~ | Kinetic energy integrals | + | ~multipole~ | Multipole matrices | + | ~ortho~ | Orthonormalization matrix of the overlap | + | ~overlap~ | Overlap matrix | + | ~size~ | Number of atomic orbitals | + + #+begin_src ocaml :tangle (eval ml) :exports none +let basis t = t.basis +let cartesian t = t.cartesian +let ee_ints t = Lazy.force t.ee_ints +let ee_lr_ints t = Lazy.force t.ee_lr_ints +let eN_ints t = Lazy.force t.eN_ints +let f12_ints t = Lazy.force t.f12_ints +let f12_over_r12_ints t = Lazy.force t.f12_over_r12_ints +let kin_ints t = Lazy.force t.kin_ints +let multipole t = Lazy.force t.multipole +let ortho t = Lazy.force t.ortho +let overlap t = Lazy.force t.overlap +let size t = Matrix.dim1 (Lazy.force t.overlap) + #+end_src + +** Computation + + #+begin_src ocaml :tangle (eval mli) +val values : t -> Coordinate.t -> Gaussian.Basis.t Vector.t + #+end_src + + | ~values~ | Returns the values of all the AOs evaluated at a given point | + + #+begin_src ocaml :tangle (eval ml) :exports none +module Cs = Contracted_shell + +let values t point = + let result = Vector.create (Basis.size t.basis) in + let resultx = Vector.to_bigarray_inplace result in + Array.iter (fun shell -> + Cs.values shell point + |> Array.iteri + (fun i_c value -> + let i = Cs.index shell + i_c + 1 in + resultx.{i} <- value) + ) (Basis.contracted_shells t.basis); + result + #+end_src + +** Creation + + #+begin_src ocaml :tangle (eval mli) +val make : basis:Gaussian.Basis.t -> + ?operators:Operator.t list -> + ?cartesian:bool -> + Nuclei.t -> t + #+end_src + + Creates the data structure for atomic orbitals from a Gaussian basis and the + molecular geometry ~Nuclei.t~. + + Defaults: + - ~operators~ : ~[]~ + - ~cartesian~ : ~false~ + + #+begin_example +let b = Ao.Basis_gaussian.make ~basis nuclei ;; +val b : Ao.Basis_gaussian.t = Gaussian Basis, spherical, 15 AOs + #+end_example + + #+begin_src ocaml :tangle (eval ml) :exports none +let make ~basis ?(operators=[]) ?(cartesian=false) nuclei = + + let overlap = lazy ( + Overlap.of_basis basis + ) in + + let ortho = lazy ( + Lazy.force overlap + |> Orthonormalization.make ~cartesian ~basis + ) in + + let eN_ints = lazy ( + Electron_nucleus.of_basis_nuclei ~basis nuclei + ) in + + let kin_ints = lazy ( + Kinetic.of_basis basis + ) in + + let ee_ints = lazy ( + Eri.of_basis basis + ) in + + let rec get_f12 = function + | (Operator.F12 _ as f) :: _ -> f + | [] -> failwith "Missing F12 operator" + | _ :: rest -> get_f12 rest + in + + let rec get_rs = function + | (Operator.Range_sep _ as r) :: _ -> r + | [] -> failwith "Missing range-separation operator" + | _ :: rest -> get_rs rest + in + + let ee_lr_ints = lazy ( + Eri_long_range.of_basis basis~operator:(get_rs operators) + ) in + + let f12_ints = lazy ( + F12.of_basis basis ~operator:(get_f12 operators) + ) in + + let f12_over_r12_ints = lazy ( + Screened_eri.of_basis basis ~operator:(get_f12 operators) + ) in + + let multipole = lazy ( + Multipole.of_basis basis + ) in + + { basis ; overlap ; multipole ; ortho ; eN_ints ; kin_ints ; ee_ints ; + ee_lr_ints ; f12_ints ; f12_over_r12_ints ; cartesian } + #+end_src + + +** Printers + + #+begin_src ocaml :tangle (eval mli) +val pp : Format.formatter -> t -> unit + #+end_src + + #+begin_src ocaml :tangle (eval ml) :exports none +let pp ppf t = + let cart = if t.cartesian then "cartesian" else "spherical" in + let nao = size t in + Format.fprintf ppf "@[@[Gaussian Basis@], @[%s@], @[%d AOs@]@]" + cart nao + #+end_src + diff --git a/ao/lib/ao_dim.mli b/ao/lib/ao_dim.mli index 40af92b..dfa3042 100644 --- a/ao/lib/ao_dim.mli +++ b/ao/lib/ao_dim.mli @@ -1,7 +1,6 @@ -(* Dimensions :noexports: - * - * #+NAME: types *) +(* Dimensions :noexports: *) -(* [[file:~/QCaml/ao/basis.org::types][types]] *) + +(* [[file:~/QCaml/ao/basis.org::*Dimensions][Dimensions:1]] *) type t -(* types ends here *) +(* Dimensions:1 ends here *) diff --git a/ao/lib/basis.ml b/ao/lib/basis.ml index 2693465..1c37629 100644 --- a/ao/lib/basis.ml +++ b/ao/lib/basis.ml @@ -1,4 +1,4 @@ -(* [[file:~/QCaml/ao/basis.org::*Type][Type:2]] *) +(* [[file:~/QCaml/ao/basis.org::*Types][Types:2]] *) type t = { ao_basis : Basis_poly.t ; cartesian : bool @@ -8,12 +8,22 @@ type ao = Ao_dim.t open Linear_algebra open Common -(* Type:2 ends here *) +(* Types:2 ends here *) -(* | ~of_nuclei_and_basis_filename~ | Creates the data structure for the atomic orbitals basis from a molecule ~Nuclei.t~ and the name of the basis-set file | *) - +(* | ~of_nuclei_and_basis_filename~ | 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~ + * + * #+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 *) + (* [[file:~/QCaml/ao/basis.org::*Conversions][Conversions:2]] *) let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false) @@ -148,8 +158,9 @@ let values t point = (* [[file:~/QCaml/ao/basis.org::*Printers][Printers:2]] *) let pp ppf t = - if t.cartesian then - Format.fprintf ppf "@[Basis (cartesian coord)@]" - else - Format.fprintf ppf "@[Basis (spherical coord)@]" + begin + match t.ao_basis with + | Basis_poly.Gaussian b -> Basis_gaussian.pp ppf b + | _ -> not_implemented () + end (* Printers:2 ends here *) diff --git a/ao/lib/basis.mli b/ao/lib/basis.mli index 57046b3..4896d34 100644 --- a/ao/lib/basis.mli +++ b/ao/lib/basis.mli @@ -1,8 +1,7 @@ -(* Type - * - * #+NAME: types *) +(* Types *) -(* [[file:~/QCaml/ao/basis.org::types][types]] *) + +(* [[file:~/QCaml/ao/basis.org::*Types][Types:1]] *) type t type ao = Ao_dim.t @@ -10,7 +9,7 @@ open Common open Particles open Operators open Linear_algebra -(* types ends here *) +(* Types:1 ends here *) (* Conversions *) diff --git a/ao/lib/basis_gaussian.ml b/ao/lib/basis_gaussian.ml index 0122ec6..d31f709 100644 --- a/ao/lib/basis_gaussian.ml +++ b/ao/lib/basis_gaussian.ml @@ -1,3 +1,4 @@ +(* [[file:~/QCaml/ao/basis_gaussian.org::*Type][Type:2]] *) open Linear_algebra open Gaussian open Gaussian_integrals @@ -19,20 +20,45 @@ type t = f12_over_r12_ints : Screened_eri.t lazy_t; cartesian : bool ; } +(* Type:2 ends here *) + + +(* | ~basis~ | One-electron basis set | + * | ~cartesian~ | If true, use cartesian Gaussians (6d, 10f, ...) | + * | ~ee_ints~ | Electron-electron potential integrals | + * | ~ee_lr_ints~ | Electron-electron long-range potential integrals | + * | ~eN_ints~ | Electron-nucleus potential integrals | + * | ~f12_ints~ | Electron-electron potential integrals | + * | ~f12_over_r12_ints~ | Electron-electron potential integrals | + * | ~kin_ints~ | Kinetic energy integrals | + * | ~multipole~ | Multipole matrices | + * | ~ortho~ | Orthonormalization matrix of the overlap | + * | ~overlap~ | Overlap matrix | + * | ~size~ | Number of atomic orbitals | *) + + +(* [[file:~/QCaml/ao/basis_gaussian.org::*Access][Access:2]] *) let basis t = t.basis -let size t = Matrix.dim1 (Lazy.force t.overlap) -let overlap t = Lazy.force t.overlap -let multipole t = Lazy.force t.multipole -let ortho t = Lazy.force t.ortho -let eN_ints t = Lazy.force t.eN_ints -let kin_ints t = Lazy.force t.kin_ints +let cartesian t = t.cartesian let ee_ints t = Lazy.force t.ee_ints let ee_lr_ints t = Lazy.force t.ee_lr_ints +let eN_ints t = Lazy.force t.eN_ints let f12_ints t = Lazy.force t.f12_ints let f12_over_r12_ints t = Lazy.force t.f12_over_r12_ints -let cartesian t = t.cartesian +let kin_ints t = Lazy.force t.kin_ints +let multipole t = Lazy.force t.multipole +let ortho t = Lazy.force t.ortho +let overlap t = Lazy.force t.overlap +let size t = Matrix.dim1 (Lazy.force t.overlap) +(* Access:2 ends here *) + + +(* | ~values~ | Returns the values of all the AOs evaluated at a given point | *) + + +(* [[file:~/QCaml/ao/basis_gaussian.org::*Computation][Computation:2]] *) module Cs = Contracted_shell let values t point = @@ -46,8 +72,24 @@ let values t point = resultx.{i} <- value) ) (Basis.contracted_shells t.basis); result +(* Computation:2 ends here *) - + + +(* Creates the data structure for atomic orbitals from a Gaussian basis and the + * molecular geometry ~Nuclei.t~. + * + * Defaults: + * - ~operators~ : ~[]~ + * - ~cartesian~ : ~false~ + * + * #+begin_example + * let b = Ao.Basis_gaussian.make ~basis nuclei ;; + * val b : Ao.Basis_gaussian.t = Gaussian Basis, spherical, 15 AOs + * #+end_example *) + + +(* [[file:~/QCaml/ao/basis_gaussian.org::*Creation][Creation:2]] *) let make ~basis ?(operators=[]) ?(cartesian=false) nuclei = let overlap = lazy ( @@ -101,3 +143,12 @@ let make ~basis ?(operators=[]) ?(cartesian=false) nuclei = { basis ; overlap ; multipole ; ortho ; eN_ints ; kin_ints ; ee_ints ; ee_lr_ints ; f12_ints ; f12_over_r12_ints ; cartesian } +(* Creation:2 ends here *) + +(* [[file:~/QCaml/ao/basis_gaussian.org::*Printers][Printers:2]] *) +let pp ppf t = + let cart = if t.cartesian then "cartesian" else "spherical" in + let nao = size t in + Format.fprintf ppf "@[@[Gaussian Basis@], @[%s@], @[%d AOs@]@]" + cart nao +(* Printers:2 ends here *) diff --git a/ao/lib/basis_gaussian.mli b/ao/lib/basis_gaussian.mli index e4849ef..311a462 100644 --- a/ao/lib/basis_gaussian.mli +++ b/ao/lib/basis_gaussian.mli @@ -1,59 +1,55 @@ -(** Data structure for Atomic Orbitals. *) +(* Type + * + * #+NAME: types *) + +(* [[file:~/QCaml/ao/basis_gaussian.org::types][types]] *) open Common open Particles open Linear_algebra open Gaussian_integrals open Operators - -type t -(** {1 Accessors} *) +type t +(* types ends here *) -val size : t -> int -(** Number of atomic orbitals *) +(* Access *) -val basis : t -> Gaussian.Basis.t -(** One-electron basis set *) - -val overlap : t -> Overlap.t -(** Overlap matrix *) - -val multipole : t -> Multipole.t -(** Multipole matrices *) - -val ortho : t -> Orthonormalization.t -(** Orthonormalization matrix of the overlap *) - -val eN_ints : t -> Electron_nucleus.t -(** Electron-nucleus potential integrals *) - -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 f12_ints : t -> F12.t -(** Electron-electron potential integrals *) +(* [[file:~/QCaml/ao/basis_gaussian.org::*Access][Access:1]] *) +val basis : t -> Gaussian.Basis.t +val cartesian : t -> bool +val ee_ints : t -> Eri.t +val ee_lr_ints : t -> Eri_long_range.t +val eN_ints : t -> Electron_nucleus.t +val f12_ints : t -> F12.t val f12_over_r12_ints : t -> Screened_eri.t -(** Electron-electron potential integrals *) +val kin_ints : t -> Kinetic.t +val multipole : t -> Multipole.t +val ortho : t -> Orthonormalization.t +val overlap : t -> Overlap.t +val size : t -> int +(* Access:1 ends here *) -val kin_ints : t -> Kinetic.t -(** Kinetic energy integrals *) +(* Computation *) -val cartesian : t -> bool -(** If true, use cartesian Gaussians (6d, 10f, ...) *) +(* [[file:~/QCaml/ao/basis_gaussian.org::*Computation][Computation:1]] *) val values : t -> Coordinate.t -> Gaussian.Basis.t Vector.t -(** Values of the AOs evaluated at a given point *) +(* Computation:1 ends here *) + +(* Creation *) +(* [[file:~/QCaml/ao/basis_gaussian.org::*Creation][Creation:1]] *) +val make : basis:Gaussian.Basis.t -> + ?operators:Operator.t list -> + ?cartesian:bool -> + Nuclei.t -> t +(* Creation:1 ends here *) -(** {1 Creators} *) +(* Printers *) -val make : basis:Gaussian.Basis.t -> ?operators:Operator.t list -> - ?cartesian:bool -> Nuclei.t -> t -(** Creates the data structure for atomic orbitals from a Gaussian basis and the - molecular geometry {Nuclei.t}. -*) + +(* [[file:~/QCaml/ao/basis_gaussian.org::*Printers][Printers:1]] *) +val pp : Format.formatter -> t -> unit +(* Printers:1 ends here *) diff --git a/ao/lib/basis_poly.ml b/ao/lib/basis_poly.ml index d393bd1..6085725 100644 --- a/ao/lib/basis_poly.ml +++ b/ao/lib/basis_poly.ml @@ -1,3 +1,5 @@ +(* [[file:~/QCaml/ao/basis.org::*Polymorphic%20types][Polymorphic types:2]] *) type t = | Unknown | Gaussian of Basis_gaussian.t +(* Polymorphic types:2 ends here *) diff --git a/ao/lib/basis_poly.mli b/ao/lib/basis_poly.mli index 10a5770..7d08b35 100644 --- a/ao/lib/basis_poly.mli +++ b/ao/lib/basis_poly.mli @@ -1,6 +1,9 @@ -(** Polymorphic type for the basis (Gaussian, Slater, etc) *) +(* Polymorphic types + * + * #+NAME: types *) +(* [[file:~/QCaml/ao/basis.org::types][types]] *) type t = | Unknown | Gaussian of Basis_gaussian.t - +(* types ends here *) diff --git a/docs/ao.html b/docs/ao.html index 77bba47..e84c631 100644 --- a/docs/ao.html +++ b/docs/ao.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Atomic Orbitals @@ -221,6 +221,28 @@ /*]]>*///--> // @license-end + +
-
"Atomic basis set"
+
"Atomic basis set"
 
-
-

1 Basis

+
+

1 Gaussian basis

+Data structure for Gaussian Atomic Orbitals: +

+ +

+\[ + \chi(r) = P(X_A,Y_A,Z_A) \sum_k a_k \exp\left( -\alpha_k (\mathbf{r-R_A})^2 \right) + \] +

+ +

+where the polynomial \(P\) and the Gaussian part are both centered on +nucleus \(A\). +

+
+ +
+

1.1 Type

+
+
+
open Common
+open Particles
+open Linear_algebra
+open Gaussian_integrals
+open Operators
+
+type t 
+
+
+
+
+ +
+

1.2 Access

+
+
+
val basis             : t -> Gaussian.Basis.t
+val cartesian         : t -> bool
+val ee_ints           : t -> Eri.t
+val ee_lr_ints        : t -> Eri_long_range.t
+val eN_ints           : t -> Electron_nucleus.t
+val f12_ints          : t -> F12.t
+val f12_over_r12_ints : t -> Screened_eri.t
+val kin_ints          : t -> Kinetic.t
+val multipole         : t -> Multipole.t
+val ortho             : t -> Orthonormalization.t
+val overlap           : t -> Overlap.t
+val size              : t -> int
+
+
+ + + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
basisOne-electron basis set
cartesianIf true, use cartesian Gaussians (6d, 10f, …)
ee_intsElectron-electron potential integrals
ee_lr_intsElectron-electron long-range potential integrals
eN_intsElectron-nucleus potential integrals
f12_intsElectron-electron potential integrals
f12_over_r12_intsElectron-electron potential integrals
kin_intsKinetic energy integrals
multipoleMultipole matrices
orthoOrthonormalization matrix of the overlap
overlapOverlap matrix
sizeNumber of atomic orbitals
+
+
+ +
+

1.3 Computation

+
+
+
val values : t -> Coordinate.t -> Gaussian.Basis.t Vector.t
+
+
+ + + + +++ ++ + + + + + + +
valuesReturns the values of all the AOs evaluated at a given point
+
+
+ +
+

1.4 Creation

+
+
+
val make : basis:Gaussian.Basis.t ->
+           ?operators:Operator.t list ->
+           ?cartesian:bool ->
+           Nuclei.t -> t
+
+
+ +

+Creates the data structure for atomic orbitals from a Gaussian basis and the +molecular geometry Nuclei.t. +

+ +

+Defaults: +

+
    +
  • operators : []
  • +
  • cartesian : false
  • +
+ +
+let b = Ao.Basis_gaussian.make ~basis nuclei ;;
+val b : Ao.Basis_gaussian.t = Gaussian Basis, spherical, 15 AOs
+
+
+
+ +
+

1.5 Printers

+
+
+
val pp : Format.formatter -> t -> unit
+
+
+
+
+
+ +
+

2 Basis

+
+

Data structure for Atomic Orbitals.

-
-

1.1 Dimensions   noexports

+
+

2.1 Dimensions   noexports

-
-

1.2 Type

-
+
+

2.2 Polymorphic types

+
-
type t
+
type t =
+  | Unknown
+  | Gaussian of Basis_gaussian.t
+
+
+
+
+ +
+

2.3 Types

+
+
+
type t
 type ao = Ao_dim.t 
 
 open Common
@@ -276,9 +514,9 @@ Data structure for Atomic Orbitals.
 
-
-

1.3 Conversions

-
+
+

2.4 Conversions

+
val of_nuclei_and_basis_filename :
   ?kind:[> `Gaussian ] -> ?operators:Operator.t list -> ?cartesian:bool ->
@@ -301,12 +539,26 @@ Data structure for Atomic Orbitals.
 
 
 
+
+

+Defaults: +

+
    +
  • kind : `Gaussian
  • +
  • operators : []
  • +
  • cartesian : false
  • +
+ +
+let b = Ao.Basis.of_nuclei_and_basis_filename ~nuclei filename;;
+val b : Ao.Basis.t = Gaussian Basis, spherical, 15 AOs
+
-
-

1.4 Access

-
+
+

2.5 Access

+
val size              : t -> int
 val ao_basis          : t -> Basis_poly.t
@@ -403,24 +655,20 @@ Data structure for Atomic Orbitals.
 
-
-

1.5 Printers

-
+
+

2.6 Printers

+
val pp : Format.formatter -> t -> unit
 
- -
-

1.6 Tests

-

Author: Anthony Scemama

-

Created: 2021-01-04 Mon 09:19

+

Created: 2021-01-04 Mon 23:37

Validate

diff --git a/docs/common.html b/docs/common.html index fcf8e40..a2f8559 100644 --- a/docs/common.html +++ b/docs/common.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Common @@ -251,140 +251,140 @@

Table of Contents

-
"Utility functions used by all the other directories."
+
"Utility functions used by all the other directories."
 
-
-

1 Angular Momentum

+
+

1 Angular Momentum

Azimuthal quantum number, repsesented as \( s,p,d,\dots \) .

-
-

1.1 Type

+
+

1.1 Type

-
type t =
+
type t =
   | S | P | D | F | G | H | I | J | K | L | M | N | O
   | Int of int
 
@@ -411,8 +411,8 @@ quartets, use in the two-electron operators.
 
-
-

1.2 Conversions

+
+

1.2 Conversions

val of_char : char -> t
@@ -461,7 +461,7 @@ quartets, use in the two-electron operators.
 
 
 
-
+
 Angular_momentum.of_char 'p';;
 - : Angular_momentum.t = P
 
@@ -480,8 +480,8 @@ Angular_momentum.(to_string D);;
 
-
-

1.3 Shell functions

+
+

1.3 Shell functions

val n_functions : t -> int
@@ -510,7 +510,7 @@ Angular_momentum.(to_string D);;
 
 
 
-
+
 Angular_momentum.(n_functions D) ;;
 - : int = 6
 
@@ -523,8 +523,8 @@ Angular_momentum.( zkey_array (Doublet (P,S)) );;
 
-
-

1.4 Arithmetic

+
+

1.4 Arithmetic

val ( + ) : t -> t -> t
@@ -532,7 +532,7 @@ Angular_momentum.( zkey_array (Doublet (P,S)) );;
 
-
+
 Angular_momentum.(D + P);;
 - : Angular_momentum.t = F
 
@@ -542,8 +542,8 @@ Angular_momentum.(F - P);;
 
-
-

1.5 Printers

+
+

1.5 Printers

Printers can print as a string (default) or as an integer. @@ -558,12 +558,12 @@ Printers can print as a string (default) or as an integer.

-
-

1.6 TODO Tests

+
+

1.6 TODO Tests

-
-

2 Bit string

+
+

2 Bit string

We define here a data type to handle bit strings efficiently. When @@ -575,8 +575,8 @@ bit string as a multi-precision integer.

-
-

2.1 Type

+
+

2.1 Type

type t
@@ -585,8 +585,8 @@ bit string as a multi-precision integer.
 
-
-

2.2 General implementation

+
+

2.2 General implementation

val of_int : int -> t
@@ -735,13 +735,13 @@ bit string as a multi-precision integer.
 
 
 
-
+
 Bitstring.of_int 15;;
 - : Bitstring.t =
 ++++------------------------------------------------------------
 
-
+
 Bitstring.(shift_left (of_int 15) 2);;
 - : Bitstring.t =
 --++++----------------------------------------------------------
@@ -761,7 +761,7 @@ Bitstring.(testbit (of_int 15) 4);;
 - : bool = false
 
-
+
 Bitstring.(logor (of_int 15) (of_int 73));;
 - : Bitstring.t =
 ++++--+---------------------------------------------------------
@@ -776,7 +776,7 @@ Bitstring.(logxor (of_int 15) (of_int 73));;
 
-
+
 Bitstring.(plus_one (of_int 15));;
 - : Bitstring.t =
 ----+-----------------------------------------------------------
@@ -787,7 +787,7 @@ Bitstring.(minus_one (of_int 15));;
 
-
+
 Bitstring.(trailing_zeros (of_int 12));;
 - : int = 2
 
@@ -798,12 +798,12 @@ Bitstring.(popcount (of_int 15));;
 - : int = 4
 
-
+
 Bitstring.(to_list (of_int 45));;
 - : int list = [1; 3; 4; 6]
 
-
+
    Bitstring.permutations 2 4;;
 - : Bitstring.t list =
 [++--------------------------------------------------------------;
@@ -816,8 +816,8 @@ Bitstring.(to_list (of_int 45));;
 
-
-

2.3 Printers

+
+

2.3 Printers

val pp : Format.formatter -> t -> unit
@@ -827,13 +827,13 @@ Bitstring.(to_list (of_int 45));;
 
-
-

3 Charge

+
+

3 Charge

-
-

3.1 Type

+
+

3.1 Type

type t
@@ -846,8 +846,8 @@ This type should be used for all charges in the program (electrons, nuclei, 
 
-
-

3.2 Conversions

+
+

3.2 Conversions

val of_float : float -> t
@@ -863,8 +863,8 @@ This type should be used for all charges in the program (electrons, nuclei, 
 
-
-

3.3 Simple operations

+
+

3.3 Simple operations

val ( + ) : t -> t -> t
@@ -877,8 +877,8 @@ This type should be used for all charges in the program (electrons, nuclei, 
 
-
-

3.4 Printers

+
+

3.4 Printers

val pp : Format.formatter -> t -> unit
@@ -888,8 +888,8 @@ This type should be used for all charges in the program (electrons, nuclei, 
 
-
-

4 Command line

+
+

4 Command line

This module is a wrapper around the Getopt library and helps to @@ -945,11 +945,11 @@ Then, define what to do with the arguments:

-
-

4.1 Type

+
+

4.1 Type

-
type short_opt     = char
+
type short_opt     = char
 type long_opt      = string
 type optional      = Mandatory | Optional
 type documentation = string
@@ -980,8 +980,8 @@ don't (ls -l) and for some arguments the argument is optional
 
-
-

4.2 Mutable attributes

+
+

4.2 Mutable attributes

All the options are stored in the hash table dict where the key @@ -1011,8 +1011,8 @@ Function to create an anonymous argument.

-
-

4.3 Query functions

+
+

4.3 Query functions

val get       : long_opt -> string option
@@ -1050,8 +1050,8 @@ Function to create an anonymous argument.
 
-
-

4.4 Specification

+
+

4.4 Specification

val set_specs : description list -> unit
@@ -1066,16 +1066,16 @@ Sets the specifications of the current program from a list of
 
-
-

5 Constants

+
+

5 Constants

All constants used in the program.

-
-

5.1 Thresholds

+
+

5.1 Thresholds

val epsilon          : float
@@ -1106,8 +1106,8 @@ All constants used in the program.
 
-
-

5.2 Mathematical constants

+
+

5.2 Mathematical constants

val pi             : float
@@ -1162,8 +1162,8 @@ All constants used in the program.
 
-
-

5.3 Physical constants

+
+

5.3 Physical constants

val a0       : float
@@ -1207,8 +1207,8 @@ All constants used in the program.
 
-
-

6 Coordinate

+
+

6 Coordinate

Coordinates in 3D space. @@ -1221,11 +1221,11 @@ module.

-
-

6.1 Type

+
+

6.1 Type

-
type bohr 
+
type bohr 
 type angstrom 
 
 type xyz = {
@@ -1244,8 +1244,8 @@ module.
 
-
-

6.2 Creation

+
+

6.2 Creation

val make          : 'a point -> t
@@ -1282,8 +1282,8 @@ module.
 
-
-

6.3 Conversion

+
+

6.3 Conversion

val bohr_to_angstrom : bohr point -> angstrom point
@@ -1314,8 +1314,8 @@ module.
 
-
-

6.4 Vector operations

+
+

6.4 Vector operations

val neg    : t -> t
@@ -1374,7 +1374,7 @@ module.
 
 
 
-
+
 Coordinate.neg { x=1. ; y=2. ; z=3. } ;;
 - : Coordinate.t =  -1.0000  -2.0000  -3.0000
 
@@ -1400,8 +1400,8 @@ Coordinate.(
 
-
-

6.5 Printers

+
+

6.5 Printers

val pp : Format.formatter -> t -> unit
@@ -1417,13 +1417,13 @@ Coordinates can be printed in bohr or angstrom.
 
-
-

7 Non-negative float

+
+

7 Non-negative float

-
-

7.1 Type

+
+

7.1 Type

type t = private float
@@ -1432,8 +1432,8 @@ Coordinates can be printed in bohr or angstrom.
 
-
-

7.2 Conversions

+
+

7.2 Conversions

val of_float        : float -> t
@@ -1453,16 +1453,16 @@ The unsafe variant doesn't do this check.
 
-
-

8 Powers

+
+

8 Powers

Contains powers of x, y and z describing the polynomials in atomic basis sets.

-
-

8.1 Type

+
+

8.1 Type

type t = private {
@@ -1480,8 +1480,8 @@ Contains powers of x, y and z describing the polynomials in atomic basis sets.
 
-
-

8.2 Conversions

+
+

8.2 Conversions

val of_int_tuple : int * int * int -> t
@@ -1489,7 +1489,7 @@ Contains powers of x, y and z describing the polynomials in atomic basis sets.
 
-
+
 Powers.of_int_tuple (2,3,1);;
 - : Powers.t = x^2 + y^3 + z^1
 
@@ -1499,8 +1499,8 @@ Powers.(to_int_tuple (of_int_tuple (2,3,1)));;
 
-
-

8.3 Operations

+
+

8.3 Operations

val get  : Coordinate.axis -> t -> int
@@ -1535,7 +1535,7 @@ Powers.(to_int_tuple (of_int_tuple (2,3,1)));;
 
 
 
-
+
 Powers.get Coordinate.Y (Powers.of_int_tuple (2,3,1));;
 - : int = 3
 
@@ -1549,8 +1549,8 @@ Powers.decr Coordinate.Y (Powers.of_int_tuple (2,3,1));;
 
-
-

8.4 Printers

+
+

8.4 Printers

val pp : Format.formatter -> t -> unit
@@ -1560,8 +1560,8 @@ Powers.decr Coordinate.Y (Powers.of_int_tuple (2,3,1));;
 
-
-

9 QCaml

+
+

9 QCaml

QCaml-specific parameters @@ -1596,8 +1596,8 @@ QCaml-specific parameters

-
-

10 Range

+
+

10 Range

A range is a sorted list of integers in an interval. @@ -1612,8 +1612,8 @@ A range is a sorted list of integers in an interval.

-
-

10.1 Type

+
+

10.1 Type

type t
@@ -1622,8 +1622,8 @@ A range is a sorted list of integers in an interval.
 
-
-

10.2 Conversion

+
+

10.2 Conversion

val of_string   : string -> t
@@ -1634,8 +1634,8 @@ A range is a sorted list of integers in an interval.
 
-
-

10.3 Printers

+
+

10.3 Printers

val pp : Format.formatter -> t -> unit
@@ -1645,16 +1645,16 @@ A range is a sorted list of integers in an interval.
 
-
-

11 Spin

+
+

11 Spin

Electron spin

-
-

11.1 Type

+
+

11.1 Type

type t = Alfa | Beta
@@ -1669,8 +1669,8 @@ letters as Beta, so the alignment of the code is nicer.
 
-
-

11.2 Functions

+
+

11.2 Functions

val other : t -> t
@@ -1683,8 +1683,8 @@ Returns the opposite spin
 
-
-

11.3 Printers

+
+

11.3 Printers

val pp : Format.formatter -> t -> unit
@@ -1694,8 +1694,8 @@ Returns the opposite spin
 
-
-

12 Util

+
+

12 Util

Utility functions. @@ -1703,8 +1703,8 @@ Utility functions.

-
-

12.1 External C functions

+
+

12.1 External C functions

@@ -1748,8 +1748,8 @@ Utility functions.
-
-

12.1.1 Erf

+
+

12.1.1 Erf

external erf_float : float -> float = "erf_float_bytecode" "erf_float" [@@unboxed] [@@noalloc]
@@ -1758,8 +1758,8 @@ Utility functions.
 
-
-

12.1.2 Erfc

+
+

12.1.2 Erfc

external erfc_float : float -> float = "erfc_float_bytecode" "erfc_float" [@@unboxed] [@@noalloc]
@@ -1768,8 +1768,8 @@ Utility functions.
 
-
-

12.1.3 Gamma

+
+

12.1.3 Gamma

external gamma_float : float -> float = "gamma_float_bytecode" "gamma_float" [@@unboxed] [@@noalloc]
@@ -1778,8 +1778,8 @@ Utility functions.
 
-
-

12.1.4 Popcnt

+
+

12.1.4 Popcnt

val popcnt : int64 -> int
@@ -1788,8 +1788,8 @@ Utility functions.
 
-
-

12.1.5 Trailz

+
+

12.1.5 Trailz

val trailz : int64 -> int
@@ -1798,8 +1798,8 @@ Utility functions.
 
-
-

12.1.6 Leadz

+
+

12.1.6 Leadz

val leadz : int64 -> int
@@ -1808,13 +1808,13 @@ Utility functions.
 
-
-

12.1.7 Test

+
+

12.1.7 Test

-
-

12.2 General functions

+
+

12.2 General functions

val fact : int -> float
@@ -1887,8 +1887,8 @@ Utility functions.
 
-
-

12.3 Functions related to the Boys function

+
+

12.3 Functions related to the Boys function

val incomplete_gamma : alpha:float -> float -> float
@@ -1945,8 +1945,8 @@ where \(\gamma\) is the incomplete gamma function.
 
-
-

12.4 List functions

+
+

12.4 List functions

val list_some  : 'a option list -> 'a list
@@ -1983,8 +1983,8 @@ where \(\gamma\) is the incomplete gamma function.
 
-
-

12.5 Array functions

+
+

12.5 Array functions

val array_range   : int -> int -> int array
@@ -2021,8 +2021,8 @@ where \(\gamma\) is the incomplete gamma function.
 
-
-

12.6 Stream functions

+
+

12.6 Stream functions

val stream_range   : int -> int -> int Stream.t
@@ -2059,8 +2059,8 @@ where \(\gamma\) is the incomplete gamma function.
 
-
-

12.7 Printers

+
+

12.7 Printers

val pp_float_array_size   : Format.formatter -> float array -> unit
@@ -2107,7 +2107,7 @@ where \(\gamma\) is the incomplete gamma function.
 
 
 
-
+
 pp_float_array_size:
 [ 6:   1.000000   1.732051   1.732051   1.000000   1.732051   1.000000 ]
 
@@ -2130,8 +2130,8 @@ pp_bitstring 14:
 
-
-

13 Zkey

+
+

13 Zkey

Encodes the powers of x, y, z in a compact form, suitable for being @@ -2144,7 +2144,7 @@ The small integers x, y and z are stored compactly in this 126-bits space:

-
+
                                 Left                                                                Right
  3 [--------------------------------------------------------------]       [------------------|---------------|---------------|---------------]
                                                                                                      x               y               z        
@@ -2165,8 +2165,8 @@ The values of x,y,z should be positive and should not exceed 32767 for
 

-
-

13.1 Types

+
+

13.1 Types

type t 
@@ -2182,8 +2182,8 @@ The values of x,y,z should be positive and should not exceed 32767 for
 
-
-

13.2 Conversions

+
+

13.2 Conversions

val of_powers_three  : Powers.t -> t
@@ -2262,8 +2262,8 @@ The values of x,y,z should be positive and should not exceed 32767 for
 
-
-

13.3 Functions for hash tables

+
+

13.3 Functions for hash tables

val hash    : t -> int
@@ -2300,8 +2300,8 @@ The values of x,y,z should be positive and should not exceed 32767 for
 
-
-

13.4 Printers

+
+

13.4 Printers

val pp : Format.formatter -> t -> unit
@@ -2311,16 +2311,16 @@ The values of x,y,z should be positive and should not exceed 32767 for
 
-
-

14 Zmap

+
+

14 Zmap

A hash table where the keys are Zkey

-
-

14.1 Type

+
+

14.1 Type

include module type of Hashtbl.Make(Zkey)
@@ -2332,7 +2332,7 @@ A hash table where the keys are Zkey
 

Author: Anthony Scemama

-

Created: 2021-01-04 Mon 09:11

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/gaussian.html b/docs/gaussian.html index 5c7ae72..99de80f 100644 --- a/docs/gaussian.html +++ b/docs/gaussian.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Gaussian @@ -226,13 +226,13 @@

Gaussian

-
"Gaussian basis sets"
+
"Gaussian basis sets"
 

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 17:56

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/gaussian_integrals.html b/docs/gaussian_integrals.html index 41bc36f..b19959d 100644 --- a/docs/gaussian_integrals.html +++ b/docs/gaussian_integrals.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Gaussian integrals @@ -226,13 +226,13 @@

Gaussian integrals

-
"Integrals on the Gaussian basis sets"
+
"Integrals on the Gaussian basis sets"
 

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 17:56

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/index.html b/docs/index.html index 23a49f1..a0e3014 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + QCaml documentation @@ -229,7 +229,7 @@

Table of Contents

@@ -239,7 +239,7 @@ It is written using literate programming with org-mode.

-
+

chamo_bg.png

@@ -259,8 +259,8 @@ This loads all the sub-libraries provided with QCaml, and installs the pretty printers.

-
-

1 Documentation of Modules

+
+

1 Documentation of Modules

- Ao
@@ -282,7 +282,7 @@ the pretty printers.
 

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 18:54

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/linear_algebra.html b/docs/linear_algebra.html index 089e78c..3fe0f9c 100644 --- a/docs/linear_algebra.html +++ b/docs/linear_algebra.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Linear Algebra @@ -226,13 +226,13 @@

Linear Algebra

-
"Linear algebra utilities of QCaml libraries."
+
"Linear algebra utilities of QCaml libraries."
 

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 17:56

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/mo.html b/docs/mo.html index 083d029..cc5f9a5 100644 --- a/docs/mo.html +++ b/docs/mo.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Molecular orbitals @@ -229,36 +229,36 @@

Table of Contents

-
"Molecular orbitals"
+
"Molecular orbitals"
 
-
-

1 Frozen core

+
+

1 Frozen core

Defines how the core electrons are frozen, for each atom.

-
-

1.1 Type

+
+

1.1 Type

-
type kind =
+
type kind =
   | All_electron
   | Small
   | Large
@@ -272,8 +272,8 @@ Defines how the core electrons are frozen, for each atom.
 
-
-

1.2 Creation

+
+

1.2 Creation

val make : kind -> Particles.Nuclei.t -> t
@@ -309,7 +309,7 @@ Defines how the core electrons are frozen, for each atom.
 
 
 
-
+
 let f = Frozen_core.(make Small nuclei) ;;
 val f : Frozen_core.t = [|0; 2; 2; 0|]
 
@@ -319,8 +319,8 @@ val f : Frozen_core.t = [|0; 2; 2; 0|]
 
-
-

1.3 Access

+
+

1.3 Access

val num_elec : t -> int
@@ -349,7 +349,7 @@ val f : Frozen_core.t = [|0; 2; 2; 0|]
 
 
 
-
+
 Frozen_core.num_elec f ;;
 - : int = 4
 
@@ -359,8 +359,8 @@ Frozen_core.num_mos f ;;
 
-
-

1.4 Printers

+
+

1.4 Printers

val pp : Format.formatter -> t -> unit
@@ -372,7 +372,7 @@ Frozen_core.num_mos f ;;
 

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 17:56

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/particles.html b/docs/particles.html index 76df1a5..cfbd923 100644 --- a/docs/particles.html +++ b/docs/particles.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Common @@ -251,75 +251,75 @@

Table of Contents

-
"Information relative to particles (electrons and nuclei)."
+
"Information relative to particles (electrons and nuclei)."
 
-
-

1 Electrons

+
+

1 Electrons

Data structure which contains the number of α and β electrons.

-
-

1.1 Type

+
+

1.1 Type

-
type t 
+
type t 
 
-
-

1.2 Creation

+
+

1.2 Creation

open Common
@@ -358,8 +358,8 @@ Data structure which contains the number of α and β electrons.
 
-
-

1.3 Access

+
+

1.3 Access

val charge       : t -> Charge.t
@@ -408,8 +408,8 @@ Data structure which contains the number of α and β electrons.
 
-
-

1.4 Printers

+
+

1.4 Printers

val pp : Format.formatter -> t -> unit
@@ -418,24 +418,24 @@ Data structure which contains the number of α and β electrons.
 
-
-

1.5 Tests

+
+

1.5 Tests

-
-

2 Element

+
+

2 Element

Chemical elements.

-
-

2.1 Type

+
+

2.1 Type

-
type t =
+
type t =
   |X
   |H                                                 |He
   |Li|Be                              |B |C |N |O |F |Ne
@@ -452,8 +452,8 @@ Chemical elements.
 
-
-

2.2 Conversion

+
+

2.2 Conversion

val of_string      : string -> t
@@ -514,7 +514,7 @@ Chemical elements.
 
 
 
-
+
 Element.of_string "Fe" ;;
 - : Element.t = Particles.Element.Fe
 
@@ -533,8 +533,8 @@ Element.(to_string Fe);;
 
-
-

2.3 Database information

+
+

2.3 Database information

val covalent_radius : t -> Non_negative_float.t
@@ -583,8 +583,8 @@ Element.(to_string Fe);;
 
-
-

2.4 Printers

+
+

2.4 Printers

val pp      : Format.formatter -> t -> unit
@@ -595,30 +595,30 @@ Element.(to_string Fe);;
 
-
-

3 Atomic mass

+
+

3 Atomic mass

Atomic mass, a non-negative float.

-
include module type of Common.Non_negative_float
+
include module type of Common.Non_negative_float
 
-
-

4 Nuclei

+
+

4 Nuclei

-
-

4.1 Type

+
+

4.1 Type

-
open Common
+
open Common
 
 type t = (Element.t * Coordinate.t) array
 
@@ -626,12 +626,12 @@ Atomic mass, a non-negative float.
-
-

4.2 xyz file lexer/parser

+
+

4.2 xyz file lexer/parser

-
-

4.2.1 Lexer

+
+

4.2.1 Lexer

nuclei_lexer.mll contains the description of the lexemes used in @@ -684,8 +684,8 @@ rule read_all = parse

-
-

4.2.2 Parser

+
+

4.2.2 Parser

xyz_parser.mly parses nuclear coordinates in xyz format. @@ -804,8 +804,8 @@ an xyz_file data structure.

-
-

4.3 Conversion

+
+

4.3 Conversion

val of_xyz_string : string -> t
@@ -864,8 +864,8 @@ an xyz_file data structure.
 
-
-

4.4 TODO Query

+
+

4.4 TODO Query

val formula    : t -> string
@@ -914,8 +914,8 @@ an xyz_file data structure.
 
-
-

4.5 Printers

+
+

4.5 Printers

val pp : Format.formatter -> t -> unit
@@ -924,31 +924,31 @@ an xyz_file data structure.
 
-
-

4.6 Tests

+
+

4.6 Tests

-
-

5 Z-matrix

+
+

5 Z-matrix

Z-matrix representation of nuclear coordinates.

-
-

5.1 Type

+
+

5.1 Type

-
type t 
+
type t 
 
-
-

5.2 Conversion

+
+

5.2 Conversion

val of_string      : string -> t
@@ -983,7 +983,7 @@ Z-matrix representation of nuclear coordinates.
 
 
 
-
+
 let zmt = Zmatrix.of_string "
  n
  n    1 nn
@@ -1028,8 +1028,8 @@ H -0.568803 -0.793910 1.726048"
 
-
-

5.3 Printers

+
+

5.3 Printers

val pp : Format.formatter -> t -> unit
@@ -1041,7 +1041,7 @@ H -0.568803 -0.793910 1.726048"
 

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 18:06

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/perturbation.html b/docs/perturbation.html index e316aa7..f1b45d9 100644 --- a/docs/perturbation.html +++ b/docs/perturbation.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Perturbation @@ -229,31 +229,31 @@

Table of Contents

-
"Perturbation theory"
+
"Perturbation theory"
 
-
-

1 MP2

+
+

1 MP2

-
-

1.1 Type

+
+

1.1 Type

type t
@@ -262,8 +262,8 @@
 
-
-

1.2 Creation

+
+

1.2 Creation

val make : frozen_core:Mo.Frozen_core.t -> Mo.Basis.t -> t
@@ -286,7 +286,7 @@
 
 
 
-
+
 let mp2 =
   Perturbation.Mp2.make ~frozen_core:(Mo.Frozen_core.(make Small nuclei)) mo_basis
   ;;
@@ -295,8 +295,8 @@ val mp2 : Perturbation.Mp2.t = E(MP2)=-0.185523
 
-
-

1.3 Access

+
+

1.3 Access

val energy      : t -> float
@@ -331,14 +331,14 @@ val mp2 : Perturbation.Mp2.t = E(MP2)=-0.185523
 
 
 
-
+
 
 
-
-

1.4 Printers

+
+

1.4 Printers

val pp : Format.formatter -> t -> unit
@@ -347,14 +347,14 @@ val mp2 : Perturbation.Mp2.t = E(MP2)=-0.185523
 
-
-

1.5 Tests

+
+

1.5 Tests

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 18:28

+

Created: 2021-01-04 Mon 23:32

Validate

diff --git a/docs/top.html b/docs/top.html index a434305..e9102a5 100644 --- a/docs/top.html +++ b/docs/top.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Top-level @@ -226,13 +226,13 @@

Top-level

-
"Installs pretty printers for top-level."
+
"Installs pretty printers for top-level."
 

Author: Anthony Scemama

-

Created: 2021-01-01 Fri 17:56

+

Created: 2021-01-04 Mon 23:37

Validate

diff --git a/top/lib/install_printers.ml b/top/lib/install_printers.ml index 0c0b448..e6b7720 100644 --- a/top/lib/install_printers.ml +++ b/top/lib/install_printers.ml @@ -1,6 +1,8 @@ (* [[file:~/QCaml/top/install_printers.org::*Intall%20printers][Intall printers:3]] *) let printers = [ + "Ao.Basis.pp" ; + "Ao.Basis_gaussian.pp" ; "Common.Angular_momentum.pp" ; "Common.Bitstring.pp" ; "Common.Charge.pp" ;