Finite Difference Grounwater Modeling in Python¶
Finite Difference Models are derived and implemented completely in Python.
The theory and construction of these models can be used in their own right
or may serve as a thorough introduction in groundwater modeling with available
codes especially with MODFLOW, MT3DMS, MODPATH and SEAWAT.
At the end of this course we have built from ground on a powerful 3D steady state and transient finite difference groundwater code completely in Python functions and also a powerful 3D particle tracking funcion capable of tracking millions of particles simultaneously. We also have seen the versatile use of this code. The finite difference model functions are compatible with MODFLOW and MODPATH. The only limitation is that the finite difference functions allow just fixed-head and prescribed flow boundaries. This is to limit clutter and keep the finite-difference model functions in this course as lean and simple to use as possible, but the full theory is presented in the first chapter. This limitation is not a problem in most cases as, it's easy to model so-called general-head boundaries by setting appropriate conductivities.
For more advanced finite difference modeling and use of more specific packages, one should use the USGS codes MODFLOW, MODPATH, MT3DMS and SEAWAT directly. A Matlab interface as developed and used by me and my students for the last 8 years in many projects is available under project mfLab on SourceForge.org. A Python interface is available under the name PyFlow as developed by the USGS.
Contents:
- Finite Difference Groundwater Modeling in Python
- Numerical groundwater modeling
- Finite difference modeling
- Approach
- Setup of the model by specifying its dimensions
- IBOUND array - telling which cells are active and which have a prescribed head
- Cell conductancies: defining the ease of flow between adjacent cells
- Setting up the system matrix - set of water balance equations
- Boundary conditions
- Solving the matrix equation for the unknown heads
- Plotting the heads as contours
- Conclusion
- A finite difference model as a Python function
- Computing flows with the finite difference model
- A Grid class to deal with any finite difference model grid
- Axially symmetric modeling
- Stream lines
- Transient flow
- Particle tracking (under construction)