pymor.algorithms.timestepping¶
Generic time-stepping algorithms for the solution of instationary problems.
The algorithms are generic in the sense that each algorithms operates exclusively
on Operators and VectorArrays. In particular, the algorithms
can also be used to turn an arbitrary stationary Model provided
by an external library into an instationary Model.
Currently, implementations of explicit_euler and implicit_euler
time-stepping are provided. The TimeStepper defines a
common interface that has to be fulfilled by the time-steppers used
by InstationaryModel. The classes ExplicitEulerTimeStepper
and ImplicitEulerTimeStepper encapsulate explicit_euler and
implicit_euler to provide this interface.
Module Contents¶
Classes¶
Interface for time-stepping algorithms. |
|
Implicit Euler time-stepper. |
|
Explicit Euler time-stepper. |
Functions¶
- class pymor.algorithms.timestepping.TimeStepper[source]¶
Bases:
pymor.core.base.ImmutableObjectInterface for time-stepping algorithms.
Algorithms implementing this interface solve time-dependent problems of the form
M * d_t u + A(u, mu, t) = F(mu, t).
Time-steppers used by
InstationaryModelhave to fulfill this interface.- abstract solve(self, initial_time, end_time, initial_data, operator, rhs=None, mass=None, mu=None, num_values=None)[source]¶
Apply time-stepper to the equation
M * d_t u + A(u, mu, t) = F(mu, t).
Parameters
- initial_time
The time at which to begin time-stepping.
- end_time
The time until which to perform time-stepping.
- initial_data
The solution vector at
initial_time.- operator
The
OperatorA.- rhs
The right-hand side F (either
VectorArrayof length 1 orOperatorwithsource.dim == 1). IfNone, zero right-hand side is assumed.- mass
The
OperatorM. IfNone, the identity operator is assumed.- mu
Parameter valuesfor whichoperatorandrhsare evaluated. The current time is added tomuwith keyt.- num_values
The number of returned vectors of the solution trajectory. If
None, each intermediate vector that is calculated is returned.
Returns
VectorArraycontaining the solution trajectory.
- class pymor.algorithms.timestepping.ImplicitEulerTimeStepper(nt, solver_options='operator')[source]¶
Bases:
TimeStepperImplicit Euler time-stepper.
Solves equations of the form
M * d_t u + A(u, mu, t) = F(mu, t).
Parameters
- nt
The number of time-steps the time-stepper will perform.
- solver_options
The
solver_optionsused to invertM + dt*A. The special values'mass'and'operator'are recognized, in which case the solver_options of M (resp. A) are used.
- solve(self, initial_time, end_time, initial_data, operator, rhs=None, mass=None, mu=None, num_values=None)[source]¶
Apply time-stepper to the equation
M * d_t u + A(u, mu, t) = F(mu, t).
Parameters
- initial_time
The time at which to begin time-stepping.
- end_time
The time until which to perform time-stepping.
- initial_data
The solution vector at
initial_time.- operator
The
OperatorA.- rhs
The right-hand side F (either
VectorArrayof length 1 orOperatorwithsource.dim == 1). IfNone, zero right-hand side is assumed.- mass
The
OperatorM. IfNone, the identity operator is assumed.- mu
Parameter valuesfor whichoperatorandrhsare evaluated. The current time is added tomuwith keyt.- num_values
The number of returned vectors of the solution trajectory. If
None, each intermediate vector that is calculated is returned.
Returns
VectorArraycontaining the solution trajectory.
- class pymor.algorithms.timestepping.ExplicitEulerTimeStepper(nt)[source]¶
Bases:
TimeStepperExplicit Euler time-stepper.
Solves equations of the form
M * d_t u + A(u, mu, t) = F(mu, t).
Parameters
- nt
The number of time-steps the time-stepper will perform.
- solve(self, initial_time, end_time, initial_data, operator, rhs=None, mass=None, mu=None, num_values=None)[source]¶
Apply time-stepper to the equation
M * d_t u + A(u, mu, t) = F(mu, t).
Parameters
- initial_time
The time at which to begin time-stepping.
- end_time
The time until which to perform time-stepping.
- initial_data
The solution vector at
initial_time.- operator
The
OperatorA.- rhs
The right-hand side F (either
VectorArrayof length 1 orOperatorwithsource.dim == 1). IfNone, zero right-hand side is assumed.- mass
The
OperatorM. IfNone, the identity operator is assumed.- mu
Parameter valuesfor whichoperatorandrhsare evaluated. The current time is added tomuwith keyt.- num_values
The number of returned vectors of the solution trajectory. If
None, each intermediate vector that is calculated is returned.
Returns
VectorArraycontaining the solution trajectory.
- pymor.algorithms.timestepping.implicit_euler(A, F, M, U0, t0, t1, nt, mu=None, num_values=None, solver_options='operator')[source]¶