-
Notifications
You must be signed in to change notification settings - Fork 103
Open
Description
On the wiki, the opVop operator is said to output in the order [I2, z, x, y] - does this still reflect the convention used in the latest version of libint?
I'm asking because the computed integrals seem to be in the order of [I2, x, y, z] instead. As a minimal working example, I'm checking the output of Forte2 (we have a very lightweight C++ wrapper for the latest libint2 from conda, so hopefully it's unlikely we have swapped the order inadvertently, see relevant code here), which uses libint2, against PySCF/libcint (which has a convention of [x, y, z, I2], see here), on the Ag2 system at 1 angstrom separation, using the STO-3G basis:
mol = pyscf.gto.M(atom="Ag 0 1 0; Ag 0 0 0", basis="s3g.nw", spin=0) # sto-3g downloaded from BSE
cint_res = mol.intor("int1e_spnucsp_sph")
xyz = """
Ag 0 0 0
Ag 0 1 0
"""
system = forte2.System(xyz, basis_set="sto-3g", minao_basis_set=None)
int2_res = forte2.ints.opVop(system.basis, system.atoms)
print(np.linalg.norm(cint_res[0]))
print(np.linalg.norm(cint_res[1]))
print(np.linalg.norm(cint_res[2]))
print(np.linalg.norm(cint_res[3]))
>>> 252375.37347399956
>>> 252400.9608244961
>>> 252375.37347399956
>>> 5966392.56091404
print(np.linalg.norm(int2_res[0]))
print(np.linalg.norm(int2_res[1]))
print(np.linalg.norm(int2_res[2]))
print(np.linalg.norm(int2_res[3]))
>>> 5966392.560911566
>>> 252375.37347400025
>>> 252400.9608244944
>>> 252375.37347400034
Thanks a lot in advance for any information on this!
Metadata
Metadata
Assignees
Labels
No labels