Part II · Chapter 7

Running the Simulation

One click sits between a model and its results. This chapter covers what happens when you press that click, how to configure the solver for the problem you're working on, and how to interpret what the platform tells you when things go wrong. The base model is designed to always converge — knowing why helps you keep it that way as you refine.

Reading time≈ 35 minutes
AudienceUsers ready to tune the solver
PrerequisiteCh. 4-6 (domain, attributes, features)
Sections6

The quick read — 90 seconds

  • Clicking SIMULATE runs a pipeline: validate the model, submit to the MAGNET4WATER solver, stream results back as a real-time animation. For a typical 10 km × 10 km domain at default resolution, 5-30 seconds.
  • Simulation Settings (in Domain Attributes → Simulation Settings tab) controls three main things: grid NX (cell count along the longer axis, default 40), sublayers (vertical subdivision, default 1), and time stepping for transient runs.
  • Don't fall for "more NX = better." A common instinct is to crank NX to 200, 300, 500 for a "better" model. This usually produces slower runs, worse convergence, or outright solver failure — a failed simulation returns nothing, not even a coarse answer. Practical NX ceiling in IGW-NET is ~100-150. Stay well-posed; use hierarchy (Ch. 13) for fine resolution where needed, not brute force. See §7.3.2.
  • For refined detail, prefer submodels over raising NX on a big parent domain. A submodel at NX=80 on a 2 km × 2 km area costs vastly less than a parent at NX=200 over a 20 km × 20 km area — and keeps each individual simulation well-posed.
  • When you add sublayers, enable Water Table as Top. Unconfined flow is a nonlinear free-surface problem — the top of the saturated zone is itself an unknown. The traditional fully-nonlinear coupled solve is fragile and slow. IGW-NET's approach: linearize within each simulation (take the top from the prior run's head field via the exchange field), then iterate between simulations — typically 1–2 iterations converge. Naive DEM-as-top subdivision produces chaotic sublayer thicknesses and dry cells; Water Table as Top avoids that entirely. See §7.4.3.
  • The default solver is chosen for you (PCG for MODFLOW-family; native for IGW streaming). Change it only for specific diagnostic reasons. For unstructured grids, MODFLOW-6 is used automatically.
  • Transient simulation requires a steady-state solution first (as the initial condition). Then switch to transient mode, define stresses, and simulate — results stream as an animated movie.
  • Non-convergence is almost always a dry-cell or extreme-gradient problem — or an NX pushed too high (§7.3.2). The base model is designed to always converge; when it doesn't, something in your refinement introduced the difficulty. Back off, inspect, then re-refine.

7.1 What SIMULATE Does

Behind the single click, the platform runs a pipeline of steps. Understanding them helps when something goes wrong — you'll know which step failed.

7.1.1 The simulation pipeline

Every simulation performs the same core operation: mapping your conceptual model (xyz) onto the numerical grid (ijk), then solving flow equations on the ijk representation. The conceptual model is what you built — zones, wells, polylines, layers, and attributes at their real-world coordinates. The numerical model is the grid-based approximation — cells with one value each, indexed by row/column/layer. Discretization is the xyz → ijk mapping, and it happens fresh on every SIMULATE. This is why you can edit your conceptual model freely between simulations — the grid doesn't persist in the way the conceptual model does; it gets rebuilt each time from whatever the current conceptual model looks like. See Ch. 1 §1.5.1 for the full conceptual-vs-numerical framing.

The SIMULATE pipeline in detail:

