# 3.1. Procedure Time Control

As indicated previously, the primary time control uses a `TIME CONTROL` command block in the procedure scope. The user sets the start time and the termination time for the analysis in the `TIME CONTROL` command block. For reference purposes, the general layout of the command block is as follows:

    BEGIN TIME CONTROL
      BEGIN TIME STEPPING BLOCK <string>time_block_name
        START TIME = <real>start_time_value
        BEGIN PARAMETERS FOR PRESTO REGION <string>region_name
          INITIAL TIME STEP = <real>initial_time_step_value
          TIME STEP SCALE FACTOR =
            <real>time_step_scale_factor(0.9)
          TIME STEP INCREASE FACTOR =
            <real>time_step_increase_factor(1.1)
          STEP INTERVAL = <integer>nsteps(100)
          USER TIME STEP = <real>time_step
          TIME STEP SELECTOR = AUTO
          PRINT BANNER INTERVAL FOR SOLUTION CONTROL =
            <int>print_banner_interval(MAX_INT)
        END [PARAMETERS FOR PRESTO REGION <string>region_name]
      END [TIME STEPPING BLOCK <string>time_block_name]
      # Second TIME STEPPING BLOCK command block
      # would be placed here, as applicable.
      #
      # Additional TIME STEPPING BLOCK command blocks
      # would be placed here, as applicable.
      #
      # Last TIME STEPPING BLOCK command block
      # would be placed here, as applicable.
      #
      TERMINATION TIME = <real>termination_time
    END [TIME CONTROL]

The analysis time, as demonstrated above, can be subdivided into a number of time blocks, i.e., `TIME STEPPING BLOCK` command blocks. If the total analysis time is from time 0 to time \(T\) and there are three blocks, then the first block is defined from time 0 to time \(t_1\), the second block is defined from time \(t_1\) to time \(t_2\), and the third block is defined from time \(t_2\) to time \(T\). (The times \(t_1\) and \(t_2\) are set by the user.) If we sum all the times for each block, the sum will be \(T\). The different time periods defined by each block can be referenced so that we can turn certain functionality on or off throughout an analysis. For example, we may want to have a certain boundary condition turned off during our first time period and activated for the second time period. (Most analyses require only one block.) Use the `ACTIVE PERIODS` or `INACTIVE PERIODS` command lines described in Section 2.6 to activate and deactivate functionality during specific time blocks.

By default, Sierra/SM relies on the element-based critical time step estimate. At every time step, an element-based calculation is performed to determine a critical time step, based on an estimate of the Courant-Friedrichs-Lewy (CFL) condition that uses the effective material moduli. The effective material moduli can be calculated a number of ways, specified by the `EFFECTIVE MODULI MODEL` command line described in Section 6.1.7.8. You also have some direct control over the actual time step that is used by employing one of two techniques. We discuss these two techniques in the following paragraphs. The specific command lines for using these techniques are described in Section 3.1.1.

With the `INITIAL TIME STEP` line command you can set an initial time step that is smaller than the element-based critical time step estimate. Sierra/SM will start the analysis by using your initial time step value instead of the element-based critical time step estimate (as long as your value is less than the element-based critical time step estimate). You can then control the rate at which the time step increases from your initial value. This technique is employed by using the `TIME STEP INCREASE FACTOR` command line as follows:

- When setting `TIME STEP INCREASE FACTOR` to 1, the time step will never increase past the specified value of `INITIAL TIME STEP`. However, if the element-based critical time step is less than the value of the `INITIAL TIME STEP` at some point during the simulation, the time step will be decreased accordingly.

- Setting `TIME STEP INCREASE FACTOR` to a value greater than 1 causes the time step to grow (from the initial time step) at each time step until it reaches the value of the element-based critical time step estimate. From then on, the element-based critical time step estimate will essentially control the time step.

With the second technique, you can manipulate the element-based estimate with either a scale factor or a time step increase factor. This technique is employed by using the `TIME STEP SCALE FACTOR` command line or the `TIME STEP INCREASE FACTOR` command line as follows:

- The element-based estimate for the critical time step is usually smaller than some maximum theoretical value for your model. It may therefore be possible to scale the element-based critical time step estimate by some factor greater than 1. (Your scaled value must remain below the theoretical maximum limit, however. We discuss ways to obtain a critical time step close to the theoretical maximum in later sections of this chapter.)

- If there are stability problems with a particular problem, it may be necessary to scale the element-based estimate with a factor less than 1.

- You can also control the rate at which the time step can increase for an analysis. By specifying a time step increase factor, you can limit the increase in the size of the time step so that it does not increase too rapidly from one step to the next. For certain problems, the element-based critical time step estimate may increase rapidly from one step to the next. Limiting the increase in the size of the time step may enable some problems to run in a more stable fashion.

The `USER TIME STEP` command can be used to explicitly set the integration time step, overriding the critical time step computed by any time step estimation methods. This command can be used to force the analysis to integrate at any specified time step, even a super-critical one.

The `TIME STEP SELECTOR = AUTO` will cause Sierra/SM to select the most advantageous time step from between the standard element based and nodal based time step methods.

