mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-09-08 03:54:45 +02:00
d/f/g/h mo coef correct in pyscf converter for molecules
This commit is contained in:
parent
50bc4b94fc
commit
3806554438
@ -807,7 +807,6 @@ def xyzcount(s):
|
||||
|
||||
def pyscf2QP2_mol(mf, cas_idx=None, int_threshold = 1E-8,
|
||||
qph5path = 'qpdat.h5',
|
||||
norm='sp',
|
||||
print_debug=False):
|
||||
'''
|
||||
cas_idx = List of active MOs. If not specified all MOs are actives
|
||||
@ -817,6 +816,7 @@ def pyscf2QP2_mol(mf, cas_idx=None, int_threshold = 1E-8,
|
||||
|
||||
import h5py
|
||||
|
||||
norm='sp'
|
||||
mol = mf.mol
|
||||
nao_c = mol.nao_cart()
|
||||
|
||||
@ -837,13 +837,86 @@ def pyscf2QP2_mol(mf, cas_idx=None, int_threshold = 1E-8,
|
||||
qph5.create_group('mo_basis')
|
||||
|
||||
if mf.mol.cart:
|
||||
mo_coeff = mf.mo_coeff
|
||||
mo_coeff = mf.mo_coeff.copy()
|
||||
else:
|
||||
c2s = mol.cart2sph_coeff(normalized=norm)
|
||||
#c2s = mol.cart2sph_coeff(normalized='sp')
|
||||
#c2s = mol.cart2sph_coeff(normalized=norm)
|
||||
c2s = mol.cart2sph_coeff(normalized='sp')
|
||||
#c2s = mol.cart2sph_coeff(normalized='all')
|
||||
#c2s = mol.cart2sph_coeff(normalized=None)
|
||||
mo_coeff = np.dot(c2s,mf.mo_coeff)
|
||||
#TODO: clean this up; use mol.cart_labels(fmt=False)
|
||||
dnormlbl1=["dxx","dyy","dzz"]
|
||||
dnormfac1 = 2.0*np.sqrt(np.pi/5)
|
||||
|
||||
dnormlbl2=["dxy","dxz","dyz"]
|
||||
dnormfac2 = 2.0*np.sqrt(np.pi/15)
|
||||
|
||||
fnormlbl1=["fxxx","fyyy","fzzz"]
|
||||
fnormfac1 = 2.0*np.sqrt(np.pi/7)
|
||||
|
||||
fnormlbl2=["fxxy","fxxz","fxyy","fxzz","fyyz","fyzz"]
|
||||
fnormfac2 = 2.0*np.sqrt(np.pi/35)
|
||||
|
||||
fnormlbl3=["fxyz"]
|
||||
fnormfac3 = 2.0*np.sqrt(np.pi/105)
|
||||
|
||||
gnormlbl1=["gxxxx","gyyyy","gzzzz"]
|
||||
gnormfac1 = 2.0*np.sqrt(np.pi/9)
|
||||
|
||||
gnormlbl2=["gxxxy","gxxxz","gxyyy","gxzzz","gyyyz","gyzzz"]
|
||||
gnormfac2 = 2.0*np.sqrt(np.pi/63)
|
||||
|
||||
gnormlbl3=["gxxyy","gxxzz","gyyzz"]
|
||||
gnormfac3 = 2.0*np.sqrt(np.pi/105)
|
||||
|
||||
gnormlbl4=["gxxyz","gxyyz","gxyzz"]
|
||||
gnormfac4 = 2.0*np.sqrt(np.pi/315)
|
||||
|
||||
hnormlbl1=["hxxxxx","hyyyyy","hzzzzz"]
|
||||
hnormfac1 = 2.0*np.sqrt(np.pi/11)
|
||||
|
||||
hnormlbl2=["hxxxxy","hxxxxz","hxyyyy","hxzzzz","hyyyyz","hyzzzz"]
|
||||
hnormfac2 = 2.0*np.sqrt(np.pi/99)
|
||||
|
||||
hnormlbl3=["hxxxyy","hxxxzz","hxxyyy","hxxzzz","hyyyzz","hyyzzz"]
|
||||
hnormfac3 = 2.0*np.sqrt(np.pi/231)
|
||||
|
||||
hnormlbl4=["hxxxyz","hxyyyz","hxyzzz"]
|
||||
hnormfac4 = 2.0*np.sqrt(np.pi/693)
|
||||
|
||||
hnormlbl5=["hxxyyz","hxxyzz","hxyyzz"]
|
||||
hnormfac5 = 2.0*np.sqrt(np.pi/1155)
|
||||
|
||||
for i_lbl,mo_lbl in enumerate(mol.cart_labels()):
|
||||
if any(i in mo_lbl for i in dnormlbl1):
|
||||
mo_coeff[i_lbl,:] *= dnormfac1
|
||||
elif any(i in mo_lbl for i in dnormlbl2):
|
||||
mo_coeff[i_lbl,:] *= dnormfac2
|
||||
elif any(i in mo_lbl for i in fnormlbl1):
|
||||
mo_coeff[i_lbl,:] *= fnormfac1
|
||||
elif any(i in mo_lbl for i in fnormlbl2):
|
||||
mo_coeff[i_lbl,:] *= fnormfac2
|
||||
elif any(i in mo_lbl for i in fnormlbl3):
|
||||
mo_coeff[i_lbl,:] *= fnormfac3
|
||||
elif any(i in mo_lbl for i in gnormlbl1):
|
||||
mo_coeff[i_lbl,:] *= gnormfac1
|
||||
elif any(i in mo_lbl for i in gnormlbl2):
|
||||
mo_coeff[i_lbl,:] *= gnormfac2
|
||||
elif any(i in mo_lbl for i in gnormlbl3):
|
||||
mo_coeff[i_lbl,:] *= gnormfac3
|
||||
elif any(i in mo_lbl for i in gnormlbl4):
|
||||
mo_coeff[i_lbl,:] *= gnormfac4
|
||||
elif any(i in mo_lbl for i in hnormlbl1):
|
||||
mo_coeff[i_lbl,:] *= hnormfac1
|
||||
elif any(i in mo_lbl for i in hnormlbl2):
|
||||
mo_coeff[i_lbl,:] *= hnormfac2
|
||||
elif any(i in mo_lbl for i in hnormlbl3):
|
||||
mo_coeff[i_lbl,:] *= hnormfac3
|
||||
elif any(i in mo_lbl for i in hnormlbl4):
|
||||
mo_coeff[i_lbl,:] *= hnormfac4
|
||||
elif any(i in mo_lbl for i in hnormlbl5):
|
||||
mo_coeff[i_lbl,:] *= hnormfac5
|
||||
|
||||
# Mo_coeff actif
|
||||
mo_c = np.array([c[:,cas_idx] for c in mo_coeff] if cas_idx is not None else mo_coeff)
|
||||
e_c = np.array([e[cas_idx] for e in mf.mo_energy] if cas_idx is not None else mf.mo_energy)
|
||||
|
Loading…
Reference in New Issue
Block a user