Structure of this package#

The top level interface, located in openquad.geometries, provides classes for quadratures on different geometries, e.g. a unit sphere, the rotation group, n-dimensional cartesian space and other. They are derived from the abstract class GeometryQuadrature defining their main attributes and methods.

On a lower level, individual quadrature methods are organized in modules corresponding to their respective source. They are implemented in terms of classes derived from the abstract base classes in base. On the one hand, these base classes define the basic properties for quadratures on different geometries. On the other hand, they distinguish between quadratures with and without non-zero degree of exactness.

Quadrature points and weights are located in the data directory, organized in separate folders for the different sources. Each subfolder contains a file __init__.py giving information about the source and listing available degrees and sizes. Actual coordinates and weights are stored in NumPy’s .npy binary file format in the following convention, n denoting the number of sample points:

  • S2 spherical designs: Array of shape (2, n), along the first axis containing the spherical polar angles in the order [polar angle, azimuthal angle].

  • S2 Gauss-type quadratures: Array of shape (3, n) along the first axis containing the spherical polar angles and the weights in the order [polar angle, azimuthal angle, weights].

  • SO3 equal-weight quadratures: Array of shape (3, n) along the first axis containing the Euler angles in the z-y-z convention the order [alpha, beta, gamma].

  • SO3 Gauss-type quadratures: Array of shape (4, n) along the first axis containing the Euler angles in the z-y-z convention and the weights the order [alpha, beta, gamma, weights].

All angles are given in the interval from \([0,\pi]\) or \([0,2\pi]\), respectively.