diff --git a/common/lib/util.ml b/common/lib/util.ml index 4ec6cec..2a9bab8 100644 --- a/common/lib/util.ml +++ b/common/lib/util.ml @@ -314,47 +314,27 @@ let array_product a = -(* | ~stream_range~ | Creates a stream returning consecutive integers | - * | ~stream_to_list~ | Read a stream and put items in a list | - * | ~stream_fold~ | Apply a fold to the elements of the stream | *) +(* | ~seq_range~ | Creates a sequence returning consecutive integers | + * | ~seq_to_list~ | Read a sequence and put items in a list | + * | ~seq_fold~ | Apply a fold to the elements of the sequence | *) -(* [[file:~/QCaml/common/util.org::*Stream functions][Stream functions:2]] *) -let stream_range first last = - Stream.from (fun i -> - let result = i+first in - if result <= last then - Some result - else None - ) +(* [[file:~/QCaml/common/util.org::*Seq functions][Seq functions:2]] *) +let seq_range first last = + Seq.init (last-first) (fun i -> i+first) -let stream_to_list stream = - let rec aux accu = - let new_accu = - try - Some (Stream.next stream :: accu) - with Stream.Failure -> None - in - match new_accu with - | Some new_accu -> (aux [@tailcall]) new_accu - | None -> accu - in List.rev @@ aux [] - - -let stream_fold f init stream = - let rec aux accu = - let new_accu = - try - let element = Stream.next stream in - Some (f accu element) - with Stream.Failure -> None - in - match new_accu with - | Some new_accu -> (aux [@tailcall]) new_accu - | None -> accu +let seq_to_list seq = + let rec aux accu xs = + match Seq.uncons xs with + | Some (x, xs) -> aux (x::accu) xs + | None -> List.rev accu in - aux init -(* Stream functions:2 ends here *) + aux [] seq + + +let seq_fold f init seq = + Seq.fold_left f init seq +(* Seq functions:2 ends here *) diff --git a/common/lib/util.mli b/common/lib/util.mli index 609ccdd..2474edb 100644 --- a/common/lib/util.mli +++ b/common/lib/util.mli @@ -75,14 +75,14 @@ val array_sum : float array -> float val array_product : float array -> float (* Array functions:1 ends here *) -(* Stream functions *) +(* Seq functions *) -(* [[file:~/QCaml/common/util.org::*Stream functions][Stream functions:1]] *) -val stream_range : int -> int -> int Stream.t -val stream_to_list : 'a Stream.t -> 'a list -val stream_fold : ('a -> 'b -> 'a) -> 'a -> 'b Stream.t -> 'a -(* Stream functions:1 ends here *) +(* [[file:~/QCaml/common/util.org::*Seq functions][Seq functions:1]] *) +val seq_range : int -> int -> int Seq.t +val seq_to_list : 'a Seq.t -> 'a list +val seq_fold : ('a -> 'b -> 'a) -> 'a -> 'b Seq.t -> 'a +(* Seq functions:1 ends here *) (* Printers *) diff --git a/common/util.org b/common/util.org index 2f227d1..19b922a 100644 --- a/common/util.org +++ b/common/util.org @@ -566,54 +566,33 @@ let test_array () = () #+end_src -** Stream functions +** Seq functions #+begin_src ocaml :tangle (eval mli) -val stream_range : int -> int -> int Stream.t -val stream_to_list : 'a Stream.t -> 'a list -val stream_fold : ('a -> 'b -> 'a) -> 'a -> 'b Stream.t -> 'a +val seq_range : int -> int -> int Seq.t +val seq_to_list : 'a Seq.t -> 'a list +val seq_fold : ('a -> 'b -> 'a) -> 'a -> 'b Seq.t -> 'a #+end_src - | ~stream_range~ | Creates a stream returning consecutive integers | - | ~stream_to_list~ | Read a stream and put items in a list | - | ~stream_fold~ | Apply a fold to the elements of the stream | + | ~seq_range~ | Creates a sequence returning consecutive integers | + | ~seq_to_list~ | Read a sequence and put items in a list | + | ~seq_fold~ | Apply a fold to the elements of the sequence | #+begin_src ocaml :tangle (eval ml) :exports none -let stream_range first last = - Stream.from (fun i -> - let result = i+first in - if result <= last then - Some result - else None - ) +let seq_range first last = + Seq.init (last-first) (fun i -> i+first) -let stream_to_list stream = - let rec aux accu = - let new_accu = - try - Some (Stream.next stream :: accu) - with Stream.Failure -> None - in - match new_accu with - | Some new_accu -> (aux [@tailcall]) new_accu - | None -> accu - in List.rev @@ aux [] - - -let stream_fold f init stream = - let rec aux accu = - let new_accu = - try - let element = Stream.next stream in - Some (f accu element) - with Stream.Failure -> None - in - match new_accu with - | Some new_accu -> (aux [@tailcall]) new_accu - | None -> accu +let seq_to_list seq = + let rec aux accu xs = + match Seq.uncons xs with + | Some (x, xs) -> aux (x::accu) xs + | None -> List.rev accu in - aux init + aux [] seq + +let seq_fold f init seq = + Seq.fold_left f init seq #+end_src ** Printers diff --git a/docs/common.html b/docs/common.html index 62fa258..880cc2f 100644 --- a/docs/common.html +++ b/docs/common.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Common @@ -272,143 +272,143 @@ org_html_manager.setup(); // activate after the parameters are set

Table of Contents

-
-

1 Summary

+
+

1 Summary

-
-

2 Angular Momentum

+
+

2 Angular Momentum

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

-
-

2.1 Type

+
+

2.1 Type

-Angular_momentum.t +Angular_momentum.t

-
type t =
+
type t =
   | S | P | D | F | G | H | I | J | K | L | M | N | O
   | Int of int
 
@@ -424,7 +424,7 @@ Azimuthal quantum number, repsesented as \( s,p,d,\dots \) .
 

-An exception is raised when the Angular_momentum.t element can't +An exception is raised when the Angular_momentum.t element can't be created.

@@ -435,8 +435,8 @@ quartets, use in the two-electron operators.
-
-

2.2 Conversions

+
+

2.2 Conversions

val of_char : char -> t
@@ -460,7 +460,7 @@ quartets, use in the two-electron operators.
 
 
 of_char
-Returns an Angular_momentum.t when a shell is given as  a character (case insensitive)
+Returns an Angular_momentum.t when a shell is given as  a character (case insensitive)
 
 
 
@@ -488,7 +488,7 @@ quartets, use in the two-electron operators.
 

Example:

-
+
 Angular_momentum.of_char 'p';;
 - : Angular_momentum.t = P
 
@@ -507,8 +507,8 @@ Angular_momentum.(to_string D);;
 
-
-

2.3 Shell functions

+
+

2.3 Shell functions

val n_functions : t -> int
@@ -532,7 +532,7 @@ Angular_momentum.(to_string D);;
 
 
 zkey_array
-Array of Zkey.t, where each element is a a key associated with the the powers of \(x,y,z\).
+Array of Zkey.t, where each element is a a key associated with the the powers of \(x,y,z\).
 
 
 
@@ -540,7 +540,7 @@ Angular_momentum.(to_string D);;
 

Example:

-
+
 Angular_momentum.(n_functions D) ;;
 - : int = 6
 
@@ -553,8 +553,8 @@ Angular_momentum.( zkey_array (Doublet (P,S)) );;
 
-
-

2.4 Arithmetic

+
+

2.4 Arithmetic

val ( + ) : t -> t -> t
@@ -565,7 +565,7 @@ Angular_momentum.( zkey_array (Doublet (P,S)) );;
 

Example:

-
+
 Angular_momentum.(D + P);;
 - : Angular_momentum.t = F
 
@@ -575,8 +575,8 @@ Angular_momentum.(F - P);;
 
-
-

2.5 Printers

+
+

2.5 Printers

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

-
-

2.6 TODO Tests

+
+

2.6 TODO Tests

-
-

3 Bit string

+
+

3 Bit string

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

-
-

3.1 Type

+
+

3.1 Type

-Bitstring.t +Bitstring.t

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

3.2 General implementation

+
+

3.2 General implementation

val of_int : int -> t
@@ -774,7 +774,7 @@ bit string as a multi-precision integer.
 

Example:

-
+
 Bitstring.of_int 15;;
 - : Bitstring.t =
 ++++------------------------------------------------------------
@@ -783,7 +783,7 @@ Bitstring.of_int 15;;
 

Example:

-
+
 Bitstring.(shift_left (of_int 15) 2);;
 - : Bitstring.t =
 --++++----------------------------------------------------------
@@ -806,7 +806,7 @@ Bitstring.(testbit (of_int 15) 4);;
 

Example:

-
+
 Bitstring.(logor (of_int 15) (of_int 73));;
 - : Bitstring.t =
 ++++--+---------------------------------------------------------
@@ -824,7 +824,7 @@ Bitstring.(logxor (of_int 15) (of_int 73));;
 

Example:

-
+
 Bitstring.(plus_one (of_int 15));;
 - : Bitstring.t =
 ----+-----------------------------------------------------------
@@ -838,7 +838,7 @@ Bitstring.(minus_one (of_int 15));;
 

Example:

-
+
 Bitstring.(trailing_zeros (of_int 12));;
 - : int = 2
 
@@ -852,7 +852,7 @@ Bitstring.(popcount (of_int 15));;
 

Example:

-
+
 Bitstring.(to_list (of_int 45));;
 - : int list = [1; 3; 4; 6]
 
@@ -860,7 +860,7 @@ Bitstring.(to_list (of_int 45));;

Example:

-
+
    Bitstring.permutations 2 4;;
 - : Bitstring.t list =
 [++--------------------------------------------------------------;
@@ -873,8 +873,8 @@ Example:
 
-
-

3.3 Printers

+
+

3.3 Printers

val pp : Format.formatter -> t -> unit
@@ -884,16 +884,16 @@ Example:
 
-
-

4 Charge

+
+

4 Charge

-
-

4.1 Type

+
+

4.1 Type

-Charge.t +Charge.t

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

4.2 Conversions

+
+

4.2 Conversions

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

4.3 Simple operations

+
+

4.3 Simple operations

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

4.4 Printers

+
+

4.4 Printers

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

5 Command line

+
+

5 Command line

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

-
-

5.1 Types

+
+

5.1 Types

-
type short_opt     = char
+
type short_opt     = char
 type long_opt      = string
 type optional      = Mandatory | Optional
 type documentation = string
@@ -1029,9 +1029,9 @@ Then, define what to do with the arguments:
 
    -
  • Short option: in the command line, a dash with a single character +
  • Short option: in the command line, a dash with a single character (ex: ls -l)
  • -
  • Long option: in the command line, two dashes with a word +
  • Long option: in the command line, two dashes with a word (ex: ls --directory)
  • Command-line options can be Mandatory or Optional
  • Documentation of the option is used in the help function
  • @@ -1042,12 +1042,12 @@ don't (ls -l) and for some arguments the argument is optional
-
-

5.2 Mutable attributes

+
+

5.2 Mutable attributes

All the options are stored in the hash table dict where the key -is the long option and the value is a value of type description. +is the long option and the value is a value of type description.

@@ -1073,8 +1073,8 @@ Function to create an anonymous argument.
-
-

5.3 Query functions

+
+

5.3 Query functions

val get       : long_opt -> string option
@@ -1094,7 +1094,7 @@ Function to create an anonymous argument.
 
 
 get
-Returns the argument associated with a long option
+Returns the argument associated with a long option
 
 
 
@@ -1112,8 +1112,8 @@ Function to create an anonymous argument.
 
-
-

5.4 Specification

+
+

5.4 Specification

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

6 Constants

+
+

6 Constants

All constants used in the program.

-
-

6.1 Thresholds

+
+

6.1 Thresholds

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

6.2 Mathematical constants

+
+

6.2 Mathematical constants

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

6.3 Physical constants

+
+

6.3 Physical constants

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

7 Coordinate

+
+

7 Coordinate

Coordinates in 3D space. @@ -1283,14 +1283,14 @@ module.

-
-

7.1 Type

+
+

7.1 Type

-Coordinate.t +Coordinate.t

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

7.2 Creation

+
+

7.2 Creation

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

7.3 Conversion

+
+

7.3 Conversion

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

7.4 Vector operations

+
+

7.4 Vector operations

val neg    : t -> t
@@ -1442,7 +1442,7 @@ module.
 

Example:

-
+
 Coordinate.neg { x=1. ; y=2. ; z=3. } ;;
 - : Coordinate.t =  -1.0000  -2.0000  -3.0000
 
@@ -1468,8 +1468,8 @@ Coordinate.(
 
-
-

7.5 Printers

+
+

7.5 Printers

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

8 Non-negative float

+
+

8 Non-negative float

-
-

8.1 Type

+
+

8.1 Type

-< +<

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

8.2 Conversions

+
+

8.2 Conversions

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

9 Powers

+
+

9 Powers

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

-
-

9.1 Type

+
+

9.1 Type

-Powers.t +Powers.t

type t = private {
@@ -1554,8 +1554,8 @@ Contains powers of \(x\), \(y\) and \(z\) describing the polynomials in atomic b
 
-
-

9.2 Conversions

+
+

9.2 Conversions

val of_int_tuple : int * int * int -> t
@@ -1566,7 +1566,7 @@ Contains powers of \(x\), \(y\) and \(z\) describing the polynomials in atomic b
 

Example:

-
+
 Powers.of_int_tuple (2,3,1);;
 - : Powers.t = x^2 + y^3 + z^1
 
@@ -1576,8 +1576,8 @@ Powers.(to_int_tuple (of_int_tuple (2,3,1)));;
 
-
-

9.3 Operations

+
+

9.3 Operations

val get  : Coordinate.axis -> t -> int
@@ -1602,12 +1602,12 @@ Powers.(to_int_tuple (of_int_tuple (2,3,1)));;
 
 
 incr
-Returns a new Powers.t with the power on the given axis incremented
+Returns a new Powers.t with the power on the given axis incremented
 
 
 
 decr
-Returns a new Powers.t with the power on the given axis decremented. As opposed to of_int_tuple, the values may become negative
+Returns a new Powers.t with the power on the given axis decremented. As opposed to of_int_tuple, the values may become negative
 
 
 
@@ -1615,7 +1615,7 @@ Powers.(to_int_tuple (of_int_tuple (2,3,1)));;
 

Example:

-
+
 Powers.get Coordinate.Y (Powers.of_int_tuple (2,3,1));;
 - : int = 3
 
@@ -1629,8 +1629,8 @@ Powers.decr Coordinate.Y (Powers.of_int_tuple (2,3,1));;
 
-
-

9.4 Printers

+
+

9.4 Printers

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

10 QCaml

+
+

10 QCaml

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

-
-

11 Range

+
+

11 Range

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

-
-

11.1 Type

+
+

11.1 Type

-Range.t +Range.t

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

11.2 Conversion

+
+

11.2 Conversion

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

11.3 Printers

+
+

11.3 Printers

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

12 Spin

+
+

12 Spin

Electron spin

-
-

12.1 Type

+
+

12.1 Type

-Spin.t +Spin.t

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

12.2 Functions

+
+

12.2 Functions

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

12.3 Printers

+
+

12.3 Printers

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

13 Util

+
+

13 Util

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

-
-

13.1 External C functions

+
+

13.1 External C functions

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

13.1.1 Erf

+
+

13.1.1 Erf

external erf_float : float -> float
@@ -1845,8 +1845,8 @@ Utility functions.
 
-
-

13.1.2 Erfc

+
+

13.1.2 Erfc

external erfc_float : float -> float
@@ -1856,8 +1856,8 @@ Utility functions.
 
-
-

13.1.3 Gamma

+
+

13.1.3 Gamma

external gamma_float : float -> float
@@ -1867,8 +1867,8 @@ Utility functions.
 
-
-

13.1.4 Popcnt

+
+

13.1.4 Popcnt

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

13.1.5 Trailz

+
+

13.1.5 Trailz

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

13.1.6 Leadz

+
+

13.1.6 Leadz

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

13.1.7 Test

+
+

13.1.7 Test

-
-

13.2 General functions

+
+

13.2 General functions

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

13.3 Functions related to the Boys function

+
+

13.3 Functions related to the Boys function

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

13.4 List functions

+
+

13.4 List functions

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

13.5 Array functions

+
+

13.5 Array functions

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

13.6 Stream functions

+
+

13.6 Seq functions

-
val stream_range   : int -> int -> int Stream.t
-val stream_to_list : 'a Stream.t -> 'a list
-val stream_fold    : ('a -> 'b -> 'a) -> 'a -> 'b Stream.t -> 'a
+
val seq_range   : int -> int -> int Seq.t
+val seq_to_list : 'a Seq.t -> 'a list
+val seq_fold    : ('a -> 'b -> 'a) -> 'a -> 'b Seq.t -> 'a
 
@@ -2130,26 +2130,26 @@ where \(\gamma\) is the incomplete gamma function. -stream_range -Creates a stream returning consecutive integers +seq_range +Creates a sequence returning consecutive integers -stream_to_list -Read a stream and put items in a list +seq_to_list +Read a sequence and put items in a list -stream_fold -Apply a fold to the elements of the stream +seq_fold +Apply a fold to the elements of the sequence
-
-

13.7 Printers

+
+

13.7 Printers

val pp_float_array_size   : Format.formatter -> float array -> unit
@@ -2199,7 +2199,7 @@ where \(\gamma\) is the incomplete gamma function.
 

Example:

-
+
 pp_float_array_size:
 [ 6:   1.000000   1.732051   1.732051   1.000000   1.732051   1.000000 ]
 
@@ -2222,8 +2222,8 @@ pp_bitstring 14:
 
-
-

14 Zkey

+
+

14 Zkey

Encodes the powers of x, y, z in a compact form, suitable for being @@ -2231,7 +2231,7 @@ used as keys in a hash table.

-Internally, the Zkey.t is made of two integers, left and right. +Internally, the Zkey.t is made of two integers, left and right. The small integers x, y and z are stored compactly in this 126-bits space:

@@ -2239,7 +2239,7 @@ space:

Example:

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

-
-

14.1 Types

+
+

14.1 Types

-Zkey.t +Zkey.t

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

14.2 Conversions

+
+

14.2 Conversions

val of_powers_three  : Powers.t -> t
@@ -2308,22 +2308,22 @@ The values of x,y,z should be positive and should not exceed 32767 for
 
 
 of_powers_three
-Create from a Powers.t
+Create from a Powers.t
 
 
 
 of_powers_six
-Create from two Powers.t
+Create from two Powers.t
 
 
 
 of_powers_nine
-Create from three Powers.t
+Create from three Powers.t
 
 
 
 of_powers_twelve
-Create from four Powers.t
+Create from four Powers.t
 
 
 
@@ -2348,7 +2348,7 @@ The values of x,y,z should be positive and should not exceed 32767 for
 
 
 to_powers
-Convert to an Powers.t array
+Convert to an Powers.t array
 
 
 
@@ -2360,8 +2360,8 @@ The values of x,y,z should be positive and should not exceed 32767 for
 
-
-

14.3 Functions for hash tables

+
+

14.3 Functions for hash tables

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

14.4 Printers

+
+

14.4 Printers

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

15 Zmap

+
+

15 Zmap

A hash table where the keys are Zkey

-
-

15.1 Type

+
+

15.1 Type

-Zmap.t +Zmap.t

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

Author: Anthony Scemama

-

Created: 2023-04-20 Thu 10:55

+

Created: 2023-04-20 Thu 11:51

Validate

diff --git a/docs/gaussian.html b/docs/gaussian.html index 0d53dd4..711cf85 100644 --- a/docs/gaussian.html +++ b/docs/gaussian.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Gaussian @@ -272,41 +272,41 @@ org_html_manager.setup(); // activate after the parameters are set

Table of Contents

-
-

1 Summary

+
+

1 Summary

-
-

2 Atomic shell

+
+

2 Atomic shell

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) -

-

2.1 Type

+
+

2.1 Type

type t
@@ -351,8 +351,8 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale)
 
-
-

2.2 Access

+
+

2.2 Access

val ang_mom           : t -> Angular_momentum.t
@@ -429,14 +429,14 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale)
 
 
-
+
 
 
-
-

2.3 Creation

+
+

2.3 Creation

val make : ?index:int -> Contracted_shell.t array -> t 
@@ -468,8 +468,8 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale)
 
-
-

2.4 Printers

+
+

2.4 Printers

val pp : Format.formatter -> t -> unit
@@ -479,8 +479,8 @@ particular powers of \(x,y,z\) (PrimitiveShell.norm_coef_scale)
 
-
-

3 Atomic shell pair couple

+
+

3 Atomic shell pair couple

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

-
-

3.1 Type

+
+

3.1 Type

type t
@@ -508,8 +508,8 @@ acting on different electrons, since they will be coupled by a two-electron oper
 
-
-

3.2 Access

+
+

3.2 Access

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
 
-
-

3.3 Creation

+
+

3.3 Creation

val make : ?cutoff:float -> Atomic_shell_pair.t -> Atomic_shell_pair.t -> t option
@@ -621,14 +621,14 @@ Default cutoff is \(\epsilon\).
 
 
 
-
+
 
 
-
-

3.4 Printers

+
+

3.4 Printers

val pp : Format.formatter -> t -> unit
@@ -638,8 +638,8 @@ Default cutoff is \(\epsilon\).
 
-
-

4 Atomic shell pair

+
+

4 Atomic shell pair

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.

-
-

4.1 Type

+
+

4.1 Type

type t
@@ -663,8 +663,8 @@ An atomic shell pair is an array of pairs of contracted shells.
 
-
-

4.2 Access

+
+

4.2 Access

val atomic_shell_a         : t -> Atomic_shell.t
@@ -731,8 +731,8 @@ An atomic shell pair is an array of pairs of contracted shells.
 
-
-

4.3 Creation

+
+

4.3 Creation

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.
 
-
-

4.4 Printers

+
+

4.4 Printers

val pp : Format.formatter -> t -> unit
@@ -778,7 +778,7 @@ If an atomic shell pair is not significant, sets the value to None.
 

Author: Anthony Scemama

-

Created: 2022-11-07 Mon 11:28

+

Created: 2023-04-20 Thu 12:08

Validate

diff --git a/docs/top.html b/docs/top.html index 6ad59f5..5bf78f4 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 @@ -250,18 +250,18 @@ org_html_manager.setup(); // activate after the parameters are set

Table of Contents

-
-

1 Summary

+
+

1 Summary

Author: Anthony Scemama

-

Created: 2023-04-20 Thu 10:54

+

Created: 2023-04-24 Mon 12:58

Validate

diff --git a/examples/dune b/examples/dune index 17d6727..7d5b55c 100644 --- a/examples/dune +++ b/examples/dune @@ -4,5 +4,8 @@ ex_hartree_fock ex_localization ) -(libraries qcaml)) +(libraries + qcaml + unix +)) diff --git a/examples/ex_hartree_fock.ml b/examples/ex_hartree_fock.ml index 76fc8cf..4156e41 100644 --- a/examples/ex_hartree_fock.ml +++ b/examples/ex_hartree_fock.ml @@ -8,7 +8,7 @@ let () = (* [[file:~/QCaml/examples/ex_hartree_fock.org::*Definition][Definition:1]] *) let open Command_line in begin - set_header_doc (Sys.argv.(0) ^ " - QuAcK command"); + set_header_doc (Sys.argv.(0)); set_description_doc "Computes the one- and two-electron hartree_fock on the Gaussian atomic basis set."; set_specs [ { short='b' ; long="basis" ; opt=Mandatory; diff --git a/examples/ex_hartree_fock.org b/examples/ex_hartree_fock.org index 3887973..d6fea84 100644 --- a/examples/ex_hartree_fock.org +++ b/examples/ex_hartree_fock.org @@ -29,7 +29,7 @@ let () = #+BEGIN_SRC ocaml :comments link :exports code :tangle ex_hartree_fock.ml let open Command_line in begin - set_header_doc (Sys.argv.(0) ^ " - QuAcK command"); + set_header_doc (Sys.argv.(0)); set_description_doc "Computes the one- and two-electron hartree_fock on the Gaussian atomic basis set."; set_specs [ { short='b' ; long="basis" ; opt=Mandatory; diff --git a/examples/ex_integrals.org b/examples/ex_integrals.org index 241c3b6..b3c9a73 100644 --- a/examples/ex_integrals.org +++ b/examples/ex_integrals.org @@ -32,7 +32,7 @@ let () = #+BEGIN_SRC ocaml :comments link :exports code :tangle ex_integrals.ml let open Command_line in begin - set_header_doc (Sys.argv.(0) ^ " - QuAcK command"); + set_header_doc (Sys.argv.(0)); set_description_doc "Computes the one- and two-electron integrals on the Gaussian atomic basis set."; set_specs [ { short='b' ; long="basis" ; opt=Mandatory; diff --git a/gaussian/lib/general_basis.ml b/gaussian/lib/general_basis.ml index 93c67e0..4b3ff57 100644 --- a/gaussian/lib/general_basis.ml +++ b/gaussian/lib/general_basis.ml @@ -2,7 +2,7 @@ open Common open Particles - + type primitive = { exponent : float ; @@ -36,11 +36,11 @@ let read_shell ?element line_stream = let rec loop = function | 0 -> [] - | i -> let contraction = + | i -> let contraction = let line = Stream.next line_stream in try Scanf.sscanf line " %_d %f %f " (fun exponent coefficient -> { exponent ; coefficient }) - with _ -> raise (Malformed_shell + with _ -> raise (Malformed_shell (match element with | Some element -> Printf.sprintf "In %s: Expected %d %c contractions.\nError at contraction %d:\n%s" @@ -83,9 +83,9 @@ let rec read_element line_stream = with | Stream.Failure -> None - -let read_stream line_stream = + +let read_stream line_stream = let rec loop accu = try match read_element line_stream with @@ -94,12 +94,12 @@ let read_stream line_stream = with Element.ElementError _ -> loop accu in - loop [] + loop [] let read filename = let ic = open_in filename in let line_stream = - Stream.from (fun _ -> + Stream.from (fun _ -> try Some (input_line ic) with End_of_file -> None ) in @@ -122,7 +122,7 @@ let read_many filenames = List.map read filenames |> combine - + let string_of_primitive ?id prim = match id with | None -> (string_of_float prim.exponent)^" "^(string_of_float prim.coefficient) @@ -130,7 +130,7 @@ let string_of_primitive ?id prim = let string_of_contracted_shell (angular_momentum, prim_array) = - let n = + let n = Array.length prim_array in Printf.sprintf "%s %d\n%s" @@ -150,7 +150,7 @@ let to_string (name, contracted_shell_array) = Printf.sprintf "%s\n%s" name (string_of_contracted_shell_array contracted_shell_array) -let of_string input_string = +let of_string input_string = String.split_on_char '\n' input_string |> Stream.of_list |> read_stream @@ -158,7 +158,7 @@ let of_string input_string = let pp_primitive ppf prim = Format.fprintf ppf "@[%17.10e %17.10e@]" prim.exponent prim.coefficient - + let pp_gcs ppf gcs = let (angular_momentum, prim_array) = gcs in @@ -169,7 +169,7 @@ let pp_gcs ppf gcs = Array.iteri (fun i prim -> Format.fprintf ppf "@[%3d %a@]@." (i+1) pp_primitive prim) prim_array - + let pp_element_basis ppf eb = let (element, basis) = eb in Format.fprintf ppf "@[%s@]@." (String.uppercase_ascii @@ Element.to_long_string element); diff --git a/gaussian_integrals/lib/dune b/gaussian_integrals/lib/dune index 3f555f7..9306193 100644 --- a/gaussian_integrals/lib/dune +++ b/gaussian_integrals/lib/dune @@ -10,6 +10,7 @@ qcaml.linear_algebra qcaml.gaussian qcaml.operators + unix ) (modules_without_implementation matrix_on_basis)