3.4.1. horton.grid.atgrid
– Atomic grids¶
-
class
horton.grid.atgrid.
AtomicGrid
(number, pseudo_number, center, agspec='medium', random_rotate=True, points=None)¶ Bases:
horton.grid.base.IntGrid
Arguments:
- number
- The element number for which this grid will be used.
- pseudo_number
- The effective core charge for which this grid will be used.
- center
- The center of the radial grid
Optional arguments:
- agspec
- A specifications of the atomic grid. This can either be an instance of the AtomicGridSpec object, or the first argument of its constructor.
- random_rotate
- When set to False, the random rotation of the grid points is disabled. Such random rotation improves the accuracy of the integration, but leads to small random changes in the results that are not reproducible.
- points
- Array to store the grid points
-
eval_decomposition
(*args, **kwargs)¶ Evaluate a spherical decomposition
Arguments:
- cubic_splines
- A list cubic splines, where each item is a radial function that is associated with a corresponding real spherical harmonic.
- center
- The center of the spherically symmetric function
- output
- The output array
Optional arguments:
- cell
- A unit cell when periodic boundary conditions are used.
-
eval_spline
(*args, **kwargs)¶ Evaluate a spherically symmetric function
Arguments:
- cubic_spline
- A cubic spline with the radial dependence
- center
- The center of the spherically symmetric function
- output
- The output array
Optional arguments:
- cell
- A unit cell when periodic boundary conditions are used.
-
get_spherical_average
(*args, **kwargs)¶ Computes the spherical average of the product of the given functions
Arguments:
data1, data2, ...
All arguments must be arrays with the same size as the number of grid points. The arrays contain the functions, evaluated at the grid points.Optional arguments:
- grads
- A list of gradients of data1, data2, ... When given, the derivative of the spherical average is also computed.
-
get_spherical_decomposition
(*args, **kwargs)¶ Returns the decomposition of the product of the given functions in spherical harmonics
Arguments:
- data1, data2, ...
- All arguments must be arrays with the same size as the number of grid points. The arrays contain the functions, evaluated at the grid points.
Optional arguments:
- lmax=0
- The maximum angular momentum to consider when computing multipole moments.
Remark
A series of radial functions is returned as CubicSpline objects. These radial functions are defined as:
\[f_{\ell m}(r) = \int f(\mathbf{r}) Y_{\ell m}(\mathbf{r}) d \Omega\]where the integral is carried out over angular degrees of freedom and \(Y_{\ell m}\) are real spherical harmonics. The radial functions can be used to reconstruct the original integrand as follows:
\[f(\mathbf{r}) = \sum_{\ell m} f_{\ell m}(|\mathbf{r}|) Y_{\ell m}(\mathbf{r})\]One can also derive the pure multipole moments by integrating these radial functions as follows:
\[Q_{\ell m} = \sqrt{\frac{4\pi}{2\ell+1}} \int_0^\infty f_{\ell m}(r) r^l r^2 dr\](These multipole moments are equivalent to the ones obtained with option
mtype==2
of theintegrate
method).
-
integrate
(*args, **kwargs)¶ Integrate the product of all arguments
Arguments:
- data1, data2, ...
- All arguments must be arrays with the same size as the number of grid points. The arrays contain the functions, evaluated at the grid points, that must be multiplied and integrated.
Optional arguments:
- center=None
- When given, multipole moments are computed with respect to this center instead of a plain integral.
- lmax=0
- The maximum angular momentum to consider when computing multipole moments
- mtype=1
- The type of multipole moments: 1=``cartesian``, 2=``pure``, 3=``radial``, 4=``surface``.
- segments=None
- This argument can be used to divide the grid in segments. When given, it must be an array with the number of grid points in each consecutive segment. The integration is then carried out over each segment separately and an array of results is returned. The sum over all elements gives back the total integral.
-
zeros
()¶
-
center
¶ The center of the grid.
-
lmaxs
¶ The maximum angular momentum supported at each sphere.
-
nlls
¶ The number of Lebedev-Laikov grid points at each sphere.
-
nsphere
¶ The number of spheres in the grid.
-
number
¶ The element number of the grid.
-
points
¶ The grid points.
-
random_rotate
¶ The random rotation flag.
-
rgrid
¶ The radial integration grid
-
shape
¶ The shape of the grid.
-
size
¶ The size of the grid.
-
subgrids
¶ A list of grid objects used to construct this grid.
-
weights
¶ The grid weights.
-
class
horton.grid.atgrid.
AtomicGridSpec
(definition='medium')¶ Bases:
object
Optional argument:
- definition
A definition of the grid.
This can be a string that can be interpreted in several ways to define the grids. Attempts to interpret the string are done in the following order:
- A local file that has the same format as the files in ${HORTONDATA}/grids.
- It can be any of ‘coarse’, ‘medium’, ‘fine’, ‘veryfine’, ‘ultrafine’, ‘insane’. These have a straightforward one-to-one mapping with the files in ${HORTONDATA}/grids.
- It can be the name of a file in ${HORTONDATA}/grids (without
the extension
.txt
- A string of the format:
rname:rmin:rmax:nrad:nll
, with the following meaning for the keywords.rname
specifies the type of radial grid. It can belinear
,exp
orpower
.rmin
andrmax
specify the first and the last radial grid point in angstroms.nrad
is the number of radial grid points.nll
is the number of points for the angular Lebedev-Laikov grid.
Instead of a string, a Pythonic grid specification is also supported:
- A tuple
(rgrid, nll)
, wherergrid
is an instance ofRadialGrid
andnll
is an integer or a list of integers. The same grid is then used for each element. - A list where each element is a tuple of the form
(number, pseudo_number, rgrid, nll)
, wherenumber
is the element number,pseudo_number
is the effective core charge,rgrid
is an instance ofRadialGrid
andnll
is an integer or a list of integers. In this case, each element has its own grid specification. When using pseudo potentials, the most appropriate grid can be selected, depending on the effective core charge.
-
classmethod
from_hdf5
(grp)¶
-
get
(number, pseudo_number)¶
-
get_size
(number, pseudo_number)¶ Get the size of an atomic grid for a given element
Arguments:
- number
- The element number
- pseudo_number
- The effective core charge
-
to_hdf5
(grp, selection=None)¶
-
horton.grid.atgrid.
get_rotation_matrix
(axis, angle)¶ Rodrigues’ rotation formula
-
horton.grid.atgrid.
get_random_rotation
()¶ Return a random rotation matrix