Select Git revision
Quadrature.py
Laura Christine Kühle authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Quadrature.py 2.72 KiB
# -*- coding: utf-8 -*-
"""
@author: Laura C. Kühle
"""
import numpy.polynomial.legendre as leg
class Quadrature(object):
"""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 : np.array
Evaluation points per cell used for approximation.
weights : np.array
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 : np.array
Evaluation points per cell used for approximation.
weights : np.array
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 concatenated with the number of evaluation points."""
return self.__class__.__name__ + str(self._num_eval_points)