Output Peclet Number
This post highlights a key tool for evaluating solute transport and density-dependent flow models: the output peclet number command. When building these models, a common approach is to first establish a steady-state flow solution, then validate transport using flow outputs as initial conditions, and finally introduce density dependence if needed. The output peclet number command calculates the grid Péclet number (Pe), helping identify areas where numerical dispersion or unstable transport solutions may occur. Keeping Pe below 2 is generally recommended, with mesh refinement as the primary method for reducing high values. This tool is invaluable for diagnosing transport issues before running long-term scenario simulations.
Figure 1: Peclet number distribution - coarse mesh
For those of us building solute transport or density-dependent flow models, we know from experience that these features add significant model complexity and can lead to major headaches!
A common approach to building these models is to
Figure 2: Evidence of numerical dispersion
Get a good flow model working first (spin up to steady state),
Get a good transport model working, using your flow model outputs as initial conditions. If your transport solution collapses, go back to step 1 and refine your model.
(Optional) Add density dependence, and revisit flow again if your model blows up.
Run your scenario analysis simulations.
Figure 3: Peclet number distribution - fine mesh
If you’re at the stage where you’re trying to evaluate your transport model, consider using the output peclet number command. Output peclet number calculates the grid Péclet number (Pe) for your mesh, using flow rates calculated from your initial conditions. The results will be included in your prefixo.pm.dat file for visualization in Tecplot.
Pe = (L*v)/D = advective transport rate / dispersive transport rate
Figure 4: Solute distribution after 30 years - fine mesh
Here, L represents the mesh resolution in the direction of flow, v represents the local flow velocity, and D is the diffusion coefficient. The general guideline is to try and keep Pe below 2, and your best course of action to lower Pe is to refine your mesh in areas where it is too large. The value of 2 is not a hard cap, but when the value of Pe is much greater than 2 you may start to see numerical dispersion or incorrect transport solutions, such as negative concentrations and concentrations exceeding source concentrations.
Here’s an example from a 2D cross-section model where a solute is being released beneath a hillslope. There were no issues with the flow solution at a resolution of 10 m (x) and 1 m (z), but after adding transport and using the output peclet number command, I found grid Péclet numbers > 6 near the source, and values >4 elsewhere along the hill (Figure 1)
Then when I looked at the solute concentrations, I started seeing numerical dispersion (Figure 2; surprise surprise…)
To make sure the transport solution would not break down, I rebuilt the model with a resolution of 2.5 m (x) and 0.5 m (z). With that change, Pe was much closer to 2 across the hill (Figure 3). I was happy enough with that to simulate solute transport out to 30 years.
Note: If you are new to transport or density modelling (especially density!), it’s never a bad idea to start with a 2D cross-section model and work towards full 3D later if you need to.