StepWhat happensWhat you might see
1. Validation The platform checks the model's structural integrity — domain is valid, attributes are within physical ranges, wells are inside the domain, polylines are properly formed. If problems are found, a validation error appears. If all clear, a confirmation window lets you proceed.
2. Projection check The platform confirms the domain has a valid projection. If not yet set, the projection prompt appears (usually at first simulation after drawing the domain). A prompt asking you to accept the suggested UTM projection.
3. Authentication The platform verifies your simulation credentials with the MAGNET4WATER server. A one-time step per session. Occasional login dialog at the start of a session.
4. Discretization (xyz → ijk) Here is the heart of the pipeline. The domain is discretized into cells according to your Grid NX setting (§7.3). Every conceptual feature — zone polygons, polylines, wells, layer attributes, source concentrations, particles — is mapped onto this grid. Parameter rasters are sampled at each cell center. The numerical model takes shape. A brief processing indicator.
5. Solver execution The selected solver (IGW, MODFLOW-6, etc.) computes heads iteratively on the ijk grid until convergence. For transient runs, each time step is solved sequentially. For particles, pathlines are integrated through the velocity field produced by the flow solution. Streaming head contours, velocity vectors, and (if enabled) particles or plumes — updated in real time as the solver advances.
6. Result assembly Head fields, flow vectors, water balance, and any secondary outputs (particles, concentrations) are assembled into the analysis-ready format. A "simulation complete" message; all Analysis Tools become active.
Information window confirming model validation is complete before simulation begins, with a message indicating the model is ready to be simulated
Figure 7.1The validation confirmation window. If your model passes validation, you see a short confirmation and the solver proceeds. If validation fails, you get a specific error message pointing to the problem.

7.1.2 The real-time streaming difference

IGW-NET's native IGW solver is real-time streaming. Results arrive as the solver computes them — you watch heads converge, plumes migrate, and particles animate while the simulation is still in progress. This is different from a traditional batch solver, where the simulation runs to completion and only then produces outputs.

Why streaming matters for modeling practice

Streaming simulation changes what modeling feels like. You catch problems while the solver is still running — if the plume is heading in an obviously wrong direction at time step 20, you can stop, fix, and restart without waiting for the full 1000-step run. You can also computationally steer the simulation — change a pumping rate mid-run, add a feature, modify a parameter, and see the effect immediately. This is why IGW-NET feels like a sandbox rather than a calculator: every intervention has a visible, immediate response.

7.2 Simulation Settings

Most simulation behavior is controlled from a single tab in Domain Attributes. For steady-state base models, you rarely need to touch these settings. For transient, multi-layer, or refined work, this is where you configure the solver.

7.2.1 Opening Simulation Settings

Open Domain Attributes

Click DomainAttr in the Conceptual Model Tools panel (or click inside the domain and choose the Domain Attributes option from the context menu).

Switch to Simulation Settings tab

In the Domain Attributes dialog, click the Simulation Settings tab. This tab holds grid, time-stepping, and solver options.

Simulation Settings tab of the Domain Attributes menu showing Grid NX field set to 40 along with convergence tolerance, solver selection, and other numerical parameters
Figure 7.2The Simulation Settings tab. The most frequently adjusted fields are Grid NX (resolution), Sublayers (vertical discretization), and — for transient runs — total time and time-stepping.

7.2.2 What the fields mean

FieldDefaultWhat it controls
Grid NX 40 Number of cells along the longer axis of the domain. The shorter axis is sized proportionally to make cells roughly square. Higher NX = finer resolution = slower simulation.
Number of SubLayers 1 Vertical subdivisions of each conceptual layer. SubLayers = 1 means a 2D solution; SubLayers > 1 resolves vertical gradients.
Water Table as Top Off Whether to use the computed water table as the top of the aquifer (convertible layers) rather than the DEM surface. Useful when the water table is significantly below the land surface.
Total Simulation Time — (steady) For transient runs only. Total simulated time in days (or configured units).
Time Step Size — (steady) For transient runs. Either a fixed step size or an automatic adaptive scheme.
Solver Default Which numerical solver to use. "Default" picks an appropriate choice based on the engine; options include PCG, SIP, SOR, and Hybrid SOR.
Convergence Tolerance — (engine default) How tight the head-residual convergence must be. Rarely adjusted; relax only if convergence fails narrowly.
BC from Parent Model Off For submodels only. Turns on inheritance of boundary conditions from a parent's head solution.

7.2.3 The solver options

SolverBest forNotes
Default / Hybrid SOR Most problems — the platform picks appropriately Combines the robustness of SOR with the speed of PCG where possible. This is your default.
PCG (Preconditioned Conjugate Gradient) Large problems, MODFLOW-family engines Fast convergence for well-conditioned problems; the MODFLOW default.
SIP (Strongly Implicit Procedure) Older MODFLOW models, occasional legacy use Robust but slower. Rarely the best choice for a new model.
SOR (Successive Over-Relaxation) Small problems, educational use, diagnostic runs Simple but slow. Useful when you want a solver whose behavior is easy to reason about.
Leave the solver alone

