diff --git a/DevInstructions.org b/DevInstructions.org new file mode 100644 index 0000000..8663958 --- /dev/null +++ b/DevInstructions.org @@ -0,0 +1,20 @@ +#+TITLE: Developper's instructions + +* General + +The developper writes org-mode files, and the OCaml files are produced +by running the ~make~ command. Then, the OCaml files are compiled +using ~dune~. + +In each directory, the =README.org= file is the entry point. It +contains the script to generate the dune files, which should be +created by executing ~Ctrl-C Ctrl-C~ in the appropriate code block. + +If necessary, some pure OCaml files can be added in the =lib= +directory. + +* Basis + +- =Basis_poly= is a polymorphic basis +- =Basis_gaussian= contains the basis and integrals +- =Gaussian.Basis= is the actual Gaussian basis diff --git a/README.md b/README.md index c000cf8..708ba14 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,6 @@ To use the Intel MKL library: ```bash export LACAML_LIBS="-L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_rt -lpthread -lm -ldl" opam install --assume-depexts lacaml - - -odoc-ltxhtml allows to embed equations in the documentation generated by Ocamldoc. -Download the source code [here](https://github.com/scemama/odoc-ltxhtml). - -```bash -git clone https://github.com/scemama/odoc-ltxhtml -cd odoc-ltxhtml -make install ``` How to build the project @@ -42,7 +33,7 @@ How to build the project Run `make` to compile the libraries and executables that are meant to be installed. ``` -$ make +$ make -j ``` How to run tests diff --git a/ao/README.org b/ao/README.org index 2fb54c6..13a5d1b 100644 --- a/ao/README.org +++ b/ao/README.org @@ -50,6 +50,7 @@ with open(dunetest,'w') as f: (synopsis "Test for {name} library") (libraries alcotest + trexio qcaml.{name} ) ) diff --git a/ao/basis.org b/ao/basis.org index 3ea83fc..01a3a57 100644 --- a/ao/basis.org +++ b/ao/basis.org @@ -7,7 +7,7 @@ (setq ml (concat lib name ".ml")) (setq test-ml (concat testdir name ".ml")) (org-babel-tangle) -#+end_src +#+end_src * Basis :PROPERTIES: @@ -15,7 +15,7 @@ :END: Data structure for Atomic Orbitals. - + ** Dimensions :noexport: #+begin_src ocaml :tangle lib/ao_dim.mli :exports none @@ -41,7 +41,7 @@ type t = <<<~Basis.t~>>> #+begin_src ocaml :tangle (eval mli) type t -type ao = Ao_dim.t +type ao = Ao_dim.t open Common open Particles @@ -58,7 +58,7 @@ type t = type ao = Ao_dim.t open Linear_algebra -open Common +open Common #+end_src ** Conversions @@ -87,8 +87,11 @@ val of_nuclei_and_basis_filename : 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 not_implemented () = + Util.not_implemented "Only Gaussian is implemented" + let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false) ~nuclei filename = match kind with @@ -96,14 +99,13 @@ let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false) let basis = Gaussian.Basis.of_nuclei_and_basis_filename ~nuclei filename in - let ao_basis = + 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" + | _ -> not_implemented () #+end_src - ** Access #+begin_src ocaml :tangle (eval mli) @@ -140,12 +142,9 @@ val values : t -> Coordinate.t -> ao Vector.t #+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 = + +let size t = match t.ao_basis with | Basis_poly.Gaussian b -> Basis_gaussian.size b | _ -> not_implemented () @@ -157,7 +156,7 @@ let overlap t = | _ -> not_implemented () end |> Matrix.relabel - + let multipole t = begin match t.ao_basis with @@ -168,7 +167,7 @@ let multipole t = |> Matrix.relabel | _ -> not_implemented () end - + let ortho t = begin match t.ao_basis with @@ -176,7 +175,7 @@ let ortho t = | _ -> not_implemented () end |> Matrix.relabel - + let eN_ints t = begin match t.ao_basis with @@ -184,7 +183,7 @@ let eN_ints t = | _ -> not_implemented () end |> Matrix.relabel - + let kin_ints t = begin match t.ao_basis with @@ -192,7 +191,7 @@ let kin_ints t = | _ -> not_implemented () end |> Matrix.relabel - + let ee_ints t = begin match t.ao_basis with @@ -200,7 +199,7 @@ let ee_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let ee_lr_ints t = begin match t.ao_basis with @@ -208,7 +207,7 @@ let ee_lr_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let f12_ints t = begin match t.ao_basis with @@ -216,7 +215,7 @@ let f12_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let f12_over_r12_ints t = begin match t.ao_basis with @@ -224,9 +223,9 @@ let f12_over_r12_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let cartesian t = t.cartesian - + let values t point = begin @@ -235,9 +234,59 @@ let values t point = | _ -> not_implemented () end |> Vector.relabel - + #+end_src +** TREXIO + +*** Read + + #+begin_src ocaml :tangle (eval mli) +(* +val of_trexio : Trexio.trexio_file -> t +*) + #+end_src + + #+begin_src ocaml :tangle (eval ml) :exports none +(* +let of_trexio f = + + match Trexio.read_basis_type f with + | "G" + | "Gaussian" + | "gaussian" -> + let basis = + Gaussian.Basis.of_trexio f + in + let ao_basis = + Basis_poly.Gaussian (Basis_gaussian.make ~basis ?operators ~cartesian nuclei ) + in + { ao_basis ; cartesian } + | _ -> not_implemented () + +*) + #+end_src + +*** Write + + #+begin_src ocaml :tangle (eval mli) +(* +val to_trexio : Trexio.trexio_file -> t -> unit +*) + #+end_src + + #+begin_src ocaml :tangle (eval ml) :exports none +(* +let to_trexio f t = + + match t.ao_basis with + | Basis_poly.Gaussian b -> Gaussian.Basis.to_trexio f (Basis_gaussian.basis b)) + | _ -> not_implemented () + +*) + + #+end_src + ** Printers #+begin_src ocaml :tangle (eval mli) diff --git a/ao/basis_gaussian.org b/ao/basis_gaussian.org index 7e2f969..26bd7bc 100644 --- a/ao/basis_gaussian.org +++ b/ao/basis_gaussian.org @@ -7,14 +7,14 @@ (setq ml (concat lib name ".ml")) (setq test-ml (concat testdir name ".ml")) (org-babel-tangle) -#+end_src +#+end_src * Gaussian basis :PROPERTIES: :header-args: :noweb yes :comments both :END: - Data structure for Gaussian Atomic Orbitals: + Data structure for Gaussian Atomic Orbitals: \[ \chi_i(\mathbf{r}) = P_i(\mathbf{r}) \sum_k c_k \exp\left( -\alpha_k (\mathbf{r-R_A})^2 \right) @@ -34,7 +34,7 @@ open Linear_algebra open Gaussian_integrals open Operators -type t +type t #+end_src #+begin_src ocaml :tangle (eval ml) :exports none @@ -42,7 +42,7 @@ open Linear_algebra open Gaussian open Gaussian_integrals open Operators - + module Basis = Gaussian.Basis type t = @@ -108,7 +108,7 @@ let overlap t = Lazy.force t.overlap let size t = Matrix.dim1 (Lazy.force t.overlap) #+end_src -** Computation +** Computation #+begin_src ocaml :tangle (eval mli) val values : t -> @@ -145,7 +145,7 @@ val make : basis:Gaussian.Basis.t -> Nuclei.t -> t #+end_src - + Creates the data structure for atomic orbitals from a Gaussian basis and the molecular geometry ~Nuclei.t~. @@ -161,28 +161,28 @@ val b : Ao.Basis_gaussian.t = Gaussian Basis, spherical, 15 AOs #+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 + |> 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" @@ -198,11 +198,11 @@ let make ~basis ?(operators=[]) ?(cartesian=false) nuclei = 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 @@ -227,6 +227,6 @@ 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 + cart nao #+end_src diff --git a/ao/lib/basis.ml b/ao/lib/basis.ml index 3fddc66..8b4ad48 100644 --- a/ao/lib/basis.ml +++ b/ao/lib/basis.ml @@ -26,9 +26,12 @@ open Common * 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 not_implemented () = + Util.not_implemented "Only Gaussian is implemented" + let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false) ~nuclei filename = match kind with @@ -36,11 +39,11 @@ let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false) let basis = Gaussian.Basis.of_nuclei_and_basis_filename ~nuclei filename in - let ao_basis = + 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" + | _ -> not_implemented () (* Conversions:2 ends here *) @@ -64,12 +67,9 @@ let of_nuclei_and_basis_filename ?(kind=`Gaussian) ?operators ?(cartesian=false) (* [[file:~/QCaml/ao/basis.org::*Access][Access:2]] *) -let not_implemented () = - Util.not_implemented "Only Gaussian is implemented" - let ao_basis t = t.ao_basis - -let size t = + +let size t = match t.ao_basis with | Basis_poly.Gaussian b -> Basis_gaussian.size b | _ -> not_implemented () @@ -81,7 +81,7 @@ let overlap t = | _ -> not_implemented () end |> Matrix.relabel - + let multipole t = begin match t.ao_basis with @@ -92,7 +92,7 @@ let multipole t = |> Matrix.relabel | _ -> not_implemented () end - + let ortho t = begin match t.ao_basis with @@ -100,7 +100,7 @@ let ortho t = | _ -> not_implemented () end |> Matrix.relabel - + let eN_ints t = begin match t.ao_basis with @@ -108,7 +108,7 @@ let eN_ints t = | _ -> not_implemented () end |> Matrix.relabel - + let kin_ints t = begin match t.ao_basis with @@ -116,7 +116,7 @@ let kin_ints t = | _ -> not_implemented () end |> Matrix.relabel - + let ee_ints t = begin match t.ao_basis with @@ -124,7 +124,7 @@ let ee_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let ee_lr_ints t = begin match t.ao_basis with @@ -132,7 +132,7 @@ let ee_lr_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let f12_ints t = begin match t.ao_basis with @@ -140,7 +140,7 @@ let f12_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let f12_over_r12_ints t = begin match t.ao_basis with @@ -148,9 +148,9 @@ let f12_over_r12_ints t = | _ -> not_implemented () end |> Four_idx_storage.relabel - + let cartesian t = t.cartesian - + let values t point = begin @@ -161,6 +161,37 @@ let values t point = |> Vector.relabel (* Access:2 ends here *) +(* [[file:~/QCaml/ao/basis.org::*Read][Read:2]] *) +(* +let of_trexio f = + + match Trexio.read_basis_type f with + | "G" + | "Gaussian" + | "gaussian" -> + let basis = + Gaussian.Basis.of_trexio f + in + let ao_basis = + Basis_poly.Gaussian (Basis_gaussian.make ~basis ?operators ~cartesian nuclei ) + in + { ao_basis ; cartesian } + | _ -> not_implemented () + +*) +(* Read:2 ends here *) + +(* [[file:~/QCaml/ao/basis.org::*Write][Write:2]] *) +(* +let to_trexio f t = + + match t.ao_basis with + | Basis_poly.Gaussian b -> Gaussian.Basis.to_trexio f (Basis_gaussian.basis b)) + | _ -> not_implemented () + +*) +(* Write:2 ends here *) + (* [[file:~/QCaml/ao/basis.org::*Printers][Printers:2]] *) let pp ppf t = begin diff --git a/ao/lib/basis.mli b/ao/lib/basis.mli index 00a9815..ae2c37c 100644 --- a/ao/lib/basis.mli +++ b/ao/lib/basis.mli @@ -4,7 +4,7 @@ (* [[file:~/QCaml/ao/basis.org::*Types][Types:1]] *) type t -type ao = Ao_dim.t +type ao = Ao_dim.t open Common open Particles @@ -44,6 +44,24 @@ val cartesian : t -> bool val values : t -> Coordinate.t -> ao Vector.t (* Access:1 ends here *) +(* Read *) + + +(* [[file:~/QCaml/ao/basis.org::*Read][Read:1]] *) +(* +val of_trexio : Trexio.trexio_file -> t +*) +(* Read:1 ends here *) + +(* Write *) + + +(* [[file:~/QCaml/ao/basis.org::*Write][Write:1]] *) +(* +val to_trexio : Trexio.trexio_file -> t -> unit +*) +(* Write:1 ends here *) + (* Printers *) diff --git a/ao/lib/basis_gaussian.ml b/ao/lib/basis_gaussian.ml index ba9c551..8095509 100644 --- a/ao/lib/basis_gaussian.ml +++ b/ao/lib/basis_gaussian.ml @@ -3,7 +3,7 @@ open Linear_algebra open Gaussian open Gaussian_integrals open Operators - + module Basis = Gaussian.Basis type t = @@ -79,7 +79,7 @@ let values t point = (* Computation:2 ends here *) - + (* Creates the data structure for atomic orbitals from a Gaussian basis and the * molecular geometry ~Nuclei.t~. * @@ -96,28 +96,28 @@ let values t point = (* [[file:~/QCaml/ao/basis_gaussian.org::*Creation][Creation:2]] *) 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 + |> 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" @@ -133,11 +133,11 @@ let make ~basis ?(operators=[]) ?(cartesian=false) nuclei = 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 diff --git a/ao/lib/basis_gaussian.mli b/ao/lib/basis_gaussian.mli index 40ca913..7c177bd 100644 --- a/ao/lib/basis_gaussian.mli +++ b/ao/lib/basis_gaussian.mli @@ -31,7 +31,7 @@ val overlap : t -> Overlap.t val size : t -> int (* Access:1 ends here *) -(* Computation *) +(* Computation *) (* [[file:~/QCaml/ao/basis_gaussian.org::*Computation][Computation:1]] *) diff --git a/ao/lib/basis_poly.ml b/ao/lib/basis_poly.ml index 6085725..6b4b157 100644 --- a/ao/lib/basis_poly.ml +++ b/ao/lib/basis_poly.ml @@ -1,4 +1,4 @@ -(* [[file:~/QCaml/ao/basis.org::*Polymorphic%20types][Polymorphic types:2]] *) +(* [[file:~/QCaml/ao/basis.org::*Polymorphic types][Polymorphic types:2]] *) type t = | Unknown | Gaussian of Basis_gaussian.t diff --git a/ao/test/dune b/ao/test/dune index cec9ed7..f983879 100644 --- a/ao/test/dune +++ b/ao/test/dune @@ -4,6 +4,7 @@ (synopsis "Test for ao library") (libraries alcotest + trexio qcaml.ao ) ) diff --git a/docs/ao.html b/docs/ao.html index 3cadee8..aebe4ac 100644 --- a/docs/ao.html +++ b/docs/ao.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +This modules contains the data structures used to characterize the @@ -305,11 +311,11 @@ atomic basis set.
-Data structure for Gaussian Atomic Orbitals: +Data structure for Gaussian Atomic Orbitals:
@@ -324,27 +330,27 @@ nucleus \(A\).
-Gaussian_basis.t
+Gaussian_basis.t
open Common +open Common open Particles open Linear_algebra open Gaussian_integrals open Operators -type t +type t
val basis : t -> Gaussian.Basis.t @@ -435,8 +441,8 @@ nucleus \(A\).
val values : t -> @@ -463,8 +469,8 @@ nucleus \(A\).
val make : basis:Gaussian.Basis.t -> @@ -491,15 +497,15 @@ Defaults:Example:
-+let b = Ao.Basis_gaussian.make ~basis nuclei ;; val b : Ao.Basis_gaussian.t = Gaussian Basis, spherical, 15 AOs
val pp : Format.formatter -> t -> unit @@ -509,22 +515,22 @@ val b : Ao.Basis_gaussian.t = Gaussian Basis, spherical, 15 AOs
Data structure for Atomic Orbitals.
type t = +type t = | Unknown | Gaussian of Basis_gaussian.t@@ -532,15 +538,15 @@ Data structure for Atomic Orbitals.
type t -type ao = Ao_dim.t +type ao = Ao_dim.t open Common open Particles @@ -551,8 +557,8 @@ Data structure for Atomic Orbitals.
val of_nuclei_and_basis_filename : @@ -593,15 +599,15 @@ Defaults:Example:
-+let b = Ao.Basis.of_nuclei_and_basis_filename ~nuclei filename;; val b : Ao.Basis.t = Gaussian Basis, spherical, 15 AOs
val size : t -> int @@ -699,9 +705,38 @@ val b : Ao.Basis.t = Gaussian Basis, spherical, 15 AOs
(* +val of_trexio : Trexio.trexio_file -> t +*) ++
(* +val to_trexio : Trexio.trexio_file -> t -> unit +*) ++
val pp : Format.formatter -> t -> unit@@ -712,7 +747,7 @@ val b : Ao.Basis.t = Gaussian Basis, spherical, 15 AOs
Set of contracted Gaussians differing only by the powers of \(x\), \(y\) and \(z\), with a
@@ -339,8 +339,8 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale
)
-
type t
@@ -351,8 +351,8 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale
)
val ang_mom : t -> Angular_momentum.t @@ -429,14 +429,14 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale
) -+
val make : ?index:int -> Contracted_shell.t array -> t
@@ -468,8 +468,8 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale
)
val pp : Format.formatter -> t -> unit
@@ -479,8 +479,8 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale
)
An atomic shell pair couple is the cartesian product between two sets of functions, one @@ -496,8 +496,8 @@ acting on different electrons, since they will be coupled by a two-electron oper
type t @@ -508,8 +508,8 @@ acting on different electrons, since they will be coupled by a two-electron oper
val ang_mom : t -> Angular_momentum.t @@ -594,8 +594,8 @@ acting on different electrons, since they will be coupled by a two-electron oper
val make : ?cutoff:float -> Atomic_shell_pair.t -> Atomic_shell_pair.t -> t option @@ -621,14 +621,14 @@ Default cutoff is \(\epsilon\). -+
val pp : Format.formatter -> t -> unit @@ -638,8 +638,8 @@ Default cutoff is \(\epsilon\).
Data structure to represent pairs of atomic shells. The products of @@ -651,8 +651,8 @@ An atomic shell pair is an array of pairs of contracted shells.
type t @@ -663,8 +663,8 @@ An atomic shell pair is an array of pairs of contracted shells.
val atomic_shell_a : t -> Atomic_shell.t @@ -731,8 +731,8 @@ An atomic shell pair is an array of pairs of contracted shells.
val make : ?cutoff:float -> Atomic_shell.t -> Atomic_shell.t -> t option
@@ -765,8 +765,8 @@ If an atomic shell pair is not significant, sets the value to None
.
val pp : Format.formatter -> t -> unit
@@ -778,7 +778,7 @@ If an atomic shell pair is not significant, sets the value to None
.
Data structure which contains the number of α and β electrons.
type t +type t
open Common @@ -372,15 +378,15 @@ Data structure which contains the number of α and β electrons.- of_atoms
Creates the data relative to electrons for a molecular system described by +Nuclei.t
for a given total charge and spin multiplicity.Creates the data relative to electrons for a molecular system described by Nuclei.t
for a given total charge and spin multiplicity.
val charge : t -> Charge.t @@ -429,8 +435,8 @@ Data structure which contains the number of α and β electrons.
val pp : Format.formatter -> t -> unit @@ -439,24 +445,24 @@ Data structure which contains the number of α and β electrons.
Chemical elements.
type t = +type t = |X |H |He |Li|Be |B |C |N |O |F |Ne @@ -473,8 +479,8 @@ Chemical elements.
val of_string : string -> t @@ -535,7 +541,7 @@ Chemical elements. -+Element.of_string "Fe" ;; - : Element.t = Particles.Element.Fe @@ -554,8 +560,8 @@ Element.(to_string Fe);;
val covalent_radius : t -> Non_negative_float.t @@ -604,8 +610,8 @@ Element.(to_string Fe);;
val pp : Format.formatter -> t -> unit @@ -616,34 +622,34 @@ Element.(to_string Fe);;
Atomic mass, a non-negative float.
include module type of Common.Non_negative_float +include module type of Common.Non_negative_float
open Common +open Common type t = (Element.t * Coordinate.t) array@@ -651,12 +657,12 @@ Atomic mass, a non-negative float.
nuclei_lexer.mll
contains the description of the lexemes used in
@@ -709,11 +715,11 @@ rule read_all = parse
-xyz_parser.mly
parses nuclear coordinates in xyz format.
+xyz_parser.mly
parses nuclear coordinates in xyz format.
%{
@@ -829,8 +835,8 @@ an xyz_file
data structure.
val of_xyz_string : string -> t
@@ -843,9 +849,6 @@ an xyz_file
data structure.
val to_string : t -> string
val of_filename : string -> t
-
-val of_trexio : Trexio.trexio_file -> t
-val to_trexio : Trexio.trexio_file -> t -> unit
xyz_file
data structure.
of_filename
of_trexio
to_trexio
val formula : t -> string
@@ -952,9 +945,34 @@ an xyz_file
data structure.
val of_trexio : Trexio.trexio_file -> t ++
val to_trexio : Trexio.trexio_file -> t -> unit ++
val pp : Format.formatter -> t -> unit@@ -962,31 +980,31 @@ an
xyz_file
data structure.
Z-matrix representation of nuclear coordinates.
type t +type t
val of_string : string -> t @@ -1021,7 +1039,7 @@ Z-matrix representation of nuclear coordinates. -+let zmt = Zmatrix.of_string " n n 1 nn @@ -1066,8 +1084,8 @@ H -0.568803 -0.793910 1.726048"
val pp : Format.formatter -> t -> unit @@ -1079,7 +1097,7 @@ H -0.568803 -0.793910 1.726048"