Numerical Dispersion is part of a free web series, GWB Online Academy, by Aqueous Solutions LLC.
Click on a file or right-click and select “Save link as…” to download.
Von Neumann's criterion tells us the maximum time step our numerical solver can take to yield a stable solution to a pure diffusive transport problem
The Courant condition
accounts for advective transport. It states that fluid cannot travel farther than the length of a nodal block within a single time step. Taken together, the stability criterion in one dimension is show below
The Grid Courant number
is the number of nodal blocks traversed by the fluid over the course of a time step.
This number is reported on the Results pane
Numerical dispersion is a special class of truncation error that appears when solving the diffusion-advection equation by finite differences. The phenomenon adds an artificial dispersion to the solution
so that in effect we are solving
Where numerical dispersion is small relative to physical dispersion, this may not be a huge deal. On the other hand, if numerical dispersion is very large, then we are introducing error, which is undesirable.
Open "Pulse.x1t", the example we looked at in our Mass Transport lesson, and on the Medium pane, set αL to “0”
to eliminate physical dispersion from the model. On Config → Output… set a suffix "_num400"
and select Run → Go.
Now, redo the calculation using fewer nodal blocks. On the Domain pane set Nx to 100
and specify a new suffix "_num100". Run the model, then repeat using 40 nodal blocks: Nx = 40 and suffix "_num40".
How do the simulation results vary, depending on your choice of nodal block spacing?
Here are the results from the three different calculations. The bottom plot shows results of the first simulation, in which the domain is discretized into Nx = 400 nodal blocks. In the absence of hydrodynamic dispersion, the pulse migrates as a square wave across the domain
By decreasing the resolution of the domain (decreasing Nx to 100 or 40 nodal blocks), we introduce numerical dispersion into the calculation. As you can see, numerical dispersion is a serious problem when the coarsest grid is used.
How might we minimize numerical dispersion? Remember, we can quantify a coefficient of numerical dispersion as shown below:
Three strategies come to mind:
The program automatically chooses time steps that will results in a Courant number as close to 1 as possible, subject to stability criterion, like those mentioned above. Refining the gridding will produce a more accurate solution, but this accuracy comes at the expense of computing time.
A good strategy is to start working with a simple model, then add complexity as it is needed. After running a model with a course grid, cut the length of nodal blocks in half and see whether the solution changes. Once you reach the point where you can't observe any change between subsequent runs, you've likely minimized numerical dispersion as much as you can.
Craig M. Bethke and Brian Farrell. © Copyright 2016–2023 Aqueous Solutions LLC. This lesson may be reproduced and modified freely to support any licensed use of The Geochemist's Workbench® software, provided that any derived materials acknowledge original authorship.
Bethke, C.M., 2022, Geochemical and Biogeochemical Reaction Modeling, 3rd ed. Cambridge University Press, New York, 520 pp.
Bethke, C.M., B. Farrell, and M. Sharifi, 2023, The Geochemist's Workbench®, Release 17: GWB Reactive Transport Modeling Guide. Aqueous Solutions LLC, Champaign, IL, 191 pp.