pymor.models.interface
¶
Module Contents¶
- class pymor.models.interface.Model(dim_input=0, products=None, error_estimator=None, visualizer=None, name=None)[source]¶
Bases:
pymor.core.cache.CacheableObject
,pymor.parameters.base.ParametricObject
Interface for model objects.
A model object defines a discrete problem via its
class
and theOperators
it contains. Furthermore, models can besolved
for givenparameter values
resulting in a solutionVectorArray
.- solution_space[source]¶
VectorSpace
of the solutionVectorArrays
returned bysolve
.
Methods
Set of quantities that can be compute via
compute
.Compute the solution of the model and associated quantities.
Estimate the error for the computed internal state.
Estimate the error for the computed output.
Return the model output for given
parameter values
mu
.Compute the output sensitivities w.r.t. the model's parameters.
Solve the discrete problem for the
parameter values
mu
.Compute the solution sensitivity w.r.t. a single parameter.
Visualize a
VectorArray
U of the model'ssolution_space
.- compute(data=None, *, solution=False, output=False, solution_d_mu=False, output_d_mu=False, solution_error_estimate=False, output_error_estimate=False, mu=None, input=None, **kwargs)[source]¶
Compute the solution of the model and associated quantities.
This method computes the output of the model, its internal state, and various associated quantities for given
parameter values
mu
.- Parameters:
data – If not
None
, a dict of already computed quantities for the givenmu
andinput
. If used, newly computed quantities are added to the given dict and the same dict is returned. Providing adata
dict can be helpful when some quantities (e.g.,output
) depend on already known quantities (e.g,solution
) and caching has not been activated.solution – If
True
, return the model’s internal state.output – If
True
, return the model output.solution_d_mu – If not
False
, eitherTrue
to return the sensitivities of the model’s solution w.r.t. all parameters, or a sequence of tuples(parameter, index)
to compute the solution sensitivities for selected parameters.output_d_mu – If
True
, return the output sensitivities w.r.t. the model’s parameters.solution_error_estimate – If
True
, return an error estimate for the computed internal state.output_error_estimate – If
True
, return an error estimate for the computed output.mu –
Parameter values
for which to compute the values.input – The model input. Either a
NumPy array
of shape(self.dim_input,)
, aFunction
withdim_domain == 1
andshape_range == (self.dim_input,)
mapping time to input, or astr
expression witht
as variable that can be used to instantiate anExpressionFunction
of this type. Can beNone
ifself.dim_input == 0
.kwargs – Additional keyword arguments to select further quantities that should be computed.
- Returns:
A dict with the computed values.
- estimate_error(mu=None, input=None)[source]¶
Estimate the error for the computed internal state.
For given
parameter values
mu
this method returns an error estimate for the computed internal model state as returned bysolve
. It is a convenience wrapper aroundcompute
.The model 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
Model
.- Parameters:
mu –
Parameter values
for which to estimate the error.input – The model input. Either a
NumPy array
of shape(self.dim_input,)
, aFunction
withdim_domain == 1
andshape_range == (self.dim_input,)
mapping time to input, or astr
expression witht
as variable that can be used to instantiate anExpressionFunction
of this type. Can beNone
ifself.dim_input == 0
.
- Returns:
The estimated
solution_space
error as a 1DNumPy array
.For stationary problems, the returned array has length 1.
For time-dependent problems, the length depends on the number of time
steps. The norm w.r.t. which the error is estimated depends on the given
problem.
- estimate_output_error(mu=None, input=None)[source]¶
Estimate the error for the computed output.
For given
parameter values
mu
this method returns an error estimate for the computed model output as returned byoutput
. It is a convenience wrapper aroundcompute
.The output 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
Model
.- Parameters:
mu –
Parameter values
for which to estimate the error.input – The model input. Either a
NumPy array
of shape(self.dim_input,)
, aFunction
withdim_domain == 1
andshape_range == (self.dim_input,)
mapping time to input, or astr
expression witht
as variable that can be used to instantiate anExpressionFunction
of this type. Can beNone
ifself.dim_input == 0
.
- Returns:
The estimated model output as a 2D |NumPy array|. The dimension
of axis 0 is
dim_output
. For stationary problems, axis 1 hasdimension 1. For time-dependent problems, the dimension of axis 1
depends on the number of time steps. The spatial/temporal norms
w.r.t. which the error is estimated depend on the given problem.
- output(mu=None, input=None, return_error_estimate=False)[source]¶
Return the model output for given
parameter values
mu
.This method is a convenience wrapper around
compute
.- Parameters:
mu –
Parameter values
for which to compute the output.input – The model input. Either a
NumPy array
of shape(self.dim_input,)
, aFunction
withdim_domain == 1
andshape_range == (self.dim_input,)
mapping time to input, or astr
expression witht
as variable that can be used to instantiate anExpressionFunction
of this type. Can beNone
ifself.dim_input == 0
.return_error_estimate – If
True
, also return an error estimate for the computed output.
- Returns:
The computed model output as a 2D |NumPy array|. The dimension
of axis 0 is
dim_output
. (For stationary problems, axis 1 hasdimension 1. For time-dependent problems, the dimension of axis 1
depends on the number of time steps.)
When
return_error_estimate
isTrue
, the estimate is returned assecond value.
- output_d_mu(mu=None, input=None)[source]¶
Compute the output sensitivities w.r.t. the model’s parameters.
- Parameters:
mu –
Parameter value
at which to compute the output sensitivities.input – The model input. Either a
NumPy array
of shape(self.dim_input,)
, aFunction
withdim_domain == 1
andshape_range == (self.dim_input,)
mapping time to input, or astr
expression witht
as variable that can be used to instantiate anExpressionFunction
of this type. Can beNone
ifself.dim_input == 0
.
- Returns:
The output sensitivities as a dict `{(parameter, index) (sensitivity}` where)
sensitivity
is a 2DNumPy arrays
with axis 0 corresponding to time and axis 1corresponding to the output component.
The returned :class:`OutputDMuResult` object has a `meth` (~OutputDMuResult.to_numpy`)
method to convert it into a single NumPy array, e.g., for use in optimization
libraries.
- solve(mu=None, input=None, return_error_estimate=False)[source]¶
Solve the discrete problem for the
parameter values
mu
.This method returns a
VectorArray
with a internal state representation of the model’s solution for givenparameter values
. It is a convenience wrapper aroundcompute
.The result may be
cached
in case caching has been activated for the given model.- Parameters:
mu –
Parameter values
for which to solve.input – The model input. Either a
NumPy array
of shape(self.dim_input,)
, aFunction
withdim_domain == 1
andshape_range == (self.dim_input,)
mapping time to input, or astr
expression witht
as variable that can be used to instantiate anExpressionFunction
of this type. Can beNone
ifself.dim_input == 0
.return_error_estimate – If
True
, also return an error estimate for the computed solution.
- Returns:
The solution
VectorArray
. Whenreturn_error_estimate
isTrue
,the estimate is returned as second value.
- solve_d_mu(parameter, index, mu=None, input=None)[source]¶
Compute the solution sensitivity w.r.t. a single parameter.
- Parameters:
parameter – Parameter for which to compute the sensitivity.
index – Parameter index for which to compute the sensitivity.
mu –
Parameter value
at which to compute the sensitivity.input – The model input. Either a
NumPy array
of shape(self.dim_input,)
, aFunction
withdim_domain == 1
andshape_range == (self.dim_input,)
mapping time to input, or astr
expression witht
as variable that can be used to instantiate anExpressionFunction
of this type. Can beNone
ifself.dim_input == 0
.
- Returns:
The sensitivity of the solution as a |VectorArray|.
- visualize(U, **kwargs)[source]¶
Visualize a
VectorArray
U of the model’ssolution_space
.- Parameters:
U – The
VectorArray
fromsolution_space
that shall be visualized.kwargs – Additional keyword arguments to customize the visualization. See the docstring of
self.visualizer.visualize
.
- class pymor.models.interface.OutputDMuResult(*args, **kwargs)[source]¶
Bases:
pymor.tools.frozendict.FrozenDict
Immutable dict of gradients returned by
output_d_mu
.Methods
Return gradients as a single 3D NumPy array.