Skip to content
Snippets Groups Projects
Select Git revision
  • f29d7a897eb75e1b829776e07a42ca7f4449e437
  • master default protected
  • btypes-fixes
  • freetypes
  • embedded-codegen
  • rust-support
  • z3solver
7 results

README.md

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Quadrature.py 2.56 KiB
    # -*- coding: utf-8 -*-
    """Module for quadrature.
    
    @author: Laura C. Kühle
    
    """
    from abc import ABC
    from numpy import ndarray
    import numpy.polynomial.legendre as leg
    
    
    class Quadrature(ABC):
        """Abstract class for quadrature.
    
        A quadrature is used to determine the approximation of a definite integral
        of a function.
    
        Attributes
        ----------
        name : str
            String of class name.
        num_nodes : int
            Number of nodes (evaluation points) per cell used for approximation.
        nodes : ndarray
            Nodes (evaluation points) per cell used for approximation.
        weights : ndarray
            Weights used for approximation calculation.
    
        """
    
        def __init__(self, config: dict) -> None:
            """Initialize Quadrature.
    
            Parameters
            ----------
            config : dict
                Additional parameters for quadrature.
    
            """
            self._reset(config)
    
        def _reset(self, config: dict) -> None:
            """Reset instance variables.
    
            Parameters
            ----------
            config : dict
                Additional parameters for quadrature.
    
            """
            self._num_nodes = None
            self._nodes = None
            self._weights = None
    
        @property
        def name(self) -> str:
            """Return string of class name."""
            return self.__class__.__name__
    
        @property
        def num_nodes(self) -> str:
            """Return number of nodes."""
            return self._num_nodes
    
        @property
        def nodes(self) -> ndarray:
            """Return nodes."""
            return self._nodes
    
        @property
        def weights(self) -> ndarray:
            """Return evaluation weights."""
            return self._weights
    
    
    class Gauss(Quadrature):
        """Class for Gaussian quadrature.
    
        Attributes
        ----------
        name : str
            String of class name.
        num_nodes : int
            Number of nodes (evaluation points) per cell used for approximation.
        nodes : ndarray
            Nodes (evaluation points) per cell used for approximation.
        weights : ndarray
            Weights used for approximation calculation.
    
        """
    
        def _reset(self, config: dict) -> None:
            """Reset instance variables.
    
            Parameters
            ----------
            config : dict
                Additional parameters for quadrature.
    
            """
            super()._reset(config)
    
            # Unpack necessary configurations
            self._num_nodes = config.pop('num_eval_points', 6)
    
            self._nodes, self._weights = leg.leggauss(self._num_nodes)
    
        @property
        def name(self) -> str:
            """Return string of class name."""
            return self.__class__.__name__ + str(self._num_nodes)