From dbc66c0c55086e613052a1108ecae374f637a03a Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 8 Dec 2021 11:09:54 +0100 Subject: [PATCH] Storing ERI --- devel/trexio/export_trexio.irp.f | 91 ++++++- devel/trexio/trexio_f.f90 | 432 +++++++++++++++++++++---------- 2 files changed, 383 insertions(+), 140 deletions(-) diff --git a/devel/trexio/export_trexio.irp.f b/devel/trexio/export_trexio.irp.f index 0b2551f..89699f0 100644 --- a/devel/trexio/export_trexio.irp.f +++ b/devel/trexio/export_trexio.irp.f @@ -7,6 +7,7 @@ program export_trexio integer(8) :: f ! TREXIO file handle integer :: rc + double precision, allocatable :: factor(:) print *, 'TREXIO file : '//trim(trexio_filename) print *, '' @@ -114,7 +115,6 @@ program export_trexio rc = trexio_write_basis_shell_ang_mom(f, shell_ang_mom) call check_success(rc) - double precision, allocatable :: factor(:) allocate(factor(shell_num)) if (ao_normalized) then factor(1:shell_num) = shell_normalization_factor(1:shell_num) @@ -206,6 +206,51 @@ program export_trexio rc = trexio_write_ao_1e_int_core_hamiltonian(f,ao_one_e_integrals) call check_success(rc) +! Two-e AO integrals +! ------------------ + + PROVIDE ao_two_e_integrals_in_map + + integer(8), parameter :: BUFSIZE=10000_8 + double precision :: eri_buffer(BUFSIZE), integral + integer(4) :: eri_index(4,BUFSIZE) + integer(8) :: icount, offset + + double precision, external :: get_ao_two_e_integral + + + icount = 0_8 + offset = 0_8 + do l=1,ao_num + do k=1,ao_num + do j=l,ao_num + do i=k,ao_num + if (i==j .and. k= 0_8) then + rc = trexio_write_ao_2e_int_eri(f, offset, icount, eri_index, eri_buffer) + call check_success(rc) + end if + ! Molecular orbitals ! ------------------ @@ -240,10 +285,51 @@ program export_trexio rc = trexio_write_mo_1e_int_ecp_non_local(f,mo_pseudo_integrals_non_local) call check_success(rc) endif -! + rc = trexio_write_mo_1e_int_core_hamiltonian(f,one_e_dm_mo) call check_success(rc) +! Two-e MO integrals +! ------------------ + + PROVIDE mo_two_e_integrals_in_map + + double precision, external :: mo_two_e_integral + + + icount = 0_8 + offset = 0_8 + do l=1,mo_num + do k=1,mo_num + do j=l,mo_num + do i=k,mo_num + if (i==j .and. k= 0_8) then + rc = trexio_write_mo_2e_int_eri(f, offset, icount, eri_index, eri_buffer) + call check_success(rc) + end if + + ! RDM ! ---- @@ -258,6 +344,7 @@ program export_trexio ! call check_success(rc) + ! ------------------------------------------------------------------------------ rc = trexio_close(f) diff --git a/devel/trexio/trexio_f.f90 b/devel/trexio/trexio_f.f90 index 6941f5a..ab8c3c9 100644 --- a/devel/trexio/trexio_f.f90 +++ b/devel/trexio/trexio_f.f90 @@ -37,6 +37,7 @@ 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_STR_LEN = 30 +integer(trexio_exit_code), parameter :: TREXIO_INT_SIZE_OVERFLOW = 31 interface subroutine trexio_string_of_error (error, string) bind(C, name='trexio_string_of_error_f') @@ -47,7 +48,7 @@ interface end subroutine trexio_string_of_error end interface -integer(trexio_backend), parameter :: TREXIO_HDF5 = 0 +integer(trexio_backend), parameter :: TREXIO_HDF5 = 0 integer(trexio_backend), parameter :: TREXIO_TEXT = 1 ! integer(trexio_backend), parameter :: TREXIO_JSON = 2 integer(trexio_backend), parameter :: TREXIO_INVALID_BACK_END = 2 @@ -369,20 +370,6 @@ interface end function trexio_has_ao_1e_int_core_hamiltonian end interface -interface - integer function trexio_has_ao_2e_int_eri (trex_file) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - end function trexio_has_ao_2e_int_eri -end interface - -interface - integer function trexio_has_ao_2e_int_eri_lr (trex_file) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - end function trexio_has_ao_2e_int_eri_lr -end interface - interface integer function trexio_has_mo_coefficient (trex_file) bind(C) use, intrinsic :: iso_c_binding @@ -439,6 +426,41 @@ interface end function trexio_has_mo_1e_int_core_hamiltonian end interface +interface + integer function trexio_has_rdm_one_e (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_one_e +end interface + +interface + integer function trexio_has_rdm_one_e_up (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_one_e_up +end interface + +interface + integer function trexio_has_rdm_one_e_dn (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_one_e_dn +end interface + +interface + integer function trexio_has_ao_2e_int_eri (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_2e_int_eri +end interface + +interface + integer function trexio_has_ao_2e_int_eri_lr (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_2e_int_eri_lr +end interface + interface integer function trexio_has_mo_2e_int_eri (trex_file) bind(C) use, intrinsic :: iso_c_binding @@ -453,6 +475,13 @@ interface end function trexio_has_mo_2e_int_eri_lr end interface +interface + integer function trexio_has_rdm_two_e (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_two_e +end interface + interface integer function trexio_has_metadata_code (trex_file) bind(C) use, intrinsic :: iso_c_binding @@ -994,22 +1023,6 @@ interface end function trexio_read_ao_1e_int_core_hamiltonian_32 end interface -interface - integer function trexio_read_ao_2e_int_eri_32 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(4), intent(out) :: dset(*) - end function trexio_read_ao_2e_int_eri_32 -end interface - -interface - integer function trexio_read_ao_2e_int_eri_lr_32 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(4), intent(out) :: dset(*) - end function trexio_read_ao_2e_int_eri_lr_32 -end interface - interface integer function trexio_read_mo_coefficient_32 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding @@ -1075,19 +1088,27 @@ interface end interface interface - integer function trexio_read_mo_2e_int_eri_32 (trex_file, dset) bind(C) + integer function trexio_read_rdm_one_e_32 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(4), intent(out) :: dset(*) - end function trexio_read_mo_2e_int_eri_32 + end function trexio_read_rdm_one_e_32 end interface interface - integer function trexio_read_mo_2e_int_eri_lr_32 (trex_file, dset) bind(C) + integer function trexio_read_rdm_one_e_up_32 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(4), intent(out) :: dset(*) - end function trexio_read_mo_2e_int_eri_lr_32 + end function trexio_read_rdm_one_e_up_32 +end interface + +interface + integer function trexio_read_rdm_one_e_dn_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(4), intent(out) :: dset(*) + end function trexio_read_rdm_one_e_dn_32 end interface interface @@ -1282,22 +1303,6 @@ interface end function trexio_read_ao_1e_int_core_hamiltonian_64 end interface -interface - integer function trexio_read_ao_2e_int_eri_64 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(out) :: dset(*) - end function trexio_read_ao_2e_int_eri_64 -end interface - -interface - integer function trexio_read_ao_2e_int_eri_lr_64 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(out) :: dset(*) - end function trexio_read_ao_2e_int_eri_lr_64 -end interface - interface integer function trexio_read_mo_coefficient_64 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding @@ -1363,19 +1368,27 @@ interface end interface interface - integer function trexio_read_mo_2e_int_eri_64 (trex_file, dset) bind(C) + integer function trexio_read_rdm_one_e_64 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(8), intent(out) :: dset(*) - end function trexio_read_mo_2e_int_eri_64 + end function trexio_read_rdm_one_e_64 end interface interface - integer function trexio_read_mo_2e_int_eri_lr_64 (trex_file, dset) bind(C) + integer function trexio_read_rdm_one_e_up_64 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(8), intent(out) :: dset(*) - end function trexio_read_mo_2e_int_eri_lr_64 + end function trexio_read_rdm_one_e_up_64 +end interface + +interface + integer function trexio_read_rdm_one_e_dn_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(out) :: dset(*) + end function trexio_read_rdm_one_e_dn_64 end interface interface @@ -1570,22 +1583,6 @@ interface end function trexio_read_ao_1e_int_core_hamiltonian end interface -interface - integer function trexio_read_ao_2e_int_eri (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(out) :: dset(*) - end function trexio_read_ao_2e_int_eri -end interface - -interface - integer function trexio_read_ao_2e_int_eri_lr (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(out) :: dset(*) - end function trexio_read_ao_2e_int_eri_lr -end interface - interface integer function trexio_read_mo_coefficient (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding @@ -1651,21 +1648,139 @@ interface end interface interface - integer function trexio_read_mo_2e_int_eri (trex_file, dset) bind(C) + integer function trexio_read_rdm_one_e (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(8), intent(out) :: dset(*) + end function trexio_read_rdm_one_e +end interface + +interface + integer function trexio_read_rdm_one_e_up (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(out) :: dset(*) + end function trexio_read_rdm_one_e_up +end interface + +interface + integer function trexio_read_rdm_one_e_dn (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(out) :: dset(*) + end function trexio_read_rdm_one_e_dn +end interface + +interface + integer function trexio_read_ao_2e_int_eri (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(out) :: value_sparse(*) + end function trexio_read_ao_2e_int_eri +end interface + +interface + integer function trexio_read_ao_2e_int_eri_lr (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(out) :: value_sparse(*) + end function trexio_read_ao_2e_int_eri_lr +end interface + +interface + integer function trexio_read_mo_2e_int_eri (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(out) :: value_sparse(*) end function trexio_read_mo_2e_int_eri end interface interface - integer function trexio_read_mo_2e_int_eri_lr (trex_file, dset) bind(C) + integer function trexio_read_mo_2e_int_eri_lr (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file - real(8), intent(out) :: dset(*) + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(out) :: value_sparse(*) end function trexio_read_mo_2e_int_eri_lr end interface +interface + integer function trexio_read_rdm_two_e (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(out) :: value_sparse(*) + end function trexio_read_rdm_two_e +end interface + +interface + integer function trexio_read_ao_2e_int_eri_size (trex_file, & + size_max) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: size_max + end function trexio_read_ao_2e_int_eri_size +end interface + +interface + integer function trexio_read_ao_2e_int_eri_lr_size (trex_file, & + size_max) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: size_max + end function trexio_read_ao_2e_int_eri_lr_size +end interface + +interface + integer function trexio_read_mo_2e_int_eri_size (trex_file, & + size_max) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: size_max + end function trexio_read_mo_2e_int_eri_size +end interface + +interface + integer function trexio_read_mo_2e_int_eri_lr_size (trex_file, & + size_max) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: size_max + end function trexio_read_mo_2e_int_eri_lr_size +end interface + +interface + integer function trexio_read_rdm_two_e_size (trex_file, & + size_max) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: size_max + end function trexio_read_rdm_two_e_size +end interface + interface integer function trexio_read_metadata_code_low (trex_file, dset, max_str_len) bind(C) use, intrinsic :: iso_c_binding @@ -2217,22 +2332,6 @@ interface end function trexio_write_ao_1e_int_core_hamiltonian_32 end interface -interface - integer function trexio_write_ao_2e_int_eri_32 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(4), intent(in) :: dset(*) - end function trexio_write_ao_2e_int_eri_32 -end interface - -interface - integer function trexio_write_ao_2e_int_eri_lr_32 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(4), intent(in) :: dset(*) - end function trexio_write_ao_2e_int_eri_lr_32 -end interface - interface integer function trexio_write_mo_coefficient_32 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding @@ -2298,19 +2397,27 @@ interface end interface interface - integer function trexio_write_mo_2e_int_eri_32 (trex_file, dset) bind(C) + integer function trexio_write_rdm_one_e_32 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(4), intent(in) :: dset(*) - end function trexio_write_mo_2e_int_eri_32 + end function trexio_write_rdm_one_e_32 end interface interface - integer function trexio_write_mo_2e_int_eri_lr_32 (trex_file, dset) bind(C) + integer function trexio_write_rdm_one_e_up_32 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(4), intent(in) :: dset(*) - end function trexio_write_mo_2e_int_eri_lr_32 + end function trexio_write_rdm_one_e_up_32 +end interface + +interface + integer function trexio_write_rdm_one_e_dn_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(4), intent(in) :: dset(*) + end function trexio_write_rdm_one_e_dn_32 end interface interface @@ -2505,22 +2612,6 @@ interface end function trexio_write_ao_1e_int_core_hamiltonian_64 end interface -interface - integer function trexio_write_ao_2e_int_eri_64 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(in) :: dset(*) - end function trexio_write_ao_2e_int_eri_64 -end interface - -interface - integer function trexio_write_ao_2e_int_eri_lr_64 (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(in) :: dset(*) - end function trexio_write_ao_2e_int_eri_lr_64 -end interface - interface integer function trexio_write_mo_coefficient_64 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding @@ -2586,19 +2677,27 @@ interface end interface interface - integer function trexio_write_mo_2e_int_eri_64 (trex_file, dset) bind(C) + integer function trexio_write_rdm_one_e_64 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(8), intent(in) :: dset(*) - end function trexio_write_mo_2e_int_eri_64 + end function trexio_write_rdm_one_e_64 end interface interface - integer function trexio_write_mo_2e_int_eri_lr_64 (trex_file, dset) bind(C) + integer function trexio_write_rdm_one_e_up_64 (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(8), intent(in) :: dset(*) - end function trexio_write_mo_2e_int_eri_lr_64 + end function trexio_write_rdm_one_e_up_64 +end interface + +interface + integer function trexio_write_rdm_one_e_dn_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(in) :: dset(*) + end function trexio_write_rdm_one_e_dn_64 end interface interface @@ -2793,22 +2892,6 @@ interface end function trexio_write_ao_1e_int_core_hamiltonian end interface -interface - integer function trexio_write_ao_2e_int_eri (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(in) :: dset(*) - end function trexio_write_ao_2e_int_eri -end interface - -interface - integer function trexio_write_ao_2e_int_eri_lr (trex_file, dset) bind(C) - use, intrinsic :: iso_c_binding - integer(8), intent(in), value :: trex_file - real(8), intent(in) :: dset(*) - end function trexio_write_ao_2e_int_eri_lr -end interface - interface integer function trexio_write_mo_coefficient (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding @@ -2874,21 +2957,94 @@ interface end interface interface - integer function trexio_write_mo_2e_int_eri (trex_file, dset) bind(C) + integer function trexio_write_rdm_one_e (trex_file, dset) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file real(8), intent(in) :: dset(*) + end function trexio_write_rdm_one_e +end interface + +interface + integer function trexio_write_rdm_one_e_up (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(in) :: dset(*) + end function trexio_write_rdm_one_e_up +end interface + +interface + integer function trexio_write_rdm_one_e_dn (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(in) :: dset(*) + end function trexio_write_rdm_one_e_dn +end interface + +interface + integer function trexio_write_ao_2e_int_eri (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(in) :: value_sparse(*) + end function trexio_write_ao_2e_int_eri +end interface + +interface + integer function trexio_write_ao_2e_int_eri_lr (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(in) :: value_sparse(*) + end function trexio_write_ao_2e_int_eri_lr +end interface + +interface + integer function trexio_write_mo_2e_int_eri (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(in) :: value_sparse(*) end function trexio_write_mo_2e_int_eri end interface interface - integer function trexio_write_mo_2e_int_eri_lr (trex_file, dset) bind(C) + integer function trexio_write_mo_2e_int_eri_lr (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) use, intrinsic :: iso_c_binding integer(8), intent(in), value :: trex_file - real(8), intent(in) :: dset(*) + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(in) :: value_sparse(*) end function trexio_write_mo_2e_int_eri_lr end interface +interface + integer function trexio_write_rdm_two_e (trex_file, & + offset_file, buffer_size, & + index_sparse, value_sparse) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: offset_file + integer(8), intent(in), value :: buffer_size + integer(4), intent(in) :: index_sparse(*) + double precision, intent(in) :: value_sparse(*) + end function trexio_write_rdm_two_e +end interface + interface integer function trexio_write_metadata_code_low (trex_file, dset, max_str_len) bind(C) use, intrinsic :: iso_c_binding @@ -3092,7 +3248,7 @@ integer function trexio_read_metadata_code (trex_file, dset, max_str_len) allocate(str_compiled(metadata_code_num*(max_str_len+1)+1)) rc = trexio_read_metadata_code_low(trex_file, str_compiled, max_str_len) - if (rc /= TREXIO_SUCCESS) then + if (rc /= TREXIO_SUCCESS) then deallocate(str_compiled) trexio_read_metadata_code = rc else @@ -3119,7 +3275,7 @@ integer function trexio_read_metadata_author (trex_file, dset, max_str_len) allocate(str_compiled(metadata_author_num*(max_str_len+1)+1)) rc = trexio_read_metadata_author_low(trex_file, str_compiled, max_str_len) - if (rc /= TREXIO_SUCCESS) then + if (rc /= TREXIO_SUCCESS) then deallocate(str_compiled) trexio_read_metadata_author = rc else @@ -3146,7 +3302,7 @@ integer function trexio_read_nucleus_label (trex_file, dset, max_str_len) allocate(str_compiled(nucleus_num*(max_str_len+1)+1)) rc = trexio_read_nucleus_label_low(trex_file, str_compiled, max_str_len) - if (rc /= TREXIO_SUCCESS) then + if (rc /= TREXIO_SUCCESS) then deallocate(str_compiled) trexio_read_nucleus_label = rc else @@ -3173,7 +3329,7 @@ integer function trexio_read_mo_class (trex_file, dset, max_str_len) allocate(str_compiled(mo_num*(max_str_len+1)+1)) rc = trexio_read_mo_class_low(trex_file, str_compiled, max_str_len) - if (rc /= TREXIO_SUCCESS) then + if (rc /= TREXIO_SUCCESS) then deallocate(str_compiled) trexio_read_mo_class = rc else @@ -3200,7 +3356,7 @@ integer function trexio_read_mo_symmetry (trex_file, dset, max_str_len) allocate(str_compiled(mo_num*(max_str_len+1)+1)) rc = trexio_read_mo_symmetry_low(trex_file, str_compiled, max_str_len) - if (rc /= TREXIO_SUCCESS) then + if (rc /= TREXIO_SUCCESS) then deallocate(str_compiled) trexio_read_mo_symmetry = rc else