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.ModelGeneric 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 massOperatorM is assumed to be linear.- Parameters:
T – The final time T.
initial_data – The initial data
u_0. Either aVectorArrayof length 1 or (for theParameter-dependent case) a vector-likeOperator(i.e. a linearOperatorwithsource.dim == 1) which applied toNumpyVectorArray(np.array([1]))will yield the initial data for givenparameter values.operator – The
OperatorL.rhs – The right-hand side F.
mass – The mass
OperatorM. IfNone, the identity is assumed.time_stepper – The
time-stepperto 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 –
Operatormapping a given solution to the model output. In many applications, this will be aFunctional, i.e. anOperatormapping to scalars. This is not required, however.products – A dict of product
Operatorsdefined 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_normis 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_estimatoris 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. Ifvisualizeris notNone, avisualize(U, *args, **kwargs)method is added to the model which forwards its arguments to the visualizer’svisualizemethod.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.ModelGeneric 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
OperatorL.rhs – The vector F. Either a
VectorArrayof length 1 or a vector-likeOperator.output_functional –
Operatormapping a given solution to the model output. In many applications, this will be aFunctional, i.e. anOperatormapping to scalars. This is not required, however.products – A dict of inner product
Operatorsdefined 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_normis 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_estimatoris 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. Ifvisualizeris notNone, avisualize(U, *args, **kwargs)method is added to the model which forwards its arguments to the visualizer’svisualizemethod.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
Modelwith linear solution space.- deaffinize(arg)[source]¶
Build
Modelwith linear solution space.For many
Modelsthe 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 equivalentModelwith linear solution space. This method can be used to obtain such aModel.Given a vector
u_0from the affine solution space, the returnedStationaryModelis equivalent to solving:L(u(μ) + u_0, μ) = F(μ)
When
operatoris linear, the affine shift is moved to the right-hand side to obtain:L(u(μ), μ) = F(μ) - L(u_0, μ)
Solutions of the original
Modelcan be obtained by addingu_0to the solutions of the deaffinizedModel.The
output_functionalis adapted accordingly to yield the same output for givenparameter values.- Parameters:
arg – Either a
VectorArrayof length 1 containing the vectoru_0. Alternatively,parameter valuescan be provided, for which the model issolvedto obtainu_0.- Returns:
The deaffinized |Model|.