The Subsurface Transport Over Multiple Phases (STOMP) simulator is PNNL’s analytical tool for investigating coupled processes involving multifluid flow, heat transport, geochemistry, and geomechanics in the subsurface. The simulator was initially developed to assess nuclear waste repository performance, but greatly expanded its application domains over its nearly two-decade development life. The simulator is now being applied to support laboratory and field investigations in areas such as: geologic nuclear waste repositories; radionuclide transport; unsaturated zone hydrology; reactive barriers; nuclear waste tank thermal histories; surface barriers; freeze walls; soil desiccation; soil vapor extraction; volatile organic fate and migration; dense nonaqueous phase migration and natural attenuation; geologic sequestration of greenhouse gases; coupled reactive transport; oil shale production; and natural gas hydrate production. STOMP's capabilities and numerical schemes continue to be developed with the current emphasis being gas hydrate production via CO2 injection, oil shale production, and coupled geomechanical modeling. Whereas STOMP is routinely used for environmental assessments at U.S. DOE sites, its code structure and active development team allow it to be extended to new research and application domains.
The primary design guides for the STOMP simulator have been modularity, computational efficiency, and readability. Modular code architecture is beneficial because of the ease of reading, maintaining, and modifying the algorithms and is essential to the variable configuration source code. Computational efficiency refers to both memory requirements and execution speed. The STOMP simulator has been designed with a variable configuration source code which allows the memory requirements and code algorithms to be partially customized to the computational problem. This approach offers considerable advantages with respect to achieving a computationally efficient code design. Within this source code framework, however, many design choices have been made that affect computational efficiency. Algorithm design often offers options between memory and speed. For example, to lessen memory requirements, a code designer may opt to repeatedly compute commonly used variables. Conversely, execution speed may be increased at the cost of increased memory requirements, by storing commonly used variables after their initial computation. Generally, the approach in the STOMP simulator has been to favor increased memory requirements to gain computational speed. This design approach has been chosen because of the current state of computer architecture and capabilities. Because the STOMP simulator has been created as a scientific tool, algorithm readability has been a primary design guide. As a scientific tool, the simulator was expected to be a constantly changing package of software tools that could be applied to new or more complex problems. This design goal makes readability an essential feature of the code. Code readability has been achieved through an extensive use of comments, a modular design, a large group of common blocks, and minimal subroutine and function arguments.
Numerical simulation comprises two elements: a computer code that implements the mathematics of our scientific understanding, and a user that implements the computer code as an analytical tool. Successful numerical simulation requires both a proper implementation of the mathematics by the code developer and a proper implementation of the computer code by the code user. Successful numerical simulations provide a quantitative understanding of complex processes. Unsuccessful numerical simulation can lead us to a false understanding of a system. This guide is intended to provide the reader with an understanding of how the mathematics of multiphase subsurface flow and transport has been implemented in the suite of STOMP simulators. Scientific software programs, such as the suite of STOMP simulators, are generally works in progress. Scientific discoveries often lead to new conceptual models, which become implemented in the simulator as new alogrithms. Advances in numerical schemes and computer architectures also spur changes in scientific software. This user guide attempts to capture the current state of the simulator as much as possible.