mirror of
https://gitlab.com/scemama/qp_plugins_scemama.git
synced 2024-12-22 20:34:05 +01:00
Fix trexio->QP converter
This commit is contained in:
parent
ec1a0e8af4
commit
d8b80f4b55
@ -24,7 +24,8 @@ subroutine run
|
|||||||
double precision, allocatable :: A(:,:)
|
double precision, allocatable :: A(:,:)
|
||||||
double precision, allocatable :: V(:)
|
double precision, allocatable :: V(:)
|
||||||
integer , allocatable :: Vi(:,:)
|
integer , allocatable :: Vi(:,:)
|
||||||
double precision, allocatable :: s
|
double precision :: s
|
||||||
|
PROVIDE ao_num
|
||||||
|
|
||||||
f = trexio_open(trexio_filename, 'r', TREXIO_AUTO, rc)
|
f = trexio_open(trexio_filename, 'r', TREXIO_AUTO, rc)
|
||||||
if (f == 0_8) then
|
if (f == 0_8) then
|
||||||
@ -37,8 +38,9 @@ subroutine run
|
|||||||
|
|
||||||
if (trexio_has_nucleus_repulsion(f) == TREXIO_SUCCESS) then
|
if (trexio_has_nucleus_repulsion(f) == TREXIO_SUCCESS) then
|
||||||
rc = trexio_read_nucleus_repulsion(f, s)
|
rc = trexio_read_nucleus_repulsion(f, s)
|
||||||
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
if (rc /= TREXIO_SUCCESS) then
|
if (rc /= TREXIO_SUCCESS) then
|
||||||
print *, irp_here
|
print *, irp_here, rc
|
||||||
print *, 'Error reading nuclear repulsion'
|
print *, 'Error reading nuclear repulsion'
|
||||||
stop -1
|
stop -1
|
||||||
endif
|
endif
|
||||||
@ -100,6 +102,7 @@ subroutine run
|
|||||||
|
|
||||||
! AO 2e integrals
|
! AO 2e integrals
|
||||||
! ---------------
|
! ---------------
|
||||||
|
PROVIDE ao_integrals_map
|
||||||
|
|
||||||
allocate(buffer_i(ao_num**3), buffer_values(ao_num**3))
|
allocate(buffer_i(ao_num**3), buffer_values(ao_num**3))
|
||||||
allocate(Vi(4,ao_num**3), V(ao_num**3))
|
allocate(Vi(4,ao_num**3), V(ao_num**3))
|
||||||
@ -107,7 +110,7 @@ subroutine run
|
|||||||
integer*8 :: offset, icount
|
integer*8 :: offset, icount
|
||||||
|
|
||||||
offset = 0_8
|
offset = 0_8
|
||||||
icount = 0_8
|
icount = size(V)
|
||||||
rc = TREXIO_SUCCESS
|
rc = TREXIO_SUCCESS
|
||||||
do while (icount == size(V))
|
do while (icount == size(V))
|
||||||
rc = trexio_read_ao_2e_int_eri(f, offset, icount, Vi, V)
|
rc = trexio_read_ao_2e_int_eri(f, offset, icount, Vi, V)
|
||||||
|
@ -10,4 +10,14 @@ fi
|
|||||||
|
|
||||||
pkg-config --libs trexio > LIB
|
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
|
ln --symbolic ${PWD}/qp_import_trexio.py $QP_ROOT/scripts
|
||||||
|
@ -68,21 +68,13 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
trexio_file = trexio.File(trexio_filename,mode='r',back_end=trexio.TREXIO_HDF5)
|
trexio_file = trexio.File(trexio_filename,mode='r',back_end=trexio.TREXIO_HDF5)
|
||||||
|
|
||||||
basis_type = trexio.read_basis_type(trexio_file)
|
basis_type = trexio.read_basis_type(trexio_file)
|
||||||
if basis_type.lower() != "gaussian":
|
# if basis_type.lower() != "gaussian":
|
||||||
raise TypeError
|
# raise TypeError
|
||||||
|
|
||||||
ezfio.set_file(filename)
|
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=' ')
|
print("Nuclei\t\t...\t", end=' ')
|
||||||
|
|
||||||
@ -106,6 +98,23 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
print("OK")
|
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=' ')
|
print("Basis\t\t...\t", end=' ')
|
||||||
|
|
||||||
ezfio.set_basis_basis("Read from TREXIO")
|
ezfio.set_basis_basis("Read from TREXIO")
|
||||||
@ -229,6 +238,7 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
coef.append(coefficient[j])
|
coef.append(coefficient[j])
|
||||||
expo.append(exponent[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_coef(coef)
|
||||||
ezfio.set_ao_basis_ao_expo(expo)
|
ezfio.set_ao_basis_ao_expo(expo)
|
||||||
ezfio.set_ao_basis_ao_basis("Read from TREXIO")
|
ezfio.set_ao_basis_ao_basis("Read from TREXIO")
|
||||||
@ -265,17 +275,21 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
except trexio.Error:
|
except trexio.Error:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
MoMatrix = trexio.read_mo_coefficient(trexio_file)
|
try:
|
||||||
mo_num = trexio.read_mo_num(trexio_file)
|
mo_num = trexio.read_mo_num(trexio_file)
|
||||||
|
|
||||||
ezfio.set_mo_basis_mo_num(mo_num)
|
ezfio.set_mo_basis_mo_num(mo_num)
|
||||||
|
|
||||||
|
MoMatrix = trexio.read_mo_coefficient(trexio_file)
|
||||||
ezfio.set_mo_basis_mo_coef(MoMatrix)
|
ezfio.set_mo_basis_mo_coef(MoMatrix)
|
||||||
|
|
||||||
mo_occ = [ 0. for i in range(mo_num) ]
|
mo_occ = [ 0. for i in range(mo_num) ]
|
||||||
for i in range(num_alpha):
|
for i in range(num_alpha):
|
||||||
mo_occ[i] += 1.
|
mo_occ[i] += 1.
|
||||||
for i in range(num_beta):
|
for i in range(num_beta):
|
||||||
mo_occ[i] += 1.
|
mo_occ[i] += 1.
|
||||||
ezfio.set_mo_basis_mo_occ(mo_occ)
|
ezfio.set_mo_basis_mo_occ(mo_occ)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
print("OK")
|
print("OK")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user