Warning

The `TIME STEP SCALE FACTOR` and `USER TIME STEP` commands both provide the ability to force the code to take a time step larger than the stability limit, and thus should be used with caution. If the time step specified with either of these commands is too large, the time integration will add energy to the system, causing the analysis to go unstable and ultimately fail.

Now that we have presented an overview of the functionality in the `TIME CONTROL` command block, we will discuss the actual command lines.

## 3.1.1. Command Blocks for Time Control and Time Stepping

    BEGIN TIME CONTROL
      BEGIN TIME STEPPING BLOCK <string>time_block_name
        START TIME = <real>start_time_value
        BEGIN PARAMETERS FOR PRESTO REGION <string>region_name
          #
          # Time control parameters specific to PRESTO
          # are set in this command block.
          #
        END [PARAMETERS FOR PRESTO REGION <string>region_name]
      END [TIME STEPPING BLOCK <string>time_block_name]
      TERMINATION TIME = <real>termination_time
    END [TIME CONTROL]

Time control resides in a `TIME CONTROL` command block. The command block begins with an input line of the form

    BEGIN TIME CONTROL

and terminates with an input line of the following form:

    END [TIME CONTROL]

Within the `TIME CONTROL` command block, a number of `TIME STEPPING BLOCK` command blocks can be defined. Each `TIME STEPPING BLOCK` command block contains the time at which the time stepping starts and a number of parameters that set time-related values for the analysis. Each `TIME STEPPING BLOCK` command block terminates at the start time of the following command block. The start times for the `TIME STEPPING BLOCK` command blocks must be in increasing order. Otherwise, an error will be generated. (The example in Section 3.1.7 shows the overall structure of the `TIME CONTROL` command block.)

In the above input lines, the values are as follows:

> - The string `time_block_name` is a name for the `TIME STEPPING BLOCK` command block. This name must be unique to each command block of this type. The string `time_block_name` can be referenced in an `ACTIVE PERIODS` or `INACTIVE PERIODS` command line to activate and deactivate functionality (see Section 2.6).

> - The real value `start_time_value` is the start time for this `TIME STEPPING BLOCK` command block. Values set in this block apply from the start time for this block until the next start time or the termination time. The start time may be negative.

> - The string `region_name` is the name of the Presto region affected by the parameters (see Section 2.2).

The termination time for the analysis is given by the following command line:

    TERMINATION TIME = <real>termination_time

Here, `termination_time` is the time at which the analysis will stop. The `TERMINATION TIME` command line appears inside the `TIME CONTROL` command block but outside of any `TIME STEPPING BLOCK` command block.

The `TERMINATION TIME` command line can appear before the first `TIME STEPPING BLOCK` command block or after the last `TIME STEPPING BLOCK` command block. It is permissible to have `TIME STEPPING BLOCK` command blocks with start times after the termination time; in this case, those command blocks that have start times after the termination time are not executed. Only one `TERMINATION TIME` command line can appear in the `TIME CONTROL` command block. If more than one of these command lines appears, an error is generated.

Nested inside the `TIME STEPPING BLOCK` command block is a `PARAMETERS FOR PRESTO REGION` command block containing parameters that control the time stepping.

    BEGIN PARAMETERS FOR PRESTO REGION <string>region_name
      INITIAL TIME STEP = <real>initial_time_step_value
      TIME STEP SCALE FACTOR = <real>time_step_scale_factor(0.9)
      TIME STEP INCREASE FACTOR =
        <real>time_step_increase_factor(1.1)
      STEP INTERVAL = <integer>nsteps(100)
      PRINT BANNER INTERVAL FOR SOLUTION CONTROL =
        <integer>print_banner_interval(MAX_INT)
    END [PARAMETERS FOR PRESTO REGION <string>region_name]

These parameters are specific to a Presto analysis. `PRINT BANNER INTERVAL FOR SOLUTION CONTROL` only applies to a Presto region included in a solution control analysis.

The command block begins with an input line of the form

    BEGIN PARAMETERS FOR PRESTO REGION <string>region_name

and is terminated with an input line of the following form:

    END [PARAMETERS FOR PRESTO REGION <string>region_name]

As noted previously, the string `region_name` is the name of the Presto region affected by the parameters. The command lines nested inside the `PARAMETERS FOR PRESTO REGION` command block are described next. Some of these command lines will be ignored when either of the maximum-eigenvalue methods or the node-based method is used to estimate the critical time step. The discussions of the command blocks associated with these methods indicate whether these command lines are pertinent

## 3.1.2. Initial Time Step

    INITIAL TIME STEP = <real>initial_time_step_value

Presto computes a critical time step for the analysis and uses this value as the initial time step by default. To directly specify a smaller initial time step, use the `INITIAL TIME STEP` command line, where `initial_time_step_value` is the desired initial time step. This command line is only valid if it is in the first `TIME STEPPING BLOCK` command block in the problem.

The value specified for the initial time step will overwrite the calculated value for the critical time step if the specified initial time step is smaller than the critical time step. If you specify an initial time step that is larger than the critical time step, the time step is set to the value of the calculated critical time step.

