Notebooks · lib/basis/sto3g
The STO-3G basis set, H through Ar, as a table
Generated by tools/basis_tables.py from the Basis Set Exchange (the
basis_set_exchange package 0.12, data version 0 of the set, general
contractions optimized). Do not edit; rerun the generator. The generator's
docstring says why version 0, how shells are split and in what order they
stand, and tools/basis_tables.py --check compares every element with
PySCF 2.5.0's copy of the set.
basis_sto3g() is the Basis record of lib/basis/basis: one row per segmented
shell, (Z, l, nprim, p0) with p0 the row of its first primitive, and
one row per primitive, (exponent, coefficient). Elements 1 to 18, 66
shells and 198 primitives, angular momentum up to p.
Used with import basis.sto3g, and passed to molecule (lib/hf/molecule).
lib/basis/sto3g.viv · 1 code cellOpen in the workbenchDownload .vivLook inside this program
- Atlas
The program’s map: every function and which calls which.
There’s no recorded run of this program yet.
Shift+Enter in a cell runs it and moves to the next. Running a cell runs every cell above it too, as one program.
from basis.basis import Basis, basis_check, basis_nao, basis_of, basis_rows, BS_NAO_LEN BASIS_STO3G_NSHELL = 66 BASIS_STO3G_NPRIM = 198 #| (Z, l, nprim, p0), one segmented shell per row, by element. def basis_sto3g_shells_flat() -> Arr { return [1, 0, 3, 0, 2, 0, 3, 3, 3, 0, 3, 6, 3, 0, 3, 9, 3, 1, 3, 12, 4, 0, 3, 15, 4, 0, 3, 18, 4, 1, 3, 21, 5, 0, 3, 24, 5, 0, 3, 27, 5, 1, 3, 30, 6, 0, 3, 33, 6, 0, 3, 36, 6, 1, 3, 39, 7, 0, 3, 42, 7, 0, 3, 45, 7, 1, 3, 48, 8, 0, 3, 51, 8, 0, 3, 54, 8, 1, 3, 57, 9, 0, 3, 60, 9, 0, 3, 63, 9, 1, 3, 66, 10, 0, 3, 69, 10, 0, 3, 72, 10, 1, 3, 75, 11, 0, 3, 78, 11, 0, 3, 81, 11, 0, 3, 84, 11, 1, 3, 87, 11, 1, 3, 90, 12, 0, 3, 93, 12, 0, 3, 96, 12, 0, 3, 99, 12, 1, 3, 102, 12, 1, 3, 105, 13, 0, 3, 108, 13, 0, 3, 111, 13, 0, 3, 114, 13, 1, 3, 117, 13, 1, 3, 120, 14, 0, 3, 123, 14, 0, 3, 126, 14, 0, 3, 129, 14, 1, 3, 132, 14, 1, 3, 135, 15, 0, 3, 138, 15, 0, 3, 141, 15, 0, 3, 144, 15, 1, 3, 147, 15, 1, 3, 150, 16, 0, 3, 153, 16, 0, 3, 156, 16, 0, 3, 159, 16, 1, 3, 162, 16, 1, 3, 165, 17, 0, 3, 168, 17, 0, 3, 171, 17, 0, 3, 174, 17, 1, 3, 177, 17, 1, 3, 180, 18, 0, 3, 183, 18, 0, 3, 186, 18, 0, 3, 189, 18, 1, 3, 192, 18, 1, 3, 195] } #| (exponent, coefficient), one primitive per row. def basis_sto3g_prims_flat() -> Arr { return [3.42525091, 0.15432897, 0.62391373, 0.53532814, 0.1688554, 0.44463454, 6.36242139, 0.15432897, 1.158923, 0.53532814, 0.31364979, 0.44463454, 16.119575, 0.15432897, 2.9362007, 0.53532814, 0.7946505, 0.44463454, 0.6362897, -0.09996723, 0.1478601, 0.39951283, 0.0480887, 0.70011547, 0.6362897, 0.15591627, 0.1478601, 0.60768372, 0.0480887, 0.39195739, 30.167871, 0.15432897, 5.4951153, 0.53532814, 1.4871927, 0.44463454, 1.3148331, -0.09996723, 0.3055389, 0.39951283, 0.0993707, 0.70011547, 1.3148331, 0.15591627, 0.3055389, 0.60768372, 0.0993707, 0.39195739, 48.791113, 0.15432897, 8.8873622, 0.53532814, 2.405267, 0.44463454, 2.2369561, -0.09996723, 0.5198205, 0.39951283, 0.1690618, 0.70011547, 2.2369561, 0.15591627, 0.5198205, 0.60768372, 0.1690618, 0.39195739, 71.616837, 0.15432897, 13.045096, 0.53532814, 3.5305122, 0.44463454, 2.9412494, -0.09996723, 0.6834831, 0.39951283, 0.2222899, 0.70011547, 2.9412494, 0.15591627, 0.6834831, 0.60768372, 0.2222899, 0.39195739, 99.106169, 0.15432897, 18.052312, 0.53532814, 4.8856602, 0.44463454, 3.7804559, -0.09996723, 0.8784966, 0.39951283, 0.2857144, 0.70011547, 3.7804559, 0.15591627, 0.8784966, 0.60768372, 0.2857144, 0.39195739, 130.70932, 0.15432897, 23.808861, 0.53532814, 6.4436083, 0.44463454, 5.0331513, -0.09996723, 1.1695961, 0.39951283, 0.380389, 0.70011547, 5.0331513, 0.15591627, 1.1695961, 0.60768372, 0.380389, 0.39195739, 166.67913, 0.15432897, 30.360812, 0.53532814, 8.2168207, 0.44463454, 6.4648032, -0.09996723, 1.5022812, 0.39951283, 0.4885885, 0.70011547, 6.4648032, 0.15591627, 1.5022812, 0.60768372, 0.4885885, 0.39195739, 207.01561, 0.15432897, 37.708151, 0.53532814, 10.205297, 0.44463454, 8.2463151, -0.09996723, 1.9162662, 0.39951283, 0.6232293, 0.70011547, 8.2463151, 0.15591627, 1.9162662, 0.60768372, 0.6232293, 0.39195739, 250.77243, 0.1543289673, 45.678511, 0.5353281423, 12.362388, 0.4446345422, 12.040193, -0.09996722919, 2.7978819, 0.3995128261, 0.909958, 0.7001154689, 1.4787406, -0.219620369, 0.4125649, 0.2255954336, 0.1614751, 0.900398426, 12.040193, 0.155916275, 2.7978819, 0.6076837186, 0.909958, 0.3919573931, 1.4787406, 0.01058760429, 0.4125649, 0.5951670053, 0.1614751, 0.462001012, 299.2374, 0.1543289673, 54.50647, 0.5353281423, 14.75158, 0.4446345422, 15.12182, -0.09996722919, 3.513987, 0.3995128261, 1.142857, 0.7001154689, 1.395448, -0.219620369, 0.389326, 0.2255954336, 0.15238, 0.900398426, 15.12182, 0.155916275, 3.513987, 0.6076837186, 1.142857, 0.3919573931, 1.395448, 0.01058760429, 0.389326, 0.5951670053, 0.15238, 0.462001012, 351.4214767, 0.1543289673, 64.01186067, 0.5353281423, 17.32410761, 0.4446345422, 18.89939621, -0.09996722919, 4.391813233, 0.3995128261, 1.42835397, 0.7001154689, 1.395448293, -0.219620369, 0.3893265318, 0.2255954336, 0.1523797659, 0.900398426, 18.89939621, 0.155916275, 4.391813233, 0.6076837186, 1.42835397, 0.3919573931, 1.395448293, 0.01058760429, 0.3893265318, 0.5951670053, 0.1523797659, 0.462001012, 407.7975514, 0.1543289673, 74.28083305, 0.5353281423, 20.10329229, 0.4446345422, 23.19365606, -0.09996722919, 5.389706871, 0.3995128261, 1.752899952, 0.7001154689, 1.478740622, -0.219620369, 0.4125648801, 0.2255954336, 0.1614750979, 0.900398426, 23.19365606, 0.155916275, 5.389706871, 0.6076837186, 1.752899952, 0.3919573931, 1.478740622, 0.01058760429, 0.4125648801, 0.5951670053, 0.1614750979, 0.462001012, 468.3656378, 0.1543289673, 85.31338559, 0.5353281423, 23.08913156, 0.4446345422, 28.03263958, -0.09996722919, 6.514182577, 0.3995128261, 2.118614352, 0.7001154689, 1.743103231, -0.219620369, 0.4863213771, 0.2255954336, 0.1903428909, 0.900398426, 28.03263958, 0.155916275, 6.514182577, 0.6076837186, 2.118614352, 0.3919573931, 1.743103231, 0.01058760429, 0.4863213771, 0.5951670053, 0.1903428909, 0.462001012, 533.1257359, 0.1543289673, 97.1095183, 0.5353281423, 26.28162542, 0.4446345422, 33.32975173, -0.09996722919, 7.745117521, 0.3995128261, 2.518952599, 0.7001154689, 2.029194274, -0.219620369, 0.5661400518, 0.2255954336, 0.2215833792, 0.900398426, 33.32975173, 0.155916275, 7.745117521, 0.6076837186, 2.518952599, 0.3919573931, 2.029194274, 0.01058760429, 0.5661400518, 0.5951670053, 0.2215833792, 0.462001012, 601.3456136, 0.1543289673, 109.5358542, 0.5353281423, 29.64467686, 0.4446345422, 38.96041889, -0.09996722919, 9.053563477, 0.3995128261, 2.944499834, 0.7001154689, 2.129386495, -0.219620369, 0.5940934274, 0.2255954336, 0.232524141, 0.900398426, 38.96041889, 0.155916275, 9.053563477, 0.6076837186, 2.944499834, 0.3919573931, 2.129386495, 0.01058760429, 0.5940934274, 0.5951670053, 0.232524141, 0.462001012, 674.4465184, 0.1543289673, 122.8512753, 0.5353281423, 33.24834945, 0.4446345422, 45.16424392, -0.09996722919, 10.495199, 0.3995128261, 3.413364448, 0.7001154689, 2.621366518, -0.219620369, 0.731354605, 0.2255954336, 0.2862472356, 0.900398426, 45.16424392, 0.155916275, 10.495199, 0.6076837186, 3.413364448, 0.3919573931, 2.621366518, 0.01058760429, 0.731354605, 0.5951670053, 0.2862472356, 0.462001012] } #| The STO-3G basis set as a `Basis` record. def basis_sto3g() -> Basis { return basis_of(basis_sto3g_shells_flat(), basis_sto3g_prims_flat()) } #| The Cartesian and spherical AO counts of one atom of each element, `1` to `18`, #| as the generator counted them. def basis_sto3g_nao() -> Arr { return [1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9] } test "the STO-3G table covers H through Ar, each element's shells in one run" { btsto3g_b = basis_sto3g() assert_near(len(btsto3g_b.shells), BASIS_STO3G_NSHELL, 0.0) assert_near(len(btsto3g_b.prims), BASIS_STO3G_NPRIM, 0.0) assert_near(basis_check(btsto3g_b), 0.0, 0.0) btsto3g_n = basis_rows(basis_sto3g_nao(), BS_NAO_LEN) for btsto3g_z to len(btsto3g_n) { btsto3g_k = basis_nao(btsto3g_b, btsto3g_z + 1) assert_near(btsto3g_k[0], btsto3g_n[btsto3g_z, 0], 0.0) assert_near(btsto3g_k[1], btsto3g_n[btsto3g_z, 1], 0.0) } }