The default solver choice has been engineered to work across virtually all IGW-NET models. Change it only if you have a specific reason — e.g., you're matching a legacy MODFLOW model that used SIP, or you're diagnosing convergence issues and want to test whether a different solver helps. For production work, stick with the default.

7.3 Grid Resolution

Grid NX controls how coarsely or finely your conceptual model (xyz) is approximated by the numerical model (ijk). It is the single setting that most directly trades simulation speed for spatial detail — and deciding when to raise it, when to add sublayers, and when to use a submodel instead is one of the highest-leverage skills in IGW-NET. Each of these choices is ultimately the same question: where does the ijk approximation need to be faithful to the xyz reality, and where can a coarser approximation suffice?

7.3.1 How Grid NX works

NX is the number of cells along the longer side of your domain's bounding rectangle. For a domain that is 20 km × 10 km and NX = 40, the solver uses a 40 × 20 grid of 500 m × 500 m cells. Doubling NX to 80 produces 250 m × 250 m cells — roughly 4× as many cells overall, so simulation time roughly quadruples.

Domain sizeNX = 20 (coarse)NX = 40 (default)NX = 80 (fine)NX = 160 (very fine)
5 km × 5 km 250 m cells 125 m cells 63 m cells 31 m cells
20 km × 20 km 1000 m cells 500 m cells 250 m cells 125 m cells
100 km × 100 km 5000 m cells 2500 m cells 1250 m cells 625 m cells

7.3.2 The "more resolution is always better" trap

A common instinct — especially among novices, students, and even experienced practitioners coming from other platforms — is that cranking NX higher produces a better model. Push NX to 200, 300, 500 — surely that gives a more accurate answer? This instinct is mostly wrong, and acting on it causes more real problems than almost any other grid-resolution decision.

What actually happens when you raise NX aggressively:

  • Compute cost grows super-linearly. Doubling NX quadruples the cell count (2D) or octuples it (3D with sublayers), but simulation time often grows faster than that because solver iterations multiply. An NX = 300 run can be 10× slower than NX = 150, not 4×.
  • Convergence deteriorates. Larger linear systems are more ill-conditioned. What converged cleanly at NX = 80 may iterate sluggishly at NX = 160 and may not converge at all at NX = 300. Adding resolution worsens numerical stability beyond a point.
  • You may get nothing at all. A failed simulation returns no result — unlike the hope that "at least it'll be a fine-resolution answer," a brute-force attempt that doesn't converge leaves you with neither fine nor coarse. A converged coarse model beats a failed fine one every time.
  • Most of the fine resolution is wasted. In a large domain, the features that actually need fine resolution typically occupy a small fraction of the area. Uniformly raising NX over the whole domain is paying fine-grid compute cost for regions where coarse cells would have been perfectly adequate.
The correct mental model — stay well-posed, use hierarchy for scale range

Practical NX ceilings for a single simulation in IGW-NET are typically in the 100–150 range — sometimes less. Staying within that range keeps each individual simulation well-posed: fast convergence, robust solver behavior, quick iteration when you're tuning parameters. When you need finer resolution in specific areas, don't push NX higher — use a submodel (Ch. 13). A nested hierarchy gives arbitrary local resolution while keeping every individual simulation well within the convergence-friendly range. The mental shift is from "crank NX up to resolve detail" to "use hierarchy to place detail where it matters." Every level of the hierarchy is well-posed numerically; together they span as much scale range as you need.

This connects directly to Ch. 13 §13.5.1's four-dimension argument for hierarchy. The same reasoning that makes hierarchical models better for cognition, management, and infrastructure also makes them better numerically — a hierarchy of well-posed small problems is easier to solve, debug, and iterate than one big problem at the edge of numerical stability. "More resolution" is not the answer; "hierarchical resolution" is.

7.3.3 When to raise NX

  • When cells are obviously too large to resolve features of interest (e.g., a 1 km river on a 2.5 km grid).
  • When pumping wells, point sources, or sharp features produce visibly "blocky" results in the head field.
  • When convergence is fine but the physics being simulated has scales smaller than the grid can see.
  • But — before raising NX, ask whether the detail you need is uniform across the domain (raise NX) or localized (use a submodel instead; see §7.3.4).

7.3.4 When NOT to raise NX (use submodels instead)

