Prev Subsection 3.3.1: Control Parameters Up Section 3.3: Control Section Subsection 3.3.3: Common Solver Parameters Next
3.3.2 Time Stepper parameters
The optional time_stepper element sets the parameters that control the FEBio auto-time stepper. This auto-time stepper will adjust the time step size depending on the convergence stats of the previous time step. It defines the following parameters.
Value | Description | Default |
dtmin | Minimum time step size (1) | |
dtmax | Maximum time step size (3) | |
opt_iter | Optimal, or desired, number of iterations per time step (2) | 10 |
max_retries | Maximum number of times a time step is restarted. (2) | 5 |
aggressiveness | Algorithm for cutting the time step size after a failed time step | 0 |
Comments:
- The dtmin and dtmax values are used to constrain the range of possible time step values. The opt_iter defines the estimated optimal number of quasi-Newton iterations. If the actual number of iterations is less than or equal to this value the time step size is increased, otherwise it is decreased.
- When a time step fails (e.g. due to a negative jacobian), FEBio will retry the time step with a smaller time step size. The max_retries parameter determines the maximum number of times a timestep may be retried before FEBio error terminates. The new time step size is determined by the ratio of the previous time step size and max_retries+1. For example, if the last time step size is 0.1 and max_retries is set to 4, then the time step size is adjusted by 0.02: The first retry will have a step size of 0.08; the next will be 0.06, and so on.
- The user can specify a load curve for the dtmax parameter. This load curve is referred to as the must-point curve and serves two purposes. Firstly, it defines the value of the dtmax parameter as a function of time. This can be useful, for instance, to enforce smaller time steps during rapid loading or larger time steps when approaching steady-state in a transient analysis. Secondly, the time points of the dtmax loadcurve define so-called must-points. A must-point is a time point where FEBio must pass through. This is useful for synchronizing the auto-time stepper with the loading scenario. For instance, when loading starts at time 0.5, adding a must-point at this time will guarantee that the timestepper evaluates the model at that time. In conjunction with the PLOT_MUST_POINT value of the plot_level parameter, this option can also be used to only write results to the plotfile at the specified time points. Consider the following example.
<dtmax lc="1">0.1</dtmax> ... <loadcontroller id="1" type="loadcurve"> <interpolate>STEP</interpolate> <points> <point>0,0</point> <point>0.5, 0.1</point> <point>1.0, 0.2</point> </points> </loadcontroller>
This example defines load curve 1 as the must-point curve. This curve defines three points where FEBio will pass through (namely 0, 0.5 and 1.0). The values of each time point is the value of the maximum time-step size (dtmax). Since the curve is defined as a step-function, each value is valid up to the corresponding time-point. Thus, between time 0 and time 0.5, the maximum time step value is 0.1. Between 0.5 and 1.0 the maximum time step value is 0.2. If the plot_level parameter is set to PLOT_MUST_POINTS, then only the three defined time points will be stored to the plotfile.