Because the eSTOMP simulator is built on STOMP, variable names are nearly identical between the two codes. There are two exceptions to this rule. The first is that Global Array variables exist in eSTOMP to assist in the parallel execution of the code. Since these variables are temporary and only used to distribute data among the processors, they are not identified here. The second exception is a distinction in the variables used to represent velocities. In eSTOMP, velocities are calculated in the average_v.F90 routine, where v_x, v_y and v_z represent the velocities in the x-, y- and z- directions, respectively.
STOMP principal variables are defined in modules, which are included in nearly all subroutines. This approach reduces the number of arguments that are passed between routines and increases the readability of the code, because variable names remain unchanged between routines.
A list of common variables can be found here.
Field variables are defined at node points and are represented with two-dimensional arrays.
Examples of field variables include:
The first index of a field variable indicates the time step or increment status.
The second index of a field variable indicates the node number. The dimension of the first index depends on the operational mode or equivalently number of coupled flow equations; where the dimension will equal the number of unknowns plus two. Therefore, field variables at each node comprise a number of elements equal to the number of unknowns plus two. Each element for each field variable contains a variant on the field variable. For example, the first element or index contains the value of the field variable at the previous time step. A list of field variable variants is shown in Table 1.
Table 1. Field Variable Indexing Scheme
|1||Previous time step value|
|2||Current iteration or time step value|
|3||First primary variable incremented|
|4||Second primary variable incremented|
|5||Third primary variable incremented|
|6||Fourth primary variable incremented|
Flux variables are defined on node surfaces between node points or on boundary surfaces and are represented with two dimensional arrays. Examples of flux variables include heat fluxes, Darcy phase velocities, and component diffusion/dispersion fluxes. Flux variables are aligned with one of the primary orthogonal coordinate directions. Flux variables names that begin with the character 'U' are aligned with the x- or radial-direction coordinate, those which begin with the character 'V' are aligned with the y- or azimuthal-direction coordinate, and those which begin with the character 'W' are aligned with the z‑direction coordinate. The first index of a flux variable indicates the increment status and the second index indicates the surface number. Unlike field variables, previous time-step fluxes are not stored. Surface numbers do not correspond directly to node numbers. The number of surfaces in any given coordinate direction equals the number of nodes in that direction plus one.
A list of the flux variable variants is shown in Table 3. The primary variable order and corresponding field variable variant index depend on the operational mode. In Table 3, the upper node refers to the node in the east, north, or top direction (positive x-, y-, or z-direction) with respect to the surface. Likewise, the lower node refers to the node in the west, south, or bottom direction (negative x-, y-, or z‑direction) with respect to the surface.
Table 3. Flux Variable Indexing Scheme
|1||Current iteration or time step value|
|2||First primary variable in the upper node incremented|
|3||First primary variable in the lower node incremented|
|4||Second primary variable in the upper node incremented|
|5||Second primary variable in the lower node incremented|
|6||Third primary variable in the upper node incremented|
|7||Third primary variable in the lower node incremented|
|8||Fourth primary variable in the upper node incremented|
|9||Fourth primary variable in the lower node incremented|