diff --git a/devel/trexio/EZFIO.cfg b/devel/trexio/EZFIO.cfg index 9da5e95..e99dba9 100644 --- a/devel/trexio/EZFIO.cfg +++ b/devel/trexio/EZFIO.cfg @@ -10,3 +10,21 @@ doc: Name of the exported TREXIO file interface: ezfio, ocaml, provider default: None +[export_rdm] +type: logical +doc: If True, export two-body reduced density matrix +interface: ezfio, ocaml, provider +default: False + +[export_ao_ints] +type: logical +doc: If True, export two-electron integrals in AO basis +interface: ezfio, ocaml, provider +default: False + +[export_mo_ints] +type: logical +doc: If True, export two-electron integrals in MO basis +interface: ezfio, ocaml, provider +default: True + diff --git a/devel/trexio/LIB b/devel/trexio/LIB index f00d288..91c0923 100644 --- a/devel/trexio/LIB +++ b/devel/trexio/LIB @@ -1,2 +1,2 @@ --L/home/scemama/TREX/trexio/_install/lib -ltrexio +-ltrexio diff --git a/devel/trexio/NEED b/devel/trexio/NEED index 0a886cf..1d6fc39 100644 --- a/devel/trexio/NEED +++ b/devel/trexio/NEED @@ -4,3 +4,4 @@ mo_one_e_ints mo_two_e_ints ao_two_e_ints ao_one_e_ints +two_body_rdm diff --git a/devel/trexio/export_trexio.irp.f b/devel/trexio/export_trexio.irp.f index ef47fcf..3a9e7b8 100644 --- a/devel/trexio/export_trexio.irp.f +++ b/devel/trexio/export_trexio.irp.f @@ -1,4 +1,11 @@ program export_trexio + implicit none + read_wf = .True. + SOFT_TOUCH read_wf + call run +end + +subroutine run use trexio implicit none BEGIN_DOC @@ -7,6 +14,7 @@ program export_trexio integer(8) :: f ! TREXIO file handle integer :: rc + double precision, allocatable :: factor(:) print *, 'TREXIO file : '//trim(trexio_filename) print *, '' @@ -30,6 +38,8 @@ program export_trexio ! Electrons ! --------- + print *, 'Electrons' + rc = trexio_write_electron_up_num(f, elec_alpha_num) call check_success(rc) @@ -40,6 +50,8 @@ program export_trexio ! Nuclei ! ------ + print *, 'Nuclei' + rc = trexio_write_nucleus_num(f, nucl_num) call check_success(rc) @@ -52,10 +64,15 @@ program export_trexio rc = trexio_write_nucleus_label(f, nucl_label, 32) call check_success(rc) + rc = trexio_write_nucleus_repulsion(f, nuclear_repulsion) + call check_success(rc) + ! Pseudo-potentials ! ----------------- + print *, 'ECP' + double precision, allocatable :: tmp_double(:,:) integer, allocatable :: tmp_int(:,:) @@ -94,39 +111,36 @@ program export_trexio ! Basis ! ----- + print *, 'Basis' + + rc = trexio_write_basis_type(f, 'Gaussian', len('Gaussian')) call check_success(rc) - rc = trexio_write_basis_num(f, shell_num) - call check_success(rc) - - rc = trexio_write_basis_nucleus_shell_num(f, nucleus_shell_num) - call check_success(rc) - - rc = trexio_write_basis_nucleus_index(f, basis_nucleus_index) - call check_success(rc) - - rc = trexio_write_basis_shell_ang_mom(f, shell_ang_mom) - call check_success(rc) - rc = trexio_write_basis_prim_num(f, prim_num) call check_success(rc) - rc = trexio_write_basis_shell_prim_num(f, shell_prim_num) - call check_success(rc) + rc = trexio_write_basis_shell_num(f, shell_num) + 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) - else - factor(1:shell_num) = 1.d0 - endif - rc = trexio_write_basis_shell_factor(f, factor) - call check_success(rc) - deallocate(factor) + rc = trexio_write_basis_nucleus_index(f, basis_nucleus_index) + call check_success(rc) - rc = trexio_write_basis_shell_prim_index(f, shell_prim_index) + rc = trexio_write_basis_shell_ang_mom(f, shell_ang_mom) + call check_success(rc) + + allocate(factor(shell_num)) + if (ao_normalized) then + factor(1:shell_num) = shell_normalization_factor(1:shell_num) + else + factor(1:shell_num) = 1.d0 + endif + rc = trexio_write_basis_shell_factor(f, factor) + call check_success(rc) + + deallocate(factor) + + rc = trexio_write_basis_shell_index(f, shell_index) call check_success(rc) rc = trexio_write_basis_exponent(f, prim_expo) @@ -146,10 +160,11 @@ program export_trexio deallocate(factor) - ! Atomic orbitals ! --------------- + print *, 'AOs' + rc = trexio_write_ao_num(f, ao_num) call check_success(rc) @@ -168,7 +183,6 @@ program export_trexio C_A(3) = 0.d0 allocate(factor(ao_num)) - print *, ao_first_of_shell if (ao_normalized) then do i=1,ao_num l = ao_first_of_shell(ao_shell(i)) @@ -184,6 +198,8 @@ program export_trexio ! One-e AO integrals ! ------------------ + print *, 'AO integrals' + rc = trexio_write_ao_1e_int_overlap(f,ao_overlap) call check_success(rc) @@ -204,10 +220,59 @@ program export_trexio rc = trexio_write_ao_1e_int_core_hamiltonian(f,ao_one_e_integrals) call check_success(rc) +! Two-e AO integrals +! ------------------ + + if (export_ao_ints) then + 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 + end if + ! Molecular orbitals ! ------------------ + print *, 'MOs' + ! rc = trexio_write_mo_type(f, mo_label) ! call check_success(rc) @@ -221,6 +286,8 @@ program export_trexio ! One-e MO integrals ! ------------------ + print *, 'MO integrals' + rc = trexio_write_mo_1e_int_kinetic(f,mo_kinetic_integrals) call check_success(rc) @@ -234,22 +301,103 @@ 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 +! ------------------ -! RDM -! ---- + if (export_mo_ints) then + PROVIDE mo_two_e_integrals_in_map -! rc = trexio_write_rdm_one_e(f,one_e_dm_mo) -! call check_success(rc) -! -! rc = trexio_write_rdm_one_e_up(f,one_e_dm_mo_alpha_average) -! call check_success(rc) -! -! rc = trexio_write_rdm_one_e_dn(f,one_e_dm_mo_beta_average) -! call check_success(rc) + 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 + end if + + + +! One-e RDM +! --------- + + rc = trexio_write_rdm_1e(f,one_e_dm_mo) + call check_success(rc) + + rc = trexio_write_rdm_1e_up(f,one_e_dm_mo_alpha_average) + call check_success(rc) + + rc = trexio_write_rdm_1e_dn(f,one_e_dm_mo_beta_average) + call check_success(rc) + + +! Two-e RDM +! --------- + + if (export_rdm) then + PROVIDE two_e_dm_mo + + icount = 0_8 + offset = 0_8 + do l=1,mo_num + do k=1,mo_num + do j=1,mo_num + do i=1,mo_num + integral = two_e_dm_mo(i,j,k,l) + if (integral == 0.d0) cycle + icount += 1_8 + eri_buffer(icount) = integral + eri_index(1,icount) = i + eri_index(2,icount) = j + eri_index(3,icount) = k + eri_index(4,icount) = l + if (icount == BUFSIZE) then + rc = trexio_write_rdm_2e(f, offset, icount, eri_index, eri_buffer) + call check_success(rc) + icount = 0_8 + offset += icount + end if + end do + end do + end do + end do + + if (icount >= 0_8) then + rc = trexio_write_rdm_2e(f, offset, icount, eri_index, eri_buffer) + call check_success(rc) + end if + end if ! ------------------------------------------------------------------------------ diff --git a/devel/trexio/trexio_f.f90 b/devel/trexio/trexio_f.f90 new file mode 100644 index 0000000..6cce3aa --- /dev/null +++ b/devel/trexio/trexio_f.f90 @@ -0,0 +1,3726 @@ +module trexio + + use, intrinsic :: iso_c_binding + implicit none + + integer, parameter :: trexio_exit_code = 4 + integer, parameter :: trexio_backend = 4 + + character(kind=c_char), parameter :: TREXIO_DELIM = c_new_line + +integer(trexio_exit_code), parameter :: TREXIO_FAILURE = -1 +integer(trexio_exit_code), parameter :: TREXIO_SUCCESS = 0 +integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_1 = 1 +integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_2 = 2 +integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_3 = 3 +integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_4 = 4 +integer(trexio_exit_code), parameter :: TREXIO_INVALID_ARG_5 = 5 +integer(trexio_exit_code), parameter :: TREXIO_END = 6 +integer(trexio_exit_code), parameter :: TREXIO_READONLY = 7 +integer(trexio_exit_code), parameter :: TREXIO_ERRNO = 8 +integer(trexio_exit_code), parameter :: TREXIO_INVALID_ID = 9 +integer(trexio_exit_code), parameter :: TREXIO_ALLOCATION_FAILED = 10 +integer(trexio_exit_code), parameter :: TREXIO_HAS_NOT = 11 +integer(trexio_exit_code), parameter :: TREXIO_INVALID_NUM = 12 +integer(trexio_exit_code), parameter :: TREXIO_ATTR_ALREADY_EXISTS = 13 +integer(trexio_exit_code), parameter :: TREXIO_DSET_ALREADY_EXISTS = 14 +integer(trexio_exit_code), parameter :: TREXIO_OPEN_ERROR = 15 +integer(trexio_exit_code), parameter :: TREXIO_LOCK_ERROR = 16 +integer(trexio_exit_code), parameter :: TREXIO_UNLOCK_ERROR = 17 +integer(trexio_exit_code), parameter :: TREXIO_FILE_ERROR = 18 +integer(trexio_exit_code), parameter :: TREXIO_GROUP_READ_ERROR = 19 +integer(trexio_exit_code), parameter :: TREXIO_GROUP_WRITE_ERROR = 20 +integer(trexio_exit_code), parameter :: TREXIO_ELEM_READ_ERROR = 21 +integer(trexio_exit_code), parameter :: TREXIO_ELEM_WRITE_ERROR = 22 +integer(trexio_exit_code), parameter :: TREXIO_UNSAFE_ARRAY_DIM = 23 +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') + use, intrinsic :: iso_c_binding + import + integer (trexio_exit_code), intent(in), value :: error + character, intent(out) :: string(128) + end subroutine trexio_string_of_error +end interface + +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 + +interface + logical function trexio_has_backend (back_end) bind(C) + use, intrinsic :: iso_c_binding + integer(4), intent(in), value :: back_end + end function trexio_has_backend +end interface + +interface + integer(8) function trexio_open_c (filename, mode, backend, rc_open) bind(C, name="trexio_open") + use, intrinsic :: iso_c_binding + import + character(kind=c_char), dimension(*) :: filename + character, intent(in), value :: mode + integer(trexio_backend), intent(in), value :: backend + integer(trexio_exit_code), intent(out) :: rc_open + end function trexio_open_c +end interface + +interface + integer function trexio_set_one_based(trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_set_one_based +end interface + +interface + integer function trexio_close (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_close +end interface + +character(len = 12) :: TREXIO_PACKAGE_VERSION = "2.0.0" +integer(4) :: TREXIO_VERSION_MAJOR = 2 +integer(4) :: TREXIO_VERSION_MINOR = 0 +integer(4) :: TREXIO_VERSION_PATCH = 0 + +interface + integer function trexio_has_metadata_code_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_metadata_code_num +end interface + +interface + integer function trexio_has_metadata_author_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_metadata_author_num +end interface + +interface + integer function trexio_has_electron_up_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_electron_up_num +end interface + +interface + integer function trexio_has_electron_dn_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_electron_dn_num +end interface + +interface + integer function trexio_has_nucleus_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_nucleus_num +end interface + +interface + integer function trexio_has_nucleus_repulsion (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_nucleus_repulsion +end interface + +interface + integer function trexio_has_ecp_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_num +end interface + +interface + integer function trexio_has_basis_prim_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_prim_num +end interface + +interface + integer function trexio_has_basis_shell_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_shell_num +end interface + +interface + integer function trexio_has_ao_cartesian (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_cartesian +end interface + +interface + integer function trexio_has_ao_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_num +end interface + +interface + integer function trexio_has_mo_num (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_num +end interface + +interface + integer function trexio_has_metadata_package_version (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_metadata_package_version +end interface + +interface + integer function trexio_has_metadata_description (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_metadata_description +end interface + +interface + integer function trexio_has_nucleus_point_group (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_nucleus_point_group +end interface + +interface + integer function trexio_has_basis_type (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_type +end interface + +interface + integer function trexio_has_mo_type (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_type +end interface + +interface + integer function trexio_has_nucleus_charge (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_nucleus_charge +end interface + +interface + integer function trexio_has_nucleus_coord (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_nucleus_coord +end interface + +interface + integer function trexio_has_ecp_max_ang_mom_plus_1 (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_max_ang_mom_plus_1 +end interface + +interface + integer function trexio_has_ecp_z_core (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_z_core +end interface + +interface + integer function trexio_has_ecp_ang_mom (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_ang_mom +end interface + +interface + integer function trexio_has_ecp_nucleus_index (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_nucleus_index +end interface + +interface + integer function trexio_has_ecp_exponent (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_exponent +end interface + +interface + integer function trexio_has_ecp_coefficient (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_coefficient +end interface + +interface + integer function trexio_has_ecp_power (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ecp_power +end interface + +interface + integer function trexio_has_basis_nucleus_index (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_nucleus_index +end interface + +interface + integer function trexio_has_basis_shell_ang_mom (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_shell_ang_mom +end interface + +interface + integer function trexio_has_basis_shell_factor (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_shell_factor +end interface + +interface + integer function trexio_has_basis_shell_index (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_shell_index +end interface + +interface + integer function trexio_has_basis_exponent (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_exponent +end interface + +interface + integer function trexio_has_basis_coefficient (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_coefficient +end interface + +interface + integer function trexio_has_basis_prim_factor (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_basis_prim_factor +end interface + +interface + integer function trexio_has_ao_shell (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_shell +end interface + +interface + integer function trexio_has_ao_normalization (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_normalization +end interface + +interface + integer function trexio_has_ao_1e_int_overlap (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_1e_int_overlap +end interface + +interface + integer function trexio_has_ao_1e_int_kinetic (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_1e_int_kinetic +end interface + +interface + integer function trexio_has_ao_1e_int_potential_n_e (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_1e_int_potential_n_e +end interface + +interface + integer function trexio_has_ao_1e_int_ecp_local (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_1e_int_ecp_local +end interface + +interface + integer function trexio_has_ao_1e_int_ecp_non_local (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_1e_int_ecp_non_local +end interface + +interface + integer function trexio_has_ao_1e_int_core_hamiltonian (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_ao_1e_int_core_hamiltonian +end interface + +interface + integer function trexio_has_mo_coefficient (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_coefficient +end interface + +interface + integer function trexio_has_mo_occupation (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_occupation +end interface + +interface + integer function trexio_has_mo_1e_int_overlap (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_1e_int_overlap +end interface + +interface + integer function trexio_has_mo_1e_int_kinetic (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_1e_int_kinetic +end interface + +interface + integer function trexio_has_mo_1e_int_potential_n_e (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_1e_int_potential_n_e +end interface + +interface + integer function trexio_has_mo_1e_int_ecp_local (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_1e_int_ecp_local +end interface + +interface + integer function trexio_has_mo_1e_int_ecp_non_local (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_1e_int_ecp_non_local +end interface + +interface + integer function trexio_has_mo_1e_int_core_hamiltonian (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_1e_int_core_hamiltonian +end interface + +interface + integer function trexio_has_rdm_1e (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_1e +end interface + +interface + integer function trexio_has_rdm_1e_up (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_1e_up +end interface + +interface + integer function trexio_has_rdm_1e_dn (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_1e_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 + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_2e_int_eri +end interface + +interface + integer function trexio_has_mo_2e_int_eri_lr (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_2e_int_eri_lr +end interface + +interface + integer function trexio_has_rdm_2e (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_2e +end interface + +interface + integer function trexio_has_rdm_2e_upup (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_2e_upup +end interface + +interface + integer function trexio_has_rdm_2e_dndn (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_2e_dndn +end interface + +interface + integer function trexio_has_rdm_2e_updn (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_rdm_2e_updn +end interface + +interface + integer function trexio_has_metadata_code (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_metadata_code +end interface + +interface + integer function trexio_has_metadata_author (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_metadata_author +end interface + +interface + integer function trexio_has_nucleus_label (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_nucleus_label +end interface + +interface + integer function trexio_has_mo_class (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_class +end interface + +interface + integer function trexio_has_mo_symmetry (trex_file) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + end function trexio_has_mo_symmetry +end interface + +interface + integer function trexio_read_metadata_code_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_metadata_code_num_32 +end interface + +interface + integer function trexio_read_metadata_author_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_metadata_author_num_32 +end interface + +interface + integer function trexio_read_electron_up_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_electron_up_num_32 +end interface + +interface + integer function trexio_read_electron_dn_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_electron_dn_num_32 +end interface + +interface + integer function trexio_read_nucleus_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_nucleus_num_32 +end interface + +interface + integer function trexio_read_nucleus_repulsion_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(4), intent(out) :: num + end function trexio_read_nucleus_repulsion_32 +end interface + +interface + integer function trexio_read_ecp_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_ecp_num_32 +end interface + +interface + integer function trexio_read_basis_prim_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_basis_prim_num_32 +end interface + +interface + integer function trexio_read_basis_shell_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_basis_shell_num_32 +end interface + +interface + integer function trexio_read_ao_cartesian_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_ao_cartesian_32 +end interface + +interface + integer function trexio_read_ao_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_ao_num_32 +end interface + +interface + integer function trexio_read_mo_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_mo_num_32 +end interface + +interface + integer function trexio_read_metadata_code_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_metadata_code_num_64 +end interface + +interface + integer function trexio_read_metadata_author_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_metadata_author_num_64 +end interface + +interface + integer function trexio_read_electron_up_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_electron_up_num_64 +end interface + +interface + integer function trexio_read_electron_dn_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_electron_dn_num_64 +end interface + +interface + integer function trexio_read_nucleus_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_nucleus_num_64 +end interface + +interface + integer function trexio_read_nucleus_repulsion_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(out) :: num + end function trexio_read_nucleus_repulsion_64 +end interface + +interface + integer function trexio_read_ecp_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_ecp_num_64 +end interface + +interface + integer function trexio_read_basis_prim_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_basis_prim_num_64 +end interface + +interface + integer function trexio_read_basis_shell_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_basis_shell_num_64 +end interface + +interface + integer function trexio_read_ao_cartesian_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_ao_cartesian_64 +end interface + +interface + integer function trexio_read_ao_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_ao_num_64 +end interface + +interface + integer function trexio_read_mo_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: num + end function trexio_read_mo_num_64 +end interface + +interface + integer function trexio_read_metadata_code_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_metadata_code_num +end interface + +interface + integer function trexio_read_metadata_author_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_metadata_author_num +end interface + +interface + integer function trexio_read_electron_up_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_electron_up_num +end interface + +interface + integer function trexio_read_electron_dn_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_electron_dn_num +end interface + +interface + integer function trexio_read_nucleus_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_nucleus_num +end interface + +interface + integer function trexio_read_nucleus_repulsion (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(out) :: num + end function trexio_read_nucleus_repulsion +end interface + +interface + integer function trexio_read_ecp_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_ecp_num +end interface + +interface + integer function trexio_read_basis_prim_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_basis_prim_num +end interface + +interface + integer function trexio_read_basis_shell_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_basis_shell_num +end interface + +interface + integer function trexio_read_ao_cartesian (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_ao_cartesian +end interface + +interface + integer function trexio_read_ao_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_ao_num +end interface + +interface + integer function trexio_read_mo_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: num + end function trexio_read_mo_num +end interface + +interface + integer function trexio_read_metadata_package_version_c (trex_file, str, max_str_len) & + bind(C, name="trexio_read_metadata_package_version") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_metadata_package_version_c +end interface + +interface + integer function trexio_read_metadata_description_c (trex_file, str, max_str_len) & + bind(C, name="trexio_read_metadata_description") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_metadata_description_c +end interface + +interface + integer function trexio_read_nucleus_point_group_c (trex_file, str, max_str_len) & + bind(C, name="trexio_read_nucleus_point_group") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_nucleus_point_group_c +end interface + +interface + integer function trexio_read_basis_type_c (trex_file, str, max_str_len) & + bind(C, name="trexio_read_basis_type") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_basis_type_c +end interface + +interface + integer function trexio_read_mo_type_c (trex_file, str, max_str_len) & + bind(C, name="trexio_read_mo_type") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_mo_type_c +end interface + +interface + integer function trexio_read_nucleus_charge_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_nucleus_charge_32 +end interface + +interface + integer function trexio_read_nucleus_coord_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_nucleus_coord_32 +end interface + +interface + integer function trexio_read_ecp_max_ang_mom_plus_1_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_max_ang_mom_plus_1_32 +end interface + +interface + integer function trexio_read_ecp_z_core_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_z_core_32 +end interface + +interface + integer function trexio_read_ecp_ang_mom_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_ang_mom_32 +end interface + +interface + integer function trexio_read_ecp_nucleus_index_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_nucleus_index_32 +end interface + +interface + integer function trexio_read_ecp_exponent_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_ecp_exponent_32 +end interface + +interface + integer function trexio_read_ecp_coefficient_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_ecp_coefficient_32 +end interface + +interface + integer function trexio_read_ecp_power_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_power_32 +end interface + +interface + integer function trexio_read_basis_nucleus_index_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_basis_nucleus_index_32 +end interface + +interface + integer function trexio_read_basis_shell_ang_mom_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_basis_shell_ang_mom_32 +end interface + +interface + integer function trexio_read_basis_shell_factor_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_basis_shell_factor_32 +end interface + +interface + integer function trexio_read_basis_shell_index_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_basis_shell_index_32 +end interface + +interface + integer function trexio_read_basis_exponent_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_basis_exponent_32 +end interface + +interface + integer function trexio_read_basis_coefficient_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_basis_coefficient_32 +end interface + +interface + integer function trexio_read_basis_prim_factor_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_basis_prim_factor_32 +end interface + +interface + integer function trexio_read_ao_shell_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ao_shell_32 +end interface + +interface + integer function trexio_read_ao_normalization_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_normalization_32 +end interface + +interface + integer function trexio_read_ao_1e_int_overlap_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_1e_int_overlap_32 +end interface + +interface + integer function trexio_read_ao_1e_int_kinetic_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_1e_int_kinetic_32 +end interface + +interface + integer function trexio_read_ao_1e_int_potential_n_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_ao_1e_int_potential_n_e_32 +end interface + +interface + integer function trexio_read_ao_1e_int_ecp_local_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_1e_int_ecp_local_32 +end interface + +interface + integer function trexio_read_ao_1e_int_ecp_non_local_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_1e_int_ecp_non_local_32 +end interface + +interface + integer function trexio_read_ao_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_32 +end interface + +interface + integer function trexio_read_mo_coefficient_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_coefficient_32 +end interface + +interface + integer function trexio_read_mo_occupation_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_occupation_32 +end interface + +interface + integer function trexio_read_mo_1e_int_overlap_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_1e_int_overlap_32 +end interface + +interface + integer function trexio_read_mo_1e_int_kinetic_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_1e_int_kinetic_32 +end interface + +interface + integer function trexio_read_mo_1e_int_potential_n_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_1e_int_potential_n_e_32 +end interface + +interface + integer function trexio_read_mo_1e_int_ecp_local_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_1e_int_ecp_local_32 +end interface + +interface + integer function trexio_read_mo_1e_int_ecp_non_local_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_1e_int_ecp_non_local_32 +end interface + +interface + integer function trexio_read_mo_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_32 +end interface + +interface + integer function trexio_read_rdm_1e_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_1e_32 +end interface + +interface + integer function trexio_read_rdm_1e_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_rdm_1e_up_32 +end interface + +interface + integer function trexio_read_rdm_1e_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_1e_dn_32 +end interface + +interface + integer function trexio_read_nucleus_charge_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_nucleus_charge_64 +end interface + +interface + integer function trexio_read_nucleus_coord_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_nucleus_coord_64 +end interface + +interface + integer function trexio_read_ecp_max_ang_mom_plus_1_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_ecp_max_ang_mom_plus_1_64 +end interface + +interface + integer function trexio_read_ecp_z_core_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_ecp_z_core_64 +end interface + +interface + integer function trexio_read_ecp_ang_mom_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_ecp_ang_mom_64 +end interface + +interface + integer function trexio_read_ecp_nucleus_index_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_ecp_nucleus_index_64 +end interface + +interface + integer function trexio_read_ecp_exponent_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_ecp_exponent_64 +end interface + +interface + integer function trexio_read_ecp_coefficient_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_ecp_coefficient_64 +end interface + +interface + integer function trexio_read_ecp_power_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_ecp_power_64 +end interface + +interface + integer function trexio_read_basis_nucleus_index_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_basis_nucleus_index_64 +end interface + +interface + integer function trexio_read_basis_shell_ang_mom_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_basis_shell_ang_mom_64 +end interface + +interface + integer function trexio_read_basis_shell_factor_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_basis_shell_factor_64 +end interface + +interface + integer function trexio_read_basis_shell_index_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_basis_shell_index_64 +end interface + +interface + integer function trexio_read_basis_exponent_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_basis_exponent_64 +end interface + +interface + integer function trexio_read_basis_coefficient_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_basis_coefficient_64 +end interface + +interface + integer function trexio_read_basis_prim_factor_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_basis_prim_factor_64 +end interface + +interface + integer function trexio_read_ao_shell_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(out) :: dset(*) + end function trexio_read_ao_shell_64 +end interface + +interface + integer function trexio_read_ao_normalization_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_normalization_64 +end interface + +interface + integer function trexio_read_ao_1e_int_overlap_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_1e_int_overlap_64 +end interface + +interface + integer function trexio_read_ao_1e_int_kinetic_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_1e_int_kinetic_64 +end interface + +interface + integer function trexio_read_ao_1e_int_potential_n_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_ao_1e_int_potential_n_e_64 +end interface + +interface + integer function trexio_read_ao_1e_int_ecp_local_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_1e_int_ecp_local_64 +end interface + +interface + integer function trexio_read_ao_1e_int_ecp_non_local_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_1e_int_ecp_non_local_64 +end interface + +interface + integer function trexio_read_ao_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_64 +end interface + +interface + integer function trexio_read_mo_coefficient_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_coefficient_64 +end interface + +interface + integer function trexio_read_mo_occupation_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_occupation_64 +end interface + +interface + integer function trexio_read_mo_1e_int_overlap_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_1e_int_overlap_64 +end interface + +interface + integer function trexio_read_mo_1e_int_kinetic_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_1e_int_kinetic_64 +end interface + +interface + integer function trexio_read_mo_1e_int_potential_n_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_1e_int_potential_n_e_64 +end interface + +interface + integer function trexio_read_mo_1e_int_ecp_local_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_1e_int_ecp_local_64 +end interface + +interface + integer function trexio_read_mo_1e_int_ecp_non_local_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_1e_int_ecp_non_local_64 +end interface + +interface + integer function trexio_read_mo_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_64 +end interface + +interface + integer function trexio_read_rdm_1e_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_1e_64 +end interface + +interface + integer function trexio_read_rdm_1e_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_rdm_1e_up_64 +end interface + +interface + integer function trexio_read_rdm_1e_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_1e_dn_64 +end interface + +interface + integer function trexio_read_nucleus_charge (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_nucleus_charge +end interface + +interface + integer function trexio_read_nucleus_coord (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_nucleus_coord +end interface + +interface + integer function trexio_read_ecp_max_ang_mom_plus_1 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_max_ang_mom_plus_1 +end interface + +interface + integer function trexio_read_ecp_z_core (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_z_core +end interface + +interface + integer function trexio_read_ecp_ang_mom (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_ang_mom +end interface + +interface + integer function trexio_read_ecp_nucleus_index (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_nucleus_index +end interface + +interface + integer function trexio_read_ecp_exponent (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_ecp_exponent +end interface + +interface + integer function trexio_read_ecp_coefficient (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_ecp_coefficient +end interface + +interface + integer function trexio_read_ecp_power (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ecp_power +end interface + +interface + integer function trexio_read_basis_nucleus_index (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_basis_nucleus_index +end interface + +interface + integer function trexio_read_basis_shell_ang_mom (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_basis_shell_ang_mom +end interface + +interface + integer function trexio_read_basis_shell_factor (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_basis_shell_factor +end interface + +interface + integer function trexio_read_basis_shell_index (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_basis_shell_index +end interface + +interface + integer function trexio_read_basis_exponent (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_basis_exponent +end interface + +interface + integer function trexio_read_basis_coefficient (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_basis_coefficient +end interface + +interface + integer function trexio_read_basis_prim_factor (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_basis_prim_factor +end interface + +interface + integer function trexio_read_ao_shell (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(out) :: dset(*) + end function trexio_read_ao_shell +end interface + +interface + integer function trexio_read_ao_normalization (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_normalization +end interface + +interface + integer function trexio_read_ao_1e_int_overlap (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_1e_int_overlap +end interface + +interface + integer function trexio_read_ao_1e_int_kinetic (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_1e_int_kinetic +end interface + +interface + integer function trexio_read_ao_1e_int_potential_n_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_ao_1e_int_potential_n_e +end interface + +interface + integer function trexio_read_ao_1e_int_ecp_local (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_1e_int_ecp_local +end interface + +interface + integer function trexio_read_ao_1e_int_ecp_non_local (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_1e_int_ecp_non_local +end interface + +interface + integer function trexio_read_ao_1e_int_core_hamiltonian (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_1e_int_core_hamiltonian +end interface + +interface + integer function trexio_read_mo_coefficient (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_coefficient +end interface + +interface + integer function trexio_read_mo_occupation (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_occupation +end interface + +interface + integer function trexio_read_mo_1e_int_overlap (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_1e_int_overlap +end interface + +interface + integer function trexio_read_mo_1e_int_kinetic (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_1e_int_kinetic +end interface + +interface + integer function trexio_read_mo_1e_int_potential_n_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_mo_1e_int_potential_n_e +end interface + +interface + integer function trexio_read_mo_1e_int_ecp_local (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_1e_int_ecp_local +end interface + +interface + integer function trexio_read_mo_1e_int_ecp_non_local (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_1e_int_ecp_non_local +end interface + +interface + integer function trexio_read_mo_1e_int_core_hamiltonian (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_1e_int_core_hamiltonian +end interface + +interface + integer function trexio_read_rdm_1e (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_1e +end interface + +interface + integer function trexio_read_rdm_1e_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_1e_up +end interface + +interface + integer function trexio_read_rdm_1e_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_1e_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, & + 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_lr +end interface + +interface + integer function trexio_read_rdm_2e (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_2e +end interface + +interface + integer function trexio_read_rdm_2e_upup (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_2e_upup +end interface + +interface + integer function trexio_read_rdm_2e_dndn (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_2e_dndn +end interface + +interface + integer function trexio_read_rdm_2e_updn (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_2e_updn +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_2e_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_2e_size +end interface + +interface + integer function trexio_read_rdm_2e_upup_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_2e_upup_size +end interface + +interface + integer function trexio_read_rdm_2e_dndn_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_2e_dndn_size +end interface + +interface + integer function trexio_read_rdm_2e_updn_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_2e_updn_size +end interface + +interface + integer function trexio_read_metadata_code_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_metadata_code_low +end interface + +interface + integer function trexio_read_metadata_author_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_metadata_author_low +end interface + +interface + integer function trexio_read_nucleus_label_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_nucleus_label_low +end interface + +interface + integer function trexio_read_mo_class_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_mo_class_low +end interface + +interface + integer function trexio_read_mo_symmetry_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(out) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_read_mo_symmetry_low +end interface + +interface + integer function trexio_write_metadata_code_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_metadata_code_num_32 +end interface + +interface + integer function trexio_write_metadata_author_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_metadata_author_num_32 +end interface + +interface + integer function trexio_write_electron_up_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_electron_up_num_32 +end interface + +interface + integer function trexio_write_electron_dn_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_electron_dn_num_32 +end interface + +interface + integer function trexio_write_nucleus_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_nucleus_num_32 +end interface + +interface + integer function trexio_write_nucleus_repulsion_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(4), intent(in), value :: num + end function trexio_write_nucleus_repulsion_32 +end interface + +interface + integer function trexio_write_ecp_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_ecp_num_32 +end interface + +interface + integer function trexio_write_basis_prim_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_basis_prim_num_32 +end interface + +interface + integer function trexio_write_basis_shell_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_basis_shell_num_32 +end interface + +interface + integer function trexio_write_ao_cartesian_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_ao_cartesian_32 +end interface + +interface + integer function trexio_write_ao_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_ao_num_32 +end interface + +interface + integer function trexio_write_mo_num_32 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_mo_num_32 +end interface + +interface + integer function trexio_write_metadata_code_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_metadata_code_num_64 +end interface + +interface + integer function trexio_write_metadata_author_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_metadata_author_num_64 +end interface + +interface + integer function trexio_write_electron_up_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_electron_up_num_64 +end interface + +interface + integer function trexio_write_electron_dn_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_electron_dn_num_64 +end interface + +interface + integer function trexio_write_nucleus_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_nucleus_num_64 +end interface + +interface + integer function trexio_write_nucleus_repulsion_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(in), value :: num + end function trexio_write_nucleus_repulsion_64 +end interface + +interface + integer function trexio_write_ecp_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_ecp_num_64 +end interface + +interface + integer function trexio_write_basis_prim_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_basis_prim_num_64 +end interface + +interface + integer function trexio_write_basis_shell_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_basis_shell_num_64 +end interface + +interface + integer function trexio_write_ao_cartesian_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_ao_cartesian_64 +end interface + +interface + integer function trexio_write_ao_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_ao_num_64 +end interface + +interface + integer function trexio_write_mo_num_64 (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in), value :: num + end function trexio_write_mo_num_64 +end interface + +interface + integer function trexio_write_metadata_code_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_metadata_code_num +end interface + +interface + integer function trexio_write_metadata_author_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_metadata_author_num +end interface + +interface + integer function trexio_write_electron_up_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_electron_up_num +end interface + +interface + integer function trexio_write_electron_dn_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_electron_dn_num +end interface + +interface + integer function trexio_write_nucleus_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_nucleus_num +end interface + +interface + integer function trexio_write_nucleus_repulsion (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + real(8), intent(in), value :: num + end function trexio_write_nucleus_repulsion +end interface + +interface + integer function trexio_write_ecp_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_ecp_num +end interface + +interface + integer function trexio_write_basis_prim_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_basis_prim_num +end interface + +interface + integer function trexio_write_basis_shell_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_basis_shell_num +end interface + +interface + integer function trexio_write_ao_cartesian (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_ao_cartesian +end interface + +interface + integer function trexio_write_ao_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_ao_num +end interface + +interface + integer function trexio_write_mo_num (trex_file, num) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: num + end function trexio_write_mo_num +end interface + +interface + integer function trexio_write_metadata_package_version_c (trex_file, str, max_str_len) & + bind(C, name="trexio_write_metadata_package_version") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_metadata_package_version_c +end interface + +interface + integer function trexio_write_metadata_description_c (trex_file, str, max_str_len) & + bind(C, name="trexio_write_metadata_description") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_metadata_description_c +end interface + +interface + integer function trexio_write_nucleus_point_group_c (trex_file, str, max_str_len) & + bind(C, name="trexio_write_nucleus_point_group") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_nucleus_point_group_c +end interface + +interface + integer function trexio_write_basis_type_c (trex_file, str, max_str_len) & + bind(C, name="trexio_write_basis_type") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_basis_type_c +end interface + +interface + integer function trexio_write_mo_type_c (trex_file, str, max_str_len) & + bind(C, name="trexio_write_mo_type") + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: str(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_mo_type_c +end interface + +interface + integer function trexio_write_nucleus_charge_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_nucleus_charge_32 +end interface + +interface + integer function trexio_write_nucleus_coord_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_nucleus_coord_32 +end interface + +interface + integer function trexio_write_ecp_max_ang_mom_plus_1_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_max_ang_mom_plus_1_32 +end interface + +interface + integer function trexio_write_ecp_z_core_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_z_core_32 +end interface + +interface + integer function trexio_write_ecp_ang_mom_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_ang_mom_32 +end interface + +interface + integer function trexio_write_ecp_nucleus_index_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_nucleus_index_32 +end interface + +interface + integer function trexio_write_ecp_exponent_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_ecp_exponent_32 +end interface + +interface + integer function trexio_write_ecp_coefficient_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_ecp_coefficient_32 +end interface + +interface + integer function trexio_write_ecp_power_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_power_32 +end interface + +interface + integer function trexio_write_basis_nucleus_index_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_basis_nucleus_index_32 +end interface + +interface + integer function trexio_write_basis_shell_ang_mom_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_basis_shell_ang_mom_32 +end interface + +interface + integer function trexio_write_basis_shell_factor_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_basis_shell_factor_32 +end interface + +interface + integer function trexio_write_basis_shell_index_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_basis_shell_index_32 +end interface + +interface + integer function trexio_write_basis_exponent_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_basis_exponent_32 +end interface + +interface + integer function trexio_write_basis_coefficient_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_basis_coefficient_32 +end interface + +interface + integer function trexio_write_basis_prim_factor_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_basis_prim_factor_32 +end interface + +interface + integer function trexio_write_ao_shell_32 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ao_shell_32 +end interface + +interface + integer function trexio_write_ao_normalization_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_normalization_32 +end interface + +interface + integer function trexio_write_ao_1e_int_overlap_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_1e_int_overlap_32 +end interface + +interface + integer function trexio_write_ao_1e_int_kinetic_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_1e_int_kinetic_32 +end interface + +interface + integer function trexio_write_ao_1e_int_potential_n_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_ao_1e_int_potential_n_e_32 +end interface + +interface + integer function trexio_write_ao_1e_int_ecp_local_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_1e_int_ecp_local_32 +end interface + +interface + integer function trexio_write_ao_1e_int_ecp_non_local_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_1e_int_ecp_non_local_32 +end interface + +interface + integer function trexio_write_ao_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_32 +end interface + +interface + integer function trexio_write_mo_coefficient_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_coefficient_32 +end interface + +interface + integer function trexio_write_mo_occupation_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_occupation_32 +end interface + +interface + integer function trexio_write_mo_1e_int_overlap_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_1e_int_overlap_32 +end interface + +interface + integer function trexio_write_mo_1e_int_kinetic_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_1e_int_kinetic_32 +end interface + +interface + integer function trexio_write_mo_1e_int_potential_n_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_1e_int_potential_n_e_32 +end interface + +interface + integer function trexio_write_mo_1e_int_ecp_local_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_1e_int_ecp_local_32 +end interface + +interface + integer function trexio_write_mo_1e_int_ecp_non_local_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_1e_int_ecp_non_local_32 +end interface + +interface + integer function trexio_write_mo_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_32 +end interface + +interface + integer function trexio_write_rdm_1e_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_1e_32 +end interface + +interface + integer function trexio_write_rdm_1e_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_rdm_1e_up_32 +end interface + +interface + integer function trexio_write_rdm_1e_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_1e_dn_32 +end interface + +interface + integer function trexio_write_nucleus_charge_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_nucleus_charge_64 +end interface + +interface + integer function trexio_write_nucleus_coord_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_nucleus_coord_64 +end interface + +interface + integer function trexio_write_ecp_max_ang_mom_plus_1_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_ecp_max_ang_mom_plus_1_64 +end interface + +interface + integer function trexio_write_ecp_z_core_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_ecp_z_core_64 +end interface + +interface + integer function trexio_write_ecp_ang_mom_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_ecp_ang_mom_64 +end interface + +interface + integer function trexio_write_ecp_nucleus_index_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_ecp_nucleus_index_64 +end interface + +interface + integer function trexio_write_ecp_exponent_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_ecp_exponent_64 +end interface + +interface + integer function trexio_write_ecp_coefficient_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_ecp_coefficient_64 +end interface + +interface + integer function trexio_write_ecp_power_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_ecp_power_64 +end interface + +interface + integer function trexio_write_basis_nucleus_index_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_basis_nucleus_index_64 +end interface + +interface + integer function trexio_write_basis_shell_ang_mom_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_basis_shell_ang_mom_64 +end interface + +interface + integer function trexio_write_basis_shell_factor_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_basis_shell_factor_64 +end interface + +interface + integer function trexio_write_basis_shell_index_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_basis_shell_index_64 +end interface + +interface + integer function trexio_write_basis_exponent_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_basis_exponent_64 +end interface + +interface + integer function trexio_write_basis_coefficient_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_basis_coefficient_64 +end interface + +interface + integer function trexio_write_basis_prim_factor_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_basis_prim_factor_64 +end interface + +interface + integer function trexio_write_ao_shell_64 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(8), intent(in) :: dset(*) + end function trexio_write_ao_shell_64 +end interface + +interface + integer function trexio_write_ao_normalization_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_normalization_64 +end interface + +interface + integer function trexio_write_ao_1e_int_overlap_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_1e_int_overlap_64 +end interface + +interface + integer function trexio_write_ao_1e_int_kinetic_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_1e_int_kinetic_64 +end interface + +interface + integer function trexio_write_ao_1e_int_potential_n_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_ao_1e_int_potential_n_e_64 +end interface + +interface + integer function trexio_write_ao_1e_int_ecp_local_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_1e_int_ecp_local_64 +end interface + +interface + integer function trexio_write_ao_1e_int_ecp_non_local_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_1e_int_ecp_non_local_64 +end interface + +interface + integer function trexio_write_ao_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_64 +end interface + +interface + integer function trexio_write_mo_coefficient_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_coefficient_64 +end interface + +interface + integer function trexio_write_mo_occupation_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_occupation_64 +end interface + +interface + integer function trexio_write_mo_1e_int_overlap_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_1e_int_overlap_64 +end interface + +interface + integer function trexio_write_mo_1e_int_kinetic_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_1e_int_kinetic_64 +end interface + +interface + integer function trexio_write_mo_1e_int_potential_n_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_1e_int_potential_n_e_64 +end interface + +interface + integer function trexio_write_mo_1e_int_ecp_local_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_1e_int_ecp_local_64 +end interface + +interface + integer function trexio_write_mo_1e_int_ecp_non_local_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_1e_int_ecp_non_local_64 +end interface + +interface + integer function trexio_write_mo_1e_int_core_hamiltonian_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_1e_int_core_hamiltonian_64 +end interface + +interface + integer function trexio_write_rdm_1e_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_1e_64 +end interface + +interface + integer function trexio_write_rdm_1e_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_rdm_1e_up_64 +end interface + +interface + integer function trexio_write_rdm_1e_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_1e_dn_64 +end interface + +interface + integer function trexio_write_nucleus_charge (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_nucleus_charge +end interface + +interface + integer function trexio_write_nucleus_coord (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_nucleus_coord +end interface + +interface + integer function trexio_write_ecp_max_ang_mom_plus_1 (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_max_ang_mom_plus_1 +end interface + +interface + integer function trexio_write_ecp_z_core (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_z_core +end interface + +interface + integer function trexio_write_ecp_ang_mom (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_ang_mom +end interface + +interface + integer function trexio_write_ecp_nucleus_index (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_nucleus_index +end interface + +interface + integer function trexio_write_ecp_exponent (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_ecp_exponent +end interface + +interface + integer function trexio_write_ecp_coefficient (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_ecp_coefficient +end interface + +interface + integer function trexio_write_ecp_power (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ecp_power +end interface + +interface + integer function trexio_write_basis_nucleus_index (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_basis_nucleus_index +end interface + +interface + integer function trexio_write_basis_shell_ang_mom (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_basis_shell_ang_mom +end interface + +interface + integer function trexio_write_basis_shell_factor (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_basis_shell_factor +end interface + +interface + integer function trexio_write_basis_shell_index (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_basis_shell_index +end interface + +interface + integer function trexio_write_basis_exponent (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_basis_exponent +end interface + +interface + integer function trexio_write_basis_coefficient (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_basis_coefficient +end interface + +interface + integer function trexio_write_basis_prim_factor (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_basis_prim_factor +end interface + +interface + integer function trexio_write_ao_shell (trex_file, dset) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + integer(4), intent(in) :: dset(*) + end function trexio_write_ao_shell +end interface + +interface + integer function trexio_write_ao_normalization (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_normalization +end interface + +interface + integer function trexio_write_ao_1e_int_overlap (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_1e_int_overlap +end interface + +interface + integer function trexio_write_ao_1e_int_kinetic (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_1e_int_kinetic +end interface + +interface + integer function trexio_write_ao_1e_int_potential_n_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_ao_1e_int_potential_n_e +end interface + +interface + integer function trexio_write_ao_1e_int_ecp_local (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_1e_int_ecp_local +end interface + +interface + integer function trexio_write_ao_1e_int_ecp_non_local (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_1e_int_ecp_non_local +end interface + +interface + integer function trexio_write_ao_1e_int_core_hamiltonian (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_1e_int_core_hamiltonian +end interface + +interface + integer function trexio_write_mo_coefficient (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_coefficient +end interface + +interface + integer function trexio_write_mo_occupation (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_occupation +end interface + +interface + integer function trexio_write_mo_1e_int_overlap (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_1e_int_overlap +end interface + +interface + integer function trexio_write_mo_1e_int_kinetic (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_1e_int_kinetic +end interface + +interface + integer function trexio_write_mo_1e_int_potential_n_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_mo_1e_int_potential_n_e +end interface + +interface + integer function trexio_write_mo_1e_int_ecp_local (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_1e_int_ecp_local +end interface + +interface + integer function trexio_write_mo_1e_int_ecp_non_local (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_1e_int_ecp_non_local +end interface + +interface + integer function trexio_write_mo_1e_int_core_hamiltonian (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_1e_int_core_hamiltonian +end interface + +interface + integer function trexio_write_rdm_1e (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_1e +end interface + +interface + integer function trexio_write_rdm_1e_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_1e_up +end interface + +interface + integer function trexio_write_rdm_1e_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_1e_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, & + 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_lr +end interface + +interface + integer function trexio_write_rdm_2e (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_2e +end interface + +interface + integer function trexio_write_rdm_2e_upup (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_2e_upup +end interface + +interface + integer function trexio_write_rdm_2e_dndn (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_2e_dndn +end interface + +interface + integer function trexio_write_rdm_2e_updn (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_2e_updn +end interface + +interface + integer function trexio_write_metadata_code_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_metadata_code_low +end interface + +interface + integer function trexio_write_metadata_author_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_metadata_author_low +end interface + +interface + integer function trexio_write_nucleus_label_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_nucleus_label_low +end interface + +interface + integer function trexio_write_mo_class_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_mo_class_low +end interface + +interface + integer function trexio_write_mo_symmetry_low (trex_file, dset, max_str_len) bind(C) + use, intrinsic :: iso_c_binding + integer(8), intent(in), value :: trex_file + character, intent(in) :: dset(*) + integer(4), intent(in), value :: max_str_len + end function trexio_write_mo_symmetry_low +end interface + +contains + integer(8) function trexio_open (filename, mode, backend, rc_open) + use, intrinsic :: iso_c_binding, only : c_null_char + implicit none + character(len=*), intent(in) :: filename + character, intent(in), value :: mode + integer(trexio_backend), intent(in), value :: backend + integer(trexio_exit_code), intent(out) :: rc_open + character(len=len_trim(filename)+1) :: filename_c + integer(trexio_exit_code) :: rc + + filename_c = trim(filename) // c_null_char + trexio_open = trexio_open_c(filename_c, mode, backend, rc_open) + if (trexio_open == 0_8 .or. rc_open /= TREXIO_SUCCESS) then + return + endif + rc = trexio_set_one_based(trexio_open) + if (rc /= TREXIO_SUCCESS) then + rc = trexio_close(trexio_open) + trexio_open = 0_8 + endif + end function trexio_open + +subroutine trexio_strarray2str(str_array, max_num_str, max_len_str, str_res) + use, intrinsic :: iso_c_binding, only : c_null_char + implicit none + + integer(8), intent(in), value :: max_num_str ! number of elements in strign array + integer, intent(in), value :: max_len_str ! maximum length of a string in an array + character(len=*), intent(in) :: str_array(*) + character(len=:), allocatable, intent(out) :: str_res + integer :: i + + str_res = '' + do i = 1, max_num_str + str_res = str_res // trim(str_array(i)) // TREXIO_DELIM + enddo + str_res = str_res // c_null_char + +end subroutine trexio_strarray2str + +subroutine trexio_str2strarray(str_flat, max_num_str, max_len_str, str_array) + implicit none + + integer(8), intent(in), value :: max_num_str ! number of elements in strign array + integer, intent(in), value :: max_len_str ! maximum length of a string in an array + character, intent(in) :: str_flat(*) + character(len=*), intent(inout) :: str_array(*) + + character(len=max_len_str) :: tmp_str + integer :: i, j, k, ind, offset + integer(8) :: len_flat + + len_flat = (max_len_str+1)*max_num_str + 1 + + ind=1 + offset=1 + do i=1,max_num_str + k = 1 + tmp_str='' + do j=ind,len_flat + if (str_flat(j) == TREXIO_DELIM) then + ind=j+1 + exit + endif + tmp_str(k:k) = str_flat(j) + k = k + 1 + enddo + str_array(i)=tmp_str + offset=ind + enddo + +end subroutine trexio_str2strarray + +subroutine trexio_assert(trexio_rc, check_rc, success_message) + implicit none + + integer, intent(in), value :: trexio_rc + integer, intent(in), value :: check_rc + character(len=*), intent(in), optional :: success_message + + character*(128) :: str + + if (trexio_rc == check_rc) then + if (present(success_message)) write(*,*) success_message + else + call trexio_string_of_error(trexio_rc, str) + print *, trim(str) + call exit(1) + endif + +end subroutine trexio_assert +integer function trexio_read_metadata_package_version (trex_file, str, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character, intent(out) :: str(*) + + trexio_read_metadata_package_version = trexio_read_metadata_package_version_c(trex_file, str, max_str_len) + +end function trexio_read_metadata_package_version + +integer function trexio_read_metadata_description (trex_file, str, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character, intent(out) :: str(*) + + trexio_read_metadata_description = trexio_read_metadata_description_c(trex_file, str, max_str_len) + +end function trexio_read_metadata_description + +integer function trexio_read_nucleus_point_group (trex_file, str, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character, intent(out) :: str(*) + + trexio_read_nucleus_point_group = trexio_read_nucleus_point_group_c(trex_file, str, max_str_len) + +end function trexio_read_nucleus_point_group + +integer function trexio_read_basis_type (trex_file, str, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character, intent(out) :: str(*) + + trexio_read_basis_type = trexio_read_basis_type_c(trex_file, str, max_str_len) + +end function trexio_read_basis_type + +integer function trexio_read_mo_type (trex_file, str, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character, intent(out) :: str(*) + + trexio_read_mo_type = trexio_read_mo_type_c(trex_file, str, max_str_len) + +end function trexio_read_mo_type + +integer function trexio_read_metadata_code (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(inout) :: dset(*) + + character, allocatable :: str_compiled(:) + integer(8) :: metadata_code_num + integer :: rc + + rc = trexio_read_metadata_code_num_64(trex_file, metadata_code_num) + if (rc /= TREXIO_SUCCESS) trexio_read_metadata_code = rc + + 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 + deallocate(str_compiled) + trexio_read_metadata_code = rc + else + call trexio_str2strarray(str_compiled, metadata_code_num, max_str_len, dset) + deallocate(str_compiled) + trexio_read_metadata_code = TREXIO_SUCCESS + endif + +end function trexio_read_metadata_code + +integer function trexio_read_metadata_author (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(inout) :: dset(*) + + character, allocatable :: str_compiled(:) + integer(8) :: metadata_author_num + integer :: rc + + rc = trexio_read_metadata_author_num_64(trex_file, metadata_author_num) + if (rc /= TREXIO_SUCCESS) trexio_read_metadata_author = rc + + 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 + deallocate(str_compiled) + trexio_read_metadata_author = rc + else + call trexio_str2strarray(str_compiled, metadata_author_num, max_str_len, dset) + deallocate(str_compiled) + trexio_read_metadata_author = TREXIO_SUCCESS + endif + +end function trexio_read_metadata_author + +integer function trexio_read_nucleus_label (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(inout) :: dset(*) + + character, allocatable :: str_compiled(:) + integer(8) :: nucleus_num + integer :: rc + + rc = trexio_read_nucleus_num_64(trex_file, nucleus_num) + if (rc /= TREXIO_SUCCESS) trexio_read_nucleus_label = rc + + 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 + deallocate(str_compiled) + trexio_read_nucleus_label = rc + else + call trexio_str2strarray(str_compiled, nucleus_num, max_str_len, dset) + deallocate(str_compiled) + trexio_read_nucleus_label = TREXIO_SUCCESS + endif + +end function trexio_read_nucleus_label + +integer function trexio_read_mo_class (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(inout) :: dset(*) + + character, allocatable :: str_compiled(:) + integer(8) :: mo_num + integer :: rc + + rc = trexio_read_mo_num_64(trex_file, mo_num) + if (rc /= TREXIO_SUCCESS) trexio_read_mo_class = rc + + 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 + deallocate(str_compiled) + trexio_read_mo_class = rc + else + call trexio_str2strarray(str_compiled, mo_num, max_str_len, dset) + deallocate(str_compiled) + trexio_read_mo_class = TREXIO_SUCCESS + endif + +end function trexio_read_mo_class + +integer function trexio_read_mo_symmetry (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(inout) :: dset(*) + + character, allocatable :: str_compiled(:) + integer(8) :: mo_num + integer :: rc + + rc = trexio_read_mo_num_64(trex_file, mo_num) + if (rc /= TREXIO_SUCCESS) trexio_read_mo_symmetry = rc + + 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 + deallocate(str_compiled) + trexio_read_mo_symmetry = rc + else + call trexio_str2strarray(str_compiled, mo_num, max_str_len, dset) + deallocate(str_compiled) + trexio_read_mo_symmetry = TREXIO_SUCCESS + endif + +end function trexio_read_mo_symmetry + +integer function trexio_write_metadata_package_version (trex_file, str, max_str_len) + use, intrinsic :: iso_c_binding, only : c_null_char + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: str + + character(len=len_trim(str)+1) :: str_c + + str_c = trim(str) // c_null_char + + trexio_write_metadata_package_version = trexio_write_metadata_package_version_c(trex_file, str_c, max_str_len) + +end function trexio_write_metadata_package_version + +integer function trexio_write_metadata_description (trex_file, str, max_str_len) + use, intrinsic :: iso_c_binding, only : c_null_char + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: str + + character(len=len_trim(str)+1) :: str_c + + str_c = trim(str) // c_null_char + + trexio_write_metadata_description = trexio_write_metadata_description_c(trex_file, str_c, max_str_len) + +end function trexio_write_metadata_description + +integer function trexio_write_nucleus_point_group (trex_file, str, max_str_len) + use, intrinsic :: iso_c_binding, only : c_null_char + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: str + + character(len=len_trim(str)+1) :: str_c + + str_c = trim(str) // c_null_char + + trexio_write_nucleus_point_group = trexio_write_nucleus_point_group_c(trex_file, str_c, max_str_len) + +end function trexio_write_nucleus_point_group + +integer function trexio_write_basis_type (trex_file, str, max_str_len) + use, intrinsic :: iso_c_binding, only : c_null_char + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: str + + character(len=len_trim(str)+1) :: str_c + + str_c = trim(str) // c_null_char + + trexio_write_basis_type = trexio_write_basis_type_c(trex_file, str_c, max_str_len) + +end function trexio_write_basis_type + +integer function trexio_write_mo_type (trex_file, str, max_str_len) + use, intrinsic :: iso_c_binding, only : c_null_char + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: str + + character(len=len_trim(str)+1) :: str_c + + str_c = trim(str) // c_null_char + + trexio_write_mo_type = trexio_write_mo_type_c(trex_file, str_c, max_str_len) + +end function trexio_write_mo_type + +integer function trexio_write_metadata_code (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: dset(*) + + character(len=:), allocatable :: str_compiled + integer(8) :: metadata_code_num + integer :: rc + + rc = trexio_read_metadata_code_num_64(trex_file, metadata_code_num) + if (rc /= TREXIO_SUCCESS) then + trexio_write_metadata_code = rc + else + call trexio_strarray2str(dset, metadata_code_num, max_str_len, str_compiled) + trexio_write_metadata_code = trexio_write_metadata_code_low(trex_file, str_compiled, max_str_len) + endif + +end function trexio_write_metadata_code + +integer function trexio_write_metadata_author (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: dset(*) + + character(len=:), allocatable :: str_compiled + integer(8) :: metadata_author_num + integer :: rc + + rc = trexio_read_metadata_author_num_64(trex_file, metadata_author_num) + if (rc /= TREXIO_SUCCESS) then + trexio_write_metadata_author = rc + else + call trexio_strarray2str(dset, metadata_author_num, max_str_len, str_compiled) + trexio_write_metadata_author = trexio_write_metadata_author_low(trex_file, str_compiled, max_str_len) + endif + +end function trexio_write_metadata_author + +integer function trexio_write_nucleus_label (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: dset(*) + + character(len=:), allocatable :: str_compiled + integer(8) :: nucleus_num + integer :: rc + + rc = trexio_read_nucleus_num_64(trex_file, nucleus_num) + if (rc /= TREXIO_SUCCESS) then + trexio_write_nucleus_label = rc + else + call trexio_strarray2str(dset, nucleus_num, max_str_len, str_compiled) + trexio_write_nucleus_label = trexio_write_nucleus_label_low(trex_file, str_compiled, max_str_len) + endif + +end function trexio_write_nucleus_label + +integer function trexio_write_mo_class (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: dset(*) + + character(len=:), allocatable :: str_compiled + integer(8) :: mo_num + integer :: rc + + rc = trexio_read_mo_num_64(trex_file, mo_num) + if (rc /= TREXIO_SUCCESS) then + trexio_write_mo_class = rc + else + call trexio_strarray2str(dset, mo_num, max_str_len, str_compiled) + trexio_write_mo_class = trexio_write_mo_class_low(trex_file, str_compiled, max_str_len) + endif + +end function trexio_write_mo_class + +integer function trexio_write_mo_symmetry (trex_file, dset, max_str_len) + implicit none + integer(8), intent(in), value :: trex_file + integer(4), intent(in), value :: max_str_len + character(len=*), intent(in) :: dset(*) + + character(len=:), allocatable :: str_compiled + integer(8) :: mo_num + integer :: rc + + rc = trexio_read_mo_num_64(trex_file, mo_num) + if (rc /= TREXIO_SUCCESS) then + trexio_write_mo_symmetry = rc + else + call trexio_strarray2str(dset, mo_num, max_str_len, str_compiled) + trexio_write_mo_symmetry = trexio_write_mo_symmetry_low(trex_file, str_compiled, max_str_len) + endif + +end function trexio_write_mo_symmetry + +end module trexio diff --git a/stable/champ/NEED b/stable/champ/NEED index e4a8008..19fd652 100644 --- a/stable/champ/NEED +++ b/stable/champ/NEED @@ -1 +1 @@ -determinants fci +determinants fci csf diff --git a/stable/champ/save_for_champ.irp.f b/stable/champ/save_for_champ.irp.f index 7e88e71..3268b4e 100644 --- a/stable/champ/save_for_champ.irp.f +++ b/stable/champ/save_for_champ.irp.f @@ -1,4 +1,4 @@ -program qmcpack +program save_for_camp implicit none BEGIN_DOC ! Generates a file for CHAMP @@ -23,6 +23,7 @@ program qmcpack call system('rm '//trim(ezfio_filename)//'/mo_basis/ao_md5') call system('$QP_ROOT/src/champ/qp_convert.py '//trim(ezfio_filename)) + call write_champ_csf() ! integer :: iunit ! integer, external :: getUnitAndOpen ! iunit = getUnitAndOpen(trim(ezfio_filename)//'.H','w') diff --git a/stable/champ/write_champ_csf.irp.f b/stable/champ/write_champ_csf.irp.f new file mode 100644 index 0000000..eddd20a --- /dev/null +++ b/stable/champ/write_champ_csf.irp.f @@ -0,0 +1,99 @@ +subroutine write_champ_csf + implicit none + + integer, parameter :: istate=1 + character*(2048) :: format + integer :: i, n_elements, j, k + integer, allocatable :: list(:,:) + + integer :: startdet, enddet, iunit + integer :: ndetI, bfIcfg, s + double precision :: phasedet + integer :: idx + + open(newunit=iunit, file='det.'//ezfio_filename) + + write(iunit, '(A, X, I4, X, A, X, I4)') '&electrons nelec', elec_num, 'nup', elec_alpha_num + + + ! Determinants + write(iunit, '(A, I10)') 'determinants', N_det + + write(format,*) '(', N_det, '(F12.8, X))' + write(iunit, format) psi_coef(1:N_det,istate) + + write(format,*) '( ', elec_alpha_num, '(I4,X), 2X, ', elec_beta_num, '(I4,X))' + allocate ( list(bit_kind_size,2) ) + do i=1, N_det + call bitstring_to_list( psi_det(1,1,i), list(1,1), n_elements, N_int) + call bitstring_to_list( psi_det(1,2,i), list(1,2), n_elements, N_int) + write(iunit,format) list(1:elec_alpha_num,1), list(1:elec_beta_num,2) + end do + write(iunit, '(A)') 'end' + + ! CSF + write(iunit, '(A, I10, X, I3)') 'csf', N_csf, N_states + + write(format,*) '(', N_csf, '(F12.8, X))' + do i=1,N_states + write(iunit, format) psi_csf_coef(1:N_csf,i) + end do + + write(iunit, '(A)') 'end' + + ! CSF map + phasedet = 1.0d0 + + ndetI = 0 + do i=1,N_configuration + startdet = psi_configuration_to_psi_det(1,i) + enddet = psi_configuration_to_psi_det(2,i) + s = 0 + do k=1,N_int + if (psi_configuration(k,1,i) == 0_bit_kind) cycle + s = s + popcnt(psi_configuration(k,1,i)) + enddo + bfIcfg = max(1,nint((binom(s,(s+1)/2)-binom(s,((s+1)/2)+1)))) + do k=1,bfIcfg + do j = startdet, enddet + if (DetToCSFTransformationMatrix(s,k,j-startdet+1) == 0.d0) cycle + ndetI += 1 + end do + end do + end do + + write(iunit, '(A)') 'csfmap' + write(iunit, '(I10, I10, I10)') n_csf, n_det, ndetI + + do i=1,N_configuration + startdet = psi_configuration_to_psi_det(1,i) + enddet = psi_configuration_to_psi_det(2,i) + + s = 0 + do k=1,N_int + if (psi_configuration(k,1,i) == 0_bit_kind) cycle + s = s + popcnt(psi_configuration(k,1,i)) + enddo + bfIcfg = max(1,nint((binom(s,(s+1)/2)-binom(s,((s+1)/2)+1)))) + + do k=1,bfIcfg + ndetI = 0 + do j = startdet, enddet + if (DetToCSFTransformationMatrix(s,k,j-startdet+1) == 0.d0) cycle + ndetI += 1 + end do + + write(iunit, '(I4)') ndetI + do j = startdet, enddet + if (DetToCSFTransformationMatrix(s,k,j-startdet+1) == 0.d0) cycle + idx = psi_configuration_to_psi_det_data(j) + call get_phase_qp_to_cfg(psi_det(1,1,idx), psi_det(1,2,idx), phasedet) + write(iunit, '(I10, F18.12)') idx, DetToCSFTransformationMatrix(s,k,j-startdet+1)*phasedet + end do + end do + + end do + + write(iunit, '(A)') 'end' + +end diff --git a/stable/utilities/truncate_wf.irp.f b/stable/utilities/truncate_wf.irp.f index f1904d5..6c66c8e 100644 --- a/stable/utilities/truncate_wf.irp.f +++ b/stable/utilities/truncate_wf.irp.f @@ -59,7 +59,7 @@ subroutine routine_s2 do i=1,N_det print *, i, real(weight_configuration(det_to_configuration(i),:)), real(sum(weight_configuration(det_to_configuration(i),:))) enddo - print*, 'Min weight of the occupation pattern ?' + print*, 'Min weight of the configuration?' read(5,*) wmin ndet_max = 0