If you only need fine resolution in a specific subarea, raising NX on the whole parent is wasteful. A 100 km × 100 km domain at NX = 160 has 25,600 cells; most of those cells are in regions where coarser resolution would be perfectly adequate. The submodel approach — parent at NX = 40, submodel covering the area of interest at NX = 80 or higher — gives you the same local detail for a fraction of the computational cost and keeps each individual simulation well-posed (§7.3.2).

The two-tier refinement rule

Raise parent NX only when you need finer resolution everywhere. For localized detail, use a submodel. A 20 km × 20 km parent at NX = 40 plus a 2 km × 2 km submodel at NX = 80 gives you 2000 m default resolution region-wide and 25 m resolution locally — for less total compute than raising the parent to NX = 200. This is the standard workflow for site-specific studies embedded in regional context.

7.4 Sublayers and Vertical Discretization

IGW-NET's default 2D solution (1 sublayer) handles most regional and site-scale flow problems. For cases where vertical variation matters, sublayers turn a conceptual layer into a fully 3D computational stack.

7.4.1 What sublayers do

Simulation Settings window showing the Number of SubLayers field for specifying vertical discretization of the conceptual aquifer layer into multiple computational layers
Figure 7.3The Number of SubLayers field. Setting SubLayers = 5 subdivides each conceptual layer into 5 computational layers stacked vertically, resolving vertical head gradients, flow components, and concentration distributions.

A sublayer value of N means each conceptual layer is subdivided into N computational layers in the vertical. The solver then computes heads, flows, and concentrations in all three dimensions — including vertical head gradients, downward seepage, upward discharge, and vertical plume migration. How the subdivision is positioned vertically matters as much as the number — see §7.4.3 below for the water-table-as-top approach that keeps the subdivision numerically well-posed.

7.4.2 When to increase sublayers

Modeling situationSublayersWhy
Regional 2D flow, no pumping details 1 (default) Vertical resolution provides no benefit when horizontal flow dominates.
Pumping wells with partial screens 3-5 Captures vertical head gradient near wells; distinguishes what the well actually pumps from.
Leaky rivers with bed-aquifer exchange 3-5 Vertical flow component between stream bed and aquifer matters for accurate flux calculations.
Thick aquifers with K varying vertically 5-10 Vertical K heterogeneity has no effect in 2D. With sublayers, each vertical slice can have its own K.
Contamination plumes with depth variation 10+ Dense or buoyant plumes (DNAPLs, thermal) migrate vertically; resolving this needs fine vertical resolution.
Density-dependent flow (SEAWAT) 10-20 Saltwater-freshwater interfaces are sharp vertically; fine resolution is essential.
Companion to horizontal refinement in submodels 3-10 (match the study) When horizontal refinement in a submodel (Ch. 13) captures more local detail, vertical refinement often needs to follow — especially for depth-specific receptors, partial-penetration wells, or vertical plume structure.
Horizontal and vertical refinement usually go together

If you're refining horizontally (via a submodel — Ch. 13), you're almost always doing it because local detail matters. Local detail is usually also vertical — a partial-penetration well has depth-specific capture, a contaminant source releases at a specific depth, a stream discharges to specific aquifer horizons. It is rare that horizontal refinement alone is sufficient; vertical refinement via sublayers typically accompanies it. Plan them together when you design a submodel.

7.4.3 How sublayers are positioned vertically — and why water table as top matters

When you set Number of SubLayers = N, IGW-NET subdivides each conceptual layer into N computational layers. But there is a crucial question this raises: what defines the top elevation of the uppermost sublayer? The answer matters enormously for numerical stability and for getting a defensible 3D solution.

Why conceptual layers exist in the first place

Before discussing how to subdivide, a reminder of what a conceptual layer is. Conceptual layers in IGW-NET are chosen to follow major geological units in the xyz reality. A typical regional model of unconsolidated sediments overlying bedrock has one conceptual layer: the unconsolidated aquifer. The conceptual bottom is the bedrock top (from the Data Center or a site-specific raster). The conceptual top defaults to the DEM — the land surface — because for an unconfined aquifer there's no formal upper geological boundary; the aquifer extends up to the water table, which itself sits somewhere below the DEM.

