# Time Integration Specifications¶

The first card in this section dictates whether the problem is a steady state or transient simulation.
This card is required. If the *steady state* option is chosen, then the remaining input records are not
required, as the rest of the records are used to set parameters for transient simulations, e.g., time
step size, time step error control, etc. Some records are optional even for a transient simulation, as
indicated below. It should be noted that the mass-matrix term multiplier in the *Problem
Description section* (see, for example, the *EQ=* cards), must be set to one (1) for the transient run
to evolve the fields in time. The only equations that are taken as purely quasi static are the
*EQ=mesh* equations for the situation in which the *Mesh Motion* type is *Arbitrary*.

In addition to the transient parameter information, some Level-Set function information is also
supplied to *Goma* in this section. The method of Level-Sets is used to track fluid-fluid or fluidsolid
interfaces in an Eulerian fashion, making the problem inherently transient.

## Time Integration¶

```
Time integration = {steady | transient}
```

### Description / Usage¶

This required card is used to specify transient or steady-state calculation. Valid options are:

- steady
For a solution to the steady (time-derivative free) equations.

- transient
For transient simulations.

If option **steady** is chosen, then none of the other Time Integration Specification cards
in this section are needed.

### Examples¶

This is a sample card for a steady state simulation:

```
Time integration = steady
```

This is a sample card for a transient simulation:

```
Time integration = transient
```

## delta_t¶

```
delta_t = <float>
```

### Description / Usage¶

This card is required for **transient** simulations to set the value of the initial time step.
The input parameter is defined as:

- <float>
Any floating point number that indicates the time step in the appropriate units for your problem.

To specify a fixed time step size for an analysis, set <float> to be a negative number,
e.g. -1.0e-6; the code will use a constant (positive) time step. Should convergence
problems occur when a fixed step size is specified, the size of the time increment
entered for the *delta_t* card will be reduced by half until convergence is achieved. Once
a constant time step is reduced, it will not be increased.

### Examples¶

Following is a sample card for an initial time step:

```
delta_t = 6.e-03
```

If a constant time step is desired, use a negative value:

```
delta_t = -6.e-03
```

## Maximum Number of Time Steps¶

```
Maximum number of time steps = <integer>
```

### Description / Usage¶

This card sets the maximum number of time steps that may be performed for a
**transient** simulation. *Goma* will stop if this limit is reached. The input parameter is
defined as

- <integer>
Any integer greater than zero, which will limit the number of time steps taken in a simulation.

### Examples¶

The following sample card sets the maximum number of time steps to 100:

```
Maximum number of time steps = 100
```

## Maximum Time¶

```
Maximum time = <float>
```

### Description / Usage¶

This card sets the maximum value of time that may be achieved in a **transient**
simulation. *Goma* will stop if this limit is reached. The input parameter is defined as:

- <float>
Any floating point number in the same units as specified in the

*delta_t*card.

The last result written to the EXODUS II and soln.dat file in a successfully completed simulation will always be at the maximum time. This provides a cutoff time beyond which the simulation will terminate.

### Examples¶

The following sample card sets the maximum time to 105 (in units consistent with your simulation):

```
Maximum time = 105.
```

## Minimum Time Step¶

```
Minimum time step = <float>
```

### Description / Usage¶

This card sets the value of the minimum allowable time step size in a **transient**
analysis, a useful control if the time step is being decreased due to poor convergence of
the transient or iterative algorithm. The input parameter is defined as

- <float>
Any floating point number in the same units as specified in the

*delta_t*card.

### Technical Discussion¶

This specification provides a graceful way for the program to terminate based on the computed time step dropping below the minimum value rather than terminating by a segmentation fault or a divide-by-zero error that could result if the time step becomes too small without the benefit of this control.

## Maximum Time Step¶

```
Maximum time step = <float>
```

### Description / Usage¶

This card sets the value of the maximum allowable time step size in a **transient**
analysis, where the input parameter is defined as

- <float>
Any floating point number in the same units as specified in the

*delta_t*card.

### Technical Discussion¶

