Boundary conditions are the mechanism by which the user can specific state conditions or fluxes across the surfaces of grid cells. Boundary conditions are always applied to grid-cell surfaces and in the case of state conditions are applied at the point of the centroid of the grid-cell surface. In STOMP boundary conditions can only be applied to three types of grid cell surfaces: 1) surfaces on the boundary of the computational domain, 2) surfaces between active and inactive grid cells, and 3) surfaces along the boundary of an internal split in the computational domain. Boundary conditions are always applied to active grid cells and the grid-cell surface to which the boundary condition is applied is in reference to the active grid cell. Grid cells in STOMP have hexahedral geometries and are defined by 8 vertices. Each of the 6 grid-cell surfaces are named according to their orientation in the computational coordinate system (CCS), as described in Table 1 and shown in Figure 1. Grid-cell surfaces are not oriented with respect to the global Cartesian coordinate system (GCS) that defines the location of the grid-cell vertices. The types of boundary conditions which can be applied to surfaces and the specification of those boundary conditions varies among the STOMP Operational Modes, but the application concepts are similar. Boundary conditions require that the user specify the location of the boundary surface and the time history of state condition or flux.

**Figure 1. Grid-cell surface naming**

**Table 1. Grid-Cell Surface Naming and Surface Normals with respect to the computational coordinate system (CCS).**

Grid-Cell Surface Name | GCS Number | GCS Orientation | GCS Position | GCS Surface Normal |
---|---|---|---|---|

Bottom | -3 | X-Y Trending | Lower Surface | Negative Z-Direction |

South | -2 | X-Z Trending | Lower Surface | Negative Y-Direction |

West | -1 | Y-Z Trending | Lower Surface | Negative X-Direction |

East | 1 | Y-Z Trending | Upper Surface | Positive X-Direction |

North | 2 | X-Z Trending | Upper Surface | Positive Y-Direction |

Top | 3 | X-Y Trending | Upper Surface | Positive Z-Direction |

The Boundary Conditions Card is an optional card, but is generally necessary to simulate a particular problem. Boundary surfaces with undeclared boundary conditions are by default zero flux boundaries. The application of boundary conditions in the STOMP Simulator varies across operational modes. Most operational modes allow great flexibility in specifying boundary conditions; whereas, other operational modes limit this flexibility. For those operational modes with full flexibility and multiple phases, the user is not required to have phase equilibrium between phases crossing the boundary surface. For example, it is possible to specify aqueous injection and gas withdrawal concurrently on the same boundary surface for some operational modes. The cost of this flexibility is that the specification of boundary conditions becomes a responsibility of the user.

Application of boundary conditions requires an appropriate conceptualization of the physical problem and translation of that conceptualization into boundary condition form. The variety of boundary condition types available in the simulator should afford the user the flexibility to solve most subsurface flow and transport problems. The boundary condition card reader within the simulator performs limited error checking on the boundary condition inputs. An error free boundary condition card does not guarantee the user has not created an ill-posed problem or an execution that will successfully converge. For example, a mistake frequently made by users is to specify infiltration rates at the top of a column with positive fluxes. While this input would be perfectly acceptable to the boundary condition input reader, the specified condition would actually withdraw flux from the top of the column since the z-axis and z- direction flux are positive in the upward direction.

Boundary conditions in STOMP can vary with time in three ways: 1) linear variation, 2) stepped variation, and 3) cyclic variation. Time varying boundary conditions are created by specifying boundary conditions at multiple points in time; where, time is in reference to the simulation time declared on the __Solution Control Card.__ The first time point of a boundary condition is the start time for the boundary condition and the final time point of a sequence of boundary condition times is the stop time. Two concurrent boundary conditions on the same boundary surface are not permitted. The boundary condition parameters vary between time points in a linear fashion. To create stepped variation in boundary conditions multiple time points are specified with the same times. Cyclic variation of boundary conditions repeats the time sequence until the simulation completes. A boundary condition declared with a single boundary time implies that the boundary condition is time invariant, and the specified boundary time represents the start time for the boundary condition. Prior to the start time the boundary surface will be assumed to be of type zero flux. The specified boundary condition will remain in effect from the start time until the execution is completed. If a boundary condition is declared with multiple boundary times, then the first time listed equals the start time, the last time listed equals the stop time, and the intermediate times are transition points. For simulation times outside of the start and stop time limits, zero flux boundary conditions apply.

There are three general types of boundary conditions: 1) Dirichet, 2) Neumann, and 3) Robin, all named after mathematicians. The Dirichlet boundary condition, named after the French mathematician, Peter Gustav Lejeune Dirichlet, and also known as the first-type boundary condition, is one where a state variable (e.g., temperature, pressure, concentration) is specified on the boundary surface. The state variable is applied at the centroid of the boundary surface. The Neumann boundary condition, named after the German mathematician, Carl Gottfried Neumann, and also known as the second-type boundary condition, is one where the derivative of a variable is specified on the boundary. In the case of STOMP the specification is one of flux and not the derivative directly. For example, a pure Neumann boundary condition for energy would be that of the derivative of temperature with distance, but in STOMP the heat flux is specified. The Robin boundary condition, named after the French mathematician, Victor Gustave Robin, is a linear combination of the Dirichlet and Neumann boundary conditions. Robin type boundary conditions are not generally available in STOMP, except for those operational modes that consider interactions between the atmosphere and ground surface.