mirror of
https://github.com/TREX-CoE/trexio.git
synced 2025-01-05 19:08:59 +01:00
Merge branch 'master' into add-determinants
This commit is contained in:
commit
d07cc9793c
@ -159,7 +159,7 @@ __trexio_path__ = None
|
|||||||
|
|
||||||
#+NAME: table-exit-codes
|
#+NAME: table-exit-codes
|
||||||
| Macro | Code | Description |
|
| Macro | Code | Description |
|
||||||
|------------------------------+------+----------------------------------------|
|
|-------------------------------+------+----------------------------------------|
|
||||||
| ~TREXIO_FAILURE~ | -1 | 'Unknown failure' |
|
| ~TREXIO_FAILURE~ | -1 | 'Unknown failure' |
|
||||||
| ~TREXIO_SUCCESS~ | 0 | 'Success' |
|
| ~TREXIO_SUCCESS~ | 0 | 'Success' |
|
||||||
| ~TREXIO_INVALID_ARG_1~ | 1 | 'Invalid argument 1' |
|
| ~TREXIO_INVALID_ARG_1~ | 1 | 'Invalid argument 1' |
|
||||||
@ -194,7 +194,8 @@ __trexio_path__ = None
|
|||||||
| ~TREXIO_INVALID_STR_LEN~ | 30 | 'Invalid max_str_len' |
|
| ~TREXIO_INVALID_STR_LEN~ | 30 | 'Invalid max_str_len' |
|
||||||
| ~TREXIO_INT_SIZE_OVERFLOW~ | 31 | 'Possible integer overflow' |
|
| ~TREXIO_INT_SIZE_OVERFLOW~ | 31 | 'Possible integer overflow' |
|
||||||
| ~TREXIO_SAFE_MODE~ | 32 | 'Unsafe operation in safe mode' |
|
| ~TREXIO_SAFE_MODE~ | 32 | 'Unsafe operation in safe mode' |
|
||||||
| ~TREXIO_INVALID_STATE~ | 33 | 'Inconsistent state of the file' |
|
| ~TREXIO_INVALID_ELECTRON_NUM~ | 33 | 'Inconsistent value of electron num' |
|
||||||
|
| ~TREXIO_INVALID_STATE~ | 34 | 'Inconsistent state of the file' |
|
||||||
|
|
||||||
# We need to force Emacs not to indent the Python code:
|
# We need to force Emacs not to indent the Python code:
|
||||||
# -*- org-src-preserve-indentation: t
|
# -*- org-src-preserve-indentation: t
|
||||||
@ -274,7 +275,8 @@ return '\n'.join(result)
|
|||||||
#define TREXIO_INVALID_STR_LEN ((trexio_exit_code) 30)
|
#define TREXIO_INVALID_STR_LEN ((trexio_exit_code) 30)
|
||||||
#define TREXIO_INT_SIZE_OVERFLOW ((trexio_exit_code) 31)
|
#define TREXIO_INT_SIZE_OVERFLOW ((trexio_exit_code) 31)
|
||||||
#define TREXIO_SAFE_MODE ((trexio_exit_code) 32)
|
#define TREXIO_SAFE_MODE ((trexio_exit_code) 32)
|
||||||
#define TREXIO_INVALID_STATE ((trexio_exit_code) 33)
|
#define TREXIO_INVALID_ELECTRON_NUM ((trexio_exit_code) 33)
|
||||||
|
#define TREXIO_INVALID_STATE ((trexio_exit_code) 34)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src f90 :tangle prefix_fortran.f90 :exports none
|
#+begin_src f90 :tangle prefix_fortran.f90 :exports none
|
||||||
@ -312,7 +314,8 @@ return '\n'.join(result)
|
|||||||
integer(trexio_exit_code), parameter :: TREXIO_INVALID_STR_LEN = 30
|
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_INT_SIZE_OVERFLOW = 31
|
||||||
integer(trexio_exit_code), parameter :: TREXIO_SAFE_MODE = 32
|
integer(trexio_exit_code), parameter :: TREXIO_SAFE_MODE = 32
|
||||||
integer(trexio_exit_code), parameter :: TREXIO_INVALID_STATE = 33
|
integer(trexio_exit_code), parameter :: TREXIO_INVALID_ELECTRON_NUM = 33
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_INVALID_STATE = 34
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src python :tangle prefix_python.py :exports none
|
#+begin_src python :tangle prefix_python.py :exports none
|
||||||
@ -351,7 +354,8 @@ return '\n'.join(result)
|
|||||||
TREXIO_INVALID_STR_LEN = 30
|
TREXIO_INVALID_STR_LEN = 30
|
||||||
TREXIO_INT_SIZE_OVERFLOW = 31
|
TREXIO_INT_SIZE_OVERFLOW = 31
|
||||||
TREXIO_SAFE_MODE = 32
|
TREXIO_SAFE_MODE = 32
|
||||||
TREXIO_INVALID_STATE = 33
|
TREXIO_INVALID_ELECTRON_NUM = 33
|
||||||
|
TREXIO_INVALID_STATE = 34
|
||||||
#+end_src
|
#+end_src
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
@ -496,6 +500,9 @@ return '\n'.join(result)
|
|||||||
case TREXIO_SAFE_MODE:
|
case TREXIO_SAFE_MODE:
|
||||||
return "Unsafe operation in safe mode";
|
return "Unsafe operation in safe mode";
|
||||||
break;
|
break;
|
||||||
|
case TREXIO_INVALID_ELECTRON_NUM:
|
||||||
|
return "Inconsistent value of electron num";
|
||||||
|
break;
|
||||||
case TREXIO_INVALID_STATE:
|
case TREXIO_INVALID_STATE:
|
||||||
return "Inconsistent state of the file";
|
return "Inconsistent state of the file";
|
||||||
break;
|
break;
|
||||||
@ -1262,7 +1269,7 @@ trexio_close (trexio_t* file)
|
|||||||
|
|
||||||
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
||||||
|
|
||||||
/* Things to be done before the closing the file in the back-end */
|
/* Things to be done before closing the file in the back-end */
|
||||||
rc = trexio_pre_close(file);
|
rc = trexio_pre_close(file);
|
||||||
if (rc != TREXIO_SUCCESS) return rc;
|
if (rc != TREXIO_SUCCESS) return rc;
|
||||||
|
|
||||||
@ -1521,7 +1528,7 @@ trexio_pre_close (trexio_t* file)
|
|||||||
|
|
||||||
if (file == NULL) return TREXIO_FILE_ERROR;
|
if (file == NULL) return TREXIO_FILE_ERROR;
|
||||||
|
|
||||||
{ /* Up-spin and down-spin electrons */
|
/* Up-spin and down-spin electrons */
|
||||||
trexio_exit_code rc;
|
trexio_exit_code rc;
|
||||||
|
|
||||||
int32_t nup, ndn, nelec;
|
int32_t nup, ndn, nelec;
|
||||||
@ -1529,6 +1536,7 @@ trexio_pre_close (trexio_t* file)
|
|||||||
bool has_dn = (trexio_has_electron_dn_num(file) == TREXIO_SUCCESS);
|
bool has_dn = (trexio_has_electron_dn_num(file) == TREXIO_SUCCESS);
|
||||||
bool has_updn = (trexio_has_electron_num(file) == TREXIO_SUCCESS);
|
bool has_updn = (trexio_has_electron_num(file) == TREXIO_SUCCESS);
|
||||||
|
|
||||||
|
if (file->mode != 'r') {
|
||||||
if (has_updn && has_up && has_dn) {
|
if (has_updn && has_up && has_dn) {
|
||||||
rc = trexio_read_electron_up_num(file, &nup);
|
rc = trexio_read_electron_up_num(file, &nup);
|
||||||
if (rc != TREXIO_SUCCESS) return rc;
|
if (rc != TREXIO_SUCCESS) return rc;
|
||||||
@ -1540,9 +1548,13 @@ trexio_pre_close (trexio_t* file)
|
|||||||
if (rc != TREXIO_SUCCESS) return rc;
|
if (rc != TREXIO_SUCCESS) return rc;
|
||||||
|
|
||||||
if (nelec != nup + ndn) {
|
if (nelec != nup + ndn) {
|
||||||
|
if (file->mode == 'u') {
|
||||||
nelec = nup + ndn;
|
nelec = nup + ndn;
|
||||||
rc = trexio_write_electron_num(file, nelec);
|
rc = trexio_write_electron_num(file, nelec);
|
||||||
if (rc != TREXIO_SUCCESS) return rc;
|
if (rc != TREXIO_SUCCESS) return rc;
|
||||||
|
} else {
|
||||||
|
return TREXIO_INVALID_ELECTRON_NUM;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (has_up && has_dn) {
|
} else if (has_up && has_dn) {
|
||||||
rc = trexio_read_electron_up_num(file, &nup);
|
rc = trexio_read_electron_up_num(file, &nup);
|
||||||
@ -1577,7 +1589,6 @@ trexio_pre_close (trexio_t* file)
|
|||||||
rc = trexio_write_electron_num(file, nelec);
|
rc = trexio_write_electron_num(file, nelec);
|
||||||
if (rc != TREXIO_SUCCESS) return rc;
|
if (rc != TREXIO_SUCCESS) return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TREXIO_SUCCESS;
|
return TREXIO_SUCCESS;
|
||||||
|
@ -137,18 +137,20 @@ trexio_hdf5_init (trexio_t* const file)
|
|||||||
/* Create or open groups in the hdf5 file assuming that they exist if file exists */
|
/* Create or open groups in the hdf5 file assuming that they exist if file exists */
|
||||||
switch (file->mode) {
|
switch (file->mode) {
|
||||||
case 'r':
|
case 'r':
|
||||||
f->$group$_group = H5Gopen(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT);
|
if (H5Lexists(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT) > 0) f->$group$_group = H5Gopen(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT);
|
||||||
|
if (H5Lexists(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT) == 0) f->$group$_group = (hid_t) 0;
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
case 'w':
|
case 'w':
|
||||||
if (f_exists == 1) {
|
if (f_exists == 1) {
|
||||||
f->$group$_group = H5Gopen(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT);
|
if (H5Lexists(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT) > 0) f->$group$_group = H5Gopen(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT);
|
||||||
|
if (H5Lexists(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT) == 0) f->$group$_group = H5Gcreate(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||||
} else {
|
} else {
|
||||||
f->$group$_group = H5Gcreate(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
f->$group$_group = H5Gcreate(f->file_id, $GROUP$_GROUP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (f->$group$_group <= 0L) return TREXIO_INVALID_ID;
|
if (f->$group$_group < (hid_t) 0) return TREXIO_INVALID_ID;
|
||||||
|
|
||||||
return TREXIO_SUCCESS;
|
return TREXIO_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -161,7 +163,7 @@ trexio_hdf5_deinit (trexio_t* const file)
|
|||||||
|
|
||||||
trexio_hdf5_t* f = (trexio_hdf5_t*) file;
|
trexio_hdf5_t* f = (trexio_hdf5_t*) file;
|
||||||
|
|
||||||
H5Gclose(f->$group$_group);
|
if (f->$group$_group != (hid_t) 0) H5Gclose(f->$group$_group);
|
||||||
f->$group$_group = 0;
|
f->$group$_group = 0;
|
||||||
|
|
||||||
H5Fclose(f->file_id);
|
H5Fclose(f->file_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user