mirror of
https://github.com/TREX-CoE/trexio.git
synced 2024-08-25 06:31:43 +02:00
Add tests for to_bitfield_list conversion
This commit is contained in:
parent
af828ea6cd
commit
755e94afab
@ -44,3 +44,6 @@ coeffs = [float(i/det_num) for i in range(det_num)]
|
|||||||
coeffs_s2 = [float(i*2/det_num) for i in range(det_num)]
|
coeffs_s2 = [float(i*2/det_num) for i in range(det_num)]
|
||||||
|
|
||||||
det_test = [1, 2, 3, 2, 1, 3]
|
det_test = [1, 2, 3, 2, 1, 3]
|
||||||
|
|
||||||
|
orb_up_test = [0, 65, 128, 129]
|
||||||
|
orb_dn_test = [1, 64, 128, 129]
|
||||||
|
@ -39,6 +39,17 @@ def test_orbital_list():
|
|||||||
assert orb_list_dn[0] == 1
|
assert orb_list_dn[0] == 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_bitfield_list():
|
||||||
|
"""Convert lists of occupied up- and down-spin orbitals into determinants."""
|
||||||
|
# convert det_test list into a numpy array for .all() assertion to work
|
||||||
|
det_test_np = np.array(det_test, dtype=np.int64)
|
||||||
|
|
||||||
|
det_list_up = trexio.to_bitfield_list(int64_num, orb_up_test)
|
||||||
|
assert (det_list_up == det_test_np[:int64_num]).all()
|
||||||
|
det_list_dn = trexio.to_bitfield_list(int64_num, orb_dn_test)
|
||||||
|
assert (det_list_dn == det_test_np[int64_num:]).all()
|
||||||
|
|
||||||
|
|
||||||
class TestIO:
|
class TestIO:
|
||||||
"""Unit tests for writing/reading different blocks of the TREXIO file."""
|
"""Unit tests for writing/reading different blocks of the TREXIO file."""
|
||||||
|
|
||||||
|
@ -307,6 +307,14 @@ static int test_read_determinant (const char* file_name, const back_end_t backen
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// check conversion of one orbital list into the bitfield determinant representation
|
||||||
|
int64_t* det_list_check = (int64_t*) calloc(int_num, sizeof(int64_t));
|
||||||
|
|
||||||
|
rc = trexio_to_bitfield_list (orb_list_up, occ_num_up, det_list_check, int_num);
|
||||||
|
assert (rc == TREXIO_SUCCESS);
|
||||||
|
for (int i=0; i<int_num; i++) {
|
||||||
|
assert (det_list_check[i] == det_list_read[2*int_num*5+i]);
|
||||||
|
}
|
||||||
|
|
||||||
// close current session
|
// close current session
|
||||||
rc = trexio_close(file);
|
rc = trexio_close(file);
|
||||||
@ -316,6 +324,7 @@ static int test_read_determinant (const char* file_name, const back_end_t backen
|
|||||||
free(det_list_read);
|
free(det_list_read);
|
||||||
free(det_coef_read);
|
free(det_coef_read);
|
||||||
free(det_coef_s2_read);
|
free(det_coef_s2_read);
|
||||||
|
free(det_list_check);
|
||||||
free(orb_list_up);
|
free(orb_list_up);
|
||||||
free(orb_list_dn);
|
free(orb_list_dn);
|
||||||
|
|
||||||
|
@ -307,6 +307,14 @@ static int test_read_determinant (const char* file_name, const back_end_t backen
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// check conversion of one orbital list into the bitfield determinant representation
|
||||||
|
int64_t* det_list_check = (int64_t*) calloc(int_num, sizeof(int64_t));
|
||||||
|
|
||||||
|
rc = trexio_to_bitfield_list (orb_list_up, occ_num_up, det_list_check, int_num);
|
||||||
|
assert (rc == TREXIO_SUCCESS);
|
||||||
|
for (int i=0; i<int_num; i++) {
|
||||||
|
assert (det_list_check[i] == det_list_read[2*int_num*5+i]);
|
||||||
|
}
|
||||||
|
|
||||||
// close current session
|
// close current session
|
||||||
rc = trexio_close(file);
|
rc = trexio_close(file);
|
||||||
@ -316,6 +324,7 @@ static int test_read_determinant (const char* file_name, const back_end_t backen
|
|||||||
free(det_list_read);
|
free(det_list_read);
|
||||||
free(det_coef_read);
|
free(det_coef_read);
|
||||||
free(det_coef_s2_read);
|
free(det_coef_s2_read);
|
||||||
|
free(det_list_check);
|
||||||
free(orb_list_up);
|
free(orb_list_up);
|
||||||
free(orb_list_dn);
|
free(orb_list_dn);
|
||||||
|
|
||||||
|
@ -6,11 +6,11 @@ program test_trexio
|
|||||||
integer :: rc
|
integer :: rc
|
||||||
logical :: have_hdf5
|
logical :: have_hdf5
|
||||||
|
|
||||||
print * , "============================================"
|
print'(a)' , "============================================"
|
||||||
print'(a,a)' , " TREXIO VERSION STRING : ", TREXIO_PACKAGE_VERSION
|
print'(a,a)' , " TREXIO VERSION STRING : ", TREXIO_PACKAGE_VERSION
|
||||||
print'(a,i3)', " TREXIO MAJOR VERSION : ", TREXIO_VERSION_MAJOR
|
print'(a,i3)', " TREXIO MAJOR VERSION : ", TREXIO_VERSION_MAJOR
|
||||||
print'(a,i3)', " TREXIO MINOR VERSION : ", TREXIO_VERSION_MINOR
|
print'(a,i3)', " TREXIO MINOR VERSION : ", TREXIO_VERSION_MINOR
|
||||||
print * , "============================================"
|
print'(a)' , "============================================"
|
||||||
|
|
||||||
rc = trexio_info()
|
rc = trexio_info()
|
||||||
|
|
||||||
@ -288,6 +288,7 @@ subroutine test_read(file_name, back_end)
|
|||||||
|
|
||||||
! determinant data
|
! determinant data
|
||||||
integer*8 :: det_list(6,50)
|
integer*8 :: det_list(6,50)
|
||||||
|
integer*8 :: det_list_check(3)
|
||||||
integer*8 :: read_buf_det_size = 20
|
integer*8 :: read_buf_det_size = 20
|
||||||
integer*8 :: offset_det_read = 10
|
integer*8 :: offset_det_read = 10
|
||||||
integer*8 :: offset_det_data_read = 5
|
integer*8 :: offset_det_data_read = 5
|
||||||
@ -479,6 +480,26 @@ subroutine test_read(file_name, back_end)
|
|||||||
call exit(-1)
|
call exit(-1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
! convert one orbital list into a bitfield determinant representation
|
||||||
|
rc = trexio_to_bitfield_list(orb_list_up, occ_num_up, det_list_check, 3)
|
||||||
|
!write(*,*) occ_num_up, occ_num_dn
|
||||||
|
! Print occupied orbitals for an up-spin component of a given determinant
|
||||||
|
!write(*,*) orb_list_up(1:occ_num_up)
|
||||||
|
! Print integers representanting a given determinant fully (up- and down-spin components)
|
||||||
|
!write(*,*) det_list(1:3, offset_det_data_read+1)
|
||||||
|
!write(*,*) det_list_check(1:3)
|
||||||
|
! Print binary representation of the first integer bit field of a given determinant
|
||||||
|
!write(*,'(B64.64)') det_list(1, offset_det_data_read+1)
|
||||||
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
|
if (det_list_check(1) == det_list(1, offset_det_data_read+1) .and. &
|
||||||
|
det_list_check(2) == det_list(2, offset_det_data_read+1) .and. &
|
||||||
|
det_list_check(3) == det_list(3, offset_det_data_read+1)) then
|
||||||
|
write(*,*) 'SUCCESS CONVERT ORB LIST'
|
||||||
|
else
|
||||||
|
print *, 'FAILURE ORB CONVERT CHECK'
|
||||||
|
call exit(-1)
|
||||||
|
endif
|
||||||
|
|
||||||
rc = trexio_read_mo_num(trex_file, mo_num)
|
rc = trexio_read_mo_num(trex_file, mo_num)
|
||||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user