1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-08-25 06:31:43 +02:00

Add coefficients to front end

This commit is contained in:
q-posev 2022-04-14 16:32:35 +02:00
parent 3d9f1c85c4
commit 2f6366412f

View File

@ -188,9 +188,13 @@ __trexio_path__ = None
| ~TREXIO_ATTR_MISSING~ | 24 | 'Attribute does not exist in the file' |
| ~TREXIO_DSET_MISSING~ | 25 | 'Dataset does not exist in the file' |
| ~TREXIO_BACK_END_MISSING~ | 26 | 'Requested back end is disabled' |
| ~TREXIO_INVALID_ARG_6~ | 27 | 'Invalid argument 6' |
| ~TREXIO_INVALID_ARG_7~ | 28 | 'Invalid argument 7' |
| ~TREXIO_INVALID_ARG_8~ | 29 | 'Invalid argument 8' |
| ~TREXIO_INVALID_STR_LEN~ | 30 | 'Invalid max_str_len' |
| ~TREXIO_INT_SIZE_OVERFLOW~ | 31 | 'Possible integer overflow' |
| ~TREXIO_SAFE_MODE~ | 32 | 'Unsafe operation in safe mode' |
| ~TREXIO_INVALID_STATE~ | 33 | 'Inconsistent state of the file' |
# We need to force Emacs not to indent the Python code:
# -*- org-src-preserve-indentation: t
@ -264,9 +268,13 @@ return '\n'.join(result)
#define TREXIO_ATTR_MISSING ((trexio_exit_code) 24)
#define TREXIO_DSET_MISSING ((trexio_exit_code) 25)
#define TREXIO_BACK_END_MISSING ((trexio_exit_code) 26)
#define TREXIO_INVALID_ARG_6 ((trexio_exit_code) 27)
#define TREXIO_INVALID_ARG_7 ((trexio_exit_code) 28)
#define TREXIO_INVALID_ARG_8 ((trexio_exit_code) 29)
#define TREXIO_INVALID_STR_LEN ((trexio_exit_code) 30)
#define TREXIO_INT_SIZE_OVERFLOW ((trexio_exit_code) 31)
#define TREXIO_SAFE_MODE ((trexio_exit_code) 32)
#define TREXIO_INVALID_STATE ((trexio_exit_code) 33)
#+end_src
#+begin_src f90 :tangle prefix_fortran.f90 :exports none
@ -298,9 +306,13 @@ return '\n'.join(result)
integer(trexio_exit_code), parameter :: TREXIO_ATTR_MISSING = 24
integer(trexio_exit_code), parameter :: TREXIO_DSET_MISSING = 25
integer(trexio_exit_code), parameter :: TREXIO_BACK_END_MISSING = 26
integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_6 = 27
integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_7 = 28
integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_8 = 29
integer(trexio_exit_code), parameter :: TREXIO_INVALID_STR_LEN = 30
integer(trexio_exit_code), parameter :: TREXIO_INT_SIZE_OVERFLOW = 31
integer(trexio_exit_code), parameter :: TREXIO_SAFE_MODE = 32
integer(trexio_exit_code), parameter :: TREXIO_INVALID_STATE = 33
#+end_src
#+begin_src python :tangle prefix_python.py :exports none
@ -333,9 +345,13 @@ return '\n'.join(result)
TREXIO_ATTR_MISSING = 24
TREXIO_DSET_MISSING = 25
TREXIO_BACK_END_MISSING = 26
TREXIO_INVALID_ARG_6 = 27
TREXIO_INVALID_ARG_7 = 28
TREXIO_INVALID_ARG_8 = 29
TREXIO_INVALID_STR_LEN = 30
TREXIO_INT_SIZE_OVERFLOW = 31
TREXIO_SAFE_MODE = 32
TREXIO_INVALID_STATE = 33
#+end_src
:END:
@ -462,6 +478,15 @@ return '\n'.join(result)
case TREXIO_BACK_END_MISSING:
return "Requested back end is disabled";
break;
case TREXIO_INVALID_ARG_6:
return "Invalid argument 6";
break;
case TREXIO_INVALID_ARG_7:
return "Invalid argument 7";
break;
case TREXIO_INVALID_ARG_8:
return "Invalid argument 8";
break;
case TREXIO_INVALID_STR_LEN:
return "Invalid max_str_len";
break;
@ -471,6 +496,9 @@ return '\n'.join(result)
case TREXIO_SAFE_MODE:
return "Unsafe operation in safe mode";
break;
case TREXIO_INVALID_STATE:
return "Inconsistent state of the file";
break;
#+end_example
**** C source code
@ -4226,8 +4254,12 @@ trexio_exit_code trexio_has_determinant_list(trexio_t* const file);
trexio_exit_code trexio_has_determinant_coefficient(trexio_t* const file);
trexio_exit_code trexio_read_determinant_list(trexio_t* const file, const int64_t offset_file, int64_t* const buffer_size, int64_t* const dset);
trexio_exit_code trexio_read_safe_determinant_list(trexio_t* const file, const int64_t offset_file, int64_t* const buffer_size_read, int64_t* const dset_out, const int64_t dim_out);
trexio_exit_code trexio_read_determinant_coefficient(trexio_t* const file, const int64_t offset_file, int64_t* const buffer_size, double* const dset);
trexio_exit_code trexio_read_safe_determinant_coefficient(trexio_t* const file, const int64_t offset_file, int64_t* const buffer_size_read, double* const dset_out, const int64_t dim_out);
trexio_exit_code trexio_write_determinant_list(trexio_t* const file, const int64_t offset_file, const int64_t buffer_size, const int64_t* dset);
trexio_exit_code trexio_write_safe_determinant_list(trexio_t* const file, const int64_t offset_file, const int64_t buffer_size, const int64_t* dset_in, const int64_t dim_in);
trexio_exit_code trexio_write_determinant_coefficient(trexio_t* const file, const int64_t offset_file, const int64_t buffer_size, const double* dset);
trexio_exit_code trexio_write_safe_determinant_coefficient(trexio_t* const file, const int64_t offset_file, const int64_t buffer_size, const double* dset_in, const int64_t dim_in);
#+end_src
#+begin_src c :tangle read_determinant_front.c
@ -4290,11 +4322,68 @@ trexio_read_determinant_list (trexio_t* const file, const int64_t offset_file, i
}
trexio_exit_code
trexio_read_determinant_coefficient (trexio_t* const file, const int64_t offset_file, int64_t* const buffer_size_read, double* const dset)
{
if (file == NULL) return TREXIO_INVALID_ARG_1;
if (dset == NULL) return TREXIO_INVALID_ARG_2;
if (trexio_has_determinant_coefficient(file) != TREXIO_SUCCESS) return TREXIO_DSET_MISSING;
trexio_exit_code rc;
uint32_t rank = 1;
uint64_t det_size = (uint64_t) (*buffer_size_read);
uint64_t dims[1] = {det_size};
// introduce a new variable which will be modified with the number of integrals being read if EOF is encountered
int64_t eof_read_size = 0L;
switch (file->back_end) {
case TREXIO_TEXT:
rc = trexio_text_read_determinant_coefficient(file, offset_file, rank, dims, &eof_read_size, dset);
break;
case TREXIO_HDF5:
#ifdef HAVE_HDF5
rc = trexio_hdf5_read_determinant_coefficient(file, offset_file, rank, dims, &eof_read_size, dset);
break;
#else
rc = TREXIO_BACK_END_MISSING;
break;
#endif
/*
case TREXIO_JSON:
return trexio_json_read_$group_dset$(...);
break;
,*/
default:
rc = TREXIO_FAILURE; /* Impossible case */
break;
}
if (rc != TREXIO_SUCCESS && rc != TREXIO_END) return rc;
if (rc == TREXIO_END) *buffer_size_read = eof_read_size;
return rc;
}
trexio_exit_code
trexio_read_safe_determinant_list (trexio_t* const file, const int64_t offset_file, int64_t* const buffer_size_read, int64_t* const dset_out, const int64_t dim_out)
{
return trexio_read_determinant_list(file, offset_file, buffer_size_read, dset_out);
}
trexio_exit_code
trexio_read_safe_determinant_coefficient (trexio_t* const file, const int64_t offset_file, int64_t* const buffer_size_read, double* const dset_out, const int64_t dim_out)
{
return trexio_read_determinant_coefficient(file, offset_file, buffer_size_read, dset_out);
}
#+end_src
#+begin_src c :tangle write_determinant_front.c
@ -4369,11 +4458,51 @@ trexio_write_determinant_list (trexio_t* const file, const int64_t offset_file,
return TREXIO_SUCCESS;
}
trexio_exit_code
trexio_write_determinant_coefficient (trexio_t* const file, const int64_t offset_file, const int64_t buffer_size, const double* dset)
{
if (file == NULL) return TREXIO_INVALID_ARG_1;
if (dset == NULL) return TREXIO_INVALID_ARG_2;
uint32_t rank = 1;
uint64_t dims[1] = {buffer_size};
assert(file->back_end < TREXIO_INVALID_BACK_END);
switch (file->back_end) {
case TREXIO_TEXT:
return trexio_text_write_determinant_coefficient(file, offset_file, rank, dims, dset);
break;
case TREXIO_HDF5:
#ifdef HAVE_HDF5
return trexio_hdf5_write_determinant_coefficient(file, offset_file, rank, dims, dset);
break;
#else
return TREXIO_BACK_END_MISSING;
break;
#endif
/*
case TREXIO_JSON:
rc = trexio_json_read_
break;
,*/
}
}
trexio_exit_code
trexio_write_safe_determinant_list (trexio_t* const file, const int64_t offset_file, const int64_t buffer_size, const int64_t* dset_in, const int64_t dim_in)
{
return trexio_write_determinant_list(file, offset_file, buffer_size, dset_in);
}
trexio_exit_code
trexio_write_safe_determinant_coefficient (trexio_t* const file, const int64_t offset_file, const int64_t buffer_size, const double* dset_in, const int64_t dim_in)
{
return trexio_write_determinant_coefficient(file, offset_file, buffer_size, dset_in);
}
#+end_src
#+begin_src c :tangle has_determinant_front.c
@ -4417,11 +4546,11 @@ trexio_has_determinant_coefficient (trexio_t* const file)
switch (file->back_end) {
case TREXIO_TEXT:
return -1; //trexio_text_has_determinant_coefficient(file);
return trexio_text_has_determinant_coefficient(file);
case TREXIO_HDF5:
#ifdef HAVE_HDF5
return -1; //trexio_hdf5_has_determinant_coefficient(file);
return trexio_hdf5_has_determinant_coefficient(file);
#else
return TREXIO_BACK_END_MISSING;
#endif