From d8b80f4b550209b28ff311037efdb9276bbbf4f2 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 5 Dec 2022 17:44:07 +0100 Subject: [PATCH] Fix trexio->QP converter --- devel/trexio/import_trexio_integrals.irp.f | 9 ++-- devel/trexio/install | 10 ++++ devel/trexio/qp_import_trexio.py | 56 ++++++++++++++-------- devel/trexio/uninstall | 2 +- 4 files changed, 52 insertions(+), 25 deletions(-) diff --git a/devel/trexio/import_trexio_integrals.irp.f b/devel/trexio/import_trexio_integrals.irp.f index 53737d5..e147125 100644 --- a/devel/trexio/import_trexio_integrals.irp.f +++ b/devel/trexio/import_trexio_integrals.irp.f @@ -24,7 +24,8 @@ subroutine run double precision, allocatable :: A(:,:) double precision, allocatable :: V(:) integer , allocatable :: Vi(:,:) - double precision, allocatable :: s + double precision :: s + PROVIDE ao_num f = trexio_open(trexio_filename, 'r', TREXIO_AUTO, rc) if (f == 0_8) then @@ -37,8 +38,9 @@ subroutine run if (trexio_has_nucleus_repulsion(f) == TREXIO_SUCCESS) then rc = trexio_read_nucleus_repulsion(f, s) + call trexio_assert(rc, TREXIO_SUCCESS) if (rc /= TREXIO_SUCCESS) then - print *, irp_here + print *, irp_here, rc print *, 'Error reading nuclear repulsion' stop -1 endif @@ -100,6 +102,7 @@ subroutine run ! AO 2e integrals ! --------------- + PROVIDE ao_integrals_map allocate(buffer_i(ao_num**3), buffer_values(ao_num**3)) allocate(Vi(4,ao_num**3), V(ao_num**3)) @@ -107,7 +110,7 @@ subroutine run integer*8 :: offset, icount offset = 0_8 - icount = 0_8 + icount = size(V) rc = TREXIO_SUCCESS do while (icount == size(V)) rc = trexio_read_ao_2e_int_eri(f, offset, icount, Vi, V) diff --git a/devel/trexio/install b/devel/trexio/install index a5171e0..edc5e26 100755 --- a/devel/trexio/install +++ b/devel/trexio/install @@ -10,4 +10,14 @@ fi pkg-config --libs trexio > LIB +scripts_list="qp_import_trexio.py" + +# Destroy ONLY the symbolic link for the scripts to be used in the +# ${QP_ROOT}/scripts/ directory. +for i in $scripts_list +do + find ${QP_ROOT}/scripts/$i -type l -delete +done + +# Create symlink in scripts ln --symbolic ${PWD}/qp_import_trexio.py $QP_ROOT/scripts diff --git a/devel/trexio/qp_import_trexio.py b/devel/trexio/qp_import_trexio.py index 9de0940..4f691ea 100755 --- a/devel/trexio/qp_import_trexio.py +++ b/devel/trexio/qp_import_trexio.py @@ -68,21 +68,13 @@ def write_ezfio(trexio_filename, filename): trexio_file = trexio.File(trexio_filename,mode='r',back_end=trexio.TREXIO_HDF5) basis_type = trexio.read_basis_type(trexio_file) - if basis_type.lower() != "gaussian": - raise TypeError +# if basis_type.lower() != "gaussian": +# raise TypeError ezfio.set_file(filename) + ezfio.set_trexio_trexio_file(trexio_filename) - print("Electrons\t...\t", end=' ') - - num_alpha = trexio.read_electron_up_num(trexio_file) - num_beta = trexio.read_electron_dn_num(trexio_file) - ezfio.set_electrons_elec_alpha_num(num_alpha) - ezfio.set_electrons_elec_beta_num(num_beta) - - print("OK") - print("Nuclei\t\t...\t", end=' ') @@ -106,6 +98,23 @@ def write_ezfio(trexio_filename, filename): print("OK") + print("Electrons\t...\t", end=' ') + + try: + num_beta = trexio.read_electron_dn_num(trexio_file) + except: + num_beta = sum(charge)//2 + + try: + num_alpha = trexio.read_electron_up_num(trexio_file) + except: + num_alpha = sum(charge) - num_beta + + ezfio.set_electrons_elec_alpha_num(num_alpha) + ezfio.set_electrons_elec_beta_num(num_beta) + + print("OK") + print("Basis\t\t...\t", end=' ') ezfio.set_basis_basis("Read from TREXIO") @@ -229,6 +238,7 @@ def write_ezfio(trexio_filename, filename): coef.append(coefficient[j]) expo.append(exponent[j]) + ezfio.set_ao_basis_ao_prim_num_max(prim_num_max) ezfio.set_ao_basis_ao_coef(coef) ezfio.set_ao_basis_ao_expo(expo) ezfio.set_ao_basis_ao_basis("Read from TREXIO") @@ -265,17 +275,21 @@ def write_ezfio(trexio_filename, filename): except trexio.Error: pass - MoMatrix = trexio.read_mo_coefficient(trexio_file) - mo_num = trexio.read_mo_num(trexio_file) + try: + mo_num = trexio.read_mo_num(trexio_file) + ezfio.set_mo_basis_mo_num(mo_num) - ezfio.set_mo_basis_mo_num(mo_num) - ezfio.set_mo_basis_mo_coef(MoMatrix) - mo_occ = [ 0. for i in range(mo_num) ] - for i in range(num_alpha): - mo_occ[i] += 1. - for i in range(num_beta): - mo_occ[i] += 1. - ezfio.set_mo_basis_mo_occ(mo_occ) + MoMatrix = trexio.read_mo_coefficient(trexio_file) + ezfio.set_mo_basis_mo_coef(MoMatrix) + + mo_occ = [ 0. for i in range(mo_num) ] + for i in range(num_alpha): + mo_occ[i] += 1. + for i in range(num_beta): + mo_occ[i] += 1. + ezfio.set_mo_basis_mo_occ(mo_occ) + except: + pass print("OK") diff --git a/devel/trexio/uninstall b/devel/trexio/uninstall index ab20729..9c9f0f1 100755 --- a/devel/trexio/uninstall +++ b/devel/trexio/uninstall @@ -8,7 +8,7 @@ then exit -1 fi -scripts_list="qp_import_trexio.py " +scripts_list="qp_import_trexio.py" # Destroy ONLY the symbolic link for the scripts to be used in the # ${QP_ROOT}/scripts/ directory.