diff --git a/README.html b/README.html index 50a1721..a1b042c 100644 --- a/README.html +++ b/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + QMCkl source code documentation @@ -330,6 +330,7 @@ for the JavaScript code in this tag.
  • TREXIO I/O library
  • Data for Tests
  • Verificarlo CI
  • +
  • Code examples
  • @@ -361,7 +362,7 @@ and bug reports should be submitted at

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl.html b/qmckl.html index 581d11b..d8b31db 100644 --- a/qmckl.html +++ b/qmckl.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Introduction @@ -333,36 +333,36 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Installing QMCkl

    +
    +

    1 Installing QMCkl

    The latest version fo QMCkl can be downloaded @@ -371,8 +371,8 @@ The latest version fo QMCkl can be downloaded

    -
    -

    1.1 Installing from the released tarball (for end users)

    +
    +

    1.1 Installing from the released tarball (for end users)

    QMCkl is built with GNU Autotools, so the usual @@ -387,8 +387,8 @@ options are defined using CFLAGS and FCFLAGS.

    -
    -

    1.2 Installing from the source repository (for developers)

    +
    +

    1.2 Installing from the source repository (for developers)

    To compile from the source repository, additional dependencies are @@ -409,8 +409,8 @@ to be executed first.

    -
    -

    2 Using QMCkl

    +
    +

    2 Using QMCkl

    The qmckl.h header file installed in the ${prefix}/include directory @@ -439,12 +439,12 @@ Both files are located in the include/ directory.

    -
    -

    3 Developing in QMCkl

    +
    +

    3 Developing in QMCkl

    -
    -

    3.1 Literate programming

    +
    +

    3.1 Literate programming

    In a traditional source code, most of the lines of source files of a program @@ -494,8 +494,8 @@ tarball contains the generated source code.

    -
    -

    3.2 Source code editing

    +
    +

    3.2 Source code editing

    For a tutorial on literate programming with org-mode, follow this link. @@ -526,8 +526,8 @@ org-mode.

    -
    -

    3.3 Choice of the programming language

    +
    +

    3.3 Choice of the programming language

    Most of the codes of the TREX CoE are written in Fortran with some @@ -591,8 +591,8 @@ For more guidelines on using Fortran to generate a C interface, see

    -
    -

    3.4 Coding rules

    +
    +

    3.4 Coding rules

    The authors should follow the recommendations of the C99 @@ -612,8 +612,8 @@ make cppcheck ; cat cppcheck.out

    -
    -

    3.5 Design of the library

    +
    +

    3.5 Design of the library

    The proposed API should allow the library to: deal with memory transfers @@ -624,8 +624,8 @@ functions (see below).

    -
    -

    3.6 Naming conventions

    +
    +

    3.6 Naming conventions

    To avoid namespace collisions, we use qmckl_ as a prefix for all exported @@ -646,8 +646,8 @@ form is allowed.

    -
    -

    3.7 Application programming interface

    +
    +

    3.7 Application programming interface

    In the C language, the number of bits used by the integer types can change @@ -679,15 +679,15 @@ bindings in other languages in other repositories.

    -
    -

    3.8 Global state

    +
    +

    3.8 Global state

    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.

    @@ -701,8 +701,8 @@ the state is done by setters and getters, prefixed by
    -
    -

    3.9 Headers

    +
    +

    3.9 Headers

    A single qmckl.h header to be distributed by the library @@ -790,8 +790,8 @@ and the types definitions should be written in the *fh_type.f90 fil

    -
    -

    3.10 Low-level functions

    +
    +

    3.10 Low-level functions

    Low-level functions are very simple functions which are leaves of @@ -800,14 +800,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.

    -
    -

    3.11 High-level functions

    +
    +

    3.11 High-level functions

    High-level functions are at the top of the function call tree. @@ -819,8 +819,8 @@ temporary storage, to simplify the use of accelerators.

    -
    -

    3.12 Numerical precision

    +
    +

    3.12 Numerical precision

    The minimal number of bits of precision required for a function @@ -828,7 +828,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.

    @@ -896,8 +896,8 @@ following points :

    -
    -

    3.13 Algorithms

    +
    +

    3.13 Algorithms

    Reducing the scaling of an algorithm usually implies also reducing @@ -913,7 +913,7 @@ implemented adapted to different problem sizes.

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_ao.html b/qmckl_ao.html index 6fedd5b..6874e70 100644 --- a/qmckl_ao.html +++ b/qmckl_ao.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Atomic Orbitals @@ -333,61 +333,61 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Introduction

    +
    +

    1 Introduction

    The atomic basis set is defined as a list of shells. Each shell \(s\) is @@ -450,19 +450,19 @@ gradients and Laplacian of the atomic basis functions.

    -
    -

    2 Context

    +
    +

    2 Context

    -
    -

    2.1 Constant data

    +
    +

    2.1 Constant data

    The following arrays are stored in the context, and need to be set when initializing the library:

    - +
    @@ -636,7 +636,7 @@ calling the functions:

    -
    qmckl_exit_code qmckl_set_ao_basis_$V$ ( qmckl_context context,
    +
    qmckl_exit_code qmckl_set_ao_basis_$V$ ( qmckl_context context,
                                              const $type_of_V$ $V$);
     
     qmckl_exit_code qmckl_get_ao_basis_$V$ ( const qmckl_context context,
    @@ -673,7 +673,7 @@ For array variables, use the rule:
     

    -
    qmckl_exit_code qmckl_set_ao_basis_$V$ ( qmckl_context context,
    +
    qmckl_exit_code qmckl_set_ao_basis_$V$ ( qmckl_context context,
                                              const $type_of_V$ $V$,
                                              const int64_t size_max);
     
    @@ -711,17 +711,17 @@ For array variables, use the rule:
     
    -
    -

    2.1.1 Initialization functions

    +
    +

    2.1.1 Initialization functions

    size_max is the dimension of the input array, which should be -equal of larger than the value given in the table of section 2. +equal of larger than the value given in the table of section 2.

    -
    -
    2.1.1.1 C interface
    +
    +
    2.1.1.1 C interface

    To set the basis set, all the following functions need to be @@ -845,8 +845,8 @@ called.

    -
    -
    2.1.1.2 Fortran interface
    +
    +
    2.1.1.2 Fortran interface
    interface
    @@ -1029,17 +1029,17 @@ called.
     
    -
    -

    2.1.2 Access functions

    +
    +

    2.1.2 Access functions

    size_max is the dimension of the input array, which should be -equal of larger than the value given in the table of section 2. +equal of larger than the value given in the table of section 2.

    -
    -
    2.1.2.1 C interface
    +
    +
    2.1.2.1 C interface
    qmckl_exit_code
    @@ -1161,8 +1161,8 @@ function returns true.
     
    -
    -
    2.1.2.2 Fortran interface
    +
    +
    2.1.2.2 Fortran interface
    interface
    @@ -1346,8 +1346,8 @@ function returns true.
     
    -
    -

    2.2 Computed data

    +
    +

    2.2 Computed data

    The following data is computed as described in the next sections: @@ -1422,8 +1422,8 @@ The following data is computed as described in the next sections:

    -
    -

    2.2.1 After initialization

    +
    +

    2.2.1 After initialization

    When the basis set is completely entered, extra data structures may be @@ -1437,8 +1437,8 @@ the context.

    -
    -

    2.2.2 TODO HPC-specific data structures

    +
    +

    2.2.2 TODO HPC-specific data structures

    For faster access, we provide extra arrays for the shell information as: @@ -1468,8 +1468,8 @@ which is a matrix-vector product.

    -
    -

    2.2.3 Access functions

    +
    +

    2.2.3 Access functions

    qmckl_exit_code
    @@ -1482,7 +1482,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.

    @@ -1495,7 +1495,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.

    @@ -1509,7 +1509,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.

    @@ -1534,7 +1534,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.

    @@ -1553,12 +1553,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 @@ -1729,10 +1729,10 @@ Requirements:

    -
    -

    3.2 Computation of primitives

    +
    +

    3.2 Computation of primitives

    - +
    @@ -1891,10 +1891,10 @@ Requirements: -
    -

    3.3 Computation of shells

    +
    +

    3.3 Computation of shells

    -
    +
    @@ -2146,8 +2146,8 @@ Requirements: -
    -

    4 Polynomial part

    +
    +

    4 Polynomial part

    Going from the atomic basis set to AOs implies a systematic @@ -2167,8 +2167,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 the n @@ -2180,7 +2180,7 @@ the \(n\) points: \[ P_{ik} = X_i^k \]

    -
    +
    @@ -2318,8 +2318,8 @@ Requirements: -
    -

    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\) @@ -2364,7 +2364,7 @@ Laplacians at a given point in space, of all polynomials with an angular momentum up to lmax.

    -
    +
    @@ -3128,18 +3128,18 @@ For example, with a=0, b=2 and c=1 the string is "yyz" -
    -

    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

    -
    +
    @@ -3375,10 +3375,10 @@ For example, with a=0, b=2 and c=1 the string is "yyz" -
    -

    5.1.2 HPC version

    +
    +

    5.1.2 HPC version

    -
    +
    @@ -3536,8 +3536,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 (
    @@ -3586,14 +3586,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 Unoptimized version

    +
    +

    5.2.1 Unoptimized version

    -
    +
    @@ -3858,10 +3858,10 @@ For example, with a=0, b=2 and c=1 the string is "yyz" -
    -

    5.2.2 HPC version

    +
    +

    5.2.2 HPC version

    -
    +
    @@ -4020,8 +4020,8 @@ For example, with a=0, b=2 and c=1 the string is "yyz" -
    -

    5.2.3 Interfaces

    +
    +

    5.2.3 Interfaces

    qmckl_exit_code qmckl_compute_ao_vgl_doc (
    @@ -4073,7 +4073,7 @@ For example, with a=0, b=2 and c=1 the string is "yyz"
     

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_blas.html b/qmckl_blas.html index 07a56ef..677e898 100644 --- a/qmckl_blas.html +++ b/qmckl_blas.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + BLAS functions @@ -333,48 +333,48 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    -

    -
    +
    +

    -

    +

    Basic linear algebra data types and operations are described in this file. The data types are private, so that HPC implementations can use @@ -388,12 +388,12 @@ are not intended to be passed to external codes.

    -
    -

    1 Data types

    +
    +

    1 Data types

    -
    -

    1.1 Vector

    +
    +

    1.1 Vector

    @@ -447,8 +447,8 @@ Allocates a new vector. If the allocation failed the size is zero. -
    -

    1.2 Matrix

    +
    +

    1.2 Matrix

    @@ -508,8 +508,8 @@ Allocates a new matrix. If the allocation failed the sizes are zero. -
    -

    1.3 Tensor

    +
    +

    1.3 Tensor

    @@ -576,16 +576,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
    @@ -601,8 +601,8 @@ Reshapes a vector into a matrix.
     
    -
    -

    1.4.2 Vector -> Tensor

    +
    +

    1.4.2 Vector -> Tensor

    qmckl_tensor
    @@ -618,8 +618,8 @@ Reshapes a vector into a tensor.
     
    -
    -

    1.4.3 Matrix -> Vector

    +
    +

    1.4.3 Matrix -> Vector

    qmckl_vector
    @@ -633,8 +633,8 @@ Reshapes a matrix into a vector.
     
    -
    -

    1.4.4 Matrix -> Tensor

    +
    +

    1.4.4 Matrix -> Tensor

    qmckl_tensor
    @@ -650,8 +650,8 @@ Reshapes a matrix into a tensor.
     
    -
    -

    1.4.5 Tensor -> Vector

    +
    +

    1.4.5 Tensor -> Vector

    qmckl_vector
    @@ -665,8 +665,8 @@ Reshapes a tensor into a vector.
     
    -
    -

    1.4.6 Tensor -> Matrix

    +
    +

    1.4.6 Tensor -> Matrix

    qmckl_matrix
    @@ -683,8 +683,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 @@ -708,12 +708,12 @@ For example:

    -
    -

    1.6 Set all elements

    +
    +

    1.6 Set all elements

    -
    -

    1.6.1 Vector

    +
    +

    1.6.1 Vector

    qmckl_vector
    @@ -723,8 +723,8 @@ For example:
     
    -
    -

    1.6.2 Matrix

    +
    +

    1.6.2 Matrix

    qmckl_matrix
    @@ -734,8 +734,8 @@ For example:
     
    -
    -

    1.6.3 Tensor

    +
    +

    1.6.3 Tensor

    qmckl_tensor
    @@ -746,8 +746,8 @@ For example:
     
    -
    -

    1.7 Copy to/from to double*

    +
    +

    1.7 Copy to/from to double*

    qmckl_exit_code
    @@ -830,12 +830,12 @@ Converts a double* to a tensor.
     
    -
    -

    2 Matrix operations

    +
    +

    2 Matrix operations

    -
    -

    2.1 qmckl_dgemm

    +
    +

    2.1 qmckl_dgemm

    Matrix multiplication with a BLAS interface: @@ -847,7 +847,7 @@ Matrix multiplication with a BLAS interface: \]

    -
    +
    @@ -1006,8 +1006,8 @@ Requirements: -
    -

    2.2 qmckl_matmul

    +
    +

    2.2 qmckl_matmul

    Matrix multiplication using the qmckl_matrix data type: @@ -1019,7 +1019,7 @@ Matrix multiplication using the qmckl_matrix data type: \]

    -
    +
    @@ -1113,8 +1113,8 @@ Matrix multiplication using the qmckl_matrix data type: -
    -

    2.3 qmckl_adjugate

    +
    +

    2.3 qmckl_adjugate

    Given a matrix \(\mathbf{A}\), the adjugate matrix @@ -1132,7 +1132,7 @@ of \(\mathbf{A}\). See also: https://en.wikipedia.org/wiki/Adjugate_matrix

    -
    +
    @@ -1328,8 +1328,8 @@ determinant with the inverse: -
    -

    2.4 qmckl_transpose

    +
    +

    2.4 qmckl_transpose

    Transposes a matrix: \(A^\dagger_{ji} = A_{ij}\). @@ -1392,7 +1392,7 @@ Transposes a matrix: \(A^\dagger_{ji} = A_{ij}\).

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_context.html b/qmckl_context.html index 154c3dc..d0f7058 100644 --- a/qmckl_context.html +++ b/qmckl_context.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Context @@ -311,21 +311,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, @@ -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
     
    @@ -356,8 +356,8 @@ and ctx is a qmckl_context_struct* pointer.

    -
    -

    1.1 Data structure

    +
    +

    1.1 Data structure

    A tag is used internally to check if the memory domain pointed @@ -385,7 +385,7 @@ to be recomputed. The date is incremented when the context is touched.

    When a new element is added to the context, the functions -qmckl_context_create qmckl_context_destroy and qmckl_context_copy +qmckl_context_create qmckl_context_destroy and qmckl_context_copy should be updated in order to make deep copies.

    @@ -406,8 +406,8 @@ This has the effect to increment the date of the context.
    -
    -

    1.2 Creation

    +
    +

    1.2 Creation

    To create a new context, qmckl_context_create() should be used. @@ -424,8 +424,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 @@ -441,8 +441,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 @@ -450,8 +450,8 @@ number of times the thread has locked it is saved in the

    -
    -

    1.5 Destroy

    +
    +

    1.5 Destroy

    The context is destroyed with qmckl_context_destroy, leaving the ancestors untouched. @@ -469,7 +469,7 @@ It frees the context, and returns the previous context.

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_determinant.html b/qmckl_determinant.html index 74a78c7..efc5054 100644 --- a/qmckl_determinant.html +++ b/qmckl_determinant.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Slater Determinant @@ -311,32 +311,32 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Context

    +
    +

    1 Context

    The following arrays are stored in the context: @@ -528,8 +528,8 @@ Computed data:

    -
    -

    1.1 Data structure

    +
    +

    1.1 Data structure

    typedef struct qmckl_determinant_struct {
    @@ -598,8 +598,8 @@ this mechanism.
     
    -
    -

    1.2 Access functions

    +
    +

    1.2 Access functions

    When all the data for the slater determinants have been provided, the following @@ -613,8 +613,8 @@ function returns true.

    -
    -

    1.3 Initialization functions

    +
    +

    1.3 Initialization functions

    To set the basis set, all the following functions need to be @@ -638,24 +638,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);
    @@ -665,14 +665,14 @@ computed to accelerate the calculations.
     
    -
    -

    2.1.2 Provide

    +
    +

    2.1.2 Provide

    -
    -

    2.1.3 Compute alpha

    +
    +

    2.1.3 Compute alpha

    - +
    @@ -846,10 +846,10 @@ computed to accelerate the calculations. -
    -

    2.1.4 Compute beta

    +
    +

    2.1.4 Compute beta

    -
    +
    @@ -1023,18 +1023,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);
    @@ -1048,14 +1048,14 @@ computed to accelerate the calculations.
     
    -
    -

    2.2.2 Provide

    +
    +

    2.2.2 Provide

    -
    -

    2.2.3 Compute alpha

    +
    +

    2.2.3 Compute alpha

    -
    +
    @@ -1217,10 +1217,10 @@ computed to accelerate the calculations. -
    -

    2.2.4 Compute beta

    +
    +

    2.2.4 Compute beta

    -
    +
    @@ -1387,7 +1387,7 @@ computed to accelerate the calculations.

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_distance.html b/qmckl_distance.html index b014c69..685796d 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 @@ -333,54 +333,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 @@ -393,7 +393,7 @@ between all pairs of points in two sets, one point within each set: \]

    -
    +
    @@ -659,8 +659,8 @@ Requirements: -
    -

    1.1.1 Performance

    +
    +

    1.1.1 Performance

    This function is more efficient when A and B are @@ -670,12 +670,12 @@ transposed.

    -
    -

    2 Distance

    +
    +

    2 Distance

    -
    -

    2.1 qmckl_distance

    +
    +

    2.1 qmckl_distance

    qmckl_distance computes the matrix of the distances between all @@ -693,7 +693,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.

    -
    +
    @@ -794,8 +794,8 @@ the leading dimension: [n][3] in C and (3,n) in Fortra
    -
    -

    2.1.1 Requirements

    +
    +

    2.1.1 Requirements

    • context is not QMCKL_NULL_CONTEXT
    • @@ -813,8 +813,8 @@ the leading dimension: [n][3] in C and (3,n) in Fortra
    -
    -

    2.1.2 C header

    +
    +

    2.1.2 C header

    qmckl_exit_code qmckl_distance (
    @@ -834,8 +834,8 @@ 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, &
    @@ -1002,8 +1002,8 @@ the leading dimension: [n][3] in C and (3,n) in Fortra
     
    -
    -

    2.1.4 Performance

    +
    +

    2.1.4 Performance

    This function is more efficient when A and B are transposed. @@ -1013,12 +1013,12 @@ This function is more efficient when A and B 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 @@ -1036,7 +1036,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.

    - +
    @@ -1144,8 +1144,8 @@ the leading dimension: [n][3] in C and (3,n) in Fortra
    -
    -

    3.1.1 Requirements

    +
    +

    3.1.1 Requirements

    • context is not QMCKL_NULL_CONTEXT
    • @@ -1163,8 +1163,8 @@ the leading dimension: [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 (
    @@ -1185,8 +1185,8 @@ 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, &
    @@ -1356,8 +1356,8 @@ the leading dimension: [n][3] in C and (3,n) in Fortra
     
    -
    -

    3.1.4 Performance

    +
    +

    3.1.4 Performance

    This function is more efficient when A and B are transposed. @@ -1366,12 +1366,12 @@ This function is more efficient when A and B are trans

    -
    -

    4 Rescaled Distance Derivatives

    +
    +

    4 Rescaled Distance Derivatives

    -
    -

    4.1 qmckl_distance_rescaled_deriv_e

    +
    +

    4.1 qmckl_distance_rescaled_deriv_e

    qmckl_distance_rescaled_deriv_e computes the matrix of the gradient and laplacian of the @@ -1438,7 +1438,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.

    - +
    @@ -1776,7 +1776,7 @@ This function is more efficient when A and B are trans

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_electron.html b/qmckl_electron.html index 72d67f2..1c68828 100644 --- a/qmckl_electron.html +++ b/qmckl_electron.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - +Electrons @@ -333,88 +333,88 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Context

    +
    +

    1 Context

    The following data stored in the context: @@ -627,8 +627,8 @@ Computed data:

    -
    -

    1.1 Data structure

    +
    +

    1.1 Data structure

    typedef struct qmckl_electron_struct {
    @@ -707,8 +707,8 @@ this mechanism.
     
    -
    -

    1.2 Access functions

    +
    +

    1.2 Access functions

    Access functions return QMCKL_SUCCESS when the data has been @@ -720,12 +720,12 @@ contains the requested data. Otherwise, this variable is untouched.

    -
    -

    1.2.1 Number of electrons

    +
    +

    1.2.1 Number of electrons

    -
    -

    1.2.2 Number of walkers

    +
    +

    1.2.2 Number of walkers

    A walker is a set of electron coordinates that are arguments of @@ -734,12 +734,12 @@ the wave function. walk_num is the number of walkers.

    -
    -

    1.2.3 Scaling factors Kappa

    +
    +

    1.2.3 Scaling factors Kappa

    -
    -

    1.2.4 Electron coordinates

    +
    +

    1.2.4 Electron coordinates

    Returns the current electron coordinates. The pointer is assumed @@ -789,8 +789,8 @@ returning the current points.

    -
    -

    1.3 Initialization functions

    +
    +

    1.3 Initialization functions

    To set the data relative to the electrons in the context, the @@ -884,8 +884,8 @@ in the context.

    -
    -

    1.4 Test

    +
    +

    1.4 Test

    /* Reference input data */
    @@ -992,8 +992,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 @@ -1006,12 +1006,12 @@ current date is stored.

    -
    -

    2.1 Electron-electron distances

    +
    +

    2.1 Electron-electron distances

    -
    -

    2.1.1 Get

    +
    +

    2.1.1 Get

    qmckl_exit_code qmckl_get_electron_ee_distance(qmckl_context context, double* const distance);
    @@ -1020,10 +1020,10 @@ current date is stored.
     
    -
    -

    2.1.2 Compute

    +
    +

    2.1.2 Compute

    - +
    @@ -1128,8 +1128,8 @@ current date is stored. -
    -

    2.1.3 Test

    +
    +

    2.1.3 Test

    assert(qmckl_electron_provided(context));
    @@ -1163,8 +1163,8 @@ rc = qmckl_get_electron_ee_distance(context, ee_distance);
     
    -
    -

    2.2 Electron-electron rescaled distances

    +
    +

    2.2 Electron-electron rescaled distances

    ee_distance_rescaled stores the matrix of the rescaled distances between all @@ -1182,8 +1182,8 @@ where \(C_{ij}\) is the matrix of electron-electron distances.

    -
    -

    2.2.1 Get

    +
    +

    2.2.1 Get

    qmckl_exit_code qmckl_get_electron_ee_distance_rescaled(qmckl_context context, double* const distance_rescaled);
    @@ -1192,10 +1192,10 @@ where \(C_{ij}\) is the matrix of electron-electron distances.
     
    -
    -

    2.2.2 Compute

    +
    +

    2.2.2 Compute

    -
    +
    @@ -1308,8 +1308,8 @@ where \(C_{ij}\) is the matrix of electron-electron distances. -
    -

    2.2.3 Test

    +
    +

    2.2.3 Test

    assert(qmckl_electron_provided(context));
    @@ -1343,8 +1343,8 @@ rc = qmckl_get_electron_ee_distance_rescaled(context, ee_distance_rescaled);
     
    -
    -

    2.3 Electron-electron rescaled distance gradients and Laplacian with respect to electron coords

    +
    +

    2.3 Electron-electron rescaled distance gradients and Laplacian with respect to electron coords

    The rescaled distances which is given as \(R = (1 - \exp{-\kappa r})/\kappa\) @@ -1356,8 +1356,8 @@ gives the Laplacian \(\partial x^2 + \partial y^2 + \partial z^2\).

    -
    -

    2.3.1 Get

    +
    +

    2.3.1 Get

    qmckl_exit_code qmckl_get_electron_ee_distance_rescaled_deriv_e(qmckl_context context, double* const distance_rescaled_deriv_e);
    @@ -1366,10 +1366,10 @@ gives the Laplacian \(\partial x^2 + \partial y^2 + \partial z^2\).
     
    -
    -

    2.3.2 Compute

    +
    +

    2.3.2 Compute

    -
    +
    @@ -1482,8 +1482,8 @@ gives the Laplacian \(\partial x^2 + \partial y^2 + \partial z^2\). -
    -

    2.3.3 Test

    +
    +

    2.3.3 Test

    assert(qmckl_electron_provided(context));
    @@ -1518,8 +1518,8 @@ rc = qmckl_get_electron_ee_distance_rescaled_deriv_e(context, ee_distance_rescal
     
    -
    -

    2.4 Electron-electron potential

    +
    +

    2.4 Electron-electron potential

    ee_pot calculates the ee potential energy. @@ -1537,8 +1537,8 @@ distance.

    -
    -

    2.4.1 Get

    +
    +

    2.4.1 Get

    qmckl_exit_code qmckl_get_electron_ee_potential(qmckl_context context, double* const ee_pot);
    @@ -1547,10 +1547,10 @@ distance.
     
    -
    -

    2.4.2 Compute

    +
    +

    2.4.2 Compute

    -
    +
    @@ -1666,8 +1666,8 @@ distance. -
    -

    2.4.3 Test

    +
    +

    2.4.3 Test

    double ee_pot[walk_num];
    @@ -1679,12 +1679,12 @@ rc = qmckl_get_electron_ee_potential(context, &(ee_pot[0]));
     
    -
    -

    2.5 Electron-nucleus distances

    +
    +

    2.5 Electron-nucleus distances

    -
    -

    2.5.1 Get

    +
    +

    2.5.1 Get

    qmckl_exit_code qmckl_get_electron_en_distance(qmckl_context context, double* distance);
    @@ -1693,10 +1693,10 @@ rc = qmckl_get_electron_ee_potential(context, &(ee_pot[0]));
     
    -
    -

    2.5.2 Compute

    +
    +

    2.5.2 Compute

    -
    +
    @@ -1821,8 +1821,8 @@ rc = qmckl_get_electron_ee_potential(context, &(ee_pot[0])); -
    -

    2.5.3 Test

    +
    +

    2.5.3 Test

    @@ -1870,8 +1870,8 @@ rc = qmckl_get_electron_en_distance(context, &(en_distance[0][0][0]));
     
    -
    -

    2.6 Electron-nucleus rescaled distances

    +
    +

    2.6 Electron-nucleus rescaled distances

    en_distance_rescaled stores the matrix of the rescaled distances between @@ -1889,8 +1889,8 @@ where \(C_{ij}\) is the matrix of electron-nucleus distances.

    -
    -

    2.6.1 Get

    +
    +

    2.6.1 Get

    qmckl_exit_code qmckl_get_electron_en_distance_rescaled(qmckl_context context, double* distance_rescaled);
    @@ -1900,10 +1900,10 @@ where \(C_{ij}\) is the matrix of electron-nucleus distances.
     
    -
    -

    2.6.2 Compute

    +
    +

    2.6.2 Compute

    -
    +
    @@ -2043,8 +2043,8 @@ where \(C_{ij}\) is the matrix of electron-nucleus distances. -
    -

    2.6.3 Test

    +
    +

    2.6.3 Test

    @@ -2092,8 +2092,8 @@ rc = qmckl_get_electron_en_distance_rescaled(context, &(en_distance_rescaled
     
    -
    -

    2.7 Electron-nucleus rescaled distance gradients and laplacian with respect to electron coords

    +
    +

    2.7 Electron-nucleus rescaled distance gradients and laplacian with respect to electron coords

    The rescaled distances which is given as \(R = (1 - \exp{-\kappa r})/\kappa\) @@ -2105,8 +2105,8 @@ gives the Laplacian \(\partial x^2 + \partial y^2 + \partial z^2\).

    -
    -

    2.7.1 Get

    +
    +

    2.7.1 Get

    qmckl_exit_code qmckl_get_electron_en_distance_rescaled_deriv_e(qmckl_context context, double* distance_rescaled_deriv_e);
    @@ -2115,10 +2115,10 @@ gives the Laplacian \(\partial x^2 + \partial y^2 + \partial z^2\).
     
    -
    -

    2.7.2 Compute

    +
    +

    2.7.2 Compute

    -
    +
    @@ -2259,8 +2259,8 @@ gives the Laplacian \(\partial x^2 + \partial y^2 + \partial z^2\). -
    -

    2.7.3 Test

    +
    +

    2.7.3 Test

    @@ -2312,8 +2312,8 @@ rc = qmckl_get_electron_en_distance_rescaled_deriv_e(context, &(en_distance_
     
    -
    -

    2.8 Electron-nucleus potential

    +
    +

    2.8 Electron-nucleus potential

    en_potential stores the en potential energy @@ -2331,8 +2331,8 @@ distance and \[Z_A\] is the nuclear charge.

    -
    -

    2.8.1 Get

    +
    +

    2.8.1 Get

    qmckl_exit_code qmckl_get_electron_en_potential(qmckl_context context, double* const en_pot);
    @@ -2341,10 +2341,10 @@ distance and \[Z_A\] is the nuclear charge.
     
    -
    -

    2.8.2 Compute

    +
    +

    2.8.2 Compute

    -
    +
    @@ -2478,8 +2478,8 @@ distance and \[Z_A\] is the nuclear charge. -
    -

    2.8.3 Test

    +
    +

    2.8.3 Test

    double en_pot[walk_num];
    @@ -2492,14 +2492,14 @@ rc = qmckl_get_electron_en_potential(context, &(en_pot[0]));
     
    -
    -

    2.9 Generate initial coordinates

    +
    +

    2.9 Generate initial coordinates

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_error.html b/qmckl_error.html index 88619d2..913c364 100644 --- a/qmckl_error.html +++ b/qmckl_error.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Error handling @@ -311,19 +311,19 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    -

    -
    +
    +

    -

    +

    The library should never make the calling programs abort, nor perform any input/output operations. This decision has to be taken @@ -334,7 +334,7 @@ by the developer of the code calling the library. All the functions return with an exit code, defined as

    -
    typedef int32_t qmckl_exit_code;
    +
    typedef int32_t qmckl_exit_code;
     
    @@ -351,7 +351,7 @@ error code is returned to the program. Here is the complete list of exit codes.

    -
    +
    @@ -553,8 +553,8 @@ string is assumed to be large enough to contain the error message -
    -

    1 Decoding errors

    +
    +

    1 Decoding errors

    To decode the error messages, qmckl_string_of_error converts an @@ -572,8 +572,8 @@ The text strings are extracted from the previous table.

    -
    -

    2 Data structure in context

    +
    +

    2 Data structure in context

    The strings are declared internally with a maximum fixed size to avoid @@ -596,8 +596,8 @@ dynamic memory allocation.

    -
    -

    3 Updating errors in the context

    +
    +

    3 Updating errors in the context

    The error is updated in the context using qmckl_set_error. @@ -616,8 +616,8 @@ explaining the error. The exit code can't be QMCKL_SUCCESS.

    -
    -

    4 Get the error

    +
    +

    4 Get the error

    Upon error, the error type and message can be obtained from the @@ -636,8 +636,8 @@ function name and message is mandatory.

    -
    -

    5 Failing

    +
    +

    5 Failing

    To make a function fail, the qmckl_failwith function should be @@ -676,7 +676,7 @@ For example, this function can be used as

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/examples.html b/qmckl_examples.html similarity index 97% rename from examples.html rename to qmckl_examples.html index 034ac45..7138748 100644 --- a/examples.html +++ b/qmckl_examples.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Code examples @@ -333,27 +333,27 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Python

    +
    +

    1 Python

    -
    -

    1.1 Check numerically that MOs are orthonormal

    +
    +

    1.1 Check numerically that MOs are orthonormal

    In this example, we will compute numerically the overlap @@ -529,12 +529,12 @@ and finally we compute the overlap between all the MOs as

    -
    -

    2 Fortran

    +
    +

    2 Fortran

    -
    -

    2.1 Checking errors

    +
    +

    2.1 Checking errors

    All QMCkl functions return an error code. A convenient way to handle @@ -543,7 +543,7 @@ error in text format and exits the program.

    -
    subroutine qmckl_check_error(rc, message)
    +
    subroutine qmckl_check_error(rc, message)
       use qmckl
       implicit none
       integer(qmckl_exit_code), intent(in) :: rc
    @@ -561,8 +561,8 @@ error in text format and exits the program.
     
    -
    -

    2.2 Computing an atomic orbital on a grid

    +
    +

    2.2 Computing an atomic orbital on a grid

    The following program, in Fortran, computes the values of an atomic @@ -781,7 +781,7 @@ We finally print the value and Laplacian of the AO:

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_jastrow.html b/qmckl_jastrow.html index 3427b19..04ac993 100644 --- a/qmckl_jastrow.html +++ b/qmckl_jastrow.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Jastrow Factor @@ -333,105 +333,105 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Introduction

    +
    +

    1 Introduction

    The Jastrow factor depends on the electronic (\(\mathbf{r}\)) and @@ -522,14 +522,14 @@ The terms \(J_{\text{ee}}^\infty\) and \(J_{\text{eN}}^\infty\) are shifts to en

    -
    -

    2 Context

    +
    +

    2 Context

    The following data stored in the context:

    -
    +
    @@ -833,8 +833,8 @@ computed data:
    -
    -

    2.1 Data structure

    +
    +

    2.1 Data structure

    typedef struct qmckl_jastrow_struct{
    @@ -925,8 +925,8 @@ this mechanism.
     
    -
    -

    2.2 Access functions

    +
    +

    2.2 Access functions

    Along with these core functions, calculation of the jastrow factor @@ -946,8 +946,8 @@ function returns true.

    -
    -

    2.3 Initialization functions

    +
    +

    2.3 Initialization functions

    To prepare for the Jastrow and its derivative, all the following functions need to be @@ -972,8 +972,8 @@ are precontracted using BLAS LEVEL 3 operations for an optimal flop count.

    -
    -

    2.4 Test

    +
    +

    2.4 Test

    /* Reference input data */
    @@ -1149,8 +1149,8 @@ rc = qmckl_get_nucleus_charge(context, nucl_charge2, nucl_num);
     
    -
    -

    3 Computation

    +
    +

    3 Computation

    The computed data is stored in the context so that it can be reused @@ -1163,8 +1163,8 @@ current date is stored.

    -
    -

    3.1 Asymptotic component for \(J_{ee}\)

    +
    +

    3.1 Asymptotic component for \(J_{ee}\)

    Calculate the asymptotic component asymp_jasb to be substracted from the final @@ -1179,8 +1179,8 @@ via the bord_vector and the electron-electron rescale factor

    -
    -

    3.1.1 Get

    +
    +

    3.1.1 Get

    qmckl_exit_code
    @@ -1192,10 +1192,10 @@ via the bord_vector and the electron-electron rescale factor 
     
    -
    -

    3.1.2 Compute

    +
    +

    3.1.2 Compute

    - +
    @@ -1331,8 +1331,8 @@ via the bord_vector and the electron-electron rescale factor -
    -

    3.1.3 Test

    +
    +

    3.1.3 Test

    assert(qmckl_electron_provided(context));
    @@ -1383,8 +1383,8 @@ rc = qmckl_get_jastrow_asymp_jasb(context, asymp_jasb,2);
     
    -
    -

    3.2 Electron-electron component \(f_{ee}\)

    +
    +

    3.2 Electron-electron component \(f_{ee}\)

    Calculate the electron-electron jastrow component factor_ee using the asymp_jasb @@ -1399,8 +1399,8 @@ f_{ee} = \sum_{i,j -

    -

    3.2.1 Get

    +
    +

    3.2.1 Get

    qmckl_exit_code
    @@ -1412,10 +1412,10 @@ f_{ee} = \sum_{i,j
     
    -
    -

    3.2.2 Compute

    +
    +

    3.2.2 Compute

    -
    +
    @@ -1642,8 +1642,8 @@ f_{ee} = \sum_{i,j -
    -

    3.2.3 Test

    +
    +

    3.2.3 Test

    /* Check if Jastrow is properly initialized */
    @@ -1661,8 +1661,8 @@ rc = qmckl_get_jastrow_factor_ee(context, factor_ee, walk_num);
     
    -
    -

    3.3 Electron-electron component derivative \(f'_{ee}\)

    +
    +

    3.3 Electron-electron component derivative \(f'_{ee}\)

    Calculate the derivative of the factor_ee using the ee_distance_rescaled and @@ -1677,8 +1677,8 @@ TODO: Add equation

    -
    -

    3.3.1 Get

    +
    +

    3.3.1 Get

    qmckl_exit_code
    @@ -1690,10 +1690,10 @@ TODO: Add equation
     
    -
    -

    3.3.2 Compute

    +
    +

    3.3.2 Compute

    -
    +
    @@ -2055,8 +2055,8 @@ TODO: Add equation -
    -

    3.3.3 Test

    +
    +

    3.3.3 Test

    /* Check if Jastrow is properly initialized */
    @@ -2077,8 +2077,8 @@ rc = qmckl_get_jastrow_factor_ee_deriv_e(context, &(factor_ee_deriv_e[0][0][
     
    -
    -

    3.4 Electron-nucleus component \(f_{en}\)

    +
    +

    3.4 Electron-nucleus component \(f_{en}\)

    Calculate the electron-electron jastrow component factor_en using the aord_vector @@ -2093,8 +2093,8 @@ f_{en} = \sum_{i,j -

    -

    3.4.1 Get

    +
    +

    3.4.1 Get

    qmckl_exit_code
    @@ -2106,10 +2106,10 @@ f_{en} = \sum_{i,j
     
    -
    -

    3.4.2 Compute

    +
    +

    3.4.2 Compute

    -
    +
    @@ -2362,8 +2362,8 @@ f_{en} = \sum_{i,j -
    -

    3.4.3 Test

    +
    +

    3.4.3 Test

    /* Check if Jastrow is properly initialized */
    @@ -2381,8 +2381,8 @@ rc = qmckl_get_jastrow_factor_en(context, factor_en,walk_num);
     
    -
    -

    3.5 Electron-nucleus component derivative \(f'_{en}\)

    +
    +

    3.5 Electron-nucleus component derivative \(f'_{en}\)

    Calculate the electron-electron jastrow component factor_en_deriv_e derivative @@ -2395,8 +2395,8 @@ TODO: write equations.

    -
    -

    3.5.1 Get

    +
    +

    3.5.1 Get

    qmckl_exit_code
    @@ -2408,10 +2408,10 @@ TODO: write equations.
     
    -
    -

    3.5.2 Compute

    +
    +

    3.5.2 Compute

    -
    +
    @@ -2616,8 +2616,8 @@ TODO: write equations. -
    -

    3.5.3 Test

    +
    +

    3.5.3 Test

    /* Check if Jastrow is properly initialized */
    @@ -2639,8 +2639,8 @@ rc = qmckl_get_jastrow_factor_en_deriv_e(context, &(factor_en_deriv_e[0][0][
     
    -
    -

    3.6 Electron-electron rescaled distances for each order

    +
    +

    3.6 Electron-electron rescaled distances for each order

    een_rescaled_e stores the table of the rescaled distances between all @@ -2658,8 +2658,8 @@ where \(C_{ij}\) is the matrix of electron-electron distances.

    -
    -

    3.6.1 Get

    +
    +

    3.6.1 Get

    qmckl_exit_code
    @@ -2671,10 +2671,10 @@ where \(C_{ij}\) is the matrix of electron-electron distances.
     
    -
    -

    3.6.2 Compute

    +
    +

    3.6.2 Compute

    -
    +
    @@ -3003,8 +3003,8 @@ where \(C_{ij}\) is the matrix of electron-electron distances. -
    -

    3.6.3 Test

    +
    +

    3.6.3 Test

    assert(qmckl_electron_provided(context));
    @@ -3026,8 +3026,8 @@ rc = qmckl_get_jastrow_een_rescaled_e(context, &(een_rescaled_e[0][0][0][0])
     
    -
    -

    3.7 Electron-electron rescaled distances for each order and derivatives

    +
    +

    3.7 Electron-electron rescaled distances for each order and derivatives

    een_rescaled_e_deriv_e stores the table of the derivatives of the @@ -3042,8 +3042,8 @@ TODO: write formulae

    -
    -

    3.7.1 Get

    +
    +

    3.7.1 Get

    qmckl_exit_code
    @@ -3055,10 +3055,10 @@ TODO: write formulae
     
    -
    -

    3.7.2 Compute

    +
    +

    3.7.2 Compute

    -
    +
    @@ -3236,8 +3236,8 @@ TODO: write formulae -
    -

    3.7.3 Test

    +
    +

    3.7.3 Test

    //assert(qmckl_electron_provided(context));
    @@ -3259,8 +3259,8 @@ rc = qmckl_get_jastrow_een_rescaled_e_deriv_e(context,
     
    -
    -

    3.8 Electron-nucleus rescaled distances for each order

    +
    +

    3.8 Electron-nucleus rescaled distances for each order

    een_rescaled_n stores the table of the rescaled distances between @@ -3278,8 +3278,8 @@ where \(C_{ia}\) is the matrix of electron-nucleus distances.

    -
    -

    3.8.1 Get

    +
    +

    3.8.1 Get

    qmckl_exit_code
    @@ -3291,10 +3291,10 @@ where \(C_{ia}\) is the matrix of electron-nucleus distances.
     
    -
    -

    3.8.2 Compute

    +
    +

    3.8.2 Compute

    -
    +
    @@ -3511,8 +3511,8 @@ where \(C_{ia}\) is the matrix of electron-nucleus distances. -
    -

    3.8.3 Test

    +
    +

    3.8.3 Test

    assert(qmckl_electron_provided(context));
    @@ -3534,8 +3534,8 @@ rc = qmckl_get_jastrow_een_rescaled_n(context, &(een_rescaled_n[0][0][0][0])
     
    -
    -

    3.9 Electron-nucleus rescaled distances for each order and derivatives

    +
    +

    3.9 Electron-nucleus rescaled distances for each order and derivatives

    een_rescaled_n_deriv_e stores the table of the rescaled distances between @@ -3544,8 +3544,8 @@ electrons and nucleii raised to the power \(p\) defined by cord_num

    -
    -

    3.9.1 Get

    +
    +

    3.9.1 Get

    qmckl_exit_code
    @@ -3557,10 +3557,10 @@ electrons and nucleii raised to the power \(p\) defined by cord_num
     
    -
    -

    3.9.2 Compute

    +
    +

    3.9.2 Compute

    -
    +
    @@ -3760,8 +3760,8 @@ electrons and nucleii raised to the power \(p\) defined by cord_num -
    -

    3.9.3 Test

    +
    +

    3.9.3 Test

    assert(qmckl_electron_provided(context));
    @@ -3784,8 +3784,8 @@ rc = qmckl_get_jastrow_een_rescaled_n_deriv_e(context, &(een_rescaled_n_deri
     
    -
    -

    3.10 Prepare for electron-electron-nucleus Jastrow \(f_{een}\)

    +
    +

    3.10 Prepare for electron-electron-nucleus Jastrow \(f_{een}\)

    Prepare cord_vect_full and lkpm_combined_index tables required for the @@ -3794,8 +3794,8 @@ calculation of the three-body jastrow factor_een and its derivative

    -
    -

    3.10.1 Get

    +
    +

    3.10.1 Get

    qmckl_exit_code qmckl_get_jastrow_dim_cord_vect(qmckl_context context, int64_t* const dim_cord_vect);
    @@ -3808,10 +3808,10 @@ calculation of the three-body jastrow factor_een and its derivative
     
    -
    -

    3.10.2 Compute dimcordvect

    +
    +

    3.10.2 Compute dimcordvect

    -
    +
    @@ -3939,10 +3939,10 @@ calculation of the three-body jastrow factor_een and its derivative -
    -

    3.10.3 Compute cordvectfull

    +
    +

    3.10.3 Compute cordvectfull

    -
    +
    @@ -4147,10 +4147,10 @@ calculation of the three-body jastrow factor_een and its derivative -
    -

    3.10.4 Compute lkpmcombinedindex

    +
    +

    3.10.4 Compute lkpmcombinedindex

    -
    +
    @@ -4306,10 +4306,10 @@ calculation of the three-body jastrow factor_een and its derivative -
    -

    3.10.5 Compute tmpc

    +
    +

    3.10.5 Compute tmpc

    -
    +
    @@ -4492,10 +4492,10 @@ calculation of the three-body jastrow factor_een and its derivative -
    -

    3.10.6 Compute dtmpc

    +
    +

    3.10.6 Compute dtmpc

    -
    +
    @@ -4668,8 +4668,8 @@ calculation of the three-body jastrow factor_een and its derivative -
    -

    3.10.7 Test

    +
    +

    3.10.7 Test

    assert(qmckl_electron_provided(context));
    @@ -4692,8 +4692,8 @@ printf("%e\n%e\n", tmp_c[0][1][0][0][0],0.2
     
    -
    -

    3.11 Electron-electron-nucleus Jastrow \(f_{een}\)

    +
    +

    3.11 Electron-electron-nucleus Jastrow \(f_{een}\)

    Calculate the electron-electron-nuclear three-body jastrow component factor_een @@ -4705,8 +4705,8 @@ TODO: write equations.

    -
    -

    3.11.1 Get

    +
    +

    3.11.1 Get

    qmckl_exit_code
    @@ -4718,10 +4718,10 @@ TODO: write equations.
     
    -
    -

    3.11.2 Compute naive

    +
    +

    3.11.2 Compute naive

    -
    +
    @@ -4902,10 +4902,10 @@ TODO: write equations. -
    -

    3.11.3 Compute

    +
    +

    3.11.3 Compute

    -
    +
    @@ -5079,8 +5079,8 @@ TODO: write equations. -
    -

    3.11.4 Test

    +
    +

    3.11.4 Test

    /* Check if Jastrow is properly initialized */
    @@ -5097,8 +5097,8 @@ rc = qmckl_get_jastrow_factor_een(context, &(factor_een[0]),walk_num);
     
    -
    -

    3.12 Electron-electron-nucleus Jastrow \(f_{een}\) derivative

    +
    +

    3.12 Electron-electron-nucleus Jastrow \(f_{een}\) derivative

    Calculate the electron-electron-nuclear three-body jastrow component factor_een_deriv_e @@ -5110,8 +5110,8 @@ TODO: write equations.

    -
    -

    3.12.1 Get

    +
    +

    3.12.1 Get

    qmckl_exit_code
    @@ -5123,10 +5123,10 @@ TODO: write equations.
     
    -
    -

    3.12.2 Compute Naive

    +
    +

    3.12.2 Compute Naive

    -
    +
    @@ -5340,10 +5340,10 @@ TODO: write equations. -
    -

    3.12.3 Compute

    +
    +

    3.12.3 Compute

    -
    +
    @@ -5551,8 +5551,8 @@ TODO: write equations. -
    -

    3.12.4 Test

    +
    +

    3.12.4 Test

    /* Check if Jastrow is properly initialized */
    @@ -5571,7 +5571,7 @@ rc = qmckl_get_jastrow_factor_een_deriv_e(context, &(factor_een_deriv_e[0][0
     

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_local_energy.html b/qmckl_local_energy.html index 5f9c67f..9053993 100644 --- a/qmckl_local_energy.html +++ b/qmckl_local_energy.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Local Energy @@ -333,43 +333,43 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Context

    +
    +

    1 Context

    The following arrays are stored in the context: @@ -452,8 +452,8 @@ Computed data:

    -
    -

    1.1 Data structure

    +
    +

    1.1 Data structure

    typedef struct qmckl_local_energy_struct {
    @@ -488,12 +488,12 @@ this mechanism.
     
    -
    -

    2 Computation

    +
    +

    2 Computation

    -
    -

    2.1 Kinetic energy

    +
    +

    2.1 Kinetic energy

    Where the kinetic energy is given as: @@ -517,8 +517,8 @@ case is given as follows:

    -
    -

    2.1.1 Get

    +
    +

    2.1.1 Get

    qmckl_exit_code qmckl_get_kinetic_energy(qmckl_context context, double* const kinetic_energy);
    @@ -527,14 +527,14 @@ case is given as follows:
     
    -
    -

    2.1.2 Provide

    +
    +

    2.1.2 Provide

    -
    -

    2.1.3 Compute kinetic enregy

    +
    +

    2.1.3 Compute kinetic enregy

    - +
    @@ -763,12 +763,12 @@ case is given as follows: -
    -

    2.1.4 Test

    +
    +

    2.1.4 Test

    -
    -

    2.2 Potential energy

    +
    +

    2.2 Potential energy

    The potential energy is the sum of all the following terms @@ -804,8 +804,8 @@ contributions.

    -
    -

    2.2.1 Get

    +
    +

    2.2.1 Get

    qmckl_exit_code qmckl_get_potential_energy(qmckl_context context, double* const potential_energy);
    @@ -814,14 +814,14 @@ contributions.
     
    -
    -

    2.2.2 Provide

    +
    +

    2.2.2 Provide

    -
    -

    2.2.3 Compute potential enregy

    +
    +

    2.2.3 Compute potential enregy

    -
    +
    @@ -949,12 +949,12 @@ contributions. -
    -

    2.2.4 Test

    +
    +

    2.2.4 Test

    -
    -

    2.3 Local energy

    +
    +

    2.3 Local energy

    The local energy is the sum of kinetic and potential energies. @@ -968,8 +968,8 @@ E_L = KE + PE

    -
    -

    2.3.1 Get

    +
    +

    2.3.1 Get

    qmckl_exit_code qmckl_get_local_energy(qmckl_context context, double* const local_energy, const int64_t size_max);
    @@ -978,14 +978,14 @@ E_L = KE + PE
     
    -
    -

    2.3.2 Provide

    +
    +

    2.3.2 Provide

    -
    -

    2.3.3 Compute local enregy

    +
    +

    2.3.3 Compute local enregy

    -
    +
    @@ -1081,12 +1081,12 @@ E_L = KE + PE -
    -

    2.3.4 Test

    +
    +

    2.3.4 Test

    -
    -

    2.4 Drift vector

    +
    +

    2.4 Drift vector

    The drift vector is calculated as the ration of the gradient @@ -1100,8 +1100,8 @@ with the determinant of the wavefunction.

    -
    -

    2.4.1 Get

    +
    +

    2.4.1 Get

    qmckl_exit_code qmckl_get_drift_vector(qmckl_context context, double* const drift_vector);
    @@ -1110,14 +1110,14 @@ with the determinant of the wavefunction.
     
    -
    -

    2.4.2 Provide

    +
    +

    2.4.2 Provide

    -
    -

    2.4.3 Compute drift vector

    +
    +

    2.4.3 Compute drift vector

    -
    +
    @@ -1338,15 +1338,15 @@ with the determinant of the wavefunction. -
    -

    2.4.4 Test

    +
    +

    2.4.4 Test

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_memory.html b/qmckl_memory.html index 114f941..ed409fd 100644 --- a/qmckl_memory.html +++ b/qmckl_memory.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - +Memory management @@ -311,15 +311,15 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Memory data structure for the context

    +
    +

    1 Memory data structure for the context

    Every time a new block of memory is allocated, the information @@ -361,8 +361,8 @@ array, and the number of allocated blocks.

    -
    -

    2 Passing info to allocation routines

    +
    +

    2 Passing info to allocation routines

    Passing information to the allocation routine should be done by @@ -371,8 +371,8 @@ passing an instance of a qmckl_memory_info_struct.

    -
    -

    3 Allocation/deallocation functions

    +
    +

    3 Allocation/deallocation functions

    Memory allocation inside the library should be done with @@ -535,7 +535,7 @@ allocation and needs to be updated.

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_mo.html b/qmckl_mo.html index 31f50fa..957af0f 100644 --- a/qmckl_mo.html +++ b/qmckl_mo.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Molecular Orbitals @@ -311,44 +311,44 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Context

    +
    +

    1 Context

    The following arrays are stored in the context: @@ -428,8 +428,8 @@ Computed data:

    -
    -

    1.1 Data structure

    +
    +

    1.1 Data structure

    typedef struct qmckl_mo_basis_struct {
    @@ -481,8 +481,8 @@ this mechanism.
     
    -
    -

    1.2 Access functions

    +
    +

    1.2 Access functions

    When all the data for the AOs have been provided, the following @@ -495,41 +495,13 @@ function returns true.

    -
    -

    1.2.1 Fortran interfaces

    -
    -
    -
    interface
    -  integer(c_int32_t) function qmckl_get_mo_basis_mo_num (context, &
    -       mo_num) bind(C)
    -    use, intrinsic :: iso_c_binding
    -    import
    -    implicit none
    -    integer (c_int64_t) , intent(in)  , value :: context
    -    integer (c_int64_t) , intent(out)         :: mo_num
    -  end function qmckl_get_mo_basis_mo_num
    -end interface
    -
    -interface
    -  integer(c_int32_t) function qmckl_get_mo_basis_coefficient(context, &
    -       coefficient, size_max) bind(C)
    -    use, intrinsic :: iso_c_binding
    -    import
    -    implicit none
    -    integer (c_int64_t) , intent(in)  , value :: context
    -    double precision, intent(out)             :: coefficient(*)
    -    integer (c_int64_t) , intent(in), value   :: size_max
    -  end function qmckl_get_mo_basis_coefficient
    -end interface
    -
    -
    -
    -
    +
    +

    1.2.1 Fortran interfaces

    -
    -

    1.3 Initialization functions

    +
    +

    1.3 Initialization functions

    To set the basis set, all the following functions need to be @@ -550,16 +522,16 @@ computed to accelerate the calculations.

    -
    -

    2 Computation

    +
    +

    2 Computation

    -
    -

    2.1 Computation of MOs: values only

    +
    +

    2.1 Computation of MOs: values only

    -
    -

    2.1.1 Get

    +
    +

    2.1.1 Get

    qmckl_exit_code
    @@ -583,14 +555,14 @@ Uses the given array to compute the values.
     
    -
    -

    2.1.2 Provide

    +
    +

    2.1.2 Provide

    -
    -

    2.1.3 Compute

    +
    +

    2.1.3 Compute

    - +
    @@ -640,7 +612,7 @@ Uses the given array to compute the values. - + @@ -674,7 +646,7 @@ matrix multiplication instead of a dgemm, as exposed in
    integer function qmckl_compute_mo_basis_mo_value_doc_f(context, &
          ao_num, mo_num, point_num, &
    -     coef_normalized_t, ao_value, mo_value) &
    +     coefficient_t, ao_value, mo_value) &
          result(info)
       use qmckl
       implicit none
    @@ -682,7 +654,7 @@ matrix multiplication instead of a dgemm, as exposed in
       integer*8             , intent(in)  :: ao_num, mo_num
       integer*8             , intent(in)  :: point_num
       double precision      , intent(in)  :: ao_value(ao_num,point_num)
    -  double precision      , intent(in)  :: coef_normalized_t(mo_num,ao_num)
    +  double precision      , intent(in)  :: coefficient_t(mo_num,ao_num)
       double precision      , intent(out) :: mo_value(mo_num,point_num)
       integer*8 :: i,j,k
       double precision :: c1, c2, c3, c4, c5
    @@ -697,7 +669,7 @@ matrix multiplication instead of a dgemm, as exposed in
                if (ao_value(k,j) /= 0.d0) then
                   c1 = ao_value(k,j)
                   do i=1,mo_num
    -                 mo_value(i,j) = mo_value(i,j) + coef_normalized_t(i,k) * c1
    +                 mo_value(i,j) = mo_value(i,j) + coefficient_t(i,k) * c1
                   end do
                end if
             end do
    @@ -705,12 +677,12 @@ matrix multiplication instead of a dgemm, as exposed in
     
       else ! dgemm
     
    -    LDA = size(coef_normalized_t,1)
    +    LDA = size(coefficient_t,1)
         LDB = size(ao_value,1) 
         LDC = size(mo_value,1)
     
         info = qmckl_dgemm(context,'N', 'N', mo_num, point_num, ao_num, 1.d0,     &
    -                                    coef_normalized_t, LDA, ao_value, LDB, &
    +                                    coefficient_t, LDA, ao_value, LDB, &
                                         0.d0, mo_value, LDC)
     
       end if
    @@ -725,7 +697,7 @@ matrix multiplication instead of a dgemm, as exposed in
           const int64_t ao_num,
           const int64_t mo_num,
           const int64_t point_num,
    -      const double* coef_normalized_t,
    +      const double* coefficient_t,
           const double* ao_value,
           double* const mo_value ); 
     
    @@ -737,7 +709,7 @@ matrix multiplication instead of a dgemm, as exposed in const int64_t ao_num, const int64_t mo_num, const int64_t point_num, - const double* coef_normalized_t, + const double* coefficient_t, const double* ao_value, double* const mo_value ); @@ -749,14 +721,14 @@ matrix multiplication instead of a dgemm, as exposed in const int64_t ao_num, const int64_t mo_num, const int64_t point_num, - const double* coef_normalized_t, + const double* coefficient_t, const double* ao_value, double* const mo_value ) { #ifdef HAVE_HPC - return qmckl_compute_mo_basis_mo_value_hpc (context, ao_num, mo_num, point_num, coef_normalized_t, ao_value, mo_value); + return qmckl_compute_mo_basis_mo_value_hpc (context, ao_num, mo_num, point_num, coefficient_t, ao_value, mo_value); #else - return qmckl_compute_mo_basis_mo_value_doc (context, ao_num, mo_num, point_num, coef_normalized_t, ao_value, mo_value); + return qmckl_compute_mo_basis_mo_value_doc (context, ao_num, mo_num, point_num, coefficient_t, ao_value, mo_value); #endif } @@ -764,8 +736,8 @@ matrix multiplication instead of a dgemm, as exposed in
    -
    -

    2.1.4 HPC version

    +
    +

    2.1.4 HPC version

    #ifdef HAVE_HPC
    @@ -774,7 +746,7 @@ matrix multiplication instead of a dgemm, as exposed in
                                          const int64_t ao_num,
                                          const int64_t mo_num,
                                          const int64_t point_num,
    -                                     const double* coef_normalized_t,
    +                                     const double* coefficient_t,
                                          const double* ao_value,
                                          double* const mo_value );
     #endif
    @@ -788,7 +760,7 @@ matrix multiplication instead of a dgemm, as exposed in
                                          const int64_t ao_num,
                                          const int64_t mo_num,
                                          const int64_t point_num,
    -                                     const double* restrict coef_normalized_t,
    +                                     const double* restrict coefficient_t,
                                          const double* restrict ao_value,
                                          double* restrict const mo_value )
     {
    @@ -819,10 +791,10 @@ matrix multiplication instead of a dgemm, as exposed in
         int64_t n;
     
         for (n=0 ; n < nidx-4 ; n+=4) {
    -      const double* restrict ck1 = coef_normalized_t + idx[n  ]*mo_num;
    -      const double* restrict ck2 = coef_normalized_t + idx[n+1]*mo_num;
    -      const double* restrict ck3 = coef_normalized_t + idx[n+2]*mo_num;
    -      const double* restrict ck4 = coef_normalized_t + idx[n+3]*mo_num;
    +      const double* restrict ck1 = coefficient_t + idx[n  ]*mo_num;
    +      const double* restrict ck2 = coefficient_t + idx[n+1]*mo_num;
    +      const double* restrict ck3 = coefficient_t + idx[n+2]*mo_num;
    +      const double* restrict ck4 = coefficient_t + idx[n+3]*mo_num;
     
           const double a11 = av1[n  ];
           const double a21 = av1[n+1];
    @@ -839,7 +811,7 @@ matrix multiplication instead of a dgemm, as exposed in
     
         const int64_t n0 = n < 0 ? 0 : n;
         for (int64_t m=n0 ; m < nidx ; m+=1) {
    -      const double* restrict ck = coef_normalized_t + idx[m]*mo_num;
    +      const double* restrict ck = coefficient_t + idx[m]*mo_num;
           const double a1 = av1[m];
     
     #ifdef HAVE_OPENMP
    @@ -859,12 +831,12 @@ matrix multiplication instead of a dgemm, as exposed in
     
    -
    -

    2.2 Computation of MOs: values, gradient, Laplacian

    +
    +

    2.2 Computation of MOs: values, gradient, Laplacian

    -
    -

    2.2.1 Get

    +
    +

    2.2.1 Get

    qmckl_exit_code
    @@ -888,14 +860,14 @@ Uses the given array to compute the VGL.
     
    -
    -

    2.2.2 Provide

    +
    +

    2.2.2 Provide

    -
    -

    2.2.3 Compute

    +
    +

    2.2.3 Compute

    -
    coef_normalized_tcoefficient_t double[mo_num][ao_num] in Transpose of the AO to MO transformation matrix
    +
    @@ -945,7 +917,7 @@ Uses the given array to compute the VGL. - + @@ -979,7 +951,7 @@ matrix multiplication instead of a dgemm, as exposed in
    integer function qmckl_compute_mo_basis_mo_vgl_doc_f(context, &
          ao_num, mo_num, point_num, &
    -     coef_normalized_t, ao_vgl, mo_vgl) &
    +     coefficient_t, ao_vgl, mo_vgl) &
          result(info)
       use qmckl
       implicit none
    @@ -987,46 +959,36 @@ matrix multiplication instead of a dgemm, as exposed in
       integer*8             , intent(in)  :: ao_num, mo_num
       integer*8             , intent(in)  :: point_num
       double precision      , intent(in)  :: ao_vgl(ao_num,5,point_num)
    -  double precision      , intent(in)  :: coef_normalized_t(mo_num,ao_num)
    +  double precision      , intent(in)  :: coefficient_t(mo_num,ao_num)
       double precision      , intent(out) :: mo_vgl(mo_num,5,point_num)
       integer*8 :: i,j,k
       double precision :: c1, c2, c3, c4, c5
     
    -  integer*8 :: LDA, LDB, LDC
    -
    -  info = QMCKL_SUCCESS
    -  if (.True.)  then    ! fast algorithm
    -     do j=1,point_num
    -        mo_vgl(:,:,j) = 0.d0
    -        do k=1,ao_num
    -           if (ao_vgl(k,1,j) /= 0.d0) then
    -              c1 = ao_vgl(k,1,j)
    -              c2 = ao_vgl(k,2,j)
    -              c3 = ao_vgl(k,3,j)
    -              c4 = ao_vgl(k,4,j)
    -              c5 = ao_vgl(k,5,j)
    -              do i=1,mo_num
    -                 mo_vgl(i,1,j) = mo_vgl(i,1,j) + coef_normalized_t(i,k) * c1
    -                 mo_vgl(i,2,j) = mo_vgl(i,2,j) + coef_normalized_t(i,k) * c2
    -                 mo_vgl(i,3,j) = mo_vgl(i,3,j) + coef_normalized_t(i,k) * c3
    -                 mo_vgl(i,4,j) = mo_vgl(i,4,j) + coef_normalized_t(i,k) * c4
    -                 mo_vgl(i,5,j) = mo_vgl(i,5,j) + coef_normalized_t(i,k) * c5
    -              end do
    -           end if
    -        end do
    +  do j=1,point_num
    +     mo_vgl(:,:,j) = 0.d0
    +     do k=1,ao_num
    +        if (ao_vgl(k,1,j) /= 0.d0) then
    +           c1 = ao_vgl(k,1,j)
    +           c2 = ao_vgl(k,2,j)
    +           c3 = ao_vgl(k,3,j)
    +           c4 = ao_vgl(k,4,j)
    +           c5 = ao_vgl(k,5,j)
    +           do i=1,mo_num
    +              mo_vgl(i,1,j) = mo_vgl(i,1,j) + coefficient_t(i,k) * c1
    +              mo_vgl(i,2,j) = mo_vgl(i,2,j) + coefficient_t(i,k) * c2
    +              mo_vgl(i,3,j) = mo_vgl(i,3,j) + coefficient_t(i,k) * c3
    +              mo_vgl(i,4,j) = mo_vgl(i,4,j) + coefficient_t(i,k) * c4
    +              mo_vgl(i,5,j) = mo_vgl(i,5,j) + coefficient_t(i,k) * c5
    +           end do
    +        end if
          end do
    +  end do
    +  info = QMCKL_SUCCESS
     
    -  else ! dgemm
    -
    -    LDA = size(coef_normalized_t,1)
    -    LDB = size(ao_vgl,1) 
    -    LDC = size(mo_vgl,1)
    -
    -    info = qmckl_dgemm(context,'N', 'N', mo_num, point_num*5_8, ao_num*1_8, 1.d0,     &
    -                                    coef_normalized_t, LDA, ao_vgl, LDB, &
    -                                    0.d0, mo_vgl, LDC)
    -
    -  end if
    +! info = qmckl_dgemm(context,'N', 'N', mo_num, point_num, ao_num, 1.d0, &
    +!      coefficient_t, int(size(coefficient_t,1),8),      &
    +!      ao_vgl, int(size(ao_vgl,1),8), 0.d0,                  &
    +!      mo_vgl, int(size(mo_vgl,1),8))
     
     end function qmckl_compute_mo_basis_mo_vgl_doc_f
     
    @@ -1038,7 +1000,7 @@ matrix multiplication instead of a dgemm, as exposed in const int64_t ao_num, const int64_t mo_num, const int64_t point_num, - const double* coef_normalized_t, + const double* coefficient_t, const double* ao_vgl, double* const mo_vgl ); @@ -1050,7 +1012,7 @@ matrix multiplication instead of a dgemm, as exposed in const int64_t ao_num, const int64_t mo_num, const int64_t point_num, - const double* coef_normalized_t, + const double* coefficient_t, const double* ao_vgl, double* const mo_vgl ); @@ -1062,14 +1024,14 @@ matrix multiplication instead of a dgemm, as exposed in const int64_t ao_num, const int64_t mo_num, const int64_t point_num, - const double* coef_normalized_t, + const double* coefficient_t, const double* ao_vgl, double* const mo_vgl ) { #ifdef HAVE_HPC - return qmckl_compute_mo_basis_mo_vgl_hpc (context, ao_num, mo_num, point_num, coef_normalized_t, ao_vgl, mo_vgl); + return qmckl_compute_mo_basis_mo_vgl_hpc (context, ao_num, mo_num, point_num, coefficient_t, ao_vgl, mo_vgl); #else - return qmckl_compute_mo_basis_mo_vgl_doc (context, ao_num, mo_num, point_num, coef_normalized_t, ao_vgl, mo_vgl); + return qmckl_compute_mo_basis_mo_vgl_doc (context, ao_num, mo_num, point_num, coefficient_t, ao_vgl, mo_vgl); #endif } @@ -1077,8 +1039,8 @@ matrix multiplication instead of a dgemm, as exposed in
    -
    -

    2.2.4 HPC version

    +
    +

    2.2.4 HPC version

    #ifdef HAVE_HPC
    @@ -1087,7 +1049,7 @@ matrix multiplication instead of a dgemm, as exposed in
                                        const int64_t ao_num,
                                        const int64_t mo_num,
                                        const int64_t point_num,
    -                                   const double* coef_normalized_t,
    +                                   const double* coefficient_t,
                                        const double* ao_vgl,
                                        double* const mo_vgl );
     #endif
    @@ -1101,7 +1063,7 @@ matrix multiplication instead of a dgemm, as exposed in
                                        const int64_t ao_num,
                                        const int64_t mo_num,
                                        const int64_t point_num,
    -                                   const double* restrict coef_normalized_t,
    +                                   const double* restrict coefficient_t,
                                        const double* restrict ao_vgl,
                                        double* restrict const mo_vgl )
     {
    @@ -1153,10 +1115,10 @@ matrix multiplication instead of a dgemm, as exposed in
         int64_t n;
     
         for (n=0 ; n < nidx-4 ; n+=4) {
    -      const double* restrict ck1 = coef_normalized_t + idx[n  ]*mo_num;
    -      const double* restrict ck2 = coef_normalized_t + idx[n+1]*mo_num;
    -      const double* restrict ck3 = coef_normalized_t + idx[n+2]*mo_num;
    -      const double* restrict ck4 = coef_normalized_t + idx[n+3]*mo_num;
    +      const double* restrict ck1 = coefficient_t + idx[n  ]*mo_num;
    +      const double* restrict ck2 = coefficient_t + idx[n+1]*mo_num;
    +      const double* restrict ck3 = coefficient_t + idx[n+2]*mo_num;
    +      const double* restrict ck4 = coefficient_t + idx[n+3]*mo_num;
     
           const double a11 = av1[n  ];
           const double a21 = av1[n+1];
    @@ -1197,7 +1159,7 @@ matrix multiplication instead of a dgemm, as exposed in
     
         const int64_t n0 = n < 0 ? 0 : n;
         for (int64_t m=n0 ; m < nidx ; m+=1) {
    -      const double* restrict ck = coef_normalized_t + idx[m]*mo_num;
    +      const double* restrict ck = coefficient_t + idx[m]*mo_num;
           const double a1 = av1[m];
           const double a2 = av2[m];
           const double a3 = av3[m];
    @@ -1225,14 +1187,14 @@ matrix multiplication instead of a dgemm, as exposed in
     
    -
    -

    2.3 Test

    +
    +

    2.3 Test

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_nucleus.html b/qmckl_nucleus.html index 0715e64..1e6afa4 100644 --- a/qmckl_nucleus.html +++ b/qmckl_nucleus.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Nucleus @@ -333,35 +333,35 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Context

    +
    +

    1 Context

    The following data stored in the context: @@ -486,8 +486,8 @@ Computed data:

    coef_normalized_tcoefficient_t double[mo_num][ao_num] in Transpose of the AO to MO transformation matrix
    -
    -

    1.1 Data structure

    +
    +

    1.1 Data structure

    typedef struct qmckl_nucleus_struct {
    @@ -545,8 +545,8 @@ this mechanism.
     
    -
    -

    1.2 Access functions

    +
    +

    1.2 Access functions

    When all the data relative to nuclei have been set, the following @@ -560,8 +560,8 @@ function returns true.

    -
    -

    1.3 Initialization functions

    +
    +

    1.3 Initialization functions

    To set the data relative to the nuclei in the context, the @@ -618,8 +618,8 @@ Sets the rescale parameter for the nuclear distances.

    -
    -

    1.4 Test

    +
    +

    1.4 Test

    const double*   nucl_charge   = chbrclf_charge;
    @@ -702,8 +702,8 @@ rc = qmckl_get_nucleus_charge(context, nucl_charge2, chbrclf_nucl_num);
     
    -
    -

    2 Computation

    +
    +

    2 Computation

    The computed data is stored in the context so that it can be reused @@ -716,12 +716,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
    @@ -733,10 +733,10 @@ current date is stored.
     
    -
    -

    2.1.2 Compute

    +
    +

    2.1.2 Compute

    - +
    @@ -814,8 +814,8 @@ current date is stored. -
    -

    2.1.3 Test

    +
    +

    2.1.3 Test

    /* Reference input data */
    @@ -834,12 +834,12 @@ rc = qmckl_get_nucleus_nn_distance(context, distance, chbrclf_nucl_num*chbrclf_n
     
    -
    -

    2.2 Nucleus-nucleus rescaled distances

    +
    +

    2.2 Nucleus-nucleus rescaled distances

    -
    -

    2.2.1 Get

    +
    +

    2.2.1 Get

    qmckl_exit_code
    @@ -851,10 +851,10 @@ rc = qmckl_get_nucleus_nn_distance(context, distance, chbrclf_nucl_num*chbrclf_n
     
    -
    -

    2.2.2 Compute

    +
    +

    2.2.2 Compute

    -
    +
    @@ -933,8 +933,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance, chbrclf_nucl_num*chbrclf_n -
    -

    2.2.3 Test

    +
    +

    2.2.3 Test

    /* Reference input data */
    @@ -954,8 +954,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance, chbrclf_nucl_num*chbrclf_n
     
    -
    -

    2.3 Nuclear repulsion energy

    +
    +

    2.3 Nuclear repulsion energy

    \[ @@ -964,8 +964,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance, chbrclf_nucl_num*chbrclf_n

    -
    -

    2.3.1 Get

    +
    +

    2.3.1 Get

    qmckl_exit_code qmckl_get_nucleus_repulsion(qmckl_context context, double* const energy);
    @@ -974,10 +974,10 @@ rc = qmckl_get_nucleus_nn_distance(context, distance, chbrclf_nucl_num*chbrclf_n
     
    -
    -

    2.3.2 Compute

    +
    +

    2.3.2 Compute

    -
    +
    @@ -1067,8 +1067,8 @@ rc = qmckl_get_nucleus_nn_distance(context, distance, chbrclf_nucl_num*chbrclf_n -
    -

    2.3.3 Test

    +
    +

    2.3.3 Test

    /* Reference input data */
    @@ -1088,7 +1088,7 @@ rc = qmckl_get_nucleus_repulsion(context, &rep);
     

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_numprec.html b/qmckl_numprec.html index 1d9c544..2c74b80 100644 --- a/qmckl_numprec.html +++ b/qmckl_numprec.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + 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

    qmckl_get_numprec_epsilon returns \(\epsilon = 2^{1-n}\) where n is the precision. @@ -581,7 +581,7 @@ We need to remove the sign bit from the precision.

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_point.html b/qmckl_point.html index 0772be8..67bc7a4 100644 --- a/qmckl_point.html +++ b/qmckl_point.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Point @@ -333,25 +333,25 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Context

    +
    +

    1 Context

    The following data stored in the context: @@ -401,8 +401,8 @@ corresponds to the 3 × num matrix.

    -
    -

    1.1 Data structure

    +
    +

    1.1 Data structure

    typedef struct qmckl_point_struct {
    @@ -438,8 +438,8 @@ corresponds to the 3 × num matrix.
     
    -
    -

    1.2 Access functions

    +
    +

    1.2 Access functions

    Access functions return QMCKL_SUCCESS when the data has been @@ -450,8 +450,8 @@ contains the requested data. Otherwise, this variable is untouched.

    -
    -

    1.2.1 Number of points

    +
    +

    1.2.1 Number of points

    Returns the number of points stored in the context. @@ -473,8 +473,8 @@ Returns the number of points stored in the context.

    -
    -

    1.2.2 Point coordinates

    +
    +

    1.2.2 Point coordinates

    Returns the point coordinates as sequences of (x,y,z). @@ -502,8 +502,8 @@ The pointer is assumed to point on a memory block of size

    -
    -

    1.3 Initialization functions

    +
    +

    1.3 Initialization functions

    When the data is set in the context, if the arrays are large @@ -625,8 +625,8 @@ Copy a sequence of num points \((x,y,z)\) into the context. integer (c_int64_t) , intent(in) , value :: context character(c_char) , intent(in) , value :: transp - real (c_double ) , intent(in) :: coord(*) integer (c_int64_t) , intent(in) , value :: num + real (c_double ) , intent(in) :: coord(*) integer (c_int64_t) , intent(in) , value :: size_max end function end interface @@ -636,8 +636,8 @@ Copy a sequence of num points \((x,y,z)\) into the context.

    -
    -

    1.4 Test

    +
    +

    1.4 Test

    /* Reference input data */
    @@ -696,7 +696,7 @@ rc = qmckl_get_point (context, 'N', coord3,
     

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_sherman_morrison_woodbury.html b/qmckl_sherman_morrison_woodbury.html index 34863ae..b998a26 100644 --- a/qmckl_sherman_morrison_woodbury.html +++ b/qmckl_sherman_morrison_woodbury.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Sherman-Morrison-Woodbury @@ -333,86 +333,86 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Headers

    +
    +

    1 Headers

    #include "qmckl.h"
    @@ -431,12 +431,12 @@ for the JavaScript code in this tag.
     
    -
    -

    2 Naïve Sherman-Morrison

    +
    +

    2 Naïve Sherman-Morrison

    -
    -

    2.1 qmckl_sherman_morrison

    +
    +

    2.1 qmckl_sherman_morrison

    This is the simplest of the available Sherman-Morrison-Woodbury kernels. It applies rank-1 updates one by one in @@ -478,7 +478,7 @@ If the determinant of the Slater-matrix is passed, it will be updated to the det from applying the updates to the original matrix.

    -
    +
    @@ -557,8 +557,8 @@ from applying the updates to the original matrix.
    -
    -

    2.1.1 Requirements

    +
    +

    2.1.1 Requirements

    • context is not QMCKL_NULL_CONTEXT
    • @@ -573,8 +573,8 @@ from applying the updates to the original matrix.
    -
    -

    2.1.2 C header

    +
    +

    2.1.2 C header

    qmckl_exit_code qmckl_sherman_morrison (
    @@ -592,8 +592,8 @@ from applying the updates to the original matrix.
     
    -
    -

    2.1.3 C source

    +
    +

    2.1.3 C source

    #include <stdbool.h>
    @@ -663,8 +663,8 @@ from applying the updates to the original matrix.
     
    -
    -

    2.1.4 Performance

    +
    +

    2.1.4 Performance

    This function performs best when there is only 1 rank-1 update in the update cycle. It is not useful to @@ -676,12 +676,12 @@ where applying the update causes singular behaviour.

    -
    -

    3 Woodbury 2x2

    +
    +

    3 Woodbury 2x2

    -
    -

    3.1 qmckl_woodbury_2

    +
    +

    3.1 qmckl_woodbury_2

    The Woodbury 2x2 kernel. It is used to apply two rank-1 updates at once. The formula used in @@ -705,7 +705,7 @@ from applying the updates to the original matrix. - +
    @@ -777,8 +777,8 @@ from applying the updates to the original matrix.

    -
    -

    3.1.1 Requirements

    +
    +

    3.1.1 Requirements

    • context is not qmckl_null_context
    • @@ -792,8 +792,8 @@ from applying the updates to the original matrix.
    -
    -

    3.1.2 C header

    +
    +

    3.1.2 C header

    qmckl_exit_code qmckl_woodbury_2 (
    @@ -810,8 +810,8 @@ from applying the updates to the original matrix.
     
    -
    -

    3.1.3 C source

    +
    +

    3.1.3 C source

    #include <stdbool.h>
    @@ -898,8 +898,8 @@ from applying the updates to the original matrix.
     
    -
    -

    3.1.4 Performance

    +
    +

    3.1.4 Performance

    This function is most efficient when used in cases where there are only 2 rank-1 updates and @@ -910,12 +910,12 @@ it is sure they will not result in a singular matrix.

    -
    -

    4 Woodbury 3x3

    +
    +

    4 Woodbury 3x3

    -
    -

    4.1 qmckl_woodbury_3

    +
    +

    4.1 qmckl_woodbury_3

    The 3x3 version of the Woodbury 2x2 kernel. It is used to apply three @@ -936,7 +936,7 @@ from applying the updates to the original matrix. - +
    @@ -1008,8 +1008,8 @@ from applying the updates to the original matrix.

    -
    -

    4.1.1 Requirements

    +
    +

    4.1.1 Requirements

    • context is not qmckl_null_context
    • @@ -1023,8 +1023,8 @@ from applying the updates to the original matrix.
    -
    -

    4.1.2 C header

    +
    +

    4.1.2 C header

    qmckl_exit_code qmckl_woodbury_3 (
    @@ -1041,8 +1041,8 @@ from applying the updates to the original matrix.
     
    -
    -

    4.1.3 C source

    +
    +

    4.1.3 C source

    #include <stdbool.h>
    @@ -1144,8 +1144,8 @@ from applying the updates to the original matrix.
     
    -
    -

    4.1.4 Performance…

    +
    +

    4.1.4 Performance…

    This function is most efficient when used in cases where there are only 3 rank-1 updates and @@ -1156,12 +1156,12 @@ it is sure they will not result in a singular matrix.

    -
    -

    5 Sherman-Morrison with update splitting

    +
    +

    5 Sherman-Morrison with update splitting

    -
    -

    5.1 qmckl_sherman_morrison_splitting

    +
    +

    5.1 qmckl_sherman_morrison_splitting

    This is a variation on the 'Naive' Sherman-Morrison kernel. Whenever the denominator \(1+v_j^T S^{-1} u_j\) in @@ -1183,7 +1183,7 @@ If the determinant of the Slater-matrix is passed, it will be updated to the det from applying the updates to the original matrix.

    - +
    @@ -1267,8 +1267,8 @@ from applying the updates to the original matrix. -
    -

    5.1.1 Requirements

    +
    +

    5.1.1 Requirements

    • context is not QMCKL_NULL_CONTEXT
    • @@ -1283,8 +1283,8 @@ from applying the updates to the original matrix.
    -
    -

    5.1.2 C header

    +
    +

    5.1.2 C header

    qmckl_exit_code qmckl_sherman_morrison_splitting (
    @@ -1302,8 +1302,8 @@ from applying the updates to the original matrix.
     
    -
    -

    5.1.3 C source

    +
    +

    5.1.3 C source

    #include <stdbool.h>
    @@ -1343,8 +1343,8 @@ from applying the updates to the original matrix.
     
    -
    -

    5.1.4 Performance…

    +
    +

    5.1.4 Performance…

    This kernel performs best when there are 2 or more rank-1 update cycles and fail-rate is high. @@ -1354,12 +1354,12 @@ This kernel performs best when there are 2 or more rank-1 update cycles and fail

    -
    -

    6 Woodbury 3x3 and 2x2 with Sherman-Morrison and update splitting

    +
    +

    6 Woodbury 3x3 and 2x2 with Sherman-Morrison and update splitting

    -
    -

    6.1 qmckl_sherman_morrison_smw32s

    +
    +

    6.1 qmckl_sherman_morrison_smw32s

    The Woodbury 3x3 and 2x2 kernel with Sherman-Morrison and update splitting combines the low-level Woodbury 3x3 kernel, @@ -1374,7 +1374,7 @@ If the determinant of the Slater-matrix is passed, it will be updated to the det from applying the updates to the original matrix.

    -
    +
    @@ -1454,8 +1454,8 @@ from applying the updates to the original matrix. -
    -

    6.1.1 Requirements

    +
    +

    6.1.1 Requirements

    • context is not QMCKL_NULL_CONTEXT
    • @@ -1470,8 +1470,8 @@ from applying the updates to the original matrix.
    -
    -

    6.1.2 C header

    +
    +

    6.1.2 C header

    qmckl_exit_code qmckl_sherman_morrison_smw32s (
    @@ -1489,8 +1489,8 @@ from applying the updates to the original matrix.
     
    -
    -

    6.1.3 C source

    +
    +

    6.1.3 C source

    #include <stdbool.h>
    @@ -1568,8 +1568,8 @@ from applying the updates to the original matrix.
     
    -
    -

    6.1.4 Performance…

    +
    +

    6.1.4 Performance…

    This kernel performs best for update cycles with 2 or more rank-1 updates and the fail-rate is low. @@ -1579,8 +1579,8 @@ This kernel performs best for update cycles with 2 or more rank-1 updates and th

    -
    -

    7 Helper Functions

    +
    +

    7 Helper Functions

    Private helper-functions that are used by the Sherman-Morrison-Woodbury kernels. @@ -1588,8 +1588,8 @@ These functions can only be used internally by the kernels in this module.

    -
    -

    7.1 qmckl_slagel_splitting

    +
    +

    7.1 qmckl_slagel_splitting

    qmckl_slagel_splitting is the non-recursive, inner part of the 'Sherman-Morrison with update splitting'-kernel. @@ -1609,7 +1609,7 @@ If the determinant of the Slater-matrix is passed, it will be updated to the det from applying the updates to the original matrix.

    -
    +
    @@ -1703,8 +1703,8 @@ from applying the updates to the original matrix. -
    -

    7.1.1 Requirements

    +
    +

    7.1.1 Requirements

    • LDS >= 2
    • @@ -1721,8 +1721,8 @@ from applying the updates to the original matrix.
    -
    -

    7.1.2 C header

    +
    +

    7.1.2 C header

    double qmckl_slagel_splitting (
    @@ -1742,8 +1742,8 @@ from applying the updates to the original matrix.
     
    -
    -

    7.1.3 C source

    +
    +

    7.1.3 C source

    #include <stdbool.h>
    @@ -1821,8 +1821,8 @@ from applying the updates to the original matrix.
     
    -
    -

    7.1.4 Performance

    +
    +

    7.1.4 Performance

    This function cannot be used by itself and is used in Sherman-Morrison with update splitting and Woodbury 3x3 and 2x2 @@ -1833,8 +1833,8 @@ with Sherman-Morrison and update splitting. Please look at the performance recco

    -
    -

    8 End of files

    +
    +

    8 End of files

      assert (qmckl_context_destroy(context) == QMCKL_SUCCESS);
    @@ -1848,7 +1848,7 @@ with Sherman-Morrison and update splitting. Please look at the performance recco
     

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_tests.html b/qmckl_tests.html index f40cfb0..e86079b 100644 --- a/qmckl_tests.html +++ b/qmckl_tests.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Data for Tests @@ -233,27 +233,27 @@ 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, @@ -337,8 +337,8 @@ and with a high maximum angular momentum.

    -
    -

    1.1 XYZ coordinates

    +
    +

    1.1 XYZ coordinates

       5
    @@ -368,8 +368,8 @@ Nuclear coordinates are stored in atomic units in transposed format.
     
    -
    -

    1.2 Atomic basis set

    +
    +

    1.2 Atomic basis set

     HYDROGEN
    @@ -1288,8 +1288,8 @@ F   1
     
    -
    -

    1.3 Molecular orbitals

    +
    +

    1.3 Molecular orbitals

    #define chbrclf_mo_num ((int64_t) 224)
    @@ -60213,8 +60213,8 @@ F   1
     
    -
    -

    1.4 Electron coordinates

    +
    +

    1.4 Electron coordinates

    Electron coordinates are stored in atomic units in normal format. @@ -60373,8 +60373,8 @@ Electron coordinates are stored in atomic units in normal format.

    -
    -

    2 N2

    +
    +

    2 N2

    This test is mainly for the Jastrow factor and was supplied by @@ -60415,8 +60415,8 @@ treated by pseudopotentials thus excluded from the actual calculation.

    -
    -

    2.1 XYZ coordinates

    +
    +

    2.1 XYZ coordinates

       2
    @@ -60443,8 +60443,8 @@ Nuclear coordinates are stored in atomic units in transposed format.
     
    -
    -

    2.2 Electron coordinates

    +
    +

    2.2 Electron coordinates

    Electron coordinates are stored in atomic units in normal format. @@ -60473,8 +60473,8 @@ Electron coordinates are stored in atomic units in normal format.

    -
    -

    2.3 Jastrow related data

    +
    +

    2.3 Jastrow related data

    This test is mainly for the Jastrow factor and was supplied by @@ -60573,7 +60573,7 @@ Ramon Panades Baruetta.

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_trexio.html b/qmckl_trexio.html index abce978..1a42f47 100644 --- a/qmckl_trexio.html +++ b/qmckl_trexio.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + TREXIO I/O library @@ -311,53 +311,53 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Local functions

    +
    +

    1 Local functions

    Functions defined in this section are all local: they should not be @@ -390,8 +390,8 @@ In the functions defined in this section, we use as local variables

    -
    -

    1.1 Open file

    +
    +

    1.1 Open file

    We first define a helper function to open a file by first trying to @@ -423,8 +423,8 @@ groups of data by passing the trexio_t handle.

    -
    -

    1.2 Electron

    +
    +

    1.2 Electron

    In this section we read all the data into the electron data structure. @@ -475,8 +475,8 @@ We read the number of up-spin and down-spin electrons.

    -
    -

    1.3 Nucleus

    +
    +

    1.3 Nucleus

    In this section we read the number of nuclei, the molecular geometry and nuclear charges. @@ -496,8 +496,8 @@ In this section we read the number of nuclei, the molecular geometry and nuclear

    -
    -

    1.3.1 Number of nuclei

    +
    +

    1.3.1 Number of nuclei

    int64_t nucleus_num = 0L;
    @@ -520,8 +520,8 @@ rc = qmckl_set_nucleus_num(context, nucleus_num);
     
    -
    -

    1.3.2 Nuclear charges

    +
    +

    1.3.2 Nuclear charges

    {
    @@ -561,8 +561,8 @@ rc = qmckl_set_nucleus_num(context, nucleus_num);
     
    -
    -

    1.3.3 Nuclear coordinates

    +
    +

    1.3.3 Nuclear coordinates

    Now, we read the molecular geometry. It is stored in normal format @@ -617,8 +617,8 @@ in the TREXIO file ('N'), so it will be automatically transposed in

    -
    -

    1.4 Basis set and AOs

    +
    +

    1.4 Basis set and AOs

    In this section we read the atomic basis set and atomic orbitals. @@ -644,8 +644,8 @@ In this section we read the atomic basis set and atomic orbitals.

    -
    -

    1.4.1 Basis set type

    +
    +

    1.4.1 Basis set type

    #define MAX_STR_LEN 1024
    @@ -676,8 +676,8 @@ In this section we read the atomic basis set and atomic orbitals.
     
    -
    -

    1.4.2 Number of shells

    +
    +

    1.4.2 Number of shells

    int64_t shell_num = 0L;
    @@ -701,8 +701,8 @@ rc = qmckl_set_ao_basis_shell_num(context, shell_num);
     
    -
    -

    1.4.3 Number of primitives

    +
    +

    1.4.3 Number of primitives

    int64_t prim_num = 0L;
    @@ -726,8 +726,8 @@ rc = qmckl_set_ao_basis_prim_num(context, prim_num);
     
    -
    -

    1.4.4 Number of atomic orbitals

    +
    +

    1.4.4 Number of atomic orbitals

    int64_t ao_num = 0LL;
    @@ -751,8 +751,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.5 Nucleusindex array

    +
    +

    1.4.5 Nucleusindex array

    {
    @@ -839,8 +839,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.6 Number of shells per nucleus

    +
    +

    1.4.6 Number of shells per nucleus

    {
    @@ -925,8 +925,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.7 Angular momentum

    +
    +

    1.4.7 Angular momentum

    {
    @@ -971,8 +971,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.8 Number of primitives per shell

    +
    +

    1.4.8 Number of primitives per shell

    {
    @@ -1056,8 +1056,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.9 Indices of the primitives

    +
    +

    1.4.9 Indices of the primitives

    {
    @@ -1137,8 +1137,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.10 Normalization of the shells

    +
    +

    1.4.10 Normalization of the shells

    {
    @@ -1183,8 +1183,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.11 Exponents

    +
    +

    1.4.11 Exponents

    {
    @@ -1229,8 +1229,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.12 Coefficients

    +
    +

    1.4.12 Coefficients

    {
    @@ -1275,8 +1275,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.13 Normalization of the primitivies

    +
    +

    1.4.13 Normalization of the primitivies

    {
    @@ -1321,8 +1321,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.4.14 AO Normalization

    +
    +

    1.4.14 AO Normalization

    {
    @@ -1377,8 +1377,8 @@ rc = qmckl_set_ao_basis_ao_num(context, ao_num);
     
    -
    -

    1.5 Molecular orbitals

    +
    +

    1.5 Molecular orbitals

    In this section we read the MO coefficients. @@ -1404,8 +1404,8 @@ In this section we read the MO coefficients.

    -
    -

    1.5.1 Number of MOs

    +
    +

    1.5.1 Number of MOs

    int64_t mo_num = 0L;
    @@ -1428,8 +1428,8 @@ rc = qmckl_set_mo_basis_mo_num(context, mo_num);
     
    -
    -

    1.5.2 MO coefficients

    +
    +

    1.5.2 MO coefficients

    {
    @@ -1478,12 +1478,12 @@ rc = qmckl_set_mo_basis_mo_num(context, mo_num);
     
    -
    -

    1.6 TODO ECP

    +
    +

    1.6 TODO ECP

    -
    -

    2 Read everything

    +
    +

    2 Read everything

    qmckl_exit_code
    @@ -1570,8 +1570,8 @@ rc = qmckl_set_mo_basis_mo_num(context, mo_num);
     
    -
    -

    3 Test

    +
    +

    3 Test

    #ifdef HAVE_TREXIO
    @@ -1605,8 +1605,8 @@ rc = qmckl_trexio_read(context, fname, 255);
     
    -
    -

    3.0.1 Electrons

    +
    +

    3.0.1 Electrons

    printf("Electrons\n");
    @@ -1624,8 +1624,8 @@ rc = qmckl_get_electron_down_num(context, &dn_num);
     
    -
    -

    3.0.2 Nuclei

    +
    +

    3.0.2 Nuclei

    printf("Nuclei\n");
    @@ -1665,8 +1665,8 @@ coord = NULL;
     
    -
    -

    3.0.3 Atomic basis

    +
    +

    3.0.3 Atomic basis

    printf("Atomic basis\n");
    @@ -1774,8 +1774,8 @@ prim_factor = NULL;
     
    -
    -

    3.0.4 MO Basis

    +
    +

    3.0.4 MO Basis

    printf("MOs\n");
    @@ -1805,7 +1805,7 @@ charge = NULL;
     

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:21

    +

    Created: 2022-06-15 Wed 17:18

    Validate

    diff --git a/qmckl_verificarlo.html b/qmckl_verificarlo.html index cff3159..45a837f 100644 --- a/qmckl_verificarlo.html +++ b/qmckl_verificarlo.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Verificarlo CI @@ -311,22 +311,22 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Verificarlo probes

    +
    +

    1 Verificarlo probes

    This file contains utility functions to enable the Verificarlo @@ -377,8 +377,8 @@ To learn more about Verificarlo CI :

    -
    -

    1.1 Automatically initialize the vfc_probe object if VFC_CI is defined

    +
    +

    1.1 Automatically initialize the vfc_probe object if VFC_CI is defined

    #ifdef VFC_CI
    @@ -398,8 +398,8 @@ To learn more about Verificarlo CI :
     
    -
    -

    1.2 Standard probe, without check

    +
    +

    1.2 Standard probe, without check

    • if VFC_CI is defined, place a standard probe
    • @@ -434,8 +434,8 @@ if VFC_CI is undefined, return false (no error)
    -
    -

    1.3 Probe with absolute check

    +
    +

    1.3 Probe with absolute check

    • if VFC_CI is defined, place a probe with an absolute check
    • @@ -475,8 +475,8 @@ and accuracy
    -
    -

    1.4 Probe with relative check

    +
    +

    1.4 Probe with relative check

    • if VFC_CI is defined, place a probe with a relative check
    • @@ -516,8 +516,8 @@ and accuracy
    -
    -

    1.5 Automatically delete and dump the vfcprobe object if VFC_CI is defined

    +
    +

    1.5 Automatically delete and dump the vfcprobe object if VFC_CI is defined

    #ifdef VFC_CI
    @@ -538,8 +538,8 @@ and accuracy
     
    -
    -

    2 Fortran wrappers

    +
    +

    2 Fortran wrappers

    bool qmckl_probe_f(
    @@ -663,7 +663,7 @@ and accuracy
     

    Author: TREX CoE

    -

    Created: 2022-06-15 Wed 14:22

    +

    Created: 2022-06-15 Wed 17:18

    Validate