pymor.models.basic
¶
Module Contents¶
- class pymor.models.basic.InstationaryModel(T, initial_data, operator, rhs, mass=None, time_stepper=None, num_values=None, output_functional=None, products=None, error_estimator=None, visualizer=None, name=None)[source]¶
Bases:
pymor.models.interface.Model
Generic class for models of instationary problems.
This class describes instationary problems given by the equations:
M * ∂_t u(t, μ) + L(u(μ), t, μ) = F(t, μ) u(0, μ) = u_0(μ)
for t in [0,T], where L is a (possibly non-linear) time-dependent
Operator
, F is a time-dependent vector-likeOperator
, and u_0 the initial data. The massOperator
M is assumed to be linear.- Parameters:
T – The final time T.
initial_data – The initial data
u_0
. Either aVectorArray
of length 1 or (for theParameter
-dependent case) a vector-likeOperator
(i.e. a linearOperator
withsource.dim == 1
) which applied toNumpyVectorArray(np.array([1]))
will yield the initial data for givenparameter values
.operator – The
Operator
L.rhs – The right-hand side F.
mass – The mass
Operator
M
. IfNone
, the identity is assumed.time_stepper – The
time-stepper
to be used bysolve
.num_values – The number of returned vectors of the solution trajectory. If
None
, each intermediate vector that is calculated is returned.output_functional –
Operator
mapping a given solution to the model output. In many applications, this will be aFunctional
, i.e. anOperator
mapping to scalars. This is not required, however.products – A dict of product
Operators
defined on the discrete space the problem is posed on. For each product with key'x'
a corresponding attributex_product
, as well as a norm methodx_norm
is added to the model.error_estimator – An error estimator for the problem. This can be any object with an
estimate_error(U, mu, m)
method. Iferror_estimator
is notNone
, anestimate_error(U, mu)
method is added to the model which will callerror_estimator.estimate_error(U, mu, self)
.visualizer – A visualizer for the problem. This can be any object with a
visualize(U, m, ...)
method. Ifvisualizer
is notNone
, avisualize(U, *args, **kwargs)
method is added to the model which forwards its arguments to the visualizer’svisualize
method.name – Name of the model.
Methods
Convert model to
LTIModel
.
- class pymor.models.basic.StationaryModel(operator, rhs, output_functional=None, products=None, error_estimator=None, visualizer=None, output_d_mu_use_adjoint=None, name=None)[source]¶
Bases:
pymor.models.interface.Model
Generic class for models of stationary problems.
This class describes discrete problems given by the equation:
L(u(μ), μ) = F(μ)
with a vector-like right-hand side F and a (possibly non-linear) operator L.
Note that even when solving a variational formulation where F is a functional and not a vector, F has to be specified as a vector-like
Operator
(mapping scalars to vectors). This ensures that in the complex case both L and F are anti-linear in the test variable.- Parameters:
operator – The
Operator
L.rhs – The vector F. Either a
VectorArray
of length 1 or a vector-likeOperator
.output_functional –
Operator
mapping a given solution to the model output. In many applications, this will be aFunctional
, i.e. anOperator
mapping to scalars. This is not required, however.products – A dict of inner product
Operators
defined on the discrete space the problem is posed on. For each product with key'x'
a corresponding attributex_product
, as well as a norm methodx_norm
is added to the model.error_estimator – An error estimator for the problem. This can be any object with an
estimate_error(U, mu, m)
method. Iferror_estimator
is notNone
, anestimate_error(U, mu)
method is added to the model which will callerror_estimator.estimate_error(U, mu, self)
.visualizer – A visualizer for the problem. This can be any object with a
visualize(U, m, ...)
method. Ifvisualizer
is notNone
, avisualize(U, *args, **kwargs)
method is added to the model which forwards its arguments to the visualizer’svisualize
method.output_d_mu_use_adjoint – If
True
, use adjoint solution for computing output gradients (default behavior). See Section 1.6.2 in [HPUU08] for more details.name – Name of the model.
Methods
Build
Model
with linear solution space.- deaffinize(arg)[source]¶
Build
Model
with linear solution space.For many
Models
the solution manifold is contained in an affine subspace of thesolution_space
, e.g. the affine space of functions with certain fixed boundary values. Most MOR techniques, however, construct linear approximation spaces, which are not fully contained in this affine subspace, even if these spaces are created using snapshot vectors from the subspace. Depending on the FOM, neglecting the affine structure of the solution space may lead to bad approximations or even an ill-posed ROM. A standard approach to circumvent this issue is to replace the FOM with an equivalentModel
with linear solution space. This method can be used to obtain such aModel
.Given a vector
u_0
from the affine solution space, the returnedStationaryModel
is equivalent to solving:L(u(μ) + u_0, μ) = F(μ)
When
operator
is linear, the affine shift is moved to the right-hand side to obtain:L(u(μ), μ) = F(μ) - L(u_0, μ)
Solutions of the original
Model
can be obtained by addingu_0
to the solutions of the deaffinizedModel
.The
output_functional
is adapted accordingly to yield the same output for givenparameter values
.- Parameters:
arg – Either a
VectorArray
of length 1 containing the vectoru_0
. Alternatively,parameter values
can be provided, for which the model issolved
to obtainu_0
.- Returns:
The deaffinized |Model|.