TIME_SEQUENCE
Specifies the time stepping and staggering strategy.
Type
AcuTrace Command
Syntax
TIME_SEQUENCE {parameters}
Qualifier
This command has no qualifier.
Parameters
- max_time (real) >=0 [=0]
- Final time of the particle trace. The trace of an individual particle will terminate when its trace time reaches this value. The trace may terminate earlier due to other criteria. If zero, this option is ignored.
- max_segments (integer) >=0 [=10000]
- Maximum number of segments in the trace of any one particle. The trace of an individual particle will terminate when the number of segments in its trace reaches this value. The trace may terminate earlier due to other criteria. If 0, this option is ignored.
- min_stagger_iterations or min_stg_iters (integer) >=0 [=1]
- Minimum number of stagger iterations before advancing to the next time step. If zero, this option is ignored.
- max_stagger_iterations or max_stg_iters (integer) >=0 [=1]
- Maximum number of stagger iterations before advancing to the next time step.
- lhs_update_initial_times or lhs_init_steps (integer) >=0 [=1]
- The number of initial time steps in which the left-hand-side (LHS) matrices of all staggers are discarded at the start of every time step.
- lhs_update_frequency or lhs_freq (integer) >=0 [=1]
- The time step frequency at which the left-hand-side (LHS) matrices of all staggers are discarded at the start of such time steps. If zero, this option is ignored.
- stagger_convergence_tolerance or stg_conv_tol (real) >=0 [=1.e-4]
- Time step convergence tolerance. The stagger iteration is terminated when all convergence measures within the stagger iteration are less than this convergence tolerance and at least min_stagger_iterations have been solved.
- stagger_lhs_update_frequency or stg_lhs_freq (integer) >=0 [=0]
- The stagger iteration frequency at which the left-hand-side (LHS) matrices of all staggers are discarded at the start of such staggers. If zero, this option is ignored.
- staggers or stgs list [no default]
- List of staggers to be executed. Staggers are solved in the specified sequence.
Description
This command specifies the time stepping and stagger iteration strategy and parameters.
Loop over time steps
Loop over staggers
Stagger 1:
Loop over nonlinear iterations
Form stagger residual and if needed LHS matrix
Solve linear equation system
Update stagger solution field(s)
Check nonlinear convergence
End nonlinear loop
...
Stagger N:
Loop over nonlinear iterations
Form stagger residual and if needed LHS matrix
Solve linear equation system
Update stagger solution field(s)
Check nonlinear convergence
End nonlinear loop
Check stagger convergence
End stagger loop
Check time step convergence
Optionally compute and output results
Determine time increment of the next time step
End time step loop
The loops over the time steps and staggers and the sequence of staggers are controlled by the TIME_SEQUENCE command. The loop over each stagger's nonlinear iterations, formations, and solution of stagger equations is controlled by the STAGGER command. The selection of the time increments is controlled by the TRACE_PARAMETERS command.
- User signals termination
- A fatal error occurs
- All particles have become "inactive", for example, they have:
- reached either a trace time equal to max_time or a segment count equal to max_segments, or
- have reached a trace time equal to the maximum value of all time cuts when time cut output is the only output requested, or
- left the flow domain through an outflow surface, or
- stopped at a solid boundary of the flow domain, or
- stopped at a sliding interface of the flow domain
Particles for which none of the above hold are said to be "active".
- max_stagger_iterations stagger iterations are performed.
- at least min_stagger_iterations stagger iterations are performed and the last set of convergence measures fall below stagger_convergence_tolerance.
TIME_SEQUENCE {
staggers = { "particle", "stretch", "ener" }
}
STAGGER( "particle" ) {
equation = particle
...
}
STAGGER( "stretch" ) {
equation = stretch
...
}
STAGGER( "enth" ) {
equation = user_equation
user_equation = "ener"
...
}
Here the particle stagger is solved first for the particle equations, then the stretch stagger is solved for the stretch equation and then the ener stagger is solved for the user-defined energy equation. AcuTrace computes particle traces as a series of segments using fifth-order time-discontinuous Galerkin (TDG) with error control. Given a segment start point, a stagger for equation = particle computes the endpoint of a single segment of the trace of a single particle.
TIME_SEQUENCE {
staggers = { "ener", "particle", "ener", "stretch" }
...
}
solves the ener stagger before and after the particle stagger.
The only parameters that currently affect the solution are max_time, max_segments, and staggers. The other parameters are reserved for future use. Currently, changing the values of the other parameters will not change the solution obtained.
TIME_SEQUENCE {
staggers = { "particle", "stretch", "eqn1", ..., "eqnN" }
}
STAGGER( "particle" ) {
equation = particle
...
}
STAGGER( "stretch" ) {
equation = stretch
...
}
STAGGER( "eqn1" ) {
equation = user_equation
user_equation = "eqn1"
...
}
...
STAGGER( "eqnN" ) {
equation = user_equation
user_equation = "eqnN"
...
}
If two or more user equations are coupled, it is best to have a single stagger for their coupled solution. See the description of the STAGGER command.