# Timestep

Itasca numerical modeling codes are calculation engines that use an explicit solution to Newton’s laws of motion. The explicit solution is the backbone of the program, to which additions or optional permutations (implicit calculations for thermal solutions, dynamic multi-stepping for dynamic calculations, and so on) are added as needed.

The model state is advanced in a forward march of calculation loops called timesteps (or simply steps). Each loop is composed of a sequence of operations, termed the cycle sequence. From code to code, the exact operations forming that sequence varies — as is necessary for the job of that particular code. Each specific sequence is enumerated below. But for all codes, the general pattern of the sequence may be visualized as follows.

A step (or, frequently, “cycle”) is one iteration of the circuit above. While equations of motion are performed, forces are fixed for all elements; while constitutive equations are solved, effects stemming from motion (displacements in PFC; strain rates in FLAC[1]) are fixed. This works because the explicit solution scheme assumes that information cannot propagate a distance of more than one element in one timestep. Therefore the length of the timestep depends on the material density, contact or zone stiffnesses and the element sizes.

Starting and Stopping Cycling

Setting this process in motion — cycling — occurs by issuing either a `model cycle` or `model solve` command. Cycling continues until one or more solve limits are reached. When using the `model cycle` command, the solve limit is a number of cycles that is specified in the command. Cycling terminates when that number is reached. When using the `model solve` command, on the other hand, multiple solve limits can be specified simultaneously. Cycling is terminated when at least one solve limit has been met. A number of solve limits are built into the program (see the `model solve` documentation for details). In addition, one or more FISH functions can be specified as solve limits, allowing for custom cycling termination criteria.

During the initialization phase, the model data structures are set up, variables used during cycling are reset, and the model state is checked for validity in the sense that cycling can commence. This might occur for a number of reasons (for instance, in PFC, cycling cannot occur if any balls or clumps have 0 mass as the results would be undefined; in FLAC3D cycling cannot occur if there are zones that have not been assigned a constitutive model, and so on). The operations that compose the cycle sequence (see below) are performed during each calculation cycle. After the completion of the calculation cycle, the solve limits are checked and, should one or more be met or exceeded, cycling terminates. If no solve limits are met, additional calculation cycles are performed. During the finalization phase, model elements are created/deleted and data structures requiring validation are updated to ensure that the model state is consistent prior to returning the interactive console to the user for further input.

The user may manually terminate cycling from the toolbar or by pressing the Shift+Esc key combination while cycling. If manual cycling termination is requested, the current calculation cycle is completed and the finalization stage is executed before returning control to the user.

The Cycle Sequence

The sequence of operations executed during each calculation cycle is termed the cycle sequence. The cycle sequence consists of an ordered set of operations where each operation has a floating point number assigned to it, termed a cycle point. The tables below lists the specific operations and associated cycle points for each Itasca code.

PFC Cycle Sequence

Table 1: Cycle Operations and Associated Cycle Points

Cycle Point

Cycle Operation

-10.0

Validate data structures

0.0

Timestep determination

10.0

Law of motion (or update thermal bodies)

15.0

Body coupling between processes

20.0

30.0

Update spatial searching data structures

35.0

Create/delete contacts

40.0

Force-displacement law (or thermal contact update)

42.0

Accumulate deterministic quantities

45.0

Contact coupling between processes

60.0

Second pass of equations of motion (not used in PFC)

70.0

Thermal calculations (not used in PFC)

80.0

Fluid calculations (not used in PFC)

In Detail: PFC

See Cycling for a step by step description of this cycle sequence in PFC.

Endnote