diff --git a/README.html b/README.html index 9ddcd65..7a7cf78 100644 --- a/README.html +++ b/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +The latest version fo QMCkl can be downloaded @@ -384,8 +384,8 @@ The latest version fo QMCkl can be downloaded
QMCkl is built with GNU Autotools, so the usual
@@ -400,8 +400,8 @@ options are defined using CFLAGS
and FCFLAGS
.
To compile from the source repository, additional dependencies are @@ -422,8 +422,8 @@ to be executed first.
The qmckl.h
header file installed in the ${prefix}/include
directory
@@ -452,12 +452,12 @@ Both files are located in the include/
directory.
In a traditional source code, most of the lines of source files of a program @@ -507,8 +507,8 @@ tarball contains the generated source code.
For a tutorial on literate programming with org-mode, follow this link. @@ -539,8 +539,8 @@ org-mode.
Most of the codes of the TREX CoE are written in Fortran with some @@ -604,8 +604,8 @@ For more guidelines on using Fortran to generate a C interface, see
The authors should follow the recommendations of the C99 @@ -625,8 +625,8 @@ make cppcheck ; cat cppcheck.out
The proposed API should allow the library to: deal with memory transfers @@ -637,8 +637,8 @@ functions (see below).
To avoid namespace collisions, we use qmckl_
as a prefix for all exported
@@ -659,8 +659,8 @@ form is allowed.
In the C language, the number of bits used by the integer types can change @@ -692,15 +692,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
@@ -803,8 +803,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 @@ -813,14 +813,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. @@ -832,8 +832,8 @@ temporary storage, to simplify the use of accelerators.
The minimal number of bits of precision required for a function
@@ -841,7 +841,7 @@ 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
variable.
+specified in the context
variable.
@@ -909,8 +909,8 @@ following points :
Reducing the scaling of an algorithm usually implies also reducing @@ -926,7 +926,7 @@ implemented adapted to different problem sizes.
The atomic basis set is defined as a list of shells. Each shell \(s\) is @@ -463,19 +463,19 @@ gradients and Laplacian of the atomic basis functions.
The following arrays are stored in the context, and need to be set when initializing the library:
-When the basis set is completely entered, extra data structures may be @@ -1510,8 +1510,8 @@ the context.
For faster access, we provide extra arrays for the shell information as: @@ -1541,8 +1541,8 @@ which is a matrix-vector product.
qmckl_exit_code @@ -1555,7 +1555,7 @@ which is a matrix-vector product.Returns the array of values, gradients an Laplacian of primitive basis functions evaluated at the current coordinates. -See section 3.2. +See section 3.2.
@@ -1568,7 +1568,7 @@ See section 3.2.-Returns the array of values, gradients an Laplacian of contracted shells -evaluated at the current coordinates. See section 3.3. +evaluated at the current coordinates. See section 3.3.
@@ -1582,7 +1582,7 @@ evaluated at the current coordinates. See section 3.3.Returns the array of values, gradients an Laplacian of the atomic orbitals evaluated at the current coordinates. -See section 5. +See section 5.
@@ -1607,7 +1607,7 @@ Uses the given array to compute the VGL.
Returns the array of values of the atomic orbitals evaluated at -the current coordinates. See section 5. +the current coordinates. See section 5.
@@ -1626,12 +1626,12 @@ Uses the given array to compute the value.
-3 Radial part
++3 Radial part
---3.1 General functions for Gaussian basis functions
++3.1 General functions for Gaussian basis functions
qmckl_ao_gaussian_vgl
computes the values, gradients and @@ -1737,15 +1737,18 @@ Requirements:-integer function qmckl_ao_gaussian_vgl_f(context, X, R, n, A, VGL, ldv) result(info) - use qmckl +function qmckl_ao_gaussian_vgl(context, X, R, n, A, VGL, ldv) & + bind(C) result(info) + use, intrinsic :: iso_c_binding + use qmckl_constants implicit none - integer*8 , intent(in) :: context - double precision , intent(in) :: X(3), R(3) - integer*8 , intent(in) :: n - double precision , intent(in) :: A(n) - double precision , intent(out) :: VGL(ldv,5) - integer*8 , intent(in) :: ldv + integer (qmckl_context) , intent(in) , value :: context + real (c_double) , intent(in) :: X(3), R(3) + integer (c_int64_t) , intent(in) , value :: n + real (c_double) , intent(in) :: A(n) + real (c_double) , intent(out) :: VGL(ldv,5) + integer (c_int64_t) , intent(in) , value :: ldv + integer (qmckl_exit_code) :: info integer*8 :: i,j double precision :: Y(3), r2, t, u, v @@ -1796,16 +1799,16 @@ Requirements: VGL(i,5) = (t * A(i) - 6.d0) * VGL(i,5) end do -end function qmckl_ao_gaussian_vgl_f +end function qmckl_ao_gaussian_vgl-3.2 Computation of primitives
++3.2 Computation of primitives
-+
@@ -1856,7 +1859,7 @@ Requirements: @@ -1907,23 +1910,24 @@ Requirements: - nucleus_prim_index
+ int64_t[nucl_num]
int64_t[nucl_num+1]
in Index of the 1st primitive of each nucleus --integer function qmckl_compute_ao_basis_primitive_gaussian_vgl_f( & - context, prim_num, point_num, nucl_num, & - nucleus_prim_index, coord, nucl_coord, & - expo, primitive_vgl) & - result(info) +function qmckl_compute_ao_basis_primitive_gaussian_vgl & + (context, prim_num, point_num, nucl_num, nucleus_prim_index, coord, nucl_coord, expo, primitive_vgl) & + bind(C) result(info) - use qmckl + use, intrinsic :: iso_c_binding + + use qmckl_constants implicit none - integer(qmckl_context), intent(in) :: context - integer*8 , intent(in) :: prim_num - integer*8 , intent(in) :: nucl_num - integer*8 , intent(in) :: point_num - integer*8 , intent(in) :: nucleus_prim_index(nucl_num+1) - double precision , intent(in) :: coord(point_num,3) - double precision , intent(in) :: nucl_coord(nucl_num,3) - double precision , intent(in) :: expo(prim_num) - double precision , intent(out) :: primitive_vgl(prim_num,5,point_num) + integer (qmckl_context), intent(in) , value :: context + integer (c_int64_t) , intent(in) , value :: prim_num + integer (c_int64_t) , intent(in) , value :: point_num + integer (c_int64_t) , intent(in) , value :: nucl_num + integer (c_int64_t) , intent(in) :: nucleus_prim_index(nucl_num+1) + real (c_double ) , intent(in) :: coord(point_num,3) + real (c_double ) , intent(in) :: nucl_coord(nucl_num,3) + real (c_double ) , intent(in) :: expo(prim_num) + real (c_double ) , intent(out) :: primitive_vgl(prim_num,5,point_num) + integer(qmckl_exit_code) :: info integer*8 :: inucl, iprim, ipoint double precision :: x, y, z, two_a, ar2, r2, v, cutoff @@ -1958,16 +1962,16 @@ Requirements: end do end do -end function qmckl_compute_ao_basis_primitive_gaussian_vgl_f +end function qmckl_compute_ao_basis_primitive_gaussian_vgl-3.3 Computation of shells
++3.3 Computation of shells
-+
@@ -2116,29 +2120,33 @@ Requirements: --integer function qmckl_compute_ao_basis_shell_gaussian_vgl_f( & +function qmckl_compute_ao_basis_shell_gaussian_vgl( & context, prim_num, shell_num, point_num, nucl_num, & nucleus_shell_num, nucleus_index, nucleus_range, & shell_prim_index, shell_prim_num, coord, nucl_coord, & expo, coef_normalized, shell_vgl) & - result(info) - use qmckl + bind(C) result(info) + + use, intrinsic :: iso_c_binding + use qmckl_constants + implicit none - integer(qmckl_context), intent(in) :: context - integer*8 , intent(in) :: prim_num - integer*8 , intent(in) :: shell_num - integer*8 , intent(in) :: nucl_num - integer*8 , intent(in) :: point_num - integer*8 , intent(in) :: nucleus_shell_num(nucl_num) - integer*8 , intent(in) :: nucleus_index(nucl_num) - double precision , intent(in) :: nucleus_range(nucl_num) - integer*8 , intent(in) :: shell_prim_index(shell_num) - integer*8 , intent(in) :: shell_prim_num(shell_num) - double precision , intent(in) :: coord(point_num,3) - double precision , intent(in) :: nucl_coord(nucl_num,3) - double precision , intent(in) :: expo(prim_num) - double precision , intent(in) :: coef_normalized(prim_num) - double precision , intent(out) :: shell_vgl(shell_num,5,point_num) + integer (qmckl_context), intent(in) , value :: context + integer (c_int64_t) , intent(in) , value :: prim_num + integer (c_int64_t) , intent(in) , value :: shell_num + integer (c_int64_t) , intent(in) , value :: point_num + integer (c_int64_t) , intent(in) , value :: nucl_num + integer (c_int64_t) , intent(in) :: nucleus_shell_num(nucl_num) + integer (c_int64_t) , intent(in) :: nucleus_index(nucl_num) + real (c_double ) , intent(in) :: nucleus_range(nucl_num) + integer (c_int64_t) , intent(in) :: shell_prim_index(shell_num) + integer (c_int64_t) , intent(in) :: shell_prim_num(shell_num) + real (c_double ) , intent(in) :: coord(point_num,3) + real (c_double ) , intent(in) :: nucl_coord(nucl_num,3) + real (c_double ) , intent(in) :: expo(prim_num) + real (c_double ) , intent(in) :: coef_normalized(prim_num) + real (c_double ) , intent(out) :: shell_vgl(shell_num,5,point_num) + integer(qmckl_exit_code) :: info integer*8 :: inucl, iprim, ipoint, ishell integer*8 :: ishell_start, ishell_end @@ -2212,15 +2220,15 @@ Requirements: end do -end function qmckl_compute_ao_basis_shell_gaussian_vgl_f +end function qmckl_compute_ao_basis_shell_gaussian_vgl-4 Polynomial part
++4 Polynomial part
-Going from the atomic basis set to AOs implies a systematic @@ -2240,8 +2248,8 @@ f & : & f_{xxx}, f_{xxy}, f_{xxz}, f_{xyy}, f_{xyz}, f_{xzz}, f_{yyy}, f_{yyz}, \end{eqnarray}
-4.1 General functions for Powers of \(x-X_i\)
++4.1 General functions for Powers of \(x-X_i\)
The
-qmckl_ao_power
function computes all the powers of then
@@ -2253,7 +2261,7 @@ the \(n\) points: \[ P_{ik} = X_i^k \]+
@@ -2343,17 +2351,22 @@ Requirements: --integer function qmckl_ao_power_f(context, n, X, LMAX, P, ldp) result(info) - use qmckl - implicit none - integer*8 , intent(in) :: context - integer*8 , intent(in) :: n - real*8 , intent(in) :: X(n) - integer , intent(in) :: LMAX(n) - real*8 , intent(out) :: P(ldp,n) - integer*8 , intent(in) :: ldp +function qmckl_ao_power(context, n, X, LMAX, P, ldp) & + bind(C) result(info) + use, intrinsic :: iso_c_binding - integer*8 :: i,k + use qmckl_constants + implicit none + + integer (qmckl_context), intent(in) , value :: context + integer (c_int64_t) , intent(in) , value :: n + real (c_double ) , intent(in) :: X(n) + integer (c_int32_t) , intent(in) :: LMAX(n) + real (c_double ) , intent(out) :: P(ldp,n) + integer (c_int64_t) , intent(in) , value :: ldp + + integer(qmckl_exit_code) :: info + integer(c_int64_t) :: i,k info = QMCKL_SUCCESS @@ -2385,14 +2398,14 @@ Requirements: end do end do -end function qmckl_ao_power_f +end function qmckl_ao_power-4.2 General functions for Value, Gradient and Laplacian of a polynomial
++4.2 General functions for Value, Gradient and Laplacian of a polynomial
A polynomial is centered on a nucleus \(\mathbf{R}_i\) @@ -2437,7 +2450,7 @@ Laplacians at a given point in space, of all polynomials with an angular momentum up to
-lmax
.+
@@ -2590,27 +2603,34 @@ For example, with a=0, b=2 and c=1 the string is "yyz" { #ifdef HAVE_HPC //return qmckl_ao_polynomial_vgl_hpc (context, X, R, lmax, n, L, ldl, VGL, ldv); - return qmckl_ao_polynomial_vgl_doc (context, X, R, lmax, n, L, ldl, VGL, ldv); + return qmckl_ao_polynomial_vgl_doc #else - return qmckl_ao_polynomial_vgl_doc (context, X, R, lmax, n, L, ldl, VGL, ldv); + return qmckl_ao_polynomial_vgl_doc #endif + (context, X, R, lmax, n, L, ldl, VGL, ldv); } -@@ -2783,27 +2803,35 @@ For example, with a=0, b=2 and c=1 the string is "yyz" const int64_t ldv ) { #ifdef HAVE_HPC - return qmckl_ao_polynomial_transp_vgl_hpc (context, X, R, lmax, n, L, ldl, VGL, ldv); + return qmckl_ao_polynomial_transp_vgl_hpc #else - return qmckl_ao_polynomial_transp_vgl_doc (context, X, R, lmax, n, L, ldl, VGL, ldv); + return qmckl_ao_polynomial_transp_vgl_doc #endif + (context, X, R, lmax, n, L, ldl, VGL, ldv); }integer function qmckl_ao_polynomial_vgl_doc_f (context, & - X, R, lmax, n, L, ldl, VGL, ldv) result(info) - use qmckl +function qmckl_ao_polynomial_vgl_doc (context, & + X, R, lmax, n, L, ldl, VGL, ldv) & + bind(C) result(info) + use, intrinsic :: iso_c_binding + use qmckl_constants implicit none - integer*8, intent(in) :: context - double precision, intent(in) :: X(3), R(3) - integer, intent(in) :: lmax - integer*8, intent(out) :: n - integer, intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6) - integer*8, intent(in) :: ldl - double precision, intent(out) :: VGL(ldv,(lmax+1)*(lmax+2)*(lmax+3)/6) - integer*8, intent(in) :: ldv + + integer (qmckl_context), intent(in) , value :: context + real (c_double ) , intent(in) :: X(3) + real (c_double ) , intent(in) :: R(3) + integer (c_int32_t) , intent(in) , value :: lmax + integer (c_int64_t) , intent(inout) :: n + integer (c_int32_t) , intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6) + integer (c_int64_t) , intent(in) , value :: ldl + real (c_double ) , intent(out) :: VGL(ldv,(lmax+1)*(lmax+2)*(lmax+3)/6) + integer (c_int64_t) , intent(in) , value :: ldv + + integer(qmckl_exit_code) :: info integer*8 :: i,j integer :: a,b,c,d @@ -2724,7 +2744,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz" info = QMCKL_SUCCESS -end function qmckl_ao_polynomial_vgl_doc_f +end function qmckl_ao_polynomial_vgl_doc-@@ -3217,18 +3245,18 @@ For example, with a=0, b=2 and c=1 the string is "yyz" -integer function qmckl_ao_polynomial_transp_vgl_doc_f (context, & - X, R, lmax, n, L, ldl, VGL, ldv) result(info) - use qmckl +function qmckl_ao_polynomial_transp_vgl_doc (context, & + X, R, lmax, n, L, ldl, VGL, ldv) & + bind(C) result(info) + use, intrinsic :: iso_c_binding + + use qmckl_constants implicit none - integer*8 , intent(in) :: context - real*8 , intent(in) :: X(3), R(3) - integer , intent(in) :: lmax - integer*8 , intent(out) :: n - integer , intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6) - integer*8 , intent(in) :: ldl - real*8 , intent(out) :: VGL(ldv,5) - integer*8 , intent(in) :: ldv + + integer (qmckl_context), intent(in) , value :: context + real (c_double ) , intent(in) :: X(3) + real (c_double ) , intent(in) :: R(3) + integer (c_int32_t) , intent(in) , value :: lmax + integer (c_int64_t) , intent(inout) :: n + integer (c_int32_t) , intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6) + integer (c_int64_t) , intent(in) , value :: ldl + real (c_double ) , intent(out) :: VGL(ldv,5) + integer (c_int64_t) , intent(in) , value :: ldv + + integer(qmckl_exit_code) :: info integer*8 :: i,j integer :: a,b,c,d @@ -2916,7 +2944,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz" info = QMCKL_SUCCESS -end function qmckl_ao_polynomial_transp_vgl_doc_f +end function qmckl_ao_polynomial_transp_vgl_doc-5 Combining radial and polynomial parts
++5 Combining radial and polynomial parts
--5.1 Values only
++5.1 Values only
--5.1.1 Unoptimized version
++5.1.1 Unoptimized version
-+
@@ -3357,29 +3385,33 @@ For example, with a=0, b=2 and c=1 the string is "yyz" --integer function qmckl_compute_ao_value_doc_f(context, & +function qmckl_compute_ao_value_doc(context, & ao_num, shell_num, point_num, nucl_num, & coord, nucl_coord, nucleus_index, nucleus_shell_num, & nucleus_range, nucleus_max_ang_mom, shell_ang_mom, & ao_factor, shell_vgl, ao_value) & - result(info) - use qmckl + bind(C) result(info) + use, intrinsic :: iso_c_binding + use qmckl_constants + use qmckl, only: qmckl_ao_polynomial_vgl implicit none - integer(qmckl_context), intent(in) :: context - integer*8 , intent(in) :: ao_num - integer*8 , intent(in) :: shell_num - integer*8 , intent(in) :: point_num - integer*8 , intent(in) :: nucl_num - double precision , intent(in) :: coord(point_num,3) - double precision , intent(in) :: nucl_coord(nucl_num,3) - integer*8 , intent(in) :: nucleus_index(nucl_num) - integer*8 , intent(in) :: nucleus_shell_num(nucl_num) - double precision , intent(in) :: nucleus_range(nucl_num) - integer , intent(in) :: nucleus_max_ang_mom(nucl_num) - integer , intent(in) :: shell_ang_mom(shell_num) - double precision , intent(in) :: ao_factor(ao_num) - double precision , intent(in) :: shell_vgl(shell_num,5,point_num) - double precision , intent(out) :: ao_value(ao_num,point_num) + integer (qmckl_context), intent(in) , value :: context + integer (c_int64_t) , intent(in) , value :: ao_num + integer (c_int64_t) , intent(in) , value :: shell_num + integer (c_int64_t) , intent(in) , value :: point_num + integer (c_int64_t) , intent(in) , value :: nucl_num + real (c_double ) , intent(in) :: coord(point_num,3) + real (c_double ) , intent(in) :: nucl_coord(nucl_num,3) + integer (c_int64_t) , intent(in) :: nucleus_index(nucl_num) + integer (c_int64_t) , intent(in) :: nucleus_shell_num(nucl_num) + real (c_double ) , intent(in) :: nucleus_range(nucl_num) + integer (c_int32_t) , intent(in) :: nucleus_max_ang_mom(nucl_num) + integer (c_int32_t) , intent(in) :: shell_ang_mom(shell_num) + real (c_double ) , intent(in) :: ao_factor(ao_num) + real (c_double ) , intent(in) :: shell_vgl(shell_num,5,point_num) + real (c_double ) , intent(out) :: ao_value(ao_num,point_num) + + integer(qmckl_exit_code) :: info double precision :: e_coord(3), n_coord(3) integer*8 :: n_poly @@ -3389,7 +3421,6 @@ For example, with a=0, b=2 and c=1 the string is "yyz" integer :: lstart(0:20) double precision :: x, y, z, r2 double precision :: cutoff - integer, external :: qmckl_ao_polynomial_vgl_doc_f double precision, allocatable :: poly_vgl(:,:) integer , allocatable :: powers(:,:), ao_index(:) @@ -3438,7 +3469,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz" end if ! Compute polynomials - info = qmckl_ao_polynomial_vgl_doc_f(context, e_coord, n_coord, & + info = qmckl_ao_polynomial_vgl(context, e_coord, n_coord, & nucleus_max_ang_mom(inucl), n_poly, powers, 3_8, & poly_vgl, 5_8) @@ -3459,16 +3490,16 @@ For example, with a=0, b=2 and c=1 the string is "yyz" end do deallocate(poly_vgl, powers) -end function qmckl_compute_ao_value_doc_f +end function qmckl_compute_ao_value_doc-5.1.2 HPC version
++5.1.2 HPC version
-+
@@ -3626,8 +3657,8 @@ For example, with a=0, b=2 and c=1 the string is "yyz" - -5.1.3 Interfaces
++5.1.3 Interfaces
-qmckl_exit_code qmckl_compute_ao_value_doc ( @@ -3676,14 +3707,14 @@ For example, with a=0, b=2 and c=1 the string is "yyz"-5.2 Value, gradients, Laplacian
++5.2 Value, gradients, Laplacian
--5.2.1 Reference version
++5.2.1 Reference version
-+
@@ -3812,29 +3843,32 @@ For example, with a=0, b=2 and c=1 the string is "yyz" --integer function qmckl_compute_ao_vgl_doc_f(context, & +function qmckl_compute_ao_vgl_doc(context, & ao_num, shell_num, point_num, nucl_num, & coord, nucl_coord, nucleus_index, nucleus_shell_num, & nucleus_range, nucleus_max_ang_mom, shell_ang_mom, & ao_factor, shell_vgl, ao_vgl) & - result(info) - use qmckl + bind(C) result(info) + use, intrinsic :: iso_c_binding + use qmckl_constants + use qmckl, only : qmckl_ao_polynomial_vgl implicit none - integer(qmckl_context), intent(in) :: context - integer*8 , intent(in) :: ao_num - integer*8 , intent(in) :: shell_num - integer*8 , intent(in) :: point_num - integer*8 , intent(in) :: nucl_num - double precision , intent(in) :: coord(point_num,3) - double precision , intent(in) :: nucl_coord(nucl_num,3) - integer*8 , intent(in) :: nucleus_index(nucl_num) - integer*8 , intent(in) :: nucleus_shell_num(nucl_num) - double precision , intent(in) :: nucleus_range(nucl_num) - integer , intent(in) :: nucleus_max_ang_mom(nucl_num) - integer , intent(in) :: shell_ang_mom(shell_num) - double precision , intent(in) :: ao_factor(ao_num) - double precision , intent(in) :: shell_vgl(shell_num,5,point_num) - double precision , intent(out) :: ao_vgl(ao_num,5,point_num) + integer (qmckl_context), intent(in) , value :: context + integer (c_int64_t) , intent(in) , value :: ao_num + integer (c_int64_t) , intent(in) , value :: shell_num + integer (c_int64_t) , intent(in) , value :: point_num + integer (c_int64_t) , intent(in) , value :: nucl_num + real (c_double ) , intent(in) :: coord(point_num,3) + real (c_double ) , intent(in) :: nucl_coord(nucl_num,3) + integer (c_int64_t) , intent(in) :: nucleus_index(nucl_num) + integer (c_int64_t) , intent(in) :: nucleus_shell_num(nucl_num) + real (c_double ) , intent(in) :: nucleus_range(nucl_num) + integer (c_int32_t) , intent(in) :: nucleus_max_ang_mom(nucl_num) + integer (c_int32_t) , intent(in) :: shell_ang_mom(shell_num) + real (c_double ) , intent(in) :: ao_factor(ao_num) + real (c_double ) , intent(in) :: shell_vgl(shell_num,5,point_num) + real (c_double ) , intent(out) :: ao_vgl(ao_num,5,point_num) + integer(qmckl_exit_code) :: info double precision :: e_coord(3), n_coord(3) integer*8 :: n_poly @@ -3844,7 +3878,6 @@ For example, with a=0, b=2 and c=1 the string is "yyz" integer :: lstart(0:20) double precision :: x, y, z, r2 double precision :: cutoff - integer, external :: qmckl_ao_polynomial_vgl_doc_f double precision, allocatable :: poly_vgl(:,:) integer , allocatable :: powers(:,:), ao_index(:) @@ -3893,7 +3926,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz" end if ! Compute polynomials - info = qmckl_ao_polynomial_vgl_doc_f(context, e_coord, n_coord, & + info = qmckl_ao_polynomial_vgl(context, e_coord, n_coord, & nucleus_max_ang_mom(inucl), n_poly, powers, 3_8, & poly_vgl, 5_8) @@ -3943,16 +3976,16 @@ For example, with a=0, b=2 and c=1 the string is "yyz" end do deallocate(poly_vgl, powers) -end function qmckl_compute_ao_vgl_doc_f +end function qmckl_compute_ao_vgl_doc-5.2.2 HPC version
++5.2.2 HPC version
-+
@@ -4111,8 +4144,8 @@ For example, with a=0, b=2 and c=1 the string is "yyz" - -5.2.3 Interfaces
++5.2.3 Interfaces
-diff --git a/qmckl_blas.html b/qmckl_blas.html index bf49e53..820e723 100644 --- a/qmckl_blas.html +++ b/qmckl_blas.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -qmckl_exit_code qmckl_compute_ao_vgl_doc ( @@ -4164,7 +4197,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz"BLAS functions @@ -346,56 +346,56 @@ for the JavaScript code in this tag.Table of Contents
-
- -
-- 1. Data types +
- -
+- 1. Data types
--
- 1.1. Vector
-- 1.2. Matrix
-- 1.3. Tensor
-- 1.4. Reshaping +
- 1.1. Vector
+- 1.2. Matrix
+- 1.3. Tensor
+- 1.4. Reshaping
-- 1.5. Access macros
-- 1.6. Set all elements +
- 1.5. Access macros
+- 1.6. Set all elements
-- 1.7. Copy to/from to
-double*
- 1.8. Allocate and copy to
+double*
- 1.7. Copy to/from to
+double*
- 1.8. Allocate and copy to
double*
- 2. Matrix operations +
- 2. Matrix operations
-- 3. Utilities
+- 3. Utilities
--
-++--
+Basic linear algebra data types and operations are described in this file. The data types are private, so that HPC implementations can use @@ -409,12 +409,12 @@ are not intended to be passed to external codes.
-1 Data types
++1 Data types
--1.1 Vector
++1.1 Vector
@@ -468,8 +468,8 @@ Allocates a new vector. If the allocation failed the size is zero. -
-1.2 Matrix
++1.2 Matrix
@@ -529,8 +529,8 @@ Allocates a new matrix. If the allocation failed the sizes are zero. -
-1.3 Tensor
++1.3 Tensor
@@ -597,16 +597,16 @@ is zero. -
-1.4 Reshaping
++1.4 Reshaping
-Reshaping occurs in-place and the pointer to the data is copied.
-1.4.1 Vector -> Matrix
++1.4.1 Vector -> Matrix
-qmckl_matrix @@ -622,8 +622,8 @@ Reshapes a vector into a matrix.
-1.4.2 Vector -> Tensor
++1.4.2 Vector -> Tensor
-qmckl_tensor @@ -639,8 +639,8 @@ Reshapes a vector into a tensor.
-1.4.3 Matrix -> Vector
++1.4.3 Matrix -> Vector
-qmckl_vector @@ -654,8 +654,8 @@ Reshapes a matrix into a vector.
-1.4.4 Matrix -> Tensor
++1.4.4 Matrix -> Tensor
-qmckl_tensor @@ -671,8 +671,8 @@ Reshapes a matrix into a tensor.
-1.4.5 Tensor -> Vector
++1.4.5 Tensor -> Vector
-qmckl_vector @@ -686,8 +686,8 @@ Reshapes a tensor into a vector.
-1.4.6 Tensor -> Matrix
++1.4.6 Tensor -> Matrix
-qmckl_matrix @@ -704,8 +704,8 @@ Reshapes a tensor into a vector.
-1.5 Access macros
++-1.5 Access macros
Macros are provided to ease the access to vectors, matrices and @@ -730,12 +730,12 @@ For example:
-1.6 Set all elements
++1.6 Set all elements
--1.6.1 Vector
++1.6.1 Vector
-qmckl_vector @@ -745,8 +745,8 @@ For example:
-1.6.2 Matrix
++1.6.2 Matrix
-qmckl_matrix @@ -756,8 +756,8 @@ For example:
-1.6.3 Tensor
++1.6.3 Tensor
-qmckl_tensor @@ -768,8 +768,8 @@ For example:
-1.7 Copy to/from to
+double*
+1.7 Copy to/from to
double*
-qmckl_exit_code @@ -851,8 +851,8 @@ Converts adouble*
to a tensor.-1.8 Allocate and copy to
+double*
+1.8 Allocate and copy to
double*
-double* qmckl_alloc_double_of_vector(const qmckl_context context, @@ -876,12 +876,12 @@ Converts adouble*
to a tensor.-2 Matrix operations
++2 Matrix operations
--2.1
+qmckl_dgemm
+2.1
qmckl_dgemm
Matrix multiplication with a BLAS interface: @@ -893,7 +893,7 @@ Matrix multiplication with a BLAS interface: \]
-+
@@ -1052,8 +1052,8 @@ Requirements: - -2.2
+qmckl_dgemm_safe
+2.2
qmckl_dgemm_safe
"Size-safe" proxy function with the same functionality as
-qmckl_dgemm
@@ -1062,7 +1062,7 @@ are required primarily for the Python API, where compatibility with NumPy arrays implies that sizes of the input and output arrays are provided.+
@@ -1248,8 +1248,8 @@ Requirements: - -2.3
+qmckl_matmul
+2.3
qmckl_matmul
Matrix multiplication using the
-qmckl_matrix
data type: @@ -1261,7 +1261,7 @@ Matrix multiplication using theqmckl_matrix
data type: \]+
@@ -1355,8 +1355,8 @@ Matrix multiplication using the qmckl_matrix
data type: --2.4
+qmckl_adjugate
+2.4
qmckl_adjugate
Given a matrix \(\mathbf{A}\), the adjugate matrix @@ -1374,7 +1374,7 @@ of \(\mathbf{A}\). See also: https://en.wikipedia.org/wiki/Adjugate_matrix
-+
@@ -1570,8 +1570,8 @@ determinant with the inverse: - -2.5
+qmckl_adjugate_safe
+2.5
qmckl_adjugate_safe
"Size-safe" proxy function with the same functionality as
-qmckl_adjugate
@@ -1581,7 +1581,7 @@ NumPy arrays implies that sizes of the input and output arrays are provided.+
-
@@ -1703,13 +1703,13 @@ LAPACK library. - --2.5.1 C interface
++2.5.1 C interface
-2.6
+qmckl_transpose
+-2.6
qmckl_transpose
Transposes a matrix: \(A^\dagger_{ji} = A_{ij}\). @@ -1770,8 +1770,8 @@ Transposes a matrix: \(A^\dagger_{ji} = A_{ij}\).
-3 Utilities
++-3 Utilities
diff --git a/qmckl_context.html b/qmckl_context.html index 28f0aaf..68f9618 100644 --- a/qmckl_context.html +++ b/qmckl_context.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -Trick to make MKL efficient on AMD @@ -1789,7 +1789,7 @@ Trick to make MKL efficient on AMD
Context @@ -324,21 +324,21 @@ for the JavaScript code in this tag.Table of Contents
-1 Context handling
++1 Context handling
-The context variable is a handle for the state of the library, @@ -351,7 +351,7 @@ A value of
QMCKL_NULL_CONTEXT
for the context is equivalent to a-@@ -369,8 +369,8 @@ andtypedef int64_t qmckl_context ; +typedef int64_t qmckl_context ; #define QMCKL_NULL_CONTEXT (qmckl_context) 0ctx
is aqmckl_context_struct*
pointer.-1.1 Data structure
++-1.1 Data structure
The qmcklextra pointer lets the other implementation of the library @@ -406,7 +406,7 @@ to be recomputed. The date is incremented when the context is touched.
When a new element is added to the context, the functions -
@@ -427,8 +427,8 @@ This has the effect to increment the date of the context.qmckl_context_create
qmckl_context_destroy
andqmckl_context_copy
+qmckl_context_create
qmckl_context_destroy
andqmckl_context_copy
should be updated in order to make deep copies.--1.2 Creation
++1.2 Creation
To create a new context,
qmckl_context_create()
should be used. @@ -445,8 +445,8 @@ To create a new context,qmckl_context_create()
should be used.--1.3 Locking
++1.3 Locking
For thread safety, the context may be locked/unlocked. The lock is @@ -462,8 +462,8 @@ number of times the thread has locked it is saved in the
-1.4 TODO Copy
++-1.4 TODO Copy
qmckl_context_copy
makes a deep copy of a context. It returns @@ -471,8 +471,8 @@ number of times the thread has locked it is saved in the-1.5 Destroy
++-1.5 Destroy
diff --git a/qmckl_determinant.html b/qmckl_determinant.html index d18bc0d..3793c45 100644 --- a/qmckl_determinant.html +++ b/qmckl_determinant.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -The context is destroyed with
qmckl_context_destroy
, leaving the ancestors untouched. @@ -490,7 +490,7 @@ It frees the context, and returns the previous context.Slater Determinant @@ -324,32 +324,32 @@ for the JavaScript code in this tag.Table of Contents
-
- 1. Context +
- 1. Context
-- 2. Computation +
- 2. Computation @@ -358,8 +358,8 @@ for the JavaScript code in this tag.
-1 Context
++1 Context
The following arrays are stored in the context: @@ -535,8 +535,8 @@ Computed data:
-1.1 Data structure
++1.1 Data structure
-typedef struct qmckl_determinant_struct { @@ -604,8 +604,8 @@ this mechanism.-1.2 Access functions
++-1.2 Access functions
When all the data for the slater determinants have been provided, the following @@ -619,8 +619,8 @@ function returns
true
.-1.3 Initialization functions
++-1.3 Initialization functions
To set the basis set, all the following functions need to be @@ -643,24 +643,24 @@ computed to accelerate the calculations.
-1.4 Fortran Interfaces
++-1.4 Fortran Interfaces
--1.5 Test
++1.5 Test
-2 Computation
++2 Computation
--2.1 Determinant matrix
++2.1 Determinant matrix
--2.1.1 Get
++2.1.1 Get
-qmckl_exit_code qmckl_get_det_vgl_alpha(qmckl_context context, double* const det_vgl_alpha); @@ -670,14 +670,14 @@ computed to accelerate the calculations.-2.1.2 Provide
++-2.1.2 Provide
-2.1.3 Compute alpha
++2.1.3 Compute alpha
-+
@@ -851,10 +851,10 @@ computed to accelerate the calculations. - -2.1.4 Compute beta
++2.1.4 Compute beta
-+
@@ -1028,18 +1028,18 @@ computed to accelerate the calculations. - --2.1.5 Test
++2.1.5 Test
-2.2 Inverse of Determinant matrix
++2.2 Inverse of Determinant matrix
--2.2.1 Get
++2.2.1 Get
-qmckl_exit_code qmckl_get_det_inv_matrix_alpha(qmckl_context context, double* const det_inv_matrix_alpha); @@ -1053,14 +1053,14 @@ computed to accelerate the calculations.-2.2.2 Provide
++-2.2.2 Provide
-2.2.3 Compute alpha
++2.2.3 Compute alpha
-+
@@ -1222,10 +1222,10 @@ computed to accelerate the calculations. - -2.2.4 Compute beta
++2.2.4 Compute beta
-+
@@ -1392,7 +1392,7 @@ computed to accelerate the calculations. diff --git a/qmckl_distance.html b/qmckl_distance.html index 763a313..6858d71 100644 --- a/qmckl_distance.html +++ b/qmckl_distance.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Inter-particle distances @@ -346,54 +346,54 @@ for the JavaScript code in this tag.Table of Contents
--1 Squared distance
++1 Squared distance
--1.1
+qmckl_distance_sq
+1.1
qmckl_distance_sq
-
qmckl_distance_sq
computes the matrix of the squared distances @@ -406,7 +406,7 @@ between all pairs of points in two sets, one point within each set: \]+
@@ -541,20 +541,27 @@ Requirements: --integer function qmckl_distance_sq_f(context, transa, transb, m, n, & +function qmckl_distance_sq(context, transa, transb, m, n, & A, LDA, B, LDB, C, LDC) & - result(info) - use qmckl + bind(C) result(info) + use, intrinsic :: iso_c_binding + + use qmckl_constants implicit none - integer(qmckl_context) , intent(in) :: context - character , intent(in) :: transa, transb - integer*8 , intent(in) :: m, n - integer*8 , intent(in) :: lda - real*8 , intent(in) :: A(lda,*) - integer*8 , intent(in) :: ldb - real*8 , intent(in) :: B(ldb,*) - integer*8 , intent(in) :: ldc - real*8 , intent(out) :: C(ldc,*) + + integer (qmckl_context) , intent(in) , value :: context + character(c_char) , intent(in) , value :: transa + character(c_char) , intent(in) , value :: transb + integer (c_int64_t) , intent(in) , value :: m + integer (c_int64_t) , intent(in) , value :: n + real (c_double ) , intent(in) :: A(lda,*) + integer (c_int64_t) , intent(in) , value :: lda + real (c_double ) , intent(in) :: B(ldb,*) + integer (c_int64_t) , intent(in) , value :: ldb + real (c_double ) , intent(out) :: C(ldc,n) + integer (c_int64_t) , intent(in) , value :: ldc + + integer(qmckl_exit_code) :: info integer*8 :: i,j real*8 :: x, y, z @@ -667,13 +674,13 @@ Requirements: end select -end function qmckl_distance_sq_f +end function qmckl_distance_sq--1.1.1 Performance
++1.1.1 Performance
This function is more efficient when
A
andB
are @@ -683,12 +690,12 @@ transposed.-2 Distance
++2 Distance
--2.1
+qmckl_distance
+2.1
qmckl_distance
-
qmckl_distance
computes the matrix of the distances between all @@ -706,7 +713,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.+
-
@@ -807,8 +814,8 @@ the leading dimension: [n][3]
in C and(3,n)
in Fortra-2.1.1 Requirements
++-2.1.1 Requirements
- @@ -826,8 +833,8 @@ the leading dimension:
context
is notQMCKL_NULL_CONTEXT
[n][3]
in C and(3,n)
in Fortra-2.1.2 C header
++2.1.2 C header
-qmckl_exit_code qmckl_distance ( @@ -847,24 +854,28 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra-2.1.3 Source
++-2.1.3 Source
-integer function qmckl_distance_f(context, transa, transb, m, n, & +function qmckl_distance(context, transa, transb, m, n, & A, LDA, B, LDB, C, LDC) & - result(info) - use qmckl + bind(C) result(info) + use, intrinsic :: iso_c_binding + use qmckl_constants implicit none - integer(qmckl_context) , intent(in) :: context - character , intent(in) :: transa, transb - integer*8 , intent(in) :: m, n - integer*8 , intent(in) :: lda - real*8 , intent(in) :: A(lda,*) - integer*8 , intent(in) :: ldb - real*8 , intent(in) :: B(ldb,*) - integer*8 , intent(in) :: ldc - real*8 , intent(out) :: C(ldc,*) + integer(qmckl_context), intent(in), value :: context + character(c_char) , intent(in) , value :: transa + character(c_char) , intent(in) , value :: transb + integer (c_int64_t) , intent(in) , value :: m + integer (c_int64_t) , intent(in) , value :: n + real (c_double ) , intent(in) :: A(lda,*) + integer (c_int64_t) , intent(in) , value :: lda + real (c_double ) , intent(in) :: B(ldb,*) + integer (c_int64_t) , intent(in) , value :: ldb + real (c_double ) , intent(out) :: C(ldc,n) + integer (c_int64_t) , intent(in) , value :: ldc + integer (qmckl_exit_code) :: info integer*8 :: i,j real*8 :: x, y, z @@ -989,14 +1000,14 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra end select -end function qmckl_distance_f +end function qmckl_distance-2.1.4 Performance
++-2.1.4 Performance
This function is more efficient when
A
andB
are transposed. @@ -1006,12 +1017,12 @@ This function is more efficient whenA
andB
are trans-3 Rescaled Distance
++3 Rescaled Distance
--3.1
+qmckl_distance_rescaled
+3.1
qmckl_distance_rescaled
-
qmckl_distance_rescaled
computes the matrix of the rescaled distances between all @@ -1029,7 +1040,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.+
-
@@ -1137,8 +1148,8 @@ the leading dimension: [n][3]
in C and(3,n)
in Fortra-3.1.1 Requirements
++-3.1.1 Requirements
- @@ -1156,8 +1167,8 @@ the leading dimension:
context
is notQMCKL_NULL_CONTEXT
[n][3]
in C and(3,n)
in Fortra-3.1.2 C header
++3.1.2 C header
-qmckl_exit_code qmckl_distance_rescaled ( @@ -1178,25 +1189,29 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra-3.1.3 Source
++-3.1.3 Source
-integer function qmckl_distance_rescaled_f(context, transa, transb, m, n, & +function qmckl_distance_rescaled(context, transa, transb, m, n, & A, LDA, B, LDB, C, LDC, rescale_factor_kappa) & - result(info) - use qmckl + bind(C) result(info) + use, intrinsic :: iso_c_binding + use qmckl_constants implicit none - integer(qmckl_context) , intent(in) :: context - character , intent(in) :: transa, transb - integer*8 , intent(in) :: m, n - integer*8 , intent(in) :: lda - real*8 , intent(in) :: A(lda,*) - integer*8 , intent(in) :: ldb - real*8 , intent(in) :: B(ldb,*) - integer*8 , intent(in) :: ldc - real*8 , intent(out) :: C(ldc,*) - real*8 , intent(in) :: rescale_factor_kappa + integer (qmckl_context), intent(in) , value :: context + character(c_char ) , intent(in) , value :: transa + character(c_char ) , intent(in) , value :: transb + integer (c_int64_t) , intent(in) , value :: m + integer (c_int64_t) , intent(in) , value :: n + real (c_double ) , intent(in) :: A(lda,*) + integer (c_int64_t) , intent(in) , value :: lda + real (c_double ) , intent(in) :: B(ldb,*) + integer (c_int64_t) , intent(in) , value :: ldb + real (c_double ) , intent(out) :: C(ldc,n) + integer (c_int64_t) , intent(in) , value :: ldc + real (c_double ) , intent(in) , value :: rescale_factor_kappa + integer(qmckl_exit_code) :: info integer*8 :: i,j real*8 :: x, y, z, dist, rescale_factor_kappa_inv @@ -1323,14 +1338,14 @@ the leading dimension:[n][3]
in C and(3,n)
in Fortra end select -end function qmckl_distance_rescaled_f +end function qmckl_distance_rescaled--3.1.4 Performance
++3.1.4 Performance
This function is more efficient when
A
andB
are transposed. @@ -1339,12 +1354,12 @@ This function is more efficient whenA
andB
are trans-4 Rescaled Distance Derivatives
++4 Rescaled Distance Derivatives
--4.1
+qmckl_distance_rescaled_gl
+4.1
qmckl_distance_rescaled_gl
-
qmckl_distance_rescaled_gl
computes the matrix of the gradient and Laplacian of the @@ -1399,7 +1414,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.+
-
@@ -1485,7 +1500,7 @@ the leading dimension: [n][3]
in C and(3,n)
in Fortra@@ -1542,21 +1557,26 @@ Requirements: - C
+ double[4][n][ldc]
double[n][ldc][4]
out Array containing the \(4 \times m \times n\) matrix \(C\) -@@ -1731,7 +1751,7 @@ This function is more efficient wheninteger function qmckl_distance_rescaled_gl_f(context, transa, transb, m, n, & +function qmckl_distance_rescaled_gl(context, transa, transb, m, n, & A, LDA, B, LDB, C, LDC, rescale_factor_kappa) & - result(info) - use qmckl + bind(C) result(info) + use qmckl_constants + use, intrinsic :: iso_c_binding implicit none - integer(qmckl_context) , intent(in) :: context - character , intent(in) :: transa, transb - integer*8 , intent(in) :: m, n - integer*8 , intent(in) :: lda - real*8 , intent(in) :: A(lda,*) - integer*8 , intent(in) :: ldb - real*8 , intent(in) :: B(ldb,*) - integer*8 , intent(in) :: ldc - real*8 , intent(out) :: C(4,ldc,*) - real*8 , intent(in) :: rescale_factor_kappa + + integer(qmckl_exit_code) :: info + integer (qmckl_context), intent(in) , value :: context + character(c_char ) , intent(in) , value :: transa + character(c_char ) , intent(in) , value :: transb + integer (c_int64_t) , intent(in) , value :: m + integer (c_int64_t) , intent(in) , value :: n + real (c_double ) , intent(in) :: A(lda,*) + integer (c_int64_t) , intent(in) , value :: lda + real (c_double ) , intent(in) :: B(ldb,*) + integer (c_int64_t) , intent(in) , value :: ldb + real (c_double ) , intent(out) :: C(4,ldc,n) + integer (c_int64_t) , intent(in) , value :: ldc + real (c_double ) , intent(in) , value :: rescale_factor_kappa integer*8 :: i,j real*8 :: x, y, z, dist, dist_inv @@ -1642,7 +1662,7 @@ Requirements: dist = dsqrt(x*x + y*y + z*z) ! Avoid floating-point exception if (dist == 0.d0) then - dist = 69.d0/rescale_factor_kappa + dist = 69.d0/rescale_factor_kappa endif dist_inv = 1.0d0/dist rij = dexp(-rescale_factor_kappa * dist) @@ -1663,7 +1683,7 @@ Requirements: dist = dsqrt(x*x + y*y + z*z) ! Avoid floating-point exception if (dist == 0.d0) then - dist = 69.d0/rescale_factor_kappa + dist = 69.d0/rescale_factor_kappa endif dist_inv = 1.0d0/dist rij = dexp(-rescale_factor_kappa * dist) @@ -1684,7 +1704,7 @@ Requirements: dist = dsqrt(x*x + y*y + z*z) ! Avoid floating-point exception if (dist == 0.d0) then - dist = 69.d0/rescale_factor_kappa + dist = 69.d0/rescale_factor_kappa endif dist_inv = 1.0d0/dist rij = dexp(-rescale_factor_kappa * dist) @@ -1705,7 +1725,7 @@ Requirements: dist = dsqrt(x*x + y*y + z*z) ! Avoid floating-point exception if (dist == 0.d0) then - dist = 69.d0/rescale_factor_kappa + dist = 69.d0/rescale_factor_kappa endif dist_inv = 1.0d0/dist rij = dexp(-rescale_factor_kappa * dist) @@ -1718,7 +1738,7 @@ Requirements: end select -end function qmckl_distance_rescaled_gl_f +end function qmckl_distance_rescaled_glA
andB
are trans diff --git a/qmckl_electron.html b/qmckl_electron.html index 206f6f9..06504ef 100644 --- a/qmckl_electron.html +++ b/qmckl_electron.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -Electrons @@ -346,59 +346,59 @@ for the JavaScript code in this tag.Table of Contents
--
- 1. Context +
- 1. Context
-- 2. Computation +
- 2. Computation
-
- 2.1. Electron-electron distances +
- 2.1. Electron-electron distances
-- 2.2. Electron-electron potential +
- 2.2. Electron-electron potential
-- 2.3. Electron-nucleus distances +
- 2.3. Electron-nucleus distances
-- 2.4. Electron-nucleus potential +
- 2.4. Electron-nucleus potential
-- 2.5. Generate initial coordinates
+- 2.5. Generate initial coordinates
-1 Context
++1 Context
The following data stored in the context: @@ -539,8 +539,8 @@ Computed data:
-1.1 Data structure
++1.1 Data structure
-@@ -609,8 +609,8 @@ this mechanism.-1.2 Initialization functions
++-1.2 Initialization functions
To set the data relative to the electrons in the context, the @@ -683,8 +683,8 @@ in the context.
-1.3 Access functions
++1.3 Access functions
-Access functions return
QMCKL_SUCCESS
when the data has been @@ -696,12 +696,12 @@ contains the requested data. Otherwise, this variable is untouched.-1.3.1 Number of electrons
++-1.3.1 Number of electrons
-1.3.2 Number of walkers
++-1.3.2 Number of walkers
A walker is a set of electron coordinates that are arguments of @@ -710,8 +710,8 @@ the wave function.
walk_num
is the number of walkers.--1.3.3 Electron coordinates
++1.3.3 Electron coordinates
Returns the current electron coordinates. The pointer is assumed @@ -776,8 +776,8 @@ current points.
-1.4 Test
++1.4 Test
-/* Reference input data */ @@ -856,8 +856,8 @@ rc = qmckl_get_electron_coord (context, 'N'-2 Computation
++2 Computation
-The computed data is stored in the context so that it can be reused @@ -870,12 +870,12 @@ current date is stored.
-2.1 Electron-electron distances
++2.1 Electron-electron distances
--