25
25
BRAGG_RADII = radii .BRAGG
26
26
COVALENT_RADII = radii .COVALENT
27
27
28
+ ADJUST_TREUTLER_QUADRATURE = False
29
+
28
30
# P.M.W. Gill, B.G. Johnson, J.A. Pople, Chem. Phys. Letters 209 (1993) 506-512
29
31
SG1RADII = numpy .array ((
30
32
0 ,
@@ -95,15 +97,41 @@ def gauss_chebyshev(n, *args, **kwargs):
95
97
dr = fac * numpy .sin (x1 )** 4 * ln2 / (1 + xi )
96
98
return r , dr
97
99
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 ):
100
124
'''
101
125
Treutler-Ahlrichs [JCP 102, 346 (1995); DOI:10.1063/1.469408] (M4) radial grids
102
126
'''
127
+ if ADJUST_TREUTLER_QUADRATURE :
128
+ xi = _treutler_ahlrichs_xi [chg ]
129
+ else :
130
+ xi = 1.
103
131
r = numpy .empty (n )
104
132
dr = numpy .empty (n )
105
133
step = numpy .pi / (n + 1 )
106
- ln2 = 1 / numpy .log (2 )
134
+ ln2 = xi / numpy .log (2 )
107
135
for i in range (n ):
108
136
x = numpy .cos ((i + 1 )* step )
109
137
r [i ] = - ln2 * (1 + x )** .6 * numpy .log ((1 - x )/ 2 )
@@ -113,8 +141,6 @@ def treutler_ahlrichs(n, *args, **kwargs):
113
141
treutler = treutler_ahlrichs
114
142
115
143
116
-
117
-
118
144
def becke_atomic_radii_adjust (mol , atomic_radii ):
119
145
'''Becke atomic radii adjust function'''
120
146
# Becke atomic size adjustment. J. Chem. Phys. 88, 2547
0 commit comments