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:
parent
3d9f1c85c4
commit
2f6366412f
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user