Metadata-Version: 2.1
Name: nlmod
Version: 0.7.2
Summary: Python package to build, run and visualize MODFLOW 6 groundwater models in the Netherlands.
Author: O. Ebbens, R. Caljé, D.A. Brakenhoff
Maintainer-email: "O. Ebbens" <o.ebbens@artesia-water.nl>, "R. Calje" <r.calje@artesia-water.nl>, "D.A. Brakenhoff" <d.brakenhoff@artesia-water.nl>
License: The MIT License (MIT)
        
        Copyright (c) 2020 O.N. Ebbens, D.A. Brakenhoff, R. Calje
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: homepage, https://github.com/gwmod/nlmod
Project-URL: repository, https://github.com/gwmod/nlmod
Project-URL: documentation, https://nlmod.readthedocs.io/en/latest/
Keywords: hydrology,groundwater,modeling,Modflow 6,flopy
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Other Audience
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Scientific/Engineering :: Hydrology
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flopy >=3.3.6
Requires-Dist: xarray >=0.16.1
Requires-Dist: netcdf4 >=1.6.3
Requires-Dist: rasterio >=1.1.0
Requires-Dist: rioxarray
Requires-Dist: affine >=0.3.1
Requires-Dist: geopandas
Requires-Dist: owslib >=0.24.1
Requires-Dist: hydropandas >=0.9.2
Requires-Dist: shapely >=2.0.0
Requires-Dist: pyshp >=2.1.3
Requires-Dist: matplotlib
Requires-Dist: dask
Requires-Dist: colorama
Requires-Dist: joblib
Provides-Extra: ci
Requires-Dist: nlmod[full,lint,nbtest,test] ; extra == 'ci'
Requires-Dist: netCDF4 >=1.6.3 ; extra == 'ci'
Requires-Dist: pandas <2.1.0 ; extra == 'ci'
Provides-Extra: full
Requires-Dist: nlmod[knmi] ; extra == 'full'
Requires-Dist: gdown ; extra == 'full'
Requires-Dist: geocube ; extra == 'full'
Requires-Dist: bottleneck ; extra == 'full'
Requires-Dist: contextily ; extra == 'full'
Requires-Dist: scikit-image ; extra == 'full'
Provides-Extra: grib
Requires-Dist: cfgrib ; extra == 'grib'
Requires-Dist: ecmwflibs ; extra == 'grib'
Provides-Extra: knmi
Requires-Dist: h5netcdf ; extra == 'knmi'
Requires-Dist: nlmod[grib] ; extra == 'knmi'
Provides-Extra: lint
Requires-Dist: flake8 ; extra == 'lint'
Requires-Dist: isort ; extra == 'lint'
Requires-Dist: black[jupyter] ; extra == 'lint'
Provides-Extra: nbtest
Requires-Dist: nbformat ; extra == 'nbtest'
Requires-Dist: nbconvert >6.4.5 ; extra == 'nbtest'
Provides-Extra: rtd
Requires-Dist: nlmod[full] ; extra == 'rtd'
Requires-Dist: ipython ; extra == 'rtd'
Requires-Dist: ipykernel ; extra == 'rtd'
Requires-Dist: nbsphinx ; extra == 'rtd'
Requires-Dist: sphinx-rtd-theme ==1.0.0 ; extra == 'rtd'
Requires-Dist: nbconvert >6.4.5 ; extra == 'rtd'
Requires-Dist: netCDF4 >=1.6.3 ; extra == 'rtd'
Provides-Extra: test
Requires-Dist: pytest >=7 ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: pytest-dependency ; extra == 'test'

# nlmod

<img src="docs/_static/logo_10000_2.png" width="256"/>

[![nlmod](https://github.com/gwmod/nlmod/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/gwmod/nlmod/actions/workflows/ci.yml)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/f1797b66e98b42b294bc1c5fc233dbf3)](https://app.codacy.com/gh/gwmod/nlmod/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/f1797b66e98b42b294bc1c5fc233dbf3)](https://app.codacy.com/gh/gwmod/nlmod/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage)
[![PyPI version](https://badge.fury.io/py/nlmod.svg)](https://badge.fury.io/py/nlmod)
[![Documentation Status](https://readthedocs.org/projects/nlmod/badge/?version=stable)](https://nlmod.readthedocs.io/en/stable/?badge=stable)

Python package to build, run and visualize MODFLOW 6 groundwater models in the Netherlands.

`nlmod` was built to allow users to write scripts to quickly download relevant data
from publicly available sources, and build and post-process groundwater flow and
transport models at different spatial and temporal scales to answer specific
geohydrological questions. Scripting these steps, from downloading data to building
groundwater models, makes models more reproducible and transparent.

The functions in `nlmod` have four main objectives:

1. Create and adapt the temporal and spatial discretization of a MODFLOW model using an xarray Dataset (`nlmod.dims`).
2. Download and read data from external sources, project this data on the modelgrid and add this data to an xarray Dataset (`nlmod.read`).
3. Use data in an xarray Dataset to build modflow packages for both groundwater flow and transport models using FloPy (`nlmod.sim`, `nlmod.gwf` and `nlmod.gwt` for Modflow 6 and `nlmod.modpath` for Modpath).
4. Visualise modeldata in Python (`nlmod.plot`) or GIS software (`nlmod.gis`).

More information can be found on the documentation-website:
https://nlmod.readthedocs.io/.

## Installation

Install the module with pip:

`pip install nlmod`

`nlmod` has the following required dependencies: 

* `flopy`
* `xarray`
* `netcdf4`
* `rasterio`
* `rioxarray`
* `affine`
* `geopandas`
* `owslib`
* `hydropandas`
* `shapely`
* `pyshp`
* `rtree`
* `matplotlib`
* `dask`
* `colorama`
* `joblib`

There are some optional dependecies, only needed (and imported) in a single method.
Examples of this are `bottleneck` (used in calculate_gxg), `geocube` (used in
add_min_ahn_to_gdf), `h5netcdf` (used for hdf5 files backend in xarray), `scikit-image`
(used in calculate_sea_coverage). To install `nlmod` with the optional dependencies use:

`pip install nlmod[full]`

When using pip the dependencies are automatically installed. Some dependencies are
notoriously hard to install on certain platforms. Please see the
[dependencies](https://github.com/ArtesiaWater/hydropandas#dependencies) section of the
`hydropandas` package for more information on how to install these packages manually.

## Getting started

If you are using `nlmod` for the first time you need to download the MODFLOW
executables. You can easily download these executables by running this Python code:

    import nlmod
	nlmod.download_mfbinaries()

After you've downloaded the executables you can run the Jupyter Notebooks in the
examples folder. These notebooks illustrate how to use the `nlmod` package.