Multiple conceptual layers are used when the geology genuinely has multiple distinct hydrogeologic units — e.g., an upper unconfined aquifer, an intermediate aquitard, and a deep confined aquifer. Each conceptual layer has its own top, bottom, and attributes. Sublayers then subdivide each of those conceptual layers for finer vertical resolution within each geological unit.

The naive approach — subdividing with DEM as the top

The straightforward interpretation of "subdivide the conceptual layer into N sublayers" is to divide the gap between the DEM (top) and the bedrock top (bottom) into N equal parts. This seems obvious, and it is what many simpler platforms do. But it produces a serious problem for unconfined aquifers:

  • The DEM has local microtopography everywhere. Small pits, mounds, gullies, buildings, and measurement noise produce rapid up-and-down variation at the sub-10-meter scale. The DEM is the land surface, not the top of the saturated aquifer.
  • The real top of the saturated zone is the water table, which is a smooth surface sitting 1–20 meters below the DEM on average, not tracking the DEM's microtopography.
  • Subdividing with DEM as top produces chaotic sublayer thicknesses. Where the DEM dips into a small valley, the uppermost sublayer becomes very thin; where the DEM rises on a mound, it becomes thick. Adjacent cells in the upper sublayer can have thicknesses differing by 10× or more.
  • This produces dry cells. The uppermost sublayer is above the water table in most places (since the DEM is above the water table). A "cell" above the water table has no saturated thickness — it's dry. The solver handles dry cells, but poorly: iterations multiply, convergence degrades, results become unreliable. On a coarse NX it might work; on finer NX with many sublayers, you get a numerical disaster.

The underlying problem — unconfined flow is nonlinear

The water-table question is not a minor inconvenience. It is a manifestation of one of the well-known hard problems in computational groundwater modeling: unconfined flow is a nonlinear free-surface problem. The top of the saturated aquifer — the water table — is itself an unknown that depends on the solution. Flow equations are written for saturated conditions; the elevation of the saturated zone is what the flow field determines; but solving the flow field requires knowing where the saturated zone is. This circular dependence makes unconfined flow a nonlinear problem that no amount of standard linear-solver sophistication resolves on its own.

The traditional approach in conventional modeling platforms is a fully nonlinear coupled iteration within each simulation: guess a water table, build the cell geometry based on that guess, solve the flow field, update the water table from the result, rebuild cell geometry, solve again, repeat until both the water table and the head field simultaneously converge. This works in principle but is fragile and slow. Each outer iteration rebuilds the grid, introduces step-wise changes to cell thicknesses (cells near the water table can suddenly appear or disappear — the "re-wetting" and "de-wetting" problem), and destabilizes the inner linear solve. Convergence failures are common, especially with many cells, sharp gradients, or thin unconfined layers. Users of traditional platforms know the symptoms: solutions that take forever, diverge entirely, or converge to different answers depending on starting conditions.

The IGW-NET approach — linearize within, iterate between

IGW-NET takes a different approach: linearize the problem within each individual simulation, and iterate between simulations. The mechanism is the Water Table as Top flag combined with the exchange field — IGW-NET's internal mechanism for carrying state between successive simulations.

Within each simulation, the top of the uppermost sublayer is fixed — taken from the previous simulation's head field via the exchange field. With a fixed top, the sublayer geometry is fully determined before the solver runs: every cell has a known thickness, every cell is guaranteed saturated, no re-wetting/de-wetting can happen mid-solve. The flow equations become a clean linear problem — the kind that standard solvers handle in seconds with robust convergence. No nonlinear outer loop is needed inside the simulation.

The nonlinearity doesn't disappear, but it moves outside the simulation: each simulation produces an updated head field; if that updated water table differs meaningfully from the top elevation that was used, you re-simulate with the new head as the new top. This outer loop converges very quickly because the 2D-to-3D correction is usually small — the water table the 2D solve produces is already a good approximation, and the 3D correction is a modest perturbation rather than a dramatic restructuring. One or two iterations typically suffice; convergence of the outer loop is essentially free compared to solving the nonlinear problem monolithically.

Why this is effective — nonlinear problem, linearized solution

This is a well-studied general strategy: transform a hard nonlinear problem into a sequence of easy linear problems that converge to the nonlinear solution. The individual linear solves are fast and robust. The outer iteration is simple to implement and easy to monitor. IGW-NET's implementation — handling all of this behind the Water Table as Top flag and the exchange field — makes it effectively invisible to the user. You check a box, simulate, look at the answer, and if needed simulate again. The platform does the bookkeeping of "use the most recent head field as the new top" automatically.

