diff --git a/README.html b/README.html index 432b903..2fa9b83 100644 --- a/README.html +++ b/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + TREXIO source code documentation @@ -347,7 +347,7 @@ and bug reports should be submitted at

Author: TREX-CoE

-

Created: 2022-01-25 Tue 15:19

+

Created: 2022-01-25 Tue 16:21

Validate

diff --git a/examples.html b/examples.html index 5f2bfaf..3899643 100644 --- a/examples.html +++ b/examples.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Examples @@ -333,24 +333,24 @@ for the JavaScript code in this tag.

Table of Contents

-
-

1 Accessing sparse quantities

+
+

1 Accessing sparse quantities

-
-

1.1 Fortran

+
+

1.1 Fortran

program print_energy
@@ -411,8 +411,8 @@ One needs to read from the TREXIO file:
 
-
-

1.1.1 Declare Temporary variables

+
+

1.1.1 Declare Temporary variables

integer                       :: i, j, k, l, m
@@ -427,8 +427,8 @@ One needs to read from the TREXIO file:
 
-
-

1.1.2 Obtain the name of the TREXIO file from the command line, and open it for reading

+
+

1.1.2 Obtain the name of the TREXIO file from the command line, and open it for reading

call getarg(1, filename)
@@ -444,8 +444,8 @@ f = trexio_open (filename, 'r', TREXIO_HDF5
 
-
-

1.1.3 Read the nuclear repulsion energy

+
+

1.1.3 Read the nuclear repulsion energy

rc = trexio_read_nucleus_repulsion(f, E_nn)
@@ -459,8 +459,8 @@ f = trexio_open (filename, 'r', TREXIO_HDF5
 
-
-

1.1.4 Read the number of molecular orbitals

+
+

1.1.4 Read the number of molecular orbitals

rc = trexio_read_mo_num(f, n)
@@ -474,8 +474,8 @@ f = trexio_open (filename, 'r', TREXIO_HDF5
 
-
-

1.1.5 Allocate memory

+
+

1.1.5 Allocate memory

allocate( D(n,n), h0(n,n) )
@@ -487,8 +487,8 @@ W(:,:,:,:) = 0.d0
 
-
-

1.1.6 Read one-electron quantities

+
+

1.1.6 Read one-electron quantities

rc = trexio_has_mo_1e_int_core_hamiltonian(f)
@@ -520,8 +520,8 @@ rc = trexio_read_rdm_1e(f, D)
 
-
-

1.1.7 Read two-electron quantities

+
+

1.1.7 Read two-electron quantities

Reading is done with OpenMP. Each thread reads its own buffer, and @@ -537,8 +537,8 @@ to be protected in the critical section when modified.

-
-
1.1.7.1 Electron repulsion integrals
+
+
1.1.7.1 Electron repulsion integrals
rc = trexio_has_mo_2e_int_eri(f)
@@ -587,8 +587,8 @@ icount = BUFSIZE
 
-
-
1.1.7.2 Reduced density matrix
+
+
1.1.7.2 Reduced density matrix
rc = trexio_has_rdm_2e(f)
@@ -632,8 +632,8 @@ icount = bufsize
 
-
-

1.1.8 Compute the energy

+
+

1.1.8 Compute the energy

When the orbitals are real, we can use @@ -679,8 +679,8 @@ E = E + E_nn

-
-

1.1.9 Terminate

+
+

1.1.9 Terminate

  deallocate( D, h0, G, W )
@@ -695,7 +695,7 @@ E = E + E_nn
 

Author: TREX-CoE

-

Created: 2022-01-25 Tue 15:19

+

Created: 2022-01-25 Tue 16:21

Validate

diff --git a/index.html b/index.html index 432b903..2fa9b83 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + TREXIO source code documentation @@ -347,7 +347,7 @@ and bug reports should be submitted at

Author: TREX-CoE

-

Created: 2022-01-25 Tue 15:19

+

Created: 2022-01-25 Tue 16:21

Validate

diff --git a/templator_front.html b/templator_front.html index 7f764a5..f5193a7 100644 --- a/templator_front.html +++ b/templator_front.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Front end API @@ -333,159 +333,159 @@ for the JavaScript code in this tag.

Table of Contents

-
-

1 Coding conventions

+
+

1 Coding conventions

  • integer types will be defined using types given in stdint.h
  • @@ -500,8 +500,8 @@ for the JavaScript code in this tag.
-
-

1.1 Memory allocation

+
+

1.1 Memory allocation

Memory allocation of structures can be facilitated by using the @@ -536,8 +536,8 @@ The maximum string size for the filenames is 4096 characters.

-
-

2 Front end

+
+

2 Front end

All calls to TREXIO are thread-safe. @@ -545,10 +545,10 @@ TREXIO front end is modular, which simplifies implementation of new back ends.

-
-

2.1 Error handling

+
+

2.1 Error handling

- +
@@ -683,7 +683,7 @@ TREXIO front end is modular, which simplifies implementation of new back ends. - + @@ -795,8 +795,8 @@ and the corresponding message are not propagated to the source code. -
-

2.1.1 Decoding errors

+
+

2.1.1 Decoding errors

The trexio_string_of_error converts an exit code into a string. The @@ -822,8 +822,8 @@ and the corresponding message are not propagated to the source code.

-
-
2.1.1.1 C source code
+
+
2.1.1.1 C source code
const char*
@@ -888,7 +888,7 @@ and the corresponding message are not propagated to the source code.
     return "Error unlocking file";
     break;
   case TREXIO_FILE_ERROR:
-    return "Invalid file handle";
+    return "Invalid file";
     break;
   case TREXIO_GROUP_READ_ERROR:
     return "Error reading group";
@@ -937,8 +937,8 @@ and the corresponding message are not propagated to the source code.
 
-
-
2.1.1.2 Fortran interface
+
+
2.1.1.2 Fortran interface
interface
@@ -954,8 +954,8 @@ and the corresponding message are not propagated to the source code.
 
-
-
2.1.1.3 Python interface
+
+
2.1.1.3 Python interface
class Error(Exception):
@@ -994,8 +994,8 @@ and the corresponding message are not propagated to the source code.
 
-
-

2.2 Back ends

+
+

2.2 Back ends

TREXIO has several back ends: @@ -1007,6 +1007,11 @@ TREXIO has several back ends:

  • TREXIO_TEXT relies on basic file I/O in C, namely fopen, fclose, fprintf, fscanf etc. from stdio.h library. This back end is not optimized for performance. It is supposed to be used for debug purposes or, for example, when the user wants to modify some data manually within the file. This back end is supposed to work "out-of-the-box" since there are no external dependencies, which might be useful for users that do not have access to HDF5 library. The produced files usually have .txt extension.
  • +

    +TREXIO_AUTO can be provided as a back end when opening an existing TREXIO file in read-only 'r' mode. +In this case, TREXIO will try to automatically detect the back end, which should be used to open the file. +

    +

    Additional back ends can be implemented thanks to the modular nature of the front end. This can be achieved by adding a new case (corresponding to the desired back end) in the front-end switch. @@ -1015,12 +1020,12 @@ lines that correspond to the TREXIO_JSON back end (not implemented

    -Note: It is important to increment the value of TREXIOINVALIDBACKEND when a new back end is added. Otherwise, it will not be available. +Note: It is important to increment the value of TREXIO_INVALID_BACK_END when a new back end is added. Otherwise, it will not be available.

    -
    -

    2.2.1 C

    +
    +

    2.2.1 C

    typedef int32_t back_end_t;
    @@ -1028,6 +1033,7 @@ lines that correspond to the TREXIO_JSON back end (not implemented
     #define TREXIO_HDF5             ( (back_end_t) 0 )
     #define TREXIO_TEXT             ( (back_end_t) 1 )
     #define TREXIO_INVALID_BACK_END ( (back_end_t) 2 )
    +#define TREXIO_AUTO             TREXIO_INVALID_BACK_END
     /*#define TREXIO_JSON             ( (back_end_t) 2 )*/
     
     #define TREXIO_DELIM            "\n"
    @@ -1068,14 +1074,15 @@ This is useful due to the fact that HDF5 back end can be disabled at configure s
     
    -
    -

    2.2.2 Fortran

    +
    +

    2.2.2 Fortran

      integer(trexio_back_end_t), parameter :: TREXIO_HDF5 = 0
       integer(trexio_back_end_t), parameter :: TREXIO_TEXT = 1
     ! integer(trexio_back_end_t), parameter :: TREXIO_JSON = 2
       integer(trexio_back_end_t), parameter :: TREXIO_INVALID_BACK_END = 2
    +  integer(trexio_back_end_t), parameter :: TREXIO_AUTO = TREXIO_INVALID_BACK_END
     
    @@ -1109,8 +1116,8 @@ consistency, in version 2.2 it was renamed trexio_has_back_end.
    -
    -

    2.2.3 Python

    +
    +

    2.2.3 Python

    # define TREXIO back ends
    @@ -1118,14 +1125,15 @@ consistency, in version 2.2 it was renamed trexio_has_back_end.
     TREXIO_TEXT = 1
     #TREXIO_JSON = 2
     TREXIO_INVALID_BACK_END = 2
    +TREXIO_AUTO = TREXIO_INVALID_BACK_END
     
    -
    -

    2.3 Read/write behavior

    +
    +

    2.3 Read/write behavior

    Every time a reading function is called, the data is read from the @@ -1153,8 +1161,8 @@ concurrent programs, the behavior is not specified.

    -
    -

    2.4 TREXIO file type

    +
    +

    2.4 TREXIO file type

    trexio_s is the the main type for TREXIO files, visible to the users @@ -1188,8 +1196,8 @@ TREXIO files will have as a first argument the TREXIO file handle.

    -
    -

    2.4.1 TREXIOFile Python class

    +
    +

    2.4.1 TREXIOFile Python class

    class File:
    @@ -1271,8 +1279,8 @@ TREXIO files will have as a first argument the TREXIO file handle.
     
    -
    -

    2.5 Polymorphism of the file handle

    +
    +

    2.5 Polymorphism of the file handle

    Polymorphism of the trexio_t type is handled by ensuring that the @@ -1291,8 +1299,8 @@ corresponding types for all back ends can be safely casted to

    -
    -

    2.6 File opening

    +
    +

    2.6 File opening

    trexio_open creates a new TREXIO file or opens existing one. @@ -1313,6 +1321,7 @@ input parameters:

    • TREXIO_HDF5 - for HDF5 back end (integer alternative: 0)
    • TREXIO_TEXT - for TEXT back end (integer alternative: 1)
    • +
    • TREXIO_AUTO - to automatically detect the applicable back end
    @@ -1336,8 +1345,8 @@ renaming the .txt data files.

    -
    -

    2.6.1 C

    +
    +

    2.6.1 C

    trexio_t*
    @@ -1351,21 +1360,56 @@ renaming the .txt data files.
       }
       /* Check overflow in file_name */
     
    -  if (back_end <  0 || back_end >= TREXIO_INVALID_BACK_END) {
    +  /* Check that the mode is valid */
    +  if (mode != 'r' && mode != 'w' && mode != 'u') {
    +    if (rc_open != NULL) *rc_open = TREXIO_INVALID_ARG_2;
    +    return NULL;
    +  }
    +
    +  /* Check that the back end is valid in non-read mode */
    +  if ((back_end <  0 || back_end >= TREXIO_INVALID_BACK_END) && mode != 'r') {
         if (rc_open != NULL) *rc_open = TREXIO_INVALID_ARG_3;
         return NULL;
       }
     
    -  if (mode != 'r' && mode != 'w' && mode != 'u') {
    -    if (rc_open != NULL) *rc_open = TREXIO_INVALID_ARG_2;
    +  /* Check that the back end is valid in read-only mode */
    +  if ((back_end <  0 || back_end > TREXIO_INVALID_BACK_END) && mode == 'r') {
    +    if (rc_open != NULL) *rc_open = TREXIO_INVALID_ARG_3;
         return NULL;
       }
     
    +  back_end_t back_end_local = back_end;
    +  /* Try to determine the applicable backend if the back_end argument is TREXIO_AUTO */
    +  if (back_end == TREXIO_AUTO && mode == 'r') {
    +#ifdef HAVE_HDF5
    +    trexio_exit_code rc_text, rc_hdf5;
    +    /* Check if the TREXIO file exists and if it is a directory */
    +    rc_text = trexio_text_inquire(file_name);
    +    if (rc_text == TREXIO_SUCCESS) {
    +      back_end_local = TREXIO_TEXT;
    +    } else {
    +    /* If not, check if it is an HDF5 file */
    +      rc_hdf5 = trexio_hdf5_inquire(file_name);
    +      if (rc_hdf5 == TREXIO_SUCCESS) {
    +        back_end_local = TREXIO_HDF5;
    +      } else {
    +    /* File is neither a directory nor an HDF5 file -> return an error */
    +        back_end_local = -1;
    +        if (rc_open != NULL) *rc_open = TREXIO_FILE_ERROR;
    +        return NULL;
    +      }
    +    }
    +#else
    +    /* In the current implementation if HDF5 back end is not available - then there is only back end left */
    +    back_end_local = TREXIO_TEXT;
    +#endif
    +  }
    +
       trexio_t* result = NULL;
       void* result_tmp = NULL;
     
       /* Allocate data structures */
    -  switch (back_end) {
    +  switch (back_end_local) {
     
       case TREXIO_TEXT:
         result_tmp = malloc(sizeof(trexio_text_t));
    @@ -1379,6 +1423,11 @@ renaming the .txt data files.
         if (rc_open != NULL) *rc_open = TREXIO_BACK_END_MISSING;
         return NULL;
     #endif
    +
    +  default:
    +    if (rc_open != NULL) *rc_open = TREXIO_FILE_ERROR;
    +    return NULL;
    +
     /*
       case TREXIO_JSON:
         result = (trexio_t*) malloc (sizeof(trexio_json_t));
    @@ -1405,7 +1454,7 @@ renaming the .txt data files.
         return NULL;
       }
     
    -  result->back_end    = back_end;
    +  result->back_end    = back_end_local;
       result->mode        = mode;
       result->one_based   = false;  // Need to be flipped in Fortran interface
       int irc = pthread_mutex_init ( &(result->thread_lock), NULL);
    @@ -1422,7 +1471,7 @@ renaming the .txt data files.
     
       rc = TREXIO_OPEN_ERROR;
     
    -  switch (back_end) {
    +  switch (back_end_local) {
     
       case TREXIO_TEXT:
         rc = trexio_text_init(result);
    @@ -1455,7 +1504,7 @@ renaming the .txt data files.
     
       rc = TREXIO_LOCK_ERROR;
     
    -  switch (back_end) {
    +  switch (back_end_local) {
     
       case TREXIO_TEXT:
         rc = trexio_text_lock(result);
    @@ -1492,7 +1541,7 @@ renaming the .txt data files.
       }
     
       if (rc == TREXIO_HAS_NOT) {
    -    switch (back_end) {
    +    switch (back_end_local) {
     
         case TREXIO_TEXT:
           rc = trexio_text_write_metadata_package_version(result, TREXIO_PACKAGE_VERSION);
    @@ -1567,8 +1616,8 @@ renaming the .txt data files.
     
    -
    -

    2.6.2 Fortran

    +
    +

    2.6.2 Fortran

    interface
    @@ -1586,8 +1635,8 @@ renaming the .txt data files.
     
    -
    -

    2.6.3 Python

    +
    +

    2.6.3 Python

    def _open(file_name: str, mode: str, back_end: int):
    @@ -1635,8 +1684,8 @@ renaming the .txt data files.
     
    -
    -

    2.6.4 Zero-based versus one-based arrays of indices

    +
    +

    2.6.4 Zero-based versus one-based arrays of indices

    Because arrays are zero-based in Fortran, we need to set a flag to @@ -1646,8 +1695,7 @@ know if we need to shift by 1 arrays of indices.

    trexio_exit_code trexio_set_one_based(trexio_t* file)
     {
    -  if (file == NULL)
    -    return TREXIO_FILE_ERROR;
    +  if (file == NULL) return TREXIO_FILE_ERROR;
     
       file->one_based = true;
     
    @@ -1670,8 +1718,8 @@ know if we need to shift by 1 arrays of indices.
     
    -
    -

    2.7 File closing

    +
    +

    2.7 File closing

    trexio_close closes an existing trexio_t file. @@ -1688,8 +1736,8 @@ output:

    -
    -

    2.7.1 C

    +
    +

    2.7.1 C

    trexio_exit_code
    @@ -1770,8 +1818,8 @@ output:
     
    -
    -

    2.7.2 Fortran

    +
    +

    2.7.2 Fortran

    interface
    @@ -1786,8 +1834,8 @@ output:
     
    -
    -

    2.7.3 Python

    +
    +

    2.7.3 Python

    def _close(trexio_file):
    @@ -1808,8 +1856,8 @@ output:
     
    -
    -

    2.8 File existence

    +
    +

    2.8 File existence

    trexio_inquire check whether TREXIO file exists. @@ -1846,8 +1894,8 @@ You can see examples of both functionalities in test_f.f90 (search

    -
    -

    2.8.1 C

    +
    +

    2.8.1 C

    trexio_exit_code
    @@ -1877,8 +1925,8 @@ You can see examples of both functionalities in test_f.f90  (search
     
    -
    -

    2.8.2 Fortran

    +
    +

    2.8.2 Fortran

    The function below is a C binding. @@ -1898,8 +1946,8 @@ The front end Fortran function for trexio_inquire can be found in t

    -
    -

    2.8.3 Python

    +
    +

    2.8.3 Python

    def _inquire(file_name: str) -> bool:
    @@ -1919,12 +1967,12 @@ The front end Fortran function for trexio_inquire can be found in t
     
    -
    -

    3 Templates for front end

    +
    +

    3 Templates for front end

    -
    -

    3.1 Description

    +
    +

    3.1 Description

    Consider the following block of trex.json: @@ -2145,12 +2193,12 @@ value will result in TREXIO_INVALID_ARG_2 exit code.

    -
    -

    3.2 Templates for front end has/read/write a single numerical attribute

    +
    +

    3.2 Templates for front end has/read/write a single numerical attribute

    -
    -

    3.2.1 Introduction

    +
    +

    3.2.1 Introduction

    This section concerns API calls related to numerical attributes, @@ -2221,8 +2269,8 @@ namely single value of int/float types.

    -
    -

    3.2.2 C templates for front end

    +
    +

    3.2.2 C templates for front end

    The C templates that correspond to each of the abovementioned @@ -2236,12 +2284,12 @@ precision (see Table above).

    -
    -
    3.2.2.1 Function declarations
    +
    +
    3.2.2.1 Function declarations
    -
    -
    3.2.2.2 Source code for double precision functions
    +
    +
    3.2.2.2 Source code for double precision functions
    trexio_exit_code
    @@ -2305,8 +2353,8 @@ precision (see Table above).
     
    -
    -
    3.2.2.3 Source code for single precision functions
    +
    +
    3.2.2.3 Source code for single precision functions
    trexio_exit_code
    @@ -2382,8 +2430,8 @@ precision (see Table above).
     
    -
    -
    3.2.2.4 Source code for default functions
    +
    +
    3.2.2.4 Source code for default functions
    trexio_exit_code
    @@ -2438,8 +2486,8 @@ precision (see Table above).
     
    -
    -

    3.2.3 Fortran templates for front end

    +
    +

    3.2.3 Fortran templates for front end

    The Fortran templates that provide an access to the C API calls from Fortran. @@ -2531,8 +2579,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

    -
    -

    3.2.4 Python templates for front end

    +
    +

    3.2.4 Python templates for front end

    def write_$group_num$(trexio_file, num_w: $group_num_py_dtype$) -> None:
    @@ -2617,12 +2665,12 @@ These templates are based on the use of iso_c_binding. Pointers hav
     
    -
    -

    3.3 Templates for front end has/read/write a dataset of numerical data

    +
    +

    3.3 Templates for front end has/read/write a dataset of numerical data

    -
    -

    3.3.1 Introduction

    +
    +

    3.3.1 Introduction

    This section concerns API calls related to datasets. @@ -2704,8 +2752,8 @@ This section concerns API calls related to datasets.

    -
    -

    3.3.2 C templates for front end

    +
    +

    3.3.2 C templates for front end

    The C templates that correspond to each of the abovementioned functions can be found below. @@ -2716,12 +2764,12 @@ The basic (non-suffixed) API call on datasets deals with real(cdouble

    -
    -
    3.3.2.1 Function declarations
    +
    +
    3.3.2.1 Function declarations
    -
    -
    3.3.2.2 Source code for double precision functions
    +
    +
    3.3.2.2 Source code for double precision functions
    trexio_exit_code
    @@ -2884,8 +2932,8 @@ The basic (non-suffixed) API call on datasets deals with real(cdouble
     
    -
    -
    3.3.2.3 Source code for single precision functions
    +
    +
    3.3.2.3 Source code for single precision functions
    trexio_exit_code
    @@ -3036,11 +3084,11 @@ The basic (non-suffixed) API call on datasets deals with real(cdouble
     
    -
    -
    3.3.2.4 Source code for memory-safe functions
    +
    +
    3.3.2.4 Source code for memory-safe functions
    -
    trexio_exit_code rc;
    +
    trexio_exit_code rc;
     int64_t $group_dset_dim$ = 0;
     
     /* Error handling for this call is added by the generator */
    @@ -3196,8 +3244,8 @@ rc = trexio_read_$group_dset_dim$_64(file, &($group_dset_dim$));
     
    -
    -
    3.3.2.5 Source code for default functions
    +
    +
    3.3.2.5 Source code for default functions
    trexio_exit_code
    @@ -3272,8 +3320,8 @@ rc = trexio_read_$group_dset_dim$_64(file, &($group_dset_dim$));
     
    -
    -

    3.3.3 Fortran templates for front end

    +
    +

    3.3.3 Fortran templates for front end

    The Fortran templates that provide an access to the C API calls from Fortran. @@ -3365,8 +3413,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

    -
    -

    3.3.4 Python templates for front end

    +
    +

    3.3.4 Python templates for front end

    def write_$group_dset$(trexio_file, dset_w) -> None:
    @@ -3561,12 +3609,12 @@ These templates are based on the use of iso_c_binding. Pointers hav
     
    -
    -

    3.4 Templates for front end has/read/write a dataset of sparse data

    +
    +

    3.4 Templates for front end has/read/write a dataset of sparse data

    -
    -

    3.4.1 Introduction

    +
    +

    3.4.1 Introduction

    Sparse data structures are used typically for large tensors such as @@ -3727,16 +3775,16 @@ This section concerns API calls related to sparse data structures.

    -
    -

    3.4.2 C templates for front end

    +
    +

    3.4.2 C templates for front end

    -
    -
    3.4.2.1 Function declarations
    +
    +
    3.4.2.1 Function declarations
    -
    -
    3.4.2.2 Source code for default functions
    +
    +
    3.4.2.2 Source code for default functions
    trexio_exit_code trexio_read_safe_$group_dset$(trexio_t* const file,
    @@ -4012,8 +4060,8 @@ This section concerns API calls related to sparse data structures.
     
    -
    -

    3.4.3 Fortran templates for front end

    +
    +

    3.4.3 Fortran templates for front end

    The Fortran templates that provide an access to the C API calls from Fortran. @@ -4114,8 +4162,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

    -
    -

    3.4.4 Python templates for front end

    +
    +

    3.4.4 Python templates for front end

    def write_$group_dset$(trexio_file: File, offset_file: int, buffer_size: int, indices: list, values: list) -> None:
    @@ -4336,12 +4384,12 @@ These templates are based on the use of iso_c_binding. Pointers hav
     
    -
    -

    3.5 Templates for front end has/read/write a dataset of strings

    +
    +

    3.5 Templates for front end has/read/write a dataset of strings

    -
    -

    3.5.1 Introduction

    +
    +

    3.5.1 Introduction

    This section concerns API calls related to datasets of strings. @@ -4381,8 +4429,8 @@ This section concerns API calls related to datasets of strings.

    -
    -

    3.5.2 C templates for front end

    +
    +

    3.5.2 C templates for front end

    First parameter is the TREXIO file handle. Second parameter is the variable to be written/read @@ -4390,12 +4438,12 @@ to/from the TREXIO file (except for trexio_has_ functi

    -
    -
    3.5.2.1 Function declarations
    +
    +
    3.5.2.1 Function declarations
    -
    -
    3.5.2.2 Source code for default functions
    +
    +
    3.5.2.2 Source code for default functions
    trexio_exit_code
    @@ -4645,8 +4693,8 @@ to/from the TREXIO file (except for trexio_has_ functi
     
    -
    -

    3.5.3 Fortran templates for front end

    +
    +

    3.5.3 Fortran templates for front end

    The Fortran templates that provide an access to the C API calls from Fortran. @@ -4745,8 +4793,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

    -
    -

    3.5.4 Python templates for front end

    +
    +

    3.5.4 Python templates for front end

    def write_$group_dset$(trexio_file, dset_w: list) -> None:
    @@ -4862,12 +4910,12 @@ These templates are based on the use of iso_c_binding. Pointers hav
     
    -
    -

    3.6 Templates for front end has/read/write a single string attribute

    +
    +

    3.6 Templates for front end has/read/write a single string attribute

    -
    -

    3.6.1 Introduction

    +
    +

    3.6.1 Introduction

    This section concerns API calls related to string attributes. @@ -4907,16 +4955,16 @@ This section concerns API calls related to string attributes.

    -
    -

    3.6.2 C templates for front end

    +
    +

    3.6.2 C templates for front end

    -
    -
    3.6.2.1 Function declarations
    +
    +
    3.6.2.1 Function declarations
    -
    -
    3.6.2.2 Source code for default functions
    +
    +
    3.6.2.2 Source code for default functions
    trexio_exit_code
    @@ -5020,8 +5068,8 @@ This section concerns API calls related to string attributes.
     
    -
    -

    3.6.3 Fortran templates for front end

    +
    +

    3.6.3 Fortran templates for front end

    The Fortran templates that provide an access to the C API calls from Fortran. @@ -5101,8 +5149,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

    -
    -

    3.6.4 Python templates for front end

    +
    +

    3.6.4 Python templates for front end

    def write_$group_str$(trexio_file, str_w: str) -> None:
    @@ -5191,12 +5239,12 @@ These templates are based on the use of iso_c_binding. Pointers hav
     
    -
    -

    3.7 Templates for front end delete an entire group (UNSAFE MODE)

    +
    +

    3.7 Templates for front end delete an entire group (UNSAFE MODE)

    -
    -

    3.7.1 Introduction

    +
    +

    3.7.1 Introduction

    This section concerns API calls related to string attributes. @@ -5226,8 +5274,8 @@ This section concerns API calls related to string attributes.

    -
    -

    3.7.2 C templates for front end

    +
    +

    3.7.2 C templates for front end

    trexio_exit_code
    @@ -5262,8 +5310,8 @@ This section concerns API calls related to string attributes.
     
    -
    -

    3.7.3 Fortran templates for front end

    +
    +

    3.7.3 Fortran templates for front end

    The Fortran templates that provide an access to the C API calls from Fortran. @@ -5283,8 +5331,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

    -
    -

    3.7.4 Python templates for front end

    +
    +

    3.7.4 Python templates for front end

    def delete_$group$(trexio_file) -> None:
    @@ -5309,8 +5357,8 @@ These templates are based on the use of iso_c_binding. Pointers hav
     
    -
    -

    4 General helper functions

    +
    +

    4 General helper functions

    This section contains general helper functions like trexio_info. @@ -5337,8 +5385,8 @@ then value of the metadata_unsafe attribute can be changed using th

    -
    -

    4.1 C

    +
    +

    4.1 C

    trexio_exit_code
    @@ -5383,8 +5431,8 @@ then value of the metadata_unsafe attribute can be changed using th
     
    -
    -

    4.2 Fortran

    +
    +

    4.2 Fortran

    interface
    @@ -5397,8 +5445,8 @@ then value of the metadata_unsafe attribute can be changed using th
     
    -
    -

    4.3 Python

    +
    +

    4.3 Python

    def info():
    @@ -5414,8 +5462,8 @@ then value of the metadata_unsafe attribute can be changed using th
     
    -
    -

    5 Fortran helper/wrapper functions

    +
    +

    5 Fortran helper/wrapper functions

    The function below adapts the original C-based trexio_open for Fortran. @@ -5567,7 +5615,7 @@ two code are identical, i.e. if the assert statement pass.

    Author: TREX-CoE

    -

    Created: 2022-01-25 Tue 15:19

    +

    Created: 2022-01-25 Tue 16:21

    Validate

    diff --git a/templator_hdf5.html b/templator_hdf5.html index aedf05b..3c7e81e 100644 --- a/templator_hdf5.html +++ b/templator_hdf5.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + HDF5 back end @@ -311,22 +311,22 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 Template for HDF5 definitions

    +
    +

    1 Template for HDF5 definitions

    #define $GROUP$_GROUP_NAME          "$group$"
    @@ -338,8 +338,8 @@ for the JavaScript code in this tag.
     
    -
    -

    2 Template for HDF5 structures

    +
    +

    2 Template for HDF5 structures

    typedef struct trexio_hdf5_s {
    @@ -352,8 +352,8 @@ for the JavaScript code in this tag.
     
    -
    -

    3 Template for HDF5 init/deinit

    +
    +

    3 Template for HDF5 init/deinit

    trexio_exit_code
    @@ -456,8 +456,8 @@ for the JavaScript code in this tag.
     
    -
    -

    4 Template for HDF5 has/read/write a numerical attribute

    +
    +

    4 Template for HDF5 has/read/write a numerical attribute

    trexio_exit_code
    @@ -560,8 +560,8 @@ for the JavaScript code in this tag.
     
    -
    -

    5 Template for HDF5 has/read/write a dataset of numerical data

    +
    +

    5 Template for HDF5 has/read/write a dataset of numerical data

    trexio_exit_code
    @@ -694,8 +694,8 @@ for the JavaScript code in this tag.
     
    -
    -

    6 Template for HDF5 has/read/write a dataset of sparse data

    +
    +

    6 Template for HDF5 has/read/write a dataset of sparse data

    Sparse data is stored using extensible datasets of HDF5. Extensibility is required @@ -896,8 +896,8 @@ due to the fact that the sparse data will be written in chunks of user-defined s

    -
    -

    7 Template for HDF5 has/read/write a dataset of strings

    +
    +

    7 Template for HDF5 has/read/write a dataset of strings

    trexio_exit_code
    @@ -1094,8 +1094,8 @@ due to the fact that the sparse data will be written in chunks of user-defined s
     
    -
    -

    8 Template for HDF5 has/read/write a string attribute

    +
    +

    8 Template for HDF5 has/read/write a string attribute

    trexio_exit_code
    @@ -1221,8 +1221,8 @@ due to the fact that the sparse data will be written in chunks of user-defined s
     
    -
    -

    9 Template for HDF5 delete a group (UNSAFE mode)

    +
    +

    9 Template for HDF5 delete a group (UNSAFE mode)

    Note: in early versions of the HDF5 library (v < 1.10) unlinking an object was not working as expected @@ -1262,8 +1262,8 @@ Thus, any corrupted/lost file space will remain in the first file. The use of

    -
    -

    10 Helper functions

    +
    +

    10 Helper functions

    trexio_exit_code
    @@ -1524,7 +1524,7 @@ Thus, any corrupted/lost file space will remain in the first file. The use of 
     

    Author: TREX-CoE

    -

    Created: 2022-01-25 Tue 15:19

    +

    Created: 2022-01-25 Tue 16:21

    Validate

    diff --git a/templator_text.html b/templator_text.html index 0ebe595..268d2dd 100644 --- a/templator_text.html +++ b/templator_text.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + TEXT back end @@ -311,29 +311,29 @@ for the JavaScript code in this tag.

    Table of Contents

    -
    -

    1 TEXT back end

    +
    +

    1 TEXT back end

    The "file" produced by the text back end is a directory with one @@ -354,8 +354,8 @@ The file is written when closed, or when the flush function is called.

    -
    -

    1.1 Template for group-related structures in text back end

    +
    +

    1.1 Template for group-related structures in text back end

    typedef struct $group$_s {
    @@ -374,8 +374,8 @@ The file is written when closed, or when the flush function is called.
     
    -
    -

    1.2 Template for general structure in text back end

    +
    +

    1.2 Template for general structure in text back end

    typedef struct trexio_text_s {
    @@ -388,8 +388,8 @@ The file is written when closed, or when the flush function is called.
     
    -
    -

    1.3 Initialize function (constant part)

    +
    +

    1.3 Initialize function (constant part)

    trexio_exit_code
    @@ -532,8 +532,8 @@ The file is written when closed, or when the flush function is called.
     
    -
    -

    1.4 Deinitialize function (templated part)

    +
    +

    1.4 Deinitialize function (templated part)

    trexio_exit_code
    @@ -555,8 +555,8 @@ The file is written when closed, or when the flush function is called.
     
    -
    -

    1.5 Template for text read a group

    +
    +

    1.5 Template for text read a group

    $group$_t*
    @@ -848,8 +848,8 @@ trexio_text_read_$group$ (trexio_text_t* 
     
    -
    -

    1.6 Template for text flush a group

    +
    +

    1.6 Template for text flush a group

    trexio_exit_code
    @@ -913,8 +913,8 @@ trexio_text_read_$group$ (trexio_text_t* 
     
    -
    -

    1.7 Template for text free memory

    +
    +

    1.7 Template for text free memory

    Memory is allocated when reading. The following function frees memory. @@ -961,8 +961,8 @@ Memory is allocated when reading. The following function frees memory.

    -
    -

    1.8 Template for has/read/write a numerical attribute

    +
    +

    1.8 Template for has/read/write a numerical attribute

    trexio_exit_code
    @@ -1025,8 +1025,8 @@ Memory is allocated when reading. The following function frees memory.
     
    -
    -

    1.9 Template for has/read/write a dataset of numerical data

    +
    +

    1.9 Template for has/read/write a dataset of numerical data

    The group_dset array is assumed allocated with the appropriate size. @@ -1122,8 +1122,8 @@ The group_dset array is assumed allocated with the appropriate size

    -
    -

    1.10 Template for has/read/write a dataset of strings

    +
    +

    1.10 Template for has/read/write a dataset of strings

    The group_dset array is assumed allocated with the appropriate size. @@ -1224,8 +1224,8 @@ The group_dset array is assumed allocated with the appropriate size

    -
    -

    1.11 Template for has/read/write a string attribute

    +
    +

    1.11 Template for has/read/write a string attribute

    trexio_exit_code
    @@ -1299,8 +1299,8 @@ The group_dset array is assumed allocated with the appropriate size
     
    -
    -

    1.12 Template for has/read/write the dataset of sparse data

    +
    +

    1.12 Template for has/read/write the dataset of sparse data

    Each sparse array is stored in a separate .txt file due to the fact that sparse I/O has to be decoupled @@ -1574,8 +1574,8 @@ User provides indices and values of the sparse array as two separate variables.

    -
    -

    1.13 Template for text delete a group (UNSAFE mode)

    +
    +

    1.13 Template for text delete a group (UNSAFE mode)

    @@ -409,8 +409,8 @@ fetched using multiple function calls to perform I/O on buffers.

    -
    -

    1 Metadata (metadata group)

    +
    +

    1 Metadata (metadata group)

    As we expect our files to be archived in open-data repositories, we @@ -420,7 +420,7 @@ which have participated to the creation of the file, a list of authors of the file, and a textual description.

    -
    TREXIO_FILE_ERROR 18'Invalid file handle''Invalid file'
    +
    @@ -501,15 +501,15 @@ then the unsafe attribute value can be manually overwritten (in uns -
    -

    2 Electron (electron group)

    +
    +

    2 Electron (electron group)

    We consider wave functions expressed in the spin-free formalism, where the number of ↑ and ↓ electrons is fixed.

    -
    +
    @@ -548,15 +548,15 @@ the number of ↑ and ↓ electrons is fixed. -
    -

    3 Nucleus (nucleus group)

    +
    +

    3 Nucleus (nucleus group)

    The nuclei are considered as fixed point charges. Coordinates are given in Cartesian \((x,y,z)\) format.

    -
    +
    @@ -623,8 +623,8 @@ given in Cartesian \((x,y,z)\) format. -
    -

    4 Effective core potentials (ecp group)

    +
    +

    4 Effective core potentials (ecp group)

    An effective core potential (ECP) \(V_A^{\text{ECP}}\) replacing the @@ -657,7 +657,7 @@ The functions \(V_{A\ell}\) are parameterized as: See http://dx.doi.org/10.1063/1.4984046 or https://doi.org/10.1063/1.5121006 for more info.

    -
    +
    @@ -755,8 +755,8 @@ The latter causes issues when written before ang_mom in the TREXIO

    -
    -

    4.1 Example

    +
    +

    4.1 Example

    For example, consider H2 molecule with the following @@ -819,8 +819,8 @@ power = [

    -
    -

    5 Basis set (basis group)

    +
    +

    5 Basis set (basis group)

    We consider here basis functions centered on nuclei. Hence, we enable @@ -873,7 +873,7 @@ If the the basis function is not considered normalized, \(\mathcal{N}_s=1\). All the basis set parameters are stored in one-dimensional arrays:

    -
    +
    @@ -967,8 +967,8 @@ All the basis set parameters are stored in one-dimensional arrays:
    -
    -

    5.1 Example

    +
    +

    5.1 Example

    For example, consider H2 with the following basis set (in GAMESS @@ -1046,8 +1046,8 @@ prim_factor =

    -
    -

    6 Atomic orbitals (ao group)

    +
    +

    6 Atomic orbitals (ao group)

    Going from the atomic basis set to AOs implies a systematic @@ -1100,13 +1100,13 @@ shell, as in the GAMESS convention where

    In such a case, one should set the normalization of the shell (in -the Basis set section) to \(\mathcal{N}_{z^2}\), which is the +the Basis set section) to \(\mathcal{N}_{z^2}\), which is the normalization factor of the atomic orbitals in spherical coordinates. The normalization factor of the \(xy\) function which should be introduced here should be \(\frac{\mathcal{N}_{xy}}{\mathcal{N}_{z^2}}\).

    - +
    @@ -1158,8 +1158,8 @@ introduced here should be \(\frac{\mathcal{N}_{xy}}{\mathcal{N}_{z^2}}\).
    -
    -

    6.1 One-electron integrals (ao_1e_int group)

    +
    +

    6.1 One-electron integrals (ao_1e_int group)

    • \[ \hat{V}_{\text{ne}} = \sum_{A=1}^{N_\text{nucl}} @@ -1177,7 +1177,7 @@ The one-electron integrals for a one-electron operator \(\hat{O}\) are over atomic orbitals.

      - +
      @@ -1244,8 +1244,8 @@ over atomic orbitals. -
      -

      6.2 Two-electron integrals (ao_2e_int group)

      +
      +

      6.2 Two-electron integrals (ao_2e_int group)

      The two-electron integrals for a two-electron operator \(\hat{O}\) are @@ -1266,7 +1266,7 @@ notation. \mathbf{r}_j \vert)}{\vert \mathbf{r}_i - \mathbf{r}_j \vert} \] : electron-electron long range potential -

      +
      @@ -1306,10 +1306,10 @@ notation. -
      -

      7 Molecular orbitals (mo group)

      +
      +

      7 Molecular orbitals (mo group)

      -
      +
      @@ -1375,8 +1375,8 @@ notation.
    -
    -

    7.1 One-electron integrals (mo_1e_int group)

    +
    +

    7.1 One-electron integrals (mo_1e_int group)

    The operators as the same as those defined in the @@ -1384,7 +1384,7 @@ The operators as the same as those defined in the the basis of molecular orbitals.

    - +
    @@ -1451,8 +1451,8 @@ the basis of molecular orbitals. -
    -

    7.2 Two-electron integrals (mo_2e_int group)

    +
    +

    7.2 Two-electron integrals (mo_2e_int group)

    The operators as the same as those defined in the @@ -1460,7 +1460,7 @@ The operators as the same as those defined in the the basis of molecular orbitals.

    -
    +
    @@ -1500,11 +1500,11 @@ the basis of molecular orbitals. -
    -

    8 TODO Slater determinants

    +
    +

    8 TODO Slater determinants

    -
    -

    9 Reduced density matrices (rdm group)

    +
    +

    9 Reduced density matrices (rdm group)

    The reduced density matrices are defined in the basis of molecular @@ -1557,7 +1557,7 @@ The total energy can be computed as: \]

    -
    +
    @@ -1640,7 +1640,7 @@ The total energy can be computed as:

    Author: TREX-CoE

    -

    Created: 2022-01-25 Tue 15:19

    +

    Created: 2022-01-25 Tue 16:21

    Validate