Scalable simulation is often required due to complexity in subsurface flows, multiphysics and uncertainty in data, which requires the execution of multiple realizations. Computational efficiency and accuracy are crucial for these simulation, and domain decomposition algorithms are essential for this task. Domain decomposition involves sub-dividing the domain into different regions so that each subdomain may be solved on a separate processor. This involves some communication or coordination between the computations on each domain.

eSTOMP performs domain decomposition by logically partitioning the domain in all three coordinate directions based on the domain size and minimal communication overhead. However, users may want to partition the domain (using the Cartesian w/proc option in the Grid Card) based on the physics of the model (e.g.,follow large scale geological features such as faults, heterogeneous layers, and other internal boundaries). Other considerations are load balancing among the processor cores. In many cases, for example, vertical plume movement in the subsurface means that computations in subregions in the z-direction remain idle until plumes reach those regions of the domain.

The figure below illustrates domain decomposition for a simple problem involving a three-dimensional grid. Decompositions in the *x* , *y* , and/or *z* dimensions are possible. Domain decomposition is done dynamically in eSTOMP at runtime, and is based on the number of processor cores used in the simulation.

Domain Decomposition

Two options exist: