diff --git a/README.html b/README.html index ea9d009..1af31e6 100644 --- a/README.html +++ b/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +
The qmckl.h
header file installed in the ${prefix}/include
directory
@@ -385,12 +385,12 @@ Both files are located in the include/
directory.
In a traditional source code, most of the lines of source files of a program @@ -435,8 +435,8 @@ interactively, in the same spirit as Jupyter notebooks.
For a tutorial on literate programming with org-mode, follow this link. @@ -467,8 +467,8 @@ org-mode.
Most of the codes of the TREX CoE are written in Fortran with some scripts in @@ -516,8 +516,8 @@ For more guidelines on using Fortran to generate a C interface, see
The authors should follow the recommendations of the C99
@@ -535,8 +535,8 @@ Compliance can be checked with cppcheck
as:
The proposed API should allow the library to: deal with memory transfers @@ -547,8 +547,8 @@ functions (see below).
To avoid namespace collisions, we use qmckl_
as a prefix for all exported
@@ -573,8 +573,8 @@ form is allowed.
In the C language, the number of bits used by the integer types can change @@ -606,15 +606,15 @@ bindings in other languages in other repositories.
Global variables should be avoided in the library, because it is
possible that one single program needs to use multiple instances
of the library. To solve this problem we propose to use a pointer
to a context
variable, built by the library with the
-qmckl_context_create
function. The =context= contains the global
+qmckl_context_create
function. The =context= contains the global
state of the library, and is used as the first argument of many
QMCkl functions.
A single qmckl.h
header to be distributed by the library
@@ -717,8 +717,8 @@ and the types definitions should be written in the *fh_type.f90
fil
Low-level functions are very simple functions which are leaves of @@ -727,14 +727,14 @@ the function call tree (they don't call any other QMCkl function).
These functions are pure, and unaware of the QMCkl
-context
. They are not allowed to allocate/deallocate memory, and
+context
. They are not allowed to allocate/deallocate memory, and
if they need temporary memory it should be provided in input.
High-level functions are at the top of the function call tree. @@ -747,27 +747,27 @@ temporary storage, to simplify the use of accelerators.
The high-level functions should be pure, unless the introduction
of non-purity is justified. All the side effects should be made in
-the context
variable.
+the context
variable.
The number of bits of precision required for a function should be
given as an input of low-level computational functions. This input
will be used to define the values of the different thresholds that
might be used to avoid computing unnecessary noise. High-level
-functions will use the precision specified in the context
+functions will use the precision specified in the context
variable.
Reducing the scaling of an algorithm usually implies also reducing @@ -783,7 +783,7 @@ implemented adapted to different problem sizes.
The following arrays are stored in the context: @@ -589,8 +589,8 @@ prim_factor = [ 1.0006253235944540e+01, 2.4169531573445120e+00, 7.96109248497664
typedef struct qmckl_ao_basis_struct { @@ -653,8 +653,8 @@ this mechanism.
When all the data for the AOs have been provided, the following
@@ -668,8 +668,8 @@ function returns true
.
To set the basis set, all the following functions need to be @@ -704,17 +704,17 @@ the context.
qmckl_ao_gaussian_vgl
computes the values, gradients and
@@ -946,18 +946,18 @@ Requirements
qmckl_exit_code qmckl_get_ao_basis_primitive_vgl(qmckl_context context, double* const primitive_vgl); @@ -966,14 +966,14 @@ Requirements
context
is not QMCKL_NULL_CONTEXT
qmckl_exit_code qmckl_ao_power ( @@ -1294,8 +1294,8 @@ the \(n\) points:
integer function qmckl_ao_power_f(context, n, X, LMAX, P, ldp) result(info) @@ -1346,15 +1346,15 @@ the \(n\) points:
integer(c_int32_t) function test_qmckl_ao_power(context) bind(C) @@ -1405,8 +1405,8 @@ the \(n\) points:
A polynomial is centered on a nucleus \(\mathbf{R}_i\)
@@ -1451,7 +1451,7 @@ Laplacians at a given point in space, of all polynomials with an
angular momentum up to lmax
.
context
is not QMCKL_NULL_CONTEXT
qmckl_exit_code qmckl_ao_polynomial_vgl ( @@ -1575,8 +1575,8 @@ For example, with a=0, b=2 and c=1 the string is "yyz"
integer function qmckl_ao_polynomial_vgl_f(context, X, R, lmax, n, L, ldl, VGL, ldv) result(info) @@ -1711,16 +1711,16 @@ For example, with a=0, b=2 and c=1 the string is "yyz"
integer(c_int32_t) function test_qmckl_ao_polynomial_vgl(context) bind(C) @@ -1825,13 +1825,13 @@ assert(0 == test_qmckl_ao_polynomial_vgl(context));
The context variable is a handle for the state of the library,
@@ -338,7 +338,7 @@ A value of QMCKL_NULL_CONTEXT
for the context is equivalent to a
typedef int64_t qmckl_context ; +typedef int64_t qmckl_context ; #define QMCKL_NULL_CONTEXT (qmckl_context) 0
ctx
is a qmckl_context_struct*
pointer.
The context keeps a ``date'' that allows to check which data needs @@ -367,7 +367,7 @@ coordinates are updated.
When a new element is added to the context, the functions -qmcklcontextcreate, qmcklcontextdestroy and qmcklcontextcopy +qmcklcontextcreate, qmcklcontextdestroy and qmcklcontextcopy should be updated inorder to make deep copies.
@@ -416,8 +416,8 @@ if the context is valid,QMCKL_NULL_CONTEXT
otherwise.
To create a new context, qmckl_context_create()
should be used.
@@ -502,8 +502,8 @@ To create a new context, qmckl_context_create()
should be used.
For thread safety, the context may be locked/unlocked. The lock is @@ -548,8 +548,8 @@ number of times the thread has locked it is saved in the
qmckl_context_copy
makes a deep copy of a context. It returns
@@ -597,8 +597,8 @@ number of times the thread has locked it is saved in the
The context is destroyed with qmckl_context_destroy
, leaving the ancestors untouched.
@@ -652,7 +652,7 @@ It frees the context, and returns the previous context.
qmckl_distance_sq
qmckl_distance_sq
qmckl_distance_sq
computes the matrix of the squared distances
@@ -391,7 +391,7 @@ between all pairs of points in two sets, one point within each set:
\]
context
is not QMCKL_NULL_CONTEXT
qmckl_exit_code qmckl_distance_rescaled ( @@ -524,8 +524,8 @@ between all pairs of points in two sets, one point within each set:
integer function qmckl_distance_sq_f(context, transa, transb, m, n, & @@ -660,8 +660,8 @@ between all pairs of points in two sets, one point within each set:
This function is more efficient when A
and B
are
@@ -671,12 +671,12 @@ transposed.
qmckl_distance
qmckl_distance
qmckl_distance
computes the matrix of the distances between all
@@ -694,7 +694,7 @@ If the input array is normal ('N'
), the xyz coordinates are in
the leading dimension: [n][3]
in C and (3,n)
in Fortran.
context
is not QMCKL_NULL_CONTEXT
[n][3]
in C and (3,n)
in Fortra
qmckl_exit_code qmckl_distance_rescaled ( @@ -827,8 +827,8 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra
integer function qmckl_distance_f(context, transa, transb, m, n, & @@ -995,8 +995,8 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra
This function is more efficient when A
and B
are transposed.
@@ -1006,12 +1006,12 @@ This function is more efficient when A
and B
are trans
qmckl_distance_rescaled
qmckl_distance_rescaled
qmckl_distance_rescaled
computes the matrix of the rescaled distances between all
@@ -1029,7 +1029,7 @@ If the input array is normal ('N'
), the xyz coordinates are in
the leading dimension: [n][3]
in C and (3,n)
in Fortran.
context
is not QMCKL_NULL_CONTEXT
[n][3]
in C and (3,n)
in Fortra
qmckl_exit_code qmckl_distance_rescaled ( @@ -1170,8 +1170,8 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra
integer function qmckl_distance_rescaled_f(context, transa, transb, m, n, & @@ -1341,8 +1341,8 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra
This function is more efficient when A
and B
are transposed.
@@ -1354,7 +1354,7 @@ This function is more efficient when A
and B
are trans
The following data stored in the context: @@ -497,8 +497,8 @@ The following data stored in the context:
typedef struct qmckl_electron_struct { @@ -569,8 +569,8 @@ this mechanism.
Access functions return QMCKL_SUCCESS
when the data has been
@@ -582,12 +582,12 @@ contains the requested data. Otherwise, this variable is untouched.
A walker is a set of electron coordinates that are arguments of
@@ -596,12 +596,12 @@ the wave function. walk_num
is the number of walkers.
Returns the current electron coordinates. The pointer is assumed @@ -645,8 +645,8 @@ The order of the indices is:
To set the data relative to the electrons in the context, the @@ -693,8 +693,8 @@ in the context.
/* Reference input data */ @@ -799,8 +799,8 @@ rc = qmckl_get_electron_coord (context, 'N'
The computed data is stored in the context so that it can be reused @@ -813,12 +813,12 @@ current date is stored.
qmckl_exit_code qmckl_get_electron_ee_distance(qmckl_context context, double* const distance); @@ -827,10 +827,10 @@ current date is stored.
typedef struct qmckl_nucleus_struct { @@ -523,8 +523,8 @@ this mechanism. --1.2 Access functions
++-1.2 Access functions
When all the data relative to nuclei have been set, the following @@ -538,8 +538,8 @@ function returns
true
.-1.3 Initialization functions
++-1.3 Initialization functions
To set the data relative to the nuclei in the context, the @@ -574,8 +574,8 @@ atoms. The coordinates should be given in atomic units.
-1.4 Test
++1.4 Test
-const int64_t nucl_num = chbrclf_nucl_num; @@ -659,8 +659,8 @@ rc = qmckl_get_nucleus_charge(context, nucl_charge2);-2 Computation
++2 Computation
-The computed data is stored in the context so that it can be reused @@ -673,12 +673,12 @@ current date is stored.
-2.1 Nucleus-nucleus distances
++2.1 Nucleus-nucleus distances
--2.1.1 Get
++2.1.1 Get
-qmckl_exit_code qmckl_get_nucleus_nn_distance(qmckl_context context, double* distance); @@ -687,10 +687,10 @@ current date is stored.-2.1.2 Compute
++2.1.2 Compute
-+
@@ -768,8 +768,8 @@ current date is stored. - -2.1.3 Test
++2.1.3 Test
-/* Reference input data */ @@ -789,12 +789,12 @@ rc = qmckl_get_nucleus_nn_distance(context, distance);
-2.2 Nucleus-nucleus rescaled distances
++2.2 Nucleus-nucleus rescaled distances
--2.2.1 Get
++2.2.1 Get
-qmckl_exit_code qmckl_get_nucleus_nn_distance_rescaled(qmckl_context context, double* distance_rescaled); @@ -803,10 +803,10 @@ rc = qmckl_get_nucleus_nn_distance(context, distance);-2.2.2 Compute
++2.2.2 Compute
-+
@@ -885,8 +885,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance); - -2.2.3 Test
++2.2.3 Test
-/* Reference input data */ @@ -906,8 +906,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance);
-2.3 Nuclear repulsion energy
++2.3 Nuclear repulsion energy
-\[ @@ -916,8 +916,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance);
-2.3.1 Get
++2.3.1 Get
-qmckl_exit_code qmckl_get_nucleus_repulsion(qmckl_context context, double* energy); @@ -926,10 +926,10 @@ rc = qmckl_get_nucleus_nn_distance(context, distance);-2.3.2 Compute
++2.3.2 Compute
-+
@@ -1017,8 +1017,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance); - -2.3.3 Test
++2.3.3 Test
-diff --git a/qmckl_numprec.html b/qmckl_numprec.html index 1f77030..cdca8f7 100644 --- a/qmckl_numprec.html +++ b/qmckl_numprec.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -/* Reference input data */ @@ -1038,7 +1038,7 @@ rc = qmckl_get_nucleus_repulsion(context, &rep);
Numerical precision @@ -333,16 +333,16 @@ for the JavaScript code in this tag.Table of Contents
-1 Control of the numerical precision
++1 Control of the numerical precision
Controlling numerical precision enables optimizations. Here, the @@ -353,7 +353,7 @@ Arithmetic (IEEE 754), refers to the number of exponent bits.
-+
@@ -397,8 +397,8 @@ integer. The update functions return QMCKL_SUCCESS
or --2 Precision
++-2 Precision
qmckl_context_set_numprec_precision
modifies the parameter for the @@ -485,8 +485,8 @@ numerical precision in the context.--3 Range
++3 Range
qmckl_set_numprec_range
modifies the parameter for the numerical @@ -561,8 +561,8 @@ range in a given context.-4 Helper functions
++-4 Helper functions
diff --git a/qmckl_tests.html b/qmckl_tests.html index e198a41..b551aff 100644 --- a/qmckl_tests.html +++ b/qmckl_tests.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -
qmckl_get_numprec_epsilon
returns \(\epsilon = 2^{1-n}\) wheren
is the precision. @@ -581,7 +581,7 @@ We need to remove the sign bit from the precision.Data for Tests @@ -233,20 +233,20 @@ for the JavaScript code in this tag.Table of Contents
-1 CHBrClF
++1 CHBrClF
-This test is the all-electron Hartree-Fock wave function of CHClBr, @@ -330,8 +330,8 @@ and with a high maximum angular momentum.
-1.1 XYZ coordinates
++-1.1 XYZ coordinates
5 @@ -361,8 +361,8 @@ Nuclear coordinates are stored in atomic units in transposed format.-1.2 Atomic basis set
++-1.2 Atomic basis set
HYDROGEN @@ -1175,11 +1175,11 @@ F 1-1.3 TODO Molecular orbitals
++-1.3 TODO Molecular orbitals
--1.4 Electron coordinates
++diff --git a/qmckl_utils.html b/qmckl_utils.html index 79fc95c..d8b6fd6 100644 --- a/qmckl_utils.html +++ b/qmckl_utils.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - +1.4 Electron coordinates
Electron coordinates are stored in atomic units in normal format. @@ -1339,7 +1339,7 @@ Electron coordinates are stored in atomic units in normal format.
Utility functions @@ -333,13 +333,13 @@ for the JavaScript code in this tag.Table of Contents
-
- 1. Matrix operations +
- 1. Matrix operations @@ -348,18 +348,18 @@ for the JavaScript code in this tag.
-1 Matrix operations
++1 Matrix operations
--1.1
+qmckl_transpose
+1.1
qmckl_transpose
Transposes a matrix: \(B_{ji} = A_{ij}\)
-+
-
@@ -424,8 +424,8 @@ Transposes a matrix: \(B_{ji} = A_{ij}\) -1.1.1 Requirements
++-1.1.1 Requirements
- @@ -439,8 +439,8 @@ Transposes a matrix: \(B_{ji} = A_{ij}\)
context
is notQMCKL_NULL_CONTEXT
-1.1.2 C header
++1.1.2 C header
-qmckl_exit_code qmckl_transpose ( @@ -456,8 +456,8 @@ Transposes a matrix: \(B_{ji} = A_{ij}\)-1.1.3 Source
++1.1.3 Source
-integer function qmckl_transpose_f(context, m, n, A, LDA, B, LDB) & @@ -516,7 +516,7 @@ Transposes a matrix: \(B_{ji} = A_{ij}\)