# -*- coding: utf-8 -*- """ @author: Laura C. Kühle """ import numpy.polynomial.legendre as leg class Quadrature: """Class for quadrature. A quadrature is used to determine the approximation of a definite integral of a function. Attributes ---------- num_eval_points : int Number of evaluation points per cell used for approximation. eval_points : ndarray Evaluation points per cell used for approximation. weights : ndarray Weights used for approximation calculation. Methods ------- get_name() Returns string of class name. get_num_points() Returns number of evaluation points. get_eval_points() Returns evaluation points. get_weights() Returns evaluation weights. """ def __init__(self, config): """Initializes Quadrature. Parameters ---------- config : dict Additional parameters for quadrature. """ self._reset(config) def _reset(self, config): """Resets instance variables. Parameters ---------- config : dict Additional parameters for quadrature. """ self._num_eval_points = None self._eval_points = None self._weights = None def get_name(self): """Returns string of class name.""" return self.__class__.__name__ def get_num_points(self): """Returns number of evaluation points.""" return self._num_eval_points def get_eval_points(self): """Returns evaluation points.""" return self._eval_points def get_weights(self): """Returns evaluation weights.""" return self._weights class Gauss(Quadrature): """Class for Gaussian quadrature. Attributes ---------- num_eval_points : int Number of evaluation points per cell used for approximation. eval_points : ndarray Evaluation points per cell used for approximation. weights : ndarray Weights used for approximation calculation. Methods ------- get_name() Returns string of class name. """ def _reset(self, config): """Resets instance variables. Parameters ---------- config : dict Additional parameters for quadrature. """ super()._reset(config) # Unpack necessary configurations self._num_eval_points = config.pop('num_eval_points', 6) self._eval_points, self._weights = leg.leggauss(self._num_eval_points) def get_name(self): """Returns string of class name.""" return self.__class__.__name__ + str(self._num_eval_points)