## 3.1.3. Time Step Scale Factor

    TIME STEP SCALE FACTOR = <real>time_step_scale_factor(0.9)

During the element computations, Presto computes a minimum time step required for stability of the computation (the critical time step). Using the `TIME STEP SCALE FACTOR` command line, you can provide a scale factor to modify the critical time step. A value greater than 1.0 for `time_step_scale_factor` will cause the time step to be greater than the computed critical time step, and thus the problem may become unstable. By default, the scale factor is 0.9.

## 3.1.4. Time Step Increase Factor

    TIME STEP INCREASE FACTOR =
      <real>time_step_increase_factor(1.1)

During an analysis, the computed critical time step may change as elements deform, are killed, and so forth. By using the `TIME STEP INCREASE FACTOR` command line, you can limit the amount that the time step can increase between two adjacent time steps. The value `time_step_increase_factor` is a factor that multiplies the previous time step. The current time step can be no larger than the product of the previous time step and the scale factor.

An increase factor less than 1.0 will cause the time step to continuously decrease. The default value for this factor is 1.1, i.e., a time step cannot be more than 1.1 times the previous step.

## 3.1.5. Step Interval

    STEP INTERVAL = <integer>nsteps(100)

Presto can output data about the current time step, the current internal and external energy, and the kinetic energy throughout an analysis to the log file. The `STEP INTERVAL` command line controls the frequency of this output, where `nsteps` is the number of time steps between output. The default value for `nsteps` is 100.

The output at any given step (read from left to right) is

> - step number,

> - time,

> - time step,

> - global element identifier for element controlling time step

> - kinetic energy,

> - internal energy,

> - external energy,

> - error in energy balance,

> - hourglass energy

> - CPU time, and

> - wall clock time.

The time is at the current time, step n, and the time increment is the previous time step increment from step \(n-1\) to step \(n\).

The error in the energy balance is computed from the following relation:

    energy balance error = (kinetic energy + internal energy
      - external energy) / external energy * 100

The above expression gives a percent error for the energy balance. An error in energy imbalance can indicate one of a number of potential issues:

- Time integration error. Each of the three kinetic, internal, and external energy terms are computed in different ways. Thus an imbalance in the terms could indicate an error in one or more of the terms due to a large time step.

- Something nonphysical (but not necessarily incorrect) has occurred. For example during element death material and the associated energy blinks out of the model. The energy removed by such a process is not guaranteed to balance which gives some indication of the error numerical error introduced by element death. Similarly transferring results between non-matching meshes will tend to generate energy imbalance due to the inherit accuracy limitations of such transfers.

- Instability. A numeric instability (such as taking an unstable time step) will almost always manifest a large energy balance error.

- Energy accounting limitation. Additionally there are a few physical processes for which the energy is not fully accounted by Sierra/SM. One example is energy generating materials such as explosives. If such materials are present the energy in the analysis may not balance, but this would not necessarily indicate anything wrong.

## 3.1.6. Print Banner Interval for Solution Control

    PRINT BANNER INTERVAL FOR SOLUTION CONTROL =
      <integer>print_banner_interval(MAX_INT)

The `PRINT BANNER INTERVAL FOR SOLUTION CONTROL` line command sets the number of output lines to print before re-printing the column headings when a Presto region is used within a solution control analysis. The default value is set to the maximum allowed integer value and means that the column headings will be printed in the solution control log file only at the beginning of each advance of the presto region. A smaller value can be used to print the column headings more often when presto is sub-cycled within a solution control time step.

This command is only applicable when using solution control for a coupled analysis. It will be ignored in a stand-alone presto procedure. To specify the frequency of printing column headings for a presto procedure, see Section 2.2 for the description of the command `PRINT BANNER INTERVAL`.

## 3.1.7. Time Control Example

    BEGIN TIME CONTROL
      BEGIN TIME STEPPING BLOCK p1
        START TIME = 0.0
        BEGIN PARAMETERS FOR PRESTO REGION presto_region
          INITIAL TIME STEP = 1.0e-6
          STEP INTERVAL = 50
        END
      END
      BEGIN TIME STEPPING BLOCK p2
        START TIME = 0.5e-3
        BEGIN PARAMETERS FOR PRESTO REGION presto_region
          TIME STEP SCALE FACTOR = 0.9
          TIME STEP INCREASE FACTOR = 1.5
          STEP INTERVAL = 10
        END
      END
      TERMINATION TIME = 1.0e-3
    END

The first `TIME STEPPING BLOCK`, `p1`, begins at time 0.0, the initial start time, and terminates at time \(0.5 \times 10^{-3}\). The second `TIME STEPPING BLOCK`, `p2`, begins at time \(0.5 \times 10^{-3}\) and terminates at time \(1.0 \times 10^{-3}\), which is the time listed on the `TERMINATION TIME` command line. The `TIME STEPPING BLOCK` names `p1` and `p2` can be referenced by the `ACTIVE PERIODS` or `INACTIVE PERIODS` command lines as described in Section 2.6 to activate and deactivate functionality.