# 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.

Figure 1: The timestep in Itasca software.

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 FLAC3D) 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.

Figure 2: Schematic of a series of cycles. Single calculation cycles are undertaken until one or more solve limits are met.

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