This setting is useful for advection dominated simulations, such as FILL, where a Courant-like limit must be set on the value of the time step for optimal performance.

## Minimum Resolved Time Step¶

```
Minimum Resolved Time Step = <float>
```

### Description / Usage¶

Its role is to set a lower bound for the time step with respect to the **Time step error**
tolerance. When a converged time step is obtained by GOMA, the difference between
the predicted solution and final solution for that time step is compared to the **Time step
error** tolerance. If the difference exceeds this tolerance the step fails and the time step
is cut (usually by a factor of 2), UNLESS the time step falls below the **Minimum
Resolved Time Step** size. In this case the step is accepted, even if this error tolerance is
not achieved. This provides a mechanism for the modeler to control what phenomena is
resolved and what phenomena is ignored.

- <float>
Any floating point number in the same units as specified in the

*delta_t*card.

### Examples¶

A sample card that sets the maximum time step to 10.0 follows:

```
Maximum Resolved Time Step = 10.0
```

### Technical Discussion¶

See GT-034 for a thorough discussion.

### References¶

GT-034: Tutorial on time step parameter selection for level-set problems in GOMA. April 1, 2006. D. R. Noble

## Courant Number Limit¶

```
Courant Number Limit = <float>
```

### Description / Usage¶

This parameter’s roll is to control time step growth based on the well-known Courant number criterion. This card applies only to level-set problems. This card imposes an upper limit on the time step size, irrespective of the variable time integrator already in place.

- <float>
Any floating point number to indicate the Courant number limit.

### Technical Discussion¶

See GT-034 for a thorough discussion.

### Theory¶

The time step limit imposed by this limit is computed as

Here \(e\) is the element, \(h_e\) is the average size of the element, \(C\) is the specified Courant number, and

### References¶

GT-034: Tutorial on time step parameter selection for level-set problems in GOMA. April 1, 2006. D. R. Noble

## Time Step Parameter¶

```
Time step parameter = <float>
```

### Description / Usage¶

This card allows the user to vary the time integration scheme. The usual settings are:

0.0 |
Backward Euler method (1st order in time) |

0.5 |
Trapezoid rule (2nd order in time) |

### Examples¶

This is a sample card that sets the time integration scheme to Trapezoidal rule:

```
Time step parameter = 0.5
```

### Technical Discussion¶

One should usually use the Trapezoid rule. When a large time step \(\Delta t\) is used the Trapezoid rule can exhibit oscillations. If such a large \(\Delta t\) is required then the Backward Euler method can be used (it will damp oscillations), albeit at a cost of accuracy.

If we designate the time step parameter as \(\theta\), the solution at time step \(n\) as \(y^n\), and the PDE to be solved as

then the time integration method takes the form

where

Note that there is no choice of finite \(\theta\) that will yield a Forward Euler method. See Gartling (1987) for more information.

### FAQs¶

For porous flow problems with mass lumping, you should always choose backward Euler method.

### References¶

SAND86-1816: NACHOS 2: A Finite Element Computer Program for Incompressible Flow Problems - Part 2 - User’s Manual, Gartling, David K. (September, 1987).

## Time Step Error¶

```
Time step error = <float> <integer_list>
```

### Description / Usage¶

The time step error controls the adjustable time step size based on the difference
between the solution and the predicted solution (L_{2} norm). The first of the eight
arguments is a floating point number that indicates the error in the time step selection.

- <float>
the error value, any floating point number.

The smaller this number is, the smaller the time step will tend to be in the automatic time step control. The original implementation of this capability in

*Goma*did not use a normalized value for the norm; to enable this most useful feature, use a negative value of the time step error and a positive, normalized norm will be computed. This way a percentage value of the solution error will be set.- <integer_list>
seven integers, with a value either zero (0) or one (1).

A further degree of control is offered by the seven integers (i

_{1}through i_{7}) that identify which solution variables will contribute to the error norm calculations. Permissible values for each of these seven integers are 0 and 1. The correspondence between the integers and variables is as follows:i

_{1}(pseudo) solid displacement

