**automatic_time
#
Description#
This procedure sets automatic calculation of the time stepping (increments) within a sequence. The method will attempt to optimize time steps based on user adjustable convergence and accuracy parameters, and also provide divergence control. The optimization parameters are currently limited to the following:
optimal number of iterations per increment.
maximum variation in material variables (e.g. max allowable plastic flow).
The step calculation is made by first examining the integrated material variables on which control has been set. The estimation of the next step size will then be:
with \(\Delta t_{i}\) the last increment of time (just solved),
\(\Delta t_{i+1}\) the new estimated time step, \(\Delta v_{i}\) the
internal variable increment just achieved, and \(\Delta v\) the
desired internal variable increment. This value is calculated for each
of the controlled internal variables. The new time increment to be used
for the next increment will be the minimum of these
\(\Delta t_{i+1}\) values. It is remarked that control may be placed
on any of the internal variables existing in the problem. This includes
variables defined for only a portion of the structure in a
multi-material problem. The problem variables may be confirmed at
run-time with the -v
command line switch or the **verbose
output
command.
If the time stepping is also controlled by the number of desired iterations, an additional estimation of time step is made as follows:
with \(ni\) the number of iterations for the last convergence, and \(nc\) the desired number of iterations. All other variables are as described above. The next time increment will be taken as the minimum value calculated from the internal variable control and the iteration control.
As the time step is determined from the previous time step, it remains to define the initial time step in a sequence. This initial step may be given using two different methods.
The default method uses the number of increments in the sequence as defined under the
**sequence
command (the*increment
sub-command). This method gives the standard \(\Delta t_0 = \Delta t_{sequence} / \mbox{\# increments}\).Explicitly enter the first time step with the
first_dtime
sub-command described below.
Divergence control is available when the maximum number of allowable
iterations is passed within any of the defined increments. The
sub-command *divergence
will allow specifying a dividing factor used
to reduce the time step. The maximum number of successive divergences is
also adjustable.
If the increment of all controlled internal variables is less than the
desired amount, or if the convergence is achieved in less than the
desired number of iterations, the time step will be increased by a user
defined factor (*security
) in order to accelerate the solution.
Syntax#
The following syntax is used to define the automatic time-stepping in a calculation:
**automatic_time
[ type ]( var1 val1 [ var2 val2 … ] | global
iter | mandatory
)
[ *divergence
div [ times ] ]
[ *security
ratio ]
[ *max_dtime
max_dtime [ max_dtime2 … ] ]
[ *min_dtime
min_dtime [ min_dtime2 … ] ]
[ *first_dtime
first_dtime [ first_dtime2 … ] ]
Options |
Description |
---|---|
|
Automatic time assuming that the loading path is basically continuous. If mandatory is specified the indicated incremental value is considered to be mandatory: if the increment of the specified variable is too large, one considers that a divergence occurred, and the automatic time will reduce the time step. |
|
The algorithm is initialized to the user’s increment input for each sequence; recommended for cyclic loading for example. |
|
Automatic time only to control divergence; the input increments will be used except when a divergence occurs. |
*divergence
div [ times ]Divergence control taking a real value for the devising factor div and an integer for the number of allowable divergences times. The default value for times is one.
*first_dtime
first_dtimeSet the first time step in all sequences with the real value first_dtime. This option is advised only for monotonic or other simple loading paths. A list of first_dtimes may also be given, corresponding to the first dtime of each sequence. The last is implicitly repeated, if necessary.
*max_dtime
max_dtimeSet the maximum allowable time step to the real value max_dtime. In the case of overestimating the number of iterations or change in the internal variables, this option will limit the acceleration of solution.
*min_dtime
min_dtimeSet the minimum time step to the real value min_dtime. In the event where the number of iterations or the change in internal variables are grossly underestimated, this option will limit the time step to a minimum value. It prevents extreme reduction of the time step which will effectively limit the calculation from advancing further.
*security
ratioDefines the multiplicative factor used to increase the time step in the event of good convergence or small changes of the internal variables. The parameter ratio is a real value specifying the factor to be used.
If automatic_time
exhibits strange behavior with small or large time
steps, try to use ***dimension
instructions.
Example#
A very frequent use of this command follows:
**automatic_time global 3
*divergence 2.0 10
*security 1.2
Frequently it is a good idea to keep the allowable iterations small
(**sequence
*iteration
command), and let the automatic time
reduce the step size more readily.
Some other variations to control accuracy based on changes in material variables follow.
**automatic_time evcum 0.001 eel11 0.001 global 5
**automatic_time f 0.01 p 0.01
*divergence 2.0 50
*security 1.2
*max_dtime 0.03
*min_dtime 0.001