Skip to content

Commit 1022ba1

Browse files
committed
The missing quadrature adjustment in treutler_ahlrichs radial grids.
1 parent 6d3b24b commit 1022ba1

File tree

1 file changed

+31
-5
lines changed

1 file changed

+31
-5
lines changed

pyscf/dft/radi.py

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
BRAGG_RADII = radii.BRAGG
2626
COVALENT_RADII = radii.COVALENT
2727

28+
ADJUST_TREUTLER_QUADRATURE = False
29+
2830
# P.M.W. Gill, B.G. Johnson, J.A. Pople, Chem. Phys. Letters 209 (1993) 506-512
2931
SG1RADII = numpy.array((
3032
0,
@@ -95,15 +97,41 @@ def gauss_chebyshev(n, *args, **kwargs):
9597
dr = fac * numpy.sin(x1)**4 * ln2/(1+xi)
9698
return r, dr
9799

98-
99-
def treutler_ahlrichs(n, *args, **kwargs):
100+
# Individually optimized Treutler/Ahlrichs radius parameter.
101+
# H - Kr are taken from the original paper JCP 102, 346 (1995)
102+
# Other elements are copied from Psi4 source code
103+
_treutler_ahlrichs_xi = [1.0,
104+
0.8, 0.9, # 1s
105+
1.8, 1.4, 1.3, 1.1, 0.9, 0.9, 0.9, 0.9, # 2s2p
106+
1.4, 1.3, 1.3, 1.2, 1.1, 1.0, 1.0, 1.0, # 3s3p
107+
1.5, 1.4, # 4s
108+
1.3, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.1, 1.1, 1.1, # 3d
109+
1.1, 1.0, 0.9, 0.9, 0.9, 0.9, # 4p
110+
2.000, 1.700, # 5s
111+
1.500, 1.500, 1.350, 1.350, 1.250, 1.200, 1.250, 1.300, 1.500, 1.500, # 4d
112+
1.300, 1.200, 1.200, 1.150, 1.150, 1.150, # 5p
113+
2.500, 2.200, # 6s
114+
2.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500, # La, Ce-Eu
115+
1.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500, # Gd, Tb-Lu
116+
1.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500, # 5d
117+
1.500, 1.500, 1.500, 1.500, 1.500, 1.500, # 6p
118+
2.500, 2.100, # 7s
119+
3.685, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500,
120+
1.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500, 1.500,
121+
]
122+
123+
def treutler_ahlrichs(n, chg, *args, **kwargs):
100124
'''
101125
Treutler-Ahlrichs [JCP 102, 346 (1995); DOI:10.1063/1.469408] (M4) radial grids
102126
'''
127+
if ADJUST_TREUTLER_QUADRATURE:
128+
xi = _treutler_ahlrichs_xi[chg]
129+
else:
130+
xi = 1.
103131
r = numpy.empty(n)
104132
dr = numpy.empty(n)
105133
step = numpy.pi / (n+1)
106-
ln2 = 1 / numpy.log(2)
134+
ln2 = xi / numpy.log(2)
107135
for i in range(n):
108136
x = numpy.cos((i+1)*step)
109137
r [i] = -ln2*(1+x)**.6 * numpy.log((1-x)/2)
@@ -113,8 +141,6 @@ def treutler_ahlrichs(n, *args, **kwargs):
113141
treutler = treutler_ahlrichs
114142

115143

116-
117-
118144
def becke_atomic_radii_adjust(mol, atomic_radii):
119145
'''Becke atomic radii adjust function'''
120146
# Becke atomic size adjustment. J. Chem. Phys. 88, 2547

0 commit comments

Comments
 (0)