Added basis org

This commit is contained in:
Anthony Scemama 2021-01-04 09:19:35 +01:00
parent f55454899a
commit d28be0df9f
13 changed files with 758 additions and 298 deletions

View File

@ -69,6 +69,7 @@ with open(dunetest,'w') as f:
#+name: noimplementation
#+begin_src elisp
(modules_without_implementation ao_dim)
#+end_src
** Extra C files

223
ao/basis.org Normal file
View File

@ -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
* Basis
:PROPERTIES:
:header-args: :noweb yes :comments both
:END:
Data structure for Atomic Orbitals.
** Dimensions :noexports:
#+NAME: types
#+begin_src ocaml :tangle lib/ao_dim.mli :exports none
type t
#+end_src
** Type
#+NAME: types
#+begin_src ocaml :tangle (eval mli)
type t
type ao = Ao_dim.t
open Common
open Particles
open Operators
open Linear_algebra
#+end_src
#+begin_src ocaml :tangle (eval ml) :exports none
type t =
{ ao_basis : Basis_poly.t ;
cartesian : bool
}
type ao = Ao_dim.t
open Linear_algebra
open Common
#+end_src
** Conversions
#+begin_src ocaml :tangle (eval mli)
val of_nuclei_and_basis_filename :
?kind:[> `Gaussian ] -> ?operators:Operator.t list -> ?cartesian:bool ->
nuclei:Nuclei.t -> string -> t
#+end_src
| ~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 |
#+begin_src ocaml :tangle (eval ml) :exports none
let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false)
~nuclei filename =
match kind with
| `Gaussian ->
let basis =
Gaussian.Basis.of_nuclei_and_basis_filename ~nuclei filename
in
let ao_basis =
Basis_poly.Gaussian (Basis_gaussian.make ~basis ?operators ~cartesian nuclei )
in
{ ao_basis ; cartesian }
| _ -> failwith "of_nuclei_and_basis_filename needs to be called with `Gaussian"
#+end_src
** Access
#+begin_src ocaml :tangle (eval mli)
val size : t -> int
val ao_basis : t -> Basis_poly.t
val overlap : t -> (ao,ao) Matrix.t
val multipole : t -> string -> (ao,ao) Matrix.t
val ortho : t -> (ao,'a) Matrix.t
val eN_ints : t -> (ao,ao) Matrix.t
val kin_ints : t -> (ao,ao) Matrix.t
val ee_ints : t -> ao Four_idx_storage.t
val ee_lr_ints : t -> ao Four_idx_storage.t
val f12_ints : t -> ao Four_idx_storage.t
val f12_over_r12_ints : t -> ao Four_idx_storage.t
val cartesian : t -> bool
val values : t -> Coordinate.t -> ao Vector.t
#+end_src
| ~size~ | Number of atomic orbitals in the AO basis set |
| ~ao_basis~ | One-electron basis set |
| ~overlap~ | Overlap matrix |
| ~multipole~ | Multipole matrices |
| ~ortho~ | Orthonormalization matrix of the overlap |
| ~eN_ints~ | Electron-nucleus potential integrals |
| ~kin_ints~ | Kinetic energy integrals |
| ~ee_ints~ | Electron-electron potential integrals |
| ~ee_lr_ints~ | Electron-electron long-range potential integrals |
| ~f12_ints~ | Electron-electron potential integrals |
| ~f12_over_r12_ints~ | Electron-electron potential integrals |
| ~cartesian~ | If true, use cartesian Gaussians (6d, 10f, ...) |
| ~values~ | Values of the AOs evaluated at a given point |
#+begin_src ocaml :tangle (eval ml) :exports none
let not_implemented () =
Util.not_implemented "Only Gaussian is implemented"
let ao_basis t = t.ao_basis
let size t =
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.size b
| _ -> not_implemented ()
let overlap t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.overlap b
| _ -> not_implemented ()
end
|> Matrix.relabel
let multipole t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b ->
let m = Basis_gaussian.multipole b in
fun s ->
Gaussian_integrals.Multipole.matrix m s
|> Matrix.relabel
| _ -> not_implemented ()
end
let ortho t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.ortho b
| _ -> not_implemented ()
end
|> Matrix.relabel
let eN_ints t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.eN_ints b
| _ -> not_implemented ()
end
|> Matrix.relabel
let kin_ints t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.kin_ints b
| _ -> not_implemented ()
end
|> Matrix.relabel
let ee_ints t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.ee_ints b
| _ -> not_implemented ()
end
|> Four_idx_storage.relabel
let ee_lr_ints t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.ee_lr_ints b
| _ -> not_implemented ()
end
|> Four_idx_storage.relabel
let f12_ints t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.f12_ints b
| _ -> not_implemented ()
end
|> Four_idx_storage.relabel
let f12_over_r12_ints t =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.f12_over_r12_ints b
| _ -> not_implemented ()
end
|> Four_idx_storage.relabel
let cartesian t = t.cartesian
let values t point =
begin
match t.ao_basis with
| Basis_poly.Gaussian b -> Basis_gaussian.values b point
| _ -> not_implemented ()
end
|> Vector.relabel
#+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 =
if t.cartesian then
Format.fprintf ppf "@[Basis (cartesian coord)@]"
else
Format.fprintf ppf "@[Basis (spherical coord)@]"
#+end_src
** Tests

View File

@ -1 +0,0 @@
type t

View File

@ -1 +1,7 @@
(* Dimensions :noexports:
*
* #+NAME: types *)
(* [[file:~/QCaml/ao/basis.org::types][types]] *)
type t
(* types ends here *)

View File

@ -1,6 +1,4 @@
open Linear_algebra
open Common
(* [[file:~/QCaml/ao/basis.org::*Type][Type:2]] *)
type t =
{ ao_basis : Basis_poly.t ;
cartesian : bool
@ -8,6 +6,16 @@ type t =
type ao = Ao_dim.t
open Linear_algebra
open Common
(* Type: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 | *)
(* [[file:~/QCaml/ao/basis.org::*Conversions][Conversions:2]] *)
let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false)
~nuclei filename =
match kind with
@ -20,7 +28,27 @@ let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false)
in
{ ao_basis ; cartesian }
| _ -> failwith "of_nuclei_and_basis_filename needs to be called with `Gaussian"
(* Conversions:2 ends here *)
(* | ~size~ | Number of atomic orbitals in the AO basis set |
* | ~ao_basis~ | One-electron basis set |
* | ~overlap~ | Overlap matrix |
* | ~multipole~ | Multipole matrices |
* | ~ortho~ | Orthonormalization matrix of the overlap |
* | ~eN_ints~ | Electron-nucleus potential integrals |
* | ~kin_ints~ | Kinetic energy integrals |
* | ~ee_ints~ | Electron-electron potential integrals |
* | ~ee_lr_ints~ | Electron-electron long-range potential integrals |
* | ~f12_ints~ | Electron-electron potential integrals |
* | ~f12_over_r12_ints~ | Electron-electron potential integrals |
* | ~cartesian~ | If true, use cartesian Gaussians (6d, 10f, ...) |
* | ~values~ | Values of the AOs evaluated at a given point | *)
(* [[file:~/QCaml/ao/basis.org::*Access][Access:2]] *)
let not_implemented () =
Util.not_implemented "Only Gaussian is implemented"
@ -116,4 +144,12 @@ let values t point =
| _ -> not_implemented ()
end
|> Vector.relabel
(* Access:2 ends here *)
(* [[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)@]"
(* Printers:2 ends here *)

View File

@ -1,60 +1,48 @@
(** Data structure for Atomic Orbitals. *)
(* Type
*
* #+NAME: types *)
(* [[file:~/QCaml/ao/basis.org::types][types]] *)
type t
type ao = Ao_dim.t
open Common
open Particles
open Operators
open Linear_algebra
(* types ends here *)
type t
type ao = Ao_dim.t
(** {1 Accessors} *)
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
(** Electron-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 *)
(* Conversions *)
(** {1 Creators} *)
(* [[file:~/QCaml/ao/basis.org::*Conversions][Conversions:1]] *)
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 *)
(* Conversions:1 ends here *)
(* Access *)
(* [[file:~/QCaml/ao/basis.org::*Access][Access:1]] *)
val size : t -> int
val ao_basis : t -> Basis_poly.t
val overlap : t -> (ao,ao) Matrix.t
val multipole : t -> string -> (ao,ao) Matrix.t
val ortho : t -> (ao,'a) Matrix.t
val eN_ints : t -> (ao,ao) Matrix.t
val kin_ints : t -> (ao,ao) Matrix.t
val ee_ints : t -> ao Four_idx_storage.t
val ee_lr_ints : t -> ao Four_idx_storage.t
val f12_ints : t -> ao Four_idx_storage.t
val f12_over_r12_ints : t -> ao Four_idx_storage.t
val cartesian : t -> bool
val values : t -> Coordinate.t -> ao Vector.t
(* Access:1 ends here *)
(* Printers *)
(* [[file:~/QCaml/ao/basis.org::*Printers][Printers:1]] *)
val pp : Format.formatter -> t -> unit
(* Printers:1 ends here *)

View File

@ -12,7 +12,7 @@
qcaml.gaussian_integrals
qcaml.operators
)
(modules_without_implementation ao_dim)
)

View File

@ -41,7 +41,20 @@ type axis = X | Y | Z
#+end_src
#+begin_src ocaml :tangle (eval ml) :exports none
<<types>>
type bohr
type angstrom
type xyz = {
x : float ;
y : float ;
z : float ;
}
type 'a point = xyz
type t = bohr point
type axis = X | Y | Z
#+end_src
** Creation
@ -61,7 +74,7 @@ external make : 'a point -> t = "%identity"
external make_angstrom : 'a point -> angstrom point = "%identity"
let zero =
make { x = 0. ; y = 0. ; z = 0. }
make { x = 0. ; y = 0. ; z = 0. }
#+end_src
** Conversion

View File

@ -86,7 +86,7 @@ let angstrom_to_bohr { x ; y ; z } =
(* [[file:~/QCaml/common/coordinate.org::*Vector operations][Vector operations:2]] *)
(* [[file:~/QCaml/common/coordinate.org::*Vector%20operations][Vector operations:2]] *)
let get axis { x ; y ; z } =
match axis with
| X -> x

View File

@ -39,7 +39,7 @@ val angstrom_to_bohr : angstrom point -> bohr point
(* Vector operations *)
(* [[file:~/QCaml/common/coordinate.org::*Vector operations][Vector operations:1]] *)
(* [[file:~/QCaml/common/coordinate.org::*Vector%20operations][Vector operations:1]] *)
val neg : t -> t
val get : axis -> bohr point -> float
val dot : t -> t -> float

View File

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2021-01-01 Fri 18:06 -->
<!-- 2021-01-04 Mon 09:19 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Atomic Orbitals</title>
@ -225,14 +225,202 @@
<body>
<div id="content">
<h1 class="title">Atomic Orbitals</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orge4f1e3b">1. Basis</a>
<ul>
<li><a href="#org82b7695">1.1. Dimensions&#xa0;&#xa0;&#xa0;<span class="tag"><span class="noexports">noexports</span></span></a></li>
<li><a href="#orge5723ea">1.2. Type</a></li>
<li><a href="#orge671c68">1.3. Conversions</a></li>
<li><a href="#orgb1f038a">1.4. Access</a></li>
<li><a href="#orgb9db803">1.5. Printers</a></li>
<li><a href="#org17d2579">1.6. Tests</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="org-src-container">
<pre class="src src-ocaml" id="org455f96f"><span class="org-string">"Atomic basis set"</span>
<pre class="src src-ocaml" id="orgc2b232f"><span class="org-string">"Atomic basis set"</span>
</pre>
</div>
<div id="outline-container-orge4f1e3b" class="outline-2">
<h2 id="orge4f1e3b"><span class="section-number-2">1</span> Basis</h2>
<div class="outline-text-2" id="text-1">
<p>
Data structure for Atomic Orbitals.
</p>
</div>
<div id="outline-container-org82b7695" class="outline-3">
<h3 id="org82b7695"><span class="section-number-3">1.1</span> Dimensions&#xa0;&#xa0;&#xa0;<span class="tag"><span class="noexports">noexports</span></span></h3>
</div>
<div id="outline-container-orge5723ea" class="outline-3">
<h3 id="orge5723ea"><span class="section-number-3">1.2</span> Type</h3>
<div class="outline-text-3" id="text-1-2">
<div class="org-src-container">
<pre class="src src-ocaml" id="org00d4d3c"><span class="org-tuareg-font-lock-governing">type</span> <span class="org-type">t</span>
<span class="org-tuareg-font-lock-governing">type</span> <span class="org-type">ao</span> <span class="org-tuareg-font-lock-operator">=</span> <span class="org-tuareg-font-lock-module">Ao_dim.</span>t
<span class="org-tuareg-font-lock-governing">open </span><span class="org-tuareg-font-lock-module">Common</span>
<span class="org-tuareg-font-lock-governing">open </span><span class="org-tuareg-font-lock-module">Particles</span>
<span class="org-tuareg-font-lock-governing">open </span><span class="org-tuareg-font-lock-module">Operators</span>
<span class="org-tuareg-font-lock-governing">open </span><span class="org-tuareg-font-lock-module">Linear_algebra</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orge671c68" class="outline-3">
<h3 id="orge671c68"><span class="section-number-3">1.3</span> Conversions</h3>
<div class="outline-text-3" id="text-1-3">
<div class="org-src-container">
<pre class="src src-ocaml"><span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">of_nuclei_and_basis_filename</span> <span class="org-tuareg-font-lock-operator">:</span>
<span class="org-tuareg-font-lock-label">?kind</span><span class="org-tuareg-font-lock-operator">:[&gt;</span> <span class="org-tuareg-font-lock-constructor">`Gaussian</span> <span class="org-tuareg-font-lock-operator">]</span> <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-label">?operators</span><span class="org-tuareg-font-lock-operator">:</span><span class="org-tuareg-font-lock-module">Operator.</span>t list <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-label">?cartesian</span><span class="org-tuareg-font-lock-operator">:</span>bool <span class="org-tuareg-font-lock-operator">-&gt;</span>
<span class="org-tuareg-font-lock-label">nuclei</span><span class="org-tuareg-font-lock-operator">:</span><span class="org-tuareg-font-lock-module">Nuclei.</span>t <span class="org-tuareg-font-lock-operator">-&gt;</span> string <span class="org-tuareg-font-lock-operator">-&gt;</span> t
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<tbody>
<tr>
<td class="org-left"><code>of_nuclei_and_basis_filename</code></td>
<td class="org-left">Creates the data structure for the atomic orbitals basis from a molecule <code>Nuclei.t</code> and the name of the basis-set file</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orgb1f038a" class="outline-3">
<h3 id="orgb1f038a"><span class="section-number-3">1.4</span> Access</h3>
<div class="outline-text-3" id="text-1-4">
<div class="org-src-container">
<pre class="src src-ocaml"><span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">size</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> int
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">ao_basis</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-module">Basis_poly.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">overlap</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-operator">(</span>ao<span class="org-tuareg-font-lock-operator">,</span>ao<span class="org-tuareg-font-lock-operator">)</span> <span class="org-tuareg-font-lock-module">Matrix.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">multipole</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> string <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-operator">(</span>ao<span class="org-tuareg-font-lock-operator">,</span>ao<span class="org-tuareg-font-lock-operator">)</span> <span class="org-tuareg-font-lock-module">Matrix.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">ortho</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-operator">(</span>ao<span class="org-tuareg-font-lock-operator">,</span>'a<span class="org-tuareg-font-lock-operator">)</span> <span class="org-tuareg-font-lock-module">Matrix.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">eN_ints</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-operator">(</span>ao<span class="org-tuareg-font-lock-operator">,</span>ao<span class="org-tuareg-font-lock-operator">)</span> <span class="org-tuareg-font-lock-module">Matrix.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">kin_ints</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-operator">(</span>ao<span class="org-tuareg-font-lock-operator">,</span>ao<span class="org-tuareg-font-lock-operator">)</span> <span class="org-tuareg-font-lock-module">Matrix.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">ee_ints</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> ao <span class="org-tuareg-font-lock-module">Four_idx_storage.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">ee_lr_ints</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> ao <span class="org-tuareg-font-lock-module">Four_idx_storage.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">f12_ints</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> ao <span class="org-tuareg-font-lock-module">Four_idx_storage.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">f12_over_r12_ints</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> ao <span class="org-tuareg-font-lock-module">Four_idx_storage.</span>t
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">cartesian</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> bool
<span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">values</span> <span class="org-tuareg-font-lock-operator">:</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> <span class="org-tuareg-font-lock-module">Coordinate.</span>t <span class="org-tuareg-font-lock-operator">-&gt;</span> ao <span class="org-tuareg-font-lock-module">Vector.</span>t
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<tbody>
<tr>
<td class="org-left"><code>size</code></td>
<td class="org-left">Number of atomic orbitals in the AO basis set</td>
</tr>
<tr>
<td class="org-left"><code>ao_basis</code></td>
<td class="org-left">One-electron basis set</td>
</tr>
<tr>
<td class="org-left"><code>overlap</code></td>
<td class="org-left">Overlap matrix</td>
</tr>
<tr>
<td class="org-left"><code>multipole</code></td>
<td class="org-left">Multipole matrices</td>
</tr>
<tr>
<td class="org-left"><code>ortho</code></td>
<td class="org-left">Orthonormalization matrix of the overlap</td>
</tr>
<tr>
<td class="org-left"><code>eN_ints</code></td>
<td class="org-left">Electron-nucleus potential integrals</td>
</tr>
<tr>
<td class="org-left"><code>kin_ints</code></td>
<td class="org-left">Kinetic energy integrals</td>
</tr>
<tr>
<td class="org-left"><code>ee_ints</code></td>
<td class="org-left">Electron-electron potential integrals</td>
</tr>
<tr>
<td class="org-left"><code>ee_lr_ints</code></td>
<td class="org-left">Electron-electron long-range potential integrals</td>
</tr>
<tr>
<td class="org-left"><code>f12_ints</code></td>
<td class="org-left">Electron-electron potential integrals</td>
</tr>
<tr>
<td class="org-left"><code>f12_over_r12_ints</code></td>
<td class="org-left">Electron-electron potential integrals</td>
</tr>
<tr>
<td class="org-left"><code>cartesian</code></td>
<td class="org-left">If true, use cartesian Gaussians (6d, 10f, &#x2026;)</td>
</tr>
<tr>
<td class="org-left"><code>values</code></td>
<td class="org-left">Values of the AOs evaluated at a given point</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orgb9db803" class="outline-3">
<h3 id="orgb9db803"><span class="section-number-3">1.5</span> Printers</h3>
<div class="outline-text-3" id="text-1-5">
<div class="org-src-container">
<pre class="src src-ocaml"><span class="org-tuareg-font-lock-governing">val</span> <span class="org-function-name">pp</span> <span class="org-tuareg-font-lock-operator">:</span> <span class="org-tuareg-font-lock-module">Format.</span>formatter <span class="org-tuareg-font-lock-operator">-&gt;</span> t <span class="org-tuareg-font-lock-operator">-&gt;</span> unit
</pre>
</div>
</div>
</div>
<div id="outline-container-org17d2579" class="outline-3">
<h3 id="org17d2579"><span class="section-number-3">1.6</span> Tests</h3>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Anthony Scemama</p>
<p class="date">Created: 2021-01-01 Fri 18:06</p>
<p class="date">Created: 2021-01-04 Mon 09:19</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2021-01-01 Fri 18:35 -->
<!-- 2021-01-01 Fri 18:54 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>QCaml documentation</title>
@ -229,7 +229,7 @@
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org010d4f6">1. Documentation of Modules</a></li>
<li><a href="#org1264f30">1. Documentation of Modules</a></li>
</ul>
</div>
</div>
@ -238,6 +238,12 @@ QCaml is an OCaml library for writing quantum chemistry codes.
It is written using literate programming with org-mode.
</p>
<div id="org66c1967" class="figure">
<p><img src="./chamo_bg.png" alt="chamo_bg.png" />
</p>
</div>
<p>
To use it interactively in the top level or in a Jupyter or org-mode
notebook, use
@ -253,8 +259,8 @@ This loads all the sub-libraries provided with QCaml, and installs
the pretty printers.
</p>
<div id="outline-container-org010d4f6" class="outline-2">
<h2 id="org010d4f6"><span class="section-number-2">1</span> Documentation of Modules</h2>
<div id="outline-container-org1264f30" class="outline-2">
<h2 id="org1264f30"><span class="section-number-2">1</span> Documentation of Modules</h2>
<div class="outline-text-2" id="text-1">
<div class="org-src-container">
<pre class="src src-org">- <span class="org-org-link"><a href="./ao.html">Ao</a></span>
@ -276,7 +282,7 @@ the pretty printers.
</div>
<div id="postamble" class="status">
<p class="author">Author: Anthony Scemama</p>
<p class="date">Created: 2021-01-01 Fri 18:35</p>
<p class="date">Created: 2021-01-01 Fri 18:54</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>