Source code for pymor.discretizations.interfaces

# This file is part of the pyMOR project (
# Copyright 2013-2017 pyMOR developers and contributors. All rights reserved.
# License: BSD 2-Clause License (

from pymor.core.cache import CacheableInterface, cached
from pymor.core.interfaces import abstractmethod
from pymor.parameters.base import Parametric

[docs]class DiscretizationInterface(CacheableInterface, Parametric): """Interface for discretization objects. A discretization object defines a discrete problem via its `class` and the |Operators| it contains. Furthermore, discretizatoins can be :meth:`solved <DiscretizationInterface.solve>` for a given |Parameter| resulting in a solution |VectorArray|. Attributes ---------- solution_space |VectorSpace| of the |VectorArrays| returned by :meth:`solve`. linear `True` if the discretization describes a linear problem. operators Dictionary of all |Operators| contained in the discretization (see :class:`~pymor.reductors.basic.GenericRBReductor` for a usage example). products Same as |Operators| but for inner product operators associated with the discretization. """ solution_space = None linear = False operators = dict() products = dict() @abstractmethod def _solve(self, mu=None): """Perform the actual solving.""" pass
[docs] def solve(self, mu=None, **kwargs): """Solve the discrete problem for the |Parameter| `mu`. The result will be :mod:`cached <pymor.core.cache>` in case caching has been activated for the given discretization. Parameters ---------- mu |Parameter| for which to solve. Returns ------- The solution given as a |VectorArray|. """ mu = self.parse_parameter(mu) return self.cached_method_call(self._solve, mu=mu, **kwargs)
[docs] def estimate(self, U, mu=None): """Estimate the discretization error for a given solution. The discretization error could be the error w.r.t. the analytical solution of the given problem or the model reduction error w.r.t. a corresponding high-dimensional |Discretization|. Parameters ---------- U The solution obtained by :meth:`~solve`. mu |Parameter| for which `U` has been obtained. Returns ------- The estimated error. """ raise NotImplementedError
[docs] def visualize(self, U, **kwargs): """Visualize a solution |VectorArray| U. Parameters ---------- U The |VectorArray| from :attr:`~DiscretizationInterface.solution_space` that shall be visualized. """ raise NotImplementedError