For users coming from other platforms, this is often the difference between "3D unconfined modeling is painful and frequently fails" and "3D unconfined modeling just works." The underlying problem is the same; the way IGW-NET handles it eliminates the fragility.

The practical workflow

First simulation — 2D (1 sublayer)

Run an initial simulation with SubLayers = 1 (effectively 2D). At this resolution, the head field is the water table — by definition, because with one vertical cell per conceptual layer there is no vertical gradient, so the cell's head equals the water-table elevation at that location. This head/water-table field is what IGW-NET stores as the exchange field for subsequent 3D runs. Getting a good 2D solution is the prerequisite for any 3D elaboration.

Enable Water Table as Top and raise sublayers

In Simulation Settings, check Water Table as Top and raise SubLayers to the desired number (typically 3 for moderate 3D detail, 5–10 for more refined work). Re-SIMULATE. The platform uses the previous 2D head field as the top elevation of the uppermost sublayer, subdivides from there down to the conceptual bottom, and solves the 3D flow on the new sublayered grid — as a linear problem, because the top is now fixed.

(Optional) Iterate once or twice

The 3D solution produces a slightly updated head field (because the 3D solve accounts for vertical flow components the 2D solve did not). If you care about precise water-table elevations — for dewatering, seepage, or wellfield capture work — re-SIMULATE with Water Table as Top still checked; the platform automatically uses the most recent head field as the new top. Typically 1–2 outer iterations are sufficient; the water table converges quickly because the 3D-to-2D correction is a small perturbation.

Why this matters — well-posed 3D numerics without the dry-cell disaster

With water table as top, every sublayer is fully saturated. The linear system is well-conditioned. Each simulation converges as fast as the initial 2D run — often in seconds. There are no dry cells to destabilize the iteration. Adding vertical resolution does not destroy numerical robustness the way it would with naive DEM-as-top subdivision. This is one of the places where IGW-NET's thoughtful default design substantially improves what you get — not just convenience, but the difference between a working 3D simulation and one that fails in confusing ways.

When to skip water table as top

One case where you don't use Water Table as Top: deeply confined aquifers, where the conceptual layer's top is a confining unit (not the land surface) and the aquifer is always fully saturated under pressure. In that case the conceptual layer's top is already a physically-defined elevation (the bottom of the overlying aquitard or confining unit), and subdividing directly produces well-posed sublayers without water-table iteration. For such cases, Water Table as Top should be off.

For everything else — shallow unconfined aquifers, regional unconsolidated-sediment systems, most site-scale studies — Water Table as Top is the right default once you move from 1 sublayer to more.

Sublayers raise cost quickly

Going from 1 to 5 sublayers roughly 5× the computational work for a 3D solver. Combined with raising NX, this can quickly make a simulation slow. A good rule: raise sublayers only where physical reasoning justifies it, and verify that the added detail changes the answer before making it permanent. If results with 5 sublayers look the same as with 1, the simpler model is preferable.

7.5 Transient Simulation

Steady-state simulation answers the question "what is the long-term flow pattern?" Transient simulation answers "how does the system respond to changes over time?" The setup is slightly more involved but follows a predictable pattern.

7.5.1 The transient workflow

Run steady-state first

A transient simulation needs an initial condition — the state of the system at t = 0. The easiest (and usually correct) choice is a steady-state solution. Run steady first and let it converge.

Enable transient mode

In Simulation Settings, switch to transient mode. Set the total simulation time (e.g., 1825 days for a 5-year run) and time-stepping parameters.

Configure transient stresses

Identify what changes over time — a pumping rate starting at year 2, a transient head boundary from a stream gauge, a time-varying recharge from a climate file. For wells, use the time-varying rate option. For boundaries, use Head from Transient File. For recharge, use a time-series recharge file.

Simulate

Click SIMULATE. Results stream as an animated movie — head contours, plumes, and particles all evolve in real time as the solver advances through time steps.

Simulation Settings window for transient flow modeling showing the Modeling Transient Flow option enabled with fields for total simulation time, time step, and initial-condition handling
Figure 7.4Simulation Settings configured for transient flow. Once enabled, additional fields appear for time step size, total simulation time, and how to handle the initial condition (use previous steady solution, or start fresh).