i

_{2}fluid velocity

i

_{3}temperature

i

_{4}concentration, porous liquid pressure, gas pressure, porosity, saturation

i

_{5}pressure

i

_{6}fluid (polymer) extra stress

i

_{7}voltage

A value of 0 for an integer directs

*Goma*to exclude contributions from that variable in the error norm calculation; correspondingly, a value of**1**means that variable should be included.

### Examples¶

A sample time step error card follows:

```
Time step error = 0.01 0 1 1 1 0 0 0
```

In this example, the L_{2} norms for the fluid velocity, temperature, and concentration are
summed (and scaled) prior to comparison with the target error value of 0.01. If the
norms of the velocity, temperature, and concentration variables is greater than 0.01, the
time step is halved and the step repeated. Otherwise, the current step size is compared
to other step criteria before continuing to the next step.

If the integer values are omitted, the scaled error norm becomes infinite and the analysis will terminate in the error norm calculation with an arithmetic overflow.

### Examples¶

To use the normalized value of the norm, the following would be specified:

```
Time step error = -0.01 0 1 1 1 0 0 0
```

This would set the maximum time step error to be 1%.

### Technical Discussion¶

Note that on porous flow problems the error in step-size is computed as a composite measure of all porous-flow variables, viz. these cannot currently be controlled separately.

## Printing Frequency¶

```
Printing Frequency = <integer> [float]
```

### Description / Usage¶

This card sets the printing frequency, the step or time interval, at which *Goma* will print
the solution variables to the *Output EXODUS II file* and the *SOLN file*. Definitions of
the <integer> options, and the dependent [float] option when <integer> is set to 0, are:

- <integer>
Specifies how often the solution will be printed.

> 0

Interval in time steps between successive printings of the solution, any positive integer value.

0

Controls printing of the solution at regularly spaced (uniform) intervals of time (every [float]), regardless of the number of time steps over that time interval

- [float]
Elapsed time (in the same units as specified in the

*delta_t*card) between successive printings of the solution (any positive number).

### Examples¶

*Goma* will print the solution every five time steps given the following sample card:

```
Printing Frequency = 5
```

*Goma* will print the solution every ten time units given the following sample card:

```
Printing Frequency = 0 10.
```

## Fix Frequency¶

```
Fix Frequency = <integer>
```

### Description / Usage¶

- <integer>
fix frequency relative to number of prints (0 is disabled)

### Examples¶

Following are sample cards:

```
# Fix every print
Fix Frequency = 1
```

```
# Fix every 5 prints
Fix Frequency = 5
```

## Second Frequency Time¶

```
Second frequency time = <float1> <float2>
```

### Description / Usage¶

This card allows the time between successive writings of the solution to change after a
specified time and is only used if the <integer> in the *Printing Frequency* card is set to
0. Definitions of input parameters are as follows:

- <float1>
Any number indicating the time at which the printing frequency should shift from that specified in the

*Printing Frequency*card to <float2>.- <float2>
Printing frequency in time units (same units as specified in the

*delta_t*card) for printing the solution at times greater than <float1>.

### Examples¶

The following is a sample card that will change the printing frequency to print every 3 time units after 15 time units:

```
Second frequency time = 15. 3.
```

## Initial Time¶

```
Initial Time = <float>
```

### Description / Usage¶

This card sets the time at which the calculation starts. The input parameter is defined as

- <float>
Any number indicating the initial solution time (in the same units as specified in the

*delta_t*card). An additional feature can be triggered if this float is specified to be negative, which triggers GOMA to look for the nearest restart time in the restart ExodusII database to use as the start time. Note that this option can only be used with Initial Guess options of read_exoII_file or read_exoII.

Normally, the value of <float> will be set to zero unless the problem is a continuation of a previous transient problem.

### Examples¶

The following is a sample card that shows a restart at 45 time units:

```
Initial Time = 45.0
```

The following is a sample card that triggers Goma to look for a restart time of 10 time units, or the closest time value to 10 time units, to start from:

```
Initial Time = -10.0
```