STOMP User Guide
Subsurface Transport Over Multiple Phases
STOMP User Guide
Subsurface Transport Over Multiple Phases
Operational Mode Specific User Guides
The STOMP simulator has a modular design where source code configurations are referred to as operational modes. Operational modes are classified according to the solved governing flow and transport equations and constitutive relation extensions. Therefore, prior to creating an input file or assembling the source code, the user must choose the appropriate operational mode for the particular subsurface system of interest. Each operational mode allows the solution of solute transport equations. The selection of an operational mode requires that the user conceptualize the physical system as a computational system, which will always require making simplifying assumptions about the physical system. The complexity and execution speed of an operational mode is generally inversely related to the number of simplifying assumptions the user can justify about the physical system. Regardless of the operational mode complexity, the simulation of physical subsurface systems with the STOMP simulator always involves assumptions inherent to the founding governing equations and constitutive relations.
See the input file guidelines page where input information common to all operational modes is presented.
The main STOMP input file consists of "Cards" which are merely a way of organizing the inputs by category. Some cards are required and others are optional. The specific cards that are needed depend on the operational mode and the problem being solved. Missing input cards are reported to the screen and to the output file, however, if any of the required cards for a specific mode are missing, an error message will be generated and the code execution will stop.
A list of required and optional cards for a particular operational mode can be seen by selecting one of the tabs above. For each card, a link is provided to that particular card's page where a general description, options, syntax, and examples for that card are provided.
STOMP-CO2 Inputs
The STOMP-CO2 simulator solves three coupled conservation equations: water mass, CO2 mass, and salt mass; with the potential for aqueous and gas mobile phases and a precipitated salt solid phase. STOMP-CO2E additionally solves the energy equation. The ECKEChem Module used to simulate geochemical reactions is available for STOMP-CO2.
For general rules and tips for input files see Input File Structure
Required Input Cards:
Simulation Title Card
This card primarily provides a means to document a simulation. Information recorded in this card is rewritten in the output file, which then serves as a permanent record of the simulation. The user is encouraged to use descriptive titles and to briefly describe the purpose of the simulation in the Simulation Notes section of the card. This becomes especially valuable when the user is making repeated simulations with small modifications to the input parameters. The time required to indicate these changes in either the Simulation Title or Simulation Notes section will be invaluable when reviewing archived output files.
- Formatting instructions for documenting a simulation are provided on the Card Syntax page
- Examples of Simulation Title Cards are provided on the Card Examples page
Solution Control Card
This card controls many of the general operational aspects of a simulation. The execution mode (Normal or Restart) and execution parameters such as time stepping and convergence criterion can be specified. Keywords can be included to indicate that solute transport or reactive transport are to be solved. This card also allows the user to specify certain solution schemes if the default approach is not appropriate for a particular problem.
- Options for execution modes and solution schemes are provided on the Card Options page
- Formatting instructions for solution control parameters are provided on the Card Syntax page
- Examples of Solution Control Cards with and without solutes and geochemistry are provided on the Card Examples page
Grid Card
This card is used to specify the grid structure used with the STOMP simulator’s integral finite difference formulation. All STOMP grids are structured and orthogonal to nearly orthogonal, with hexahedral grid cells. Grids can be specified with either relative or absolute coordinates. In other words, STOMP does not require the origin to be at 0,0,0. Grids may be specified as map projections (ie., UTM or State Plane) with their corresponding units (meters or feet). However, geographic coordinate systems (ie., latitude-longitude) are not accepted. Vertical coordinates can be specified as elevation or as relative coordinates. The origin of STOMP grids is in the lower, left hand, front, corner. A number of different ways of specifying grids are available in STOMP.
- Descriptions of the various grid card options (i.e.,cartesian, cylindrical, and boundary fitted) are provided on the Card Options page
- Formatting instructions for specifying the grid are provided on the Card Syntax page
- Examples of Grid Cards are provided on the Card Examples page
Rock/Soil Zonation Card
Intrinsic properties of geologic media are attributed to grid cells in STOMP via the association of properties with rock/soil types and then the association of those rock/soil types with grid cells. A computational domain with homogeneous geologic intrinsic properties can be created in STOMP by defining a single rock/soil type and then associating that rock/soil type with all the grid cells. A computational domain with fully heterogenous geologic intrinsic properties can also be created in STOMP by specifying a unique rock/soil type for every grid cell. The central concept in specifying intrinsic properties of geologic media to grid cells in STOMP is to first associate those properties with rock/soil types and then specify the distribution of rock/soil types to the grid cells. The specification of rock/soil types with grid cells will be referred to as rock/soil zonation.
- Descriptions of the various rock/soil zonation options (i.e., explicit zonation, external files, or IJK Indexing) are provided on the Card Options page
- Formatting instructions for specifying rock/soil zonation are provided on the Card Syntax page
- Examples of Rock/Soil Zonation Cards are provided on the Card Examples page
Mechanical Properties Card
This card allows the user to assign values to the particle density,porosity,specific storativity,compressibility,and tortuosity functions for each defined rock/soil type. Every rock/soil type defined on the Rock/Soil Zonation Card must be referenced. With the IJK Indexing option, node dependent parameters are entered via external files and node independent parameters are entered directly on the card. For fractured systems, if the dual porosity/permeability option is specified in the Rock/Soil Zonation Card, then mechanical properties for both the matrix and fractures is specified.
- Descriptions of the various mechanical property options are provided on the Card Options page
- Formatting instructions for specifying mechanical properties are provided on the Card Syntax page
- Examples of Mechanical Properties Cards are provided on the Card Examples page
Hydraulic Properties Card
This card is used to assign values to the intrinsic permeability or hydraulic conductivity of each defined rock/soil type. Every rock/soil type defined on the Rock/Soil Zonation Card must be referenced. With the IJK Indexing option, node dependent parameters are entered via external files and node independent parameters are entered directly on the card. For fractured systems, if the dual porosity/permeability option is specified in the Rock/Soil Zonation Card, then hydraulic properties for both the matrix and fractures is specified.
- Descriptions of the various hydraulic property options are provided on the Card Options page
- Formatting instructions for specifying hydraulic properties are provided on the Card Syntax page
- Examples of Hydraulic Properties Cards are provided on the Card Examples page
Saturation Function Card
Functional models in STOMP-CO2 include the van Genuchten model (1980), the Brooks and Corey model (1966), and the Haverkamp model (1977). These van Genuchten and Brooks and Corey models can be used in association with the dual continuum model (Klavetter and Peters 1986; Nitao 1988). The van Genuchten and Brooks and Corey models can also be implemented with gas entrapment by using the keyword, Entrapment. The entrapment model requires one additional input parameter, the actual maximum trapped gas saturation. To extend the saturation function below the aqueous residual saturation, functional extensions are required. STOMP-CO2 recognizes the extension described in Webb (2000). This extension function works with both the van Genuchten and Brooks and Corey characteristics functions, without requiring additional input as the oven-dried head is assumed to be equal to a capillary pressure of 109 Pa (~105 m).
- Saturation function models, model options and model parameters are provided on the Card Options page
- Formatting instructions for specifying the saturation function models and parameters are provided on the Card Syntax page
- Examples of Saturation Function Cards are provided on the Card Examples page
Aqueous Phase Relative Permeability Card
The aqueous relative permeability functions relate phase saturations with aqueous relative permeability. The Aqueous Relative Permeability Card is used to specify model options and parameters. Every rock/soil type defined on the Rock/Soil Zonation Card must be referenced. With the IJK Indexing option, node dependent parameters are entered via external files and node independent parameters are entered directly on the card. The Mualem and Burdine aqueous relative permeability functions are also dependent on the saturation function type and are strictly applicable to the van Genuchten (1980) and Brooks and Corey (1966) functions. For these functions, either the van Genuchten ‘m’ parameter or the Brooks and Corey ‘λ’ parameter can be defaulted to the values entered or defaulted with the saturation function. Functional forms for the aqueous relative permeability-saturation functions are preferred, but tabular input is acceptable. By default, tabular data will be interpolated using linear interpolation, whereas values beyond the table limits will be assigned either the table minimum or maximum values appropriately.
- Aqueous relative permeability models, model options and model parameters are provided on the Card Options page
- Formatting instructions for specifying the aqueous phase relative permeability models and parameters are provided on the Card Syntax page
- Examples of Aqueous Phase Relative Permeability Cards are provided on the Card Examples page
Gas Phase Relative Permeability Card
The gas relative permeability functions relate phase saturations with gas relative permeability. The Gas Relative Permeability Card is used to specify model options and parameters. Every rock/soil type defined on the Rock/Soil Zonation Card must be referenced. With the IJK Indexing option, node dependent parameters are entered via external files and node independent parameters are entered directly on the card. The Mualem and Burdine gas relative permeability functions are also dependent on the saturation function type and are strictly applicable to the van Genuchten (1980) and Brooks and Corey (1966) functions. For these functions, either the van Genuchten 'm' parameter or the Brooks and Corey 'λ' parameter can be defaulted to the values entered or defaulted with the saturation function. Functional forms for the gas relative permeability-saturation functions are preferred, but tabular input is acceptable. By default, tabular data will be interpolated using linear interpolation, whereas values beyond the table limits will be assigned either the table minimum or maximum values appropriately.
- Gas relative permeability models, model options and model parameters are provided on the Card Options page
- Formatting instructions for specifying the gas phase relative permeability models and parameters are provided on the Card Syntax page
- Examples of Gas Phase Relative Permeability Cards are provided on the Card Examples page
Thermal Properties Card (not required for isothermal mode)
This card allows the user to assign values to the thermal conductivity and specific heat for each defined rock/soil type. Every rock/soil type defined on the Rock/Soil Zonation Card must be referenced. With the IJK Indexing option, node dependent parameters are entered via external files and node independent parameters are entered directly on the card. This card is required only for simulations involving the solution of the energy conservation equation.
- Options for the thermal conductivity functions are provided on the Card Options page
- Formatting instructions for specifying thermal properties are provided on the Card Syntax page
- Examples of Thermal Properties Cards are provided on the Card Examples page
Salt Transport Card
Aqueous diffusion coefficients for salt in STOMP-CO2 and STOMP-CO2e are computed internally. The values specified in the Salt Transport Card are only used to define geologic media dependent dispersivities for salt. For every porous media defined on the Rock/Soil Zonation Card, dispersivities must be referenced. With the IJK Indexing option, node dependent parameters are entered via external files, and node independent parameters are entered directly on the card. Longitudinal Dispersivity is defined with respect to dispersion along the flow path and is assumed to be independent of the flow direction with respect to the porous media structure. Likewise, Transverse Dispersivity is defined with respect to dispersion transverse to the flow path, independent of the flow direction.
- Formatting instructions for specifying salt transport properties are provided on the Card Syntax page
- Examples of Salt Transport Cards are provided on the Card Examples page
Initial Conditions Card (not required for restart)
This card is used to establish state conditions at the start of the simulation for all grid cells. The user must specify at least two of the following parameters at every grid cell: 1) aqueous pressure, 2) gas pressure, 3) aqueous saturation. The default initial temperature is 20˚C and the default initial gas pressure is 101325 Pa. If the simulation involves passive solutes, the Initial Conditions Card can be used to specify solute concentrations at the start of the simulation. Likewise if the simulation involves reactive species using the ECKEChem module, then initial species concentrations can be specified. The default solute and species concentrations are zero. There is no particular order required for parameters on the Initial Conditions Card. State condition errors that arise from specifications on the Initial Conditions Card are generally noted and indicated via the state condition check routine. For restart simulations, the Initial Conditions Card is not required, but can be used overwrite values stored in the restart file.
- General concepts for applying initial conditions are provided on the Card Description page
- Options for specifying initial conditions are provided on the Card Options page
- Formatting instructions for specifying initial conditions are provided on the Card Syntax page
- Examples of Initial Conditions Cards are provided on the Card Examples page
Output Control Card
This card allows the user to control output written to the output file, plot.n file (where n is the timestep number), and screen (i.e., standard input/output device (STDIO)). The output file contains an interpreted and reformatted version of the input and simulation results for selected variables at selected reference nodes over the simulation period. The plot.n file contains values of geometric parameters and selected variables for the entire computational domain (both active and inactive nodes) at selected simulation times. A plot.n file will always be generated at the conclusion of an execution. The screen output primarily comprises the reference node variable results versus simulation time and/or time step. It is recommended that the user request screen output, because well chosen output may be invaluable in tracking the simulation progress and identifying possible input errors. If a suite of repetitive simulations is being performed, then screen output can be reduced to minimum values.
- Descriptions of the options of the output variables are provided on the Card Options page
- Formatting instructions for specifying output variables are provided on the Card Syntax page
- Examples of Output Control Cards are provided on the Card Examples page
Optional Input Cards:
Inactive Nodes Card
This card is used to declare inactive nodes within the computational domain. Inactive nodes are those nodes that will remain permanently excluded from the computational domain. Because inactive nodes reduce the number of unknowns and, therefore, increase execution speed, their use is recommended. Inactive nodes can be used to simulate irregular boundaries or define impervious zones. Inactive nodes can also be used to define internal boundary surfaces. Boundary conditions may be applied to any surface between an active and inactive node. Boundary condition definitions, however, must refer to an active node. Examples of appropriate uses for inactive nodes include representation of the atmosphere above a sloping surface, or conversely, a non-horizontal water table along the bottom of a domain.
- Descriptions of the inactive nodes options are provided on the Card Options page
- Formatting instructions for specifying inactive nodes are provided on the Card Syntax page
- Examples of Inactive Nodes Cards are provided on the Card Examples page
Boundary Conditions Card
This card is used to impose state conditions or fluxes across grid-cell surfaces that are not coupled to an adjacent grid cell (e.g., external boundary surfaces). Depending on the nature of the boundary condition and problem, the boundary condition input structure may be quite simple to rather complex. For STOMP-CO2 the specification order is always: 1) aqueous, 2) gas, 3) dissolved salt, and 4) reactive species. For STOMP-CO2 the specification order is always: 1) energy, 2) aqueous, 3) gas, 4) dissolved salt, and 5) reactive species
- General concepts for applying boundary conditions are provided on the Card Description page
- Options for specifying boundary conditions are provided on the Card Options page
- Formatting instructions for specifying inactive nodes are provided on the Card Syntax page
- Examples of Boundary Conditions Cards are provided on the Card Examples page
Coupled Well Card
This card allows the user to specify injection and production wells, whose conservation equations are fully integrated into the conservation equations for the reservoir. Wells are specified by defining a well trajectory and an injection/production schedule. Injection wells can be both rate and pressure controlled. The couple-well model for injection wells injects the specified fluid at the specified rate, unless the pressure limit is exceeded, in which case the injection rate is controlled by the pressure limit. In the current version of STOMP-CO2 production wells are only pressure controlled, which means fluid production is controlled by the specified pressure. Both injection and production wells can vary over time, and the injection well scheduling includes options for switching the fluid composition, such as required for water alternating gas (WAG) schemes. The composition of fluids in the production well depends on the fluids in the reservoir and the relative mobility of those fluids. Scheduling of both injection and production wells can be cyclic, allowing for a repeating schedule. Specification of fluid compositions for injection wells is similar to that for specifying fluid compositions for initial conditions and boundary conditions.
- The mathematical models and functional forms of the coupled-well model and the associated options are provided on the Card Options page
- Formatting instructions for specifying coupled-well models and parameters are provided on the Card Syntax page
- Examples of Coupled Well Cards are provided on the Card Examples page
Source Card
This card allows the user to control time-dependent sources and/or sinks of water and solute mass. By definition, sinks are negative and sources are positive. Sources can be specified for interior or boundary nodes, but cannot be specified for an inactive node. Sources/sinks are functionally equivalent to a Neumann type boundary condition. Sources are time varying; however, unlike boundary conditions, multiple sources may be applied to a node during the same time period.
- General concepts for applying source terms and the associated options are provided on the Card Options page
- Formatting instructions for specifying sources are provided on the Card Syntax page
- Examples of Source Cards are provided on the Card Examples page
Surface Flux Card
This card allows the user to specify the output of rates and integrals of fluxes crossing grid-cell surfaces. For STOMP-W the fluxes of interest are those associate with advection of the aqueous phase. If the simulation involves passive solutes, the Surface Flux Card is used to specify the output of transport rates and integrals of solutes crossing grid-cell surfaces. Likewise if the simulation involves reactive species and the code implementation includes the ECKEChem module, then the the Surface Flux Card is used to specify the output of transport rates and integrals of species crossing grid-cell surfaces.
- General concepts for requesting output of surface fluxes and the associated options are provided on the Card Options page
- Formatting instructions for requesting surface flux output are provided on the Card Syntax page
- Examples of Surface Flux Cards are provided on the Card Examples page