hipart.gint — (Towards a) Gaussian integrals library

Gint is a part of HiPart used to evaluate functions and integrals of Gaussian functions. Gint is for the moment very limited in functionality and just does what is needed to make HiPart work.

Gint is also an experiment to see if it is possible to let a computer program write efficient implementations of the Gaussian integrals. (These routines are not so funny to write by hand after all.) All C code is written by writer scripts that use SymPy as the computer algebra layer. Although there are still opportunities to further optmize the generated code, the current result is already very useful.

hipart.gint.basis — Basis set representation

hipart.gint.basis.get_shell_dof(shell_type)
class hipart.gint.basis.GaussianBasis(molecule, shell_types, shell_map, num_primitives, ccoeffs, exponents)
Arguments:
molecule – a Molecule object with atomic numbers and coordinates.
shell_types – An array with shell types: 0 = S, 1 = P, 2 = Cartesian D, 3 = Cartesian F, ..., -1 = SP, -2 = pure D, -3 = pure F, ...
shell_map – An array with the atom index for each shell.
num_primitives – The number of primitives in each shell.
ccoeffs – The contraction coefficients of the primitives. For SP shells the number of contraction coefficients is twice the number of primitives, first n for S, second n for P.
exponents – The exponents of the primitives.

Standard convention for basis functions associated with a shell.

The order of the pure shells is based on the order of real spherical harmonics: http://en.wikipedia.org/wiki/Table_of_spherical_harmonics First the +- linear combination of highest angular momentum, then the ++ combination of highest angular momentum, keep repeating and finally take angular momention zero (without making a linear combination). The order of the Cartesian shells is sorted alhpabetically. The SP shell type is S first, then P. Some examples:

shell_type=0, S:
0 -> 1
shell_type=1, P:
0 -> x 1 -> y 2 -> z
shell_type=2, Cartesian D:
0 -> xx 1 -> xy 2 -> xz 3 -> yy 4 -> yz 5 -> zz
shell_type=3, Cartesian F:
0 -> xxx 1 -> xxy 2 -> xxz 3 -> xyy 4 -> xyz 5 -> xzz 6 -> yyy 7 -> yyz 8 -> yzz 9 -> zzz
shell_type=-1, SP:
0 -> 1 1 -> x 2 -> y 3 -> z
shell_type=-2, pure D:
0 -> zz 1 -> yz 2 -> xz 3 -> xx-yy 4 -> xy
shell_type=-3, pure F:
6 -> zzz 5 -> yzz 4 -> xzz 3 -> xxz-yyz 2 -> xyz 1 -> 3xxy-yyy 0 -> xxx-3xyy
call_gint_atomic_operator(gint_c_routine, points, weights)
call_gint_grid(gint_c_routine, weights, points, repeat=None)
classmethod from_fchk(fchk)
num_shells

One-center routines

TODO

Two-center routines

TODO

Auxiliary function

TODO

Tools

TODO

Writer

TODO