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.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