sfepy.solvers.ts_controllers module¶
Time step controllers.
- class sfepy.solvers.ts_controllers.ElastodynamicsBasicTSC(conf, **kwargs)[source]¶
Adaptive time step I-controller for elastodynamics.
The implementation is based on [1]. The default parameters correspond to the PID-Controller as implemented in
tsc.ed_pid
with P=D=0, I=1.[1] Grafenhorst, Matthias, Joachim Rang, and Stefan Hartmann. “Time-Adaptive Finite Element Simulations of Dynamical Problems for Temperature-Dependent Materials.” Journal of Mechanics of Materials and Structures 12, no. 1 (November 26, 2016): 57–91. https://doi.org/10.2140/jomms.2017.12.57.
Kind: ‘tsc.ed_basic’
For common configuration parameters, see
Solver
.Specific configuration parameters:
- Parameters:
- eps_rlist of floats or float
Relative tolerance(s).
- eps_alist of floats or float
Absolute tolerance(s).
- fminfloat (default: 0.3)
Minimum step size change factor on step rejection.
- fmaxfloat (default: 2.5)
Maximum step size change factor on step acceptance.
- fsafetyfloat (default: 0.8)
Step size change safety factor.
- error_orderfloat (default: 2)
The order of the solver error estimate.
- guess_dt0bool (default: False)
Guess a good initial step size from initial conditions.
- get_initial_dt(ts, vec, unpack, **kwargs)[source]¶
Adapted from [1] for second order ODEs.
[1] Hairer, Ernst, Gerhard Wanner, and Syvert P. Nørsett. Solving Ordinary Differential Equations I: Nonstiff Problems. Vol. 8. Springer Series in Computational Mathematics. Berlin, Heidelberg: Springer, 1993. https://doi.org/10.1007/978-3-540-78862-1.
- name = 'tsc.ed_basic'¶
- class sfepy.solvers.ts_controllers.ElastodynamicsLinearTSC(conf, **kwargs)[source]¶
Adaptive time step controller for elastodynamics and linear problems.
Simple heuristics around
ElastodynamicsBasicTSC
that increases the step size only after a sufficient number of accepted iterations passed and the increase is large enough. In particular:Let new_dt be the step size proposed by tsc.ed_basic and dt the current step size.
If the current step is rejected, the count attribute is reset to zero and fred * new_dt is returned.
If the current step is accepted:
If the count is lower than inc_wait, it is incremented and dt is returned.
Otherwise, if (new_dt / dt) >= min_finc (>= 1), the count is reset to zero and new_dt is returned.
Else, if (new_dt / dt) < min_finc, dt is returned.
Kind: ‘tsc.ed_linear’
For common configuration parameters, see
Solver
.Specific configuration parameters:
- Parameters:
- eps_rlist of floats or float
Relative tolerance(s).
- eps_alist of floats or float
Absolute tolerance(s).
- fminfloat (default: 0.3)
Minimum step size change factor on step rejection.
- fmaxfloat (default: 2.5)
Maximum step size change factor on step acceptance.
- fsafetyfloat (default: 0.8)
Step size change safety factor.
- error_orderfloat (default: 2)
The order of the solver error estimate.
- guess_dt0bool (default: False)
Guess a good initial step size from initial conditions.
- fredfloat (default: 1.0)
Additional step size reduction factor w.r.t. tsc.ed_basic.
- inc_waitint (default: 10)
The number of consecutive accepted steps to wait before increasing the step size.
- min_fincfloat >= 1 (default: 1.5)
Minimum step size increase factor.
- name = 'tsc.ed_linear'¶
- class sfepy.solvers.ts_controllers.ElastodynamicsPIDTSC(conf, **kwargs)[source]¶
Adaptive time step PID controller for elastodynamics.
The implementation is based on [1], [2] (PI Controller) and [3] (PID). The default parameters correspond to the I-Controller as implemented in
tsc.ed_basic
.[1] Grafenhorst, Matthias, Joachim Rang, and Stefan Hartmann. “Time-Adaptive Finite Element Simulations of Dynamical Problems for Temperature-Dependent Materials.” Journal of Mechanics of Materials and Structures 12, no. 1 (November 26, 2016): 57–91. https://doi.org/10.2140/jomms.2017.12.57. [2] Hairer, Ernst, Syvert Paul Nørsett, and Gerhard Wanner. Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems. Springer Science & Business Media, 1993. [3] Söderlind, Gustaf. “Digital Filters in Adaptive Time-Stepping.” ACM Transactions on Mathematical Software 29, no. 1 (March 1, 2003): 1–26. https://doi.org/10.1145/641876.641877.
Kind: ‘tsc.ed_pid’
For common configuration parameters, see
Solver
.Specific configuration parameters:
- Parameters:
- eps_rlist of floats or float
Relative tolerance(s).
- eps_alist of floats or float
Absolute tolerance(s).
- fminfloat (default: 0.3)
Minimum step size change factor on step rejection.
- fmaxfloat (default: 2.5)
Maximum step size change factor on step acceptance.
- fsafetyfloat (default: 0.8)
Step size change safety factor.
- error_orderfloat (default: 2)
The order of the solver error estimate.
- guess_dt0bool (default: False)
Guess a good initial step size from initial conditions.
- pcoeffloat (default: 0.0)
Proportional (P) coefficient of the step size control.
- icoeffloat (default: 1.0)
Intregral (I) coefficient of the step size control.
- dcoeffloat (default: 0.0)
Derivative (D) coefficient of the step size control.
- name = 'tsc.ed_pid'¶
- class sfepy.solvers.ts_controllers.FixedTSC(conf, **kwargs)[source]¶
Fixed (do-nothing) time step controller.
Kind: ‘tsc.fixed’
For common configuration parameters, see
Solver
.Specific configuration parameters:
- Parameters:
- name = 'tsc.fixed'¶
- class sfepy.solvers.ts_controllers.TimesSequenceTSC(conf, **kwargs)[source]¶
Given times sequence time step controller.
Kind: ‘tsc.time_sequence’
For common configuration parameters, see
Solver
.Specific configuration parameters:
- Parameters:
- timesiterable (default: range(1, 6))
A sequence of times to generate.
- name = 'tsc.time_sequence'¶