7.5.2 The "never accumulate" architecture

As Chapter 1 §1.3.6 noted, IGW-NET operates on one architectural principle across transient flow, Monte Carlo, particle tracking, and transport: simulate, analyze, visualize, discard. Running statistics — mean fields, variance maps, cumulative fluxes, exceedance probabilities — are updated on the fly as each time step or realization completes; the underlying snapshot is then discarded. Memory usage stays constant regardless of how long or how deep the simulation runs.

This is not a clever optimization. It is the only architecture that lets a cloud-native service handle serious modeling — long-horizon transient simulations, probabilistic capture-zone analyses that need hundreds of realizations to converge, high-resolution particle tracking over decades. Platforms that accumulate snapshots in memory hit limits quickly and compromise by running shortened simulations, fewer realizations, or coarser resolution. IGW-NET refuses that trade by never accumulating the data in the first place.

What this means in practice

You can run a 100-year transient simulation in a browser without hitting memory limits. What you get is live-streaming statistics (current head field, running mean, running variance, current time step visible) plus any specific snapshots you choose to save. What you don't get (by default) is every time step stored for later replay — if you need that, enable time-snapshot saving explicitly. For most transient analyses, the live-streaming view plus a few saved snapshots is exactly what's needed.

7.5.3 When to save time snapshots

  • When producing figures for a publication — you need specific time snapshots (e.g., year 1, year 5, year 10) preserved exactly.
  • When doing frame-by-frame video analysis of plume migration.
  • When you plan to re-analyze the simulation with different post-processing without rerunning.

For exploratory work, live streaming with running statistics is the faster path. For archival work, saving snapshots at key times is the right choice.

7.6 When Things Go Wrong

The base model is designed to always converge. When it doesn't, something specific in your refinement has introduced numerical difficulty. Here are the common failure modes and how to diagnose them.

7.6.1 Dry cells

A dry cell is a grid cell where the computed head has fallen below the aquifer bottom — meaning the aquifer thickness at that cell is zero. Dry cells have zero transmissivity, so the solver can't move water through them, and nearby heads can swing wildly.

Common causes:

  • Bedrock raster too close to surface. If you switched the aquifer bottom from the default constant to a Data Center bedrock raster, and the bedrock rises to near-surface somewhere in the domain, those cells are thin enough that local drawdown dries them out. Fix: revert to the constant bottom, or add a minimum-thickness floor.
  • Very low K locally. A zone with K set very low can produce huge drawdowns at any pumping well nearby. Fix: check K values in zones, look for values that are orders of magnitude lower than neighbors.
  • Pumping rate too high. A well pumping at an unsustainable rate for the local K and aquifer thickness will eventually dry out its cells. Fix: reduce pumping, or check that Q is correctly specified (in m³/day, with correct sign).

7.6.2 Non-convergence with no clear cause

If the solver reports non-convergence but there are no obvious dry cells or extreme gradients:

  1. Re-run the base model. Revert your recent refinements to the base model — if it converges, your refinement introduced the issue. Re-apply changes one at a time to isolate which one.
  2. Relax convergence tolerance. If the residual is just above threshold, loosening tolerance is a pragmatic fix. Be honest with yourself: a loosely-converged solution is approximate, and you should note this when using results.
  3. Check for features near boundaries. A well too close to a no-flow boundary, or a polyline that straddles it, can create local numerical difficulty.
  4. Check the projection. In rare cases, an inappropriate projection for a very large domain can introduce numerical issues. Re-accept the default UTM suggestion.

7.6.3 Slow simulation

If simulation is taking noticeably longer than expected:

  • Grid NX may be higher than necessary. Reduce for exploration, raise again for final runs.
  • Sublayers may be too many for the problem. Use 1 for 2D studies, 3-5 for most 3D needs.
  • The domain may be too large for the question. Consider a smaller domain with a submodel for detail.
  • Network issues may be slowing streaming. Usually transient; try again.
The debugging mindset

When something goes wrong, resist the urge to make multiple fixes at once. Change one thing, re-simulate, see if it helped. This is how you actually learn what your model is sensitive to — and how you avoid the situation where "something worked but I don't know what." The real-time visualization makes this kind of disciplined debugging fast, because each iteration takes seconds rather than minutes.

To go deeper