iMOD-Python: make massive MODFLOW models

https://img.shields.io/badge/lifecycle-maturing-blue https://gitlab.com/deltares/imod/imod-python/badges/master/pipeline.svg https://img.shields.io/pypi/l/imod https://gitlab.com/deltares/imod/imod-python/badges/master/coverage.svg https://img.shields.io/conda/vn/conda-forge/imod.svg https://mybinder.org/badge_logo.svg

Note

This package is currently maturing on the way to a stable release. It is being actively used and developed at Deltares. To make it easier for others to use this package, the documentation still needs significant work. The API Reference is fairly complete, but high level overviews and more examples are still lacking. Extending Modflow 6 support is also planned.

The imod Python package is designed to help you in your MODFLOW groundwater modeling efforts. It makes it easy to go from your raw data to a fully defined MODFLOW model, with the aim to make this process reproducable. Whether you want to build a simple 2D conceptual model, or a complex 3D regional model with millions of cells, imod-python scales automatically by making use of dask.

By building on top of popular Python packages like xarray, pandas, rasterio and geopandas, a lot of functionality comes for free.

Currently we support the creation of the following MODFLOW-based models:

Documentation: https://imod.xyz/

Source code: https://gitlab.com/deltares/imod/imod-python

Interactive notebook examples:

https://mybinder.org/badge_logo.svg

Getting started

Install the latest release using conda install -c conda-forge imod, or, when not using Anaconda, pip install imod. For more detailed installation information see Installation.

import imod

# read and write IPF files to pandas DataFrame
df = imod.ipf.read('wells.ipf')
imod.ipf.save('wells-out.ipf', df)

# get all calculated heads in a xarray DataArray
# with dimensions time, layer, y, x
da = imod.idf.open('path/to/results/head_*.idf')

# create a groundwater model
# abridged example, see examples for the full code
gwf_model = imod.mf6.GroundwaterFlowModel()
gwf_model["dis"] = imod.mf6.StructuredDiscretization(
    top=200.0, bottom=bottom, idomain=idomain
)
gwf_model["chd"] = imod.mf6.ConstantHead(
    head, print_input=True, print_flows=True, save_flows=True
)
simulation = imod.mf6.Modflow6Simulation("ex01-twri")
simulation["GWF_1"] = gwf_model
simulation.time_discretization(times=["2000-01-01", "2000-01-02"])
simulation.write(modeldir)

Authors

This Python package was written primarily by Martijn Visser and Huite Bootsma at Deltares.



Indices and tables