mirror of
https://gitlab.com/scemama/QCaml.git
synced 2024-09-20 16:44:07 +02:00
Added basis org
This commit is contained in:
parent
f55454899a
commit
d28be0df9f
@ -69,6 +69,7 @@ with open(dunetest,'w') as f:
|
|||||||
|
|
||||||
#+name: noimplementation
|
#+name: noimplementation
|
||||||
#+begin_src elisp
|
#+begin_src elisp
|
||||||
|
(modules_without_implementation ao_dim)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Extra C files
|
** Extra C files
|
||||||
|
223
ao/basis.org
Normal file
223
ao/basis.org
Normal 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
|
@ -1 +0,0 @@
|
|||||||
type t
|
|
@ -1 +1,7 @@
|
|||||||
|
(* Dimensions :noexports:
|
||||||
|
*
|
||||||
|
* #+NAME: types *)
|
||||||
|
|
||||||
|
(* [[file:~/QCaml/ao/basis.org::types][types]] *)
|
||||||
type t
|
type t
|
||||||
|
(* types ends here *)
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
open Linear_algebra
|
(* [[file:~/QCaml/ao/basis.org::*Type][Type:2]] *)
|
||||||
open Common
|
|
||||||
|
|
||||||
type t =
|
type t =
|
||||||
{ ao_basis : Basis_poly.t ;
|
{ ao_basis : Basis_poly.t ;
|
||||||
cartesian : bool
|
cartesian : bool
|
||||||
@ -8,6 +6,16 @@ type t =
|
|||||||
|
|
||||||
type ao = Ao_dim.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)
|
let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false)
|
||||||
~nuclei filename =
|
~nuclei filename =
|
||||||
match kind with
|
match kind with
|
||||||
@ -20,7 +28,27 @@ let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false)
|
|||||||
in
|
in
|
||||||
{ ao_basis ; cartesian }
|
{ ao_basis ; cartesian }
|
||||||
| _ -> failwith "of_nuclei_and_basis_filename needs to be called with `Gaussian"
|
| _ -> 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 () =
|
let not_implemented () =
|
||||||
Util.not_implemented "Only Gaussian is implemented"
|
Util.not_implemented "Only Gaussian is implemented"
|
||||||
|
|
||||||
@ -116,4 +144,12 @@ let values t point =
|
|||||||
| _ -> not_implemented ()
|
| _ -> not_implemented ()
|
||||||
end
|
end
|
||||||
|> Vector.relabel
|
|> 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 *)
|
||||||
|
@ -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 Common
|
||||||
open Particles
|
open Particles
|
||||||
open Operators
|
open Operators
|
||||||
open Linear_algebra
|
open Linear_algebra
|
||||||
|
(* types ends here *)
|
||||||
|
|
||||||
type t
|
(* Conversions *)
|
||||||
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 *)
|
|
||||||
|
|
||||||
|
|
||||||
|
(* [[file:~/QCaml/ao/basis.org::*Conversions][Conversions:1]] *)
|
||||||
(** {1 Creators} *)
|
|
||||||
|
|
||||||
val of_nuclei_and_basis_filename :
|
val of_nuclei_and_basis_filename :
|
||||||
?kind:[> `Gaussian ] -> ?operators:Operator.t list -> ?cartesian:bool ->
|
?kind:[> `Gaussian ] -> ?operators:Operator.t list -> ?cartesian:bool ->
|
||||||
nuclei:Nuclei.t -> string -> t
|
nuclei:Nuclei.t -> string -> t
|
||||||
(** Creates the data structure for the atomic orbitals basis from a molecule
|
(* Conversions:1 ends here *)
|
||||||
{Nuclei.t} and the name of the basis-set file *)
|
|
||||||
|
(* 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 *)
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
qcaml.gaussian_integrals
|
qcaml.gaussian_integrals
|
||||||
qcaml.operators
|
qcaml.operators
|
||||||
)
|
)
|
||||||
|
(modules_without_implementation ao_dim)
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -41,7 +41,20 @@ type axis = X | Y | Z
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src ocaml :tangle (eval ml) :exports none
|
#+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
|
#+end_src
|
||||||
|
|
||||||
** Creation
|
** Creation
|
||||||
@ -61,7 +74,7 @@ external make : 'a point -> t = "%identity"
|
|||||||
external make_angstrom : 'a point -> angstrom point = "%identity"
|
external make_angstrom : 'a point -> angstrom point = "%identity"
|
||||||
|
|
||||||
let zero =
|
let zero =
|
||||||
make { x = 0. ; y = 0. ; z = 0. }
|
make { x = 0. ; y = 0. ; z = 0. }
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Conversion
|
** Conversion
|
||||||
|
@ -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 } =
|
let get axis { x ; y ; z } =
|
||||||
match axis with
|
match axis with
|
||||||
| X -> x
|
| X -> x
|
||||||
|
@ -39,7 +39,7 @@ val angstrom_to_bohr : angstrom point -> bohr point
|
|||||||
(* Vector operations *)
|
(* 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 neg : t -> t
|
||||||
val get : axis -> bohr point -> float
|
val get : axis -> bohr point -> float
|
||||||
val dot : t -> t -> float
|
val dot : t -> t -> float
|
||||||
|
194
docs/ao.html
194
docs/ao.html
@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<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 http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Atomic Orbitals</title>
|
<title>Atomic Orbitals</title>
|
||||||
@ -225,14 +225,202 @@
|
|||||||
<body>
|
<body>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h1 class="title">Atomic Orbitals</h1>
|
<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   <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">
|
<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>
|
</pre>
|
||||||
</div>
|
</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   <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">:[></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">-></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">-></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">-></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">-></span> string <span class="org-tuareg-font-lock-operator">-></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">-></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">-></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">-></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">-></span> string <span class="org-tuareg-font-lock-operator">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></span> <span class="org-tuareg-font-lock-module">Coordinate.</span>t <span class="org-tuareg-font-lock-operator">-></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, …)</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">-></span> t <span class="org-tuareg-font-lock-operator">-></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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Anthony Scemama</p>
|
<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>
|
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
462
docs/common.html
462
docs/common.html
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<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 http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>QCaml documentation</title>
|
<title>QCaml documentation</title>
|
||||||
@ -229,7 +229,7 @@
|
|||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org010d4f6">1. Documentation of Modules</a></li>
|
<li><a href="#org1264f30">1. Documentation of Modules</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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.
|
It is written using literate programming with org-mode.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="org66c1967" class="figure">
|
||||||
|
<p><img src="./chamo_bg.png" alt="chamo_bg.png" />
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
To use it interactively in the top level or in a Jupyter or org-mode
|
To use it interactively in the top level or in a Jupyter or org-mode
|
||||||
notebook, use
|
notebook, use
|
||||||
@ -253,8 +259,8 @@ This loads all the sub-libraries provided with QCaml, and installs
|
|||||||
the pretty printers.
|
the pretty printers.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-org010d4f6" class="outline-2">
|
<div id="outline-container-org1264f30" class="outline-2">
|
||||||
<h2 id="org010d4f6"><span class="section-number-2">1</span> Documentation of Modules</h2>
|
<h2 id="org1264f30"><span class="section-number-2">1</span> Documentation of Modules</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-org">- <span class="org-org-link"><a href="./ao.html">Ao</a></span>
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Anthony Scemama</p>
|
<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>
|
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
Reference in New Issue
Block a user