mf6rtm 0.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mf6rtm-0.0.0/LICENSE ADDED
@@ -0,0 +1,28 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2024, Pablo Ortega
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ 3. Neither the name of the copyright holder nor the names of its
16
+ contributors may be used to endorse or promote products derived from
17
+ this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1 @@
1
+ include src/mf6rtm/mrbeaker.png
mf6rtm-0.0.0/PKG-INFO ADDED
@@ -0,0 +1,88 @@
1
+ Metadata-Version: 2.4
2
+ Name: mf6rtm
3
+ Version: 0.0.0
4
+ Summary: Reactive transport model through MODFLOW 6 and PHREEQCRM
5
+ Author: Pablo Ortega
6
+ Author-email: portega@intera.com
7
+ License: BSD 3-Clause
8
+ Keywords: MODFLOW,PHREEQCRM,reactive transport,groundwater,hydrology
9
+ Platform: unix
10
+ Platform: linux
11
+ Platform: osx
12
+ Platform: cygwin
13
+ Platform: win32
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: License :: OSI Approved :: BSD License
22
+ Classifier: Topic :: Scientific/Engineering :: Hydrology
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: phreeqcrm
27
+ Requires-Dist: modflowapi
28
+ Requires-Dist: flopy
29
+ Provides-Extra: testing
30
+ Requires-Dist: pytest>=7.0; extra == "testing"
31
+ Requires-Dist: pytest-cov>=2.0; extra == "testing"
32
+ Requires-Dist: mypy>=1.10; extra == "testing"
33
+ Requires-Dist: flake8>=3.9; extra == "testing"
34
+ Requires-Dist: tox>=3.24; extra == "testing"
35
+ Requires-Dist: flaky>=3.8; extra == "testing"
36
+ Requires-Dist: jupytext>=1.16.0; extra == "testing"
37
+ Requires-Dist: nbconvert>=7.16; extra == "testing"
38
+ Requires-Dist: ipykernel>=6.29; extra == "testing"
39
+ Dynamic: license-file
40
+
41
+ # MF6RTM: Reactive Transport Model via the MODFLOW 6 and PHREEQCRM APIs
42
+ ![Tests](https://github.com/p-ortega/mf6rtm/actions/workflows/tests_main.yml/badge.svg)
43
+ ![Tests](https://github.com/p-ortega/mf6rtm/actions/workflows/tests_macos.yml/badge.svg)
44
+
45
+ <!-- [![GitHub tag](https://img.shields.io/github/tag/mf6rtm/mf6rtm.svg)](https://github.com/p-ortega/mf6rtm/releases/tag/latest) -->
46
+ [![PyPI License](https://img.shields.io/pypi/l/mf6rtm)](https://pypi.python.org/pypi/mf6rtm)
47
+ <!-- [![PyPI Status](https://img.shields.io/pypi/status/mf6rtm.png)](https://pypi.python.org/pypi/mf6rtm) -->
48
+ <!-- [![PyPI Format](https://img.shields.io/pypi/format/mf6rtm)](https://pypi.python.org/pypi/mf6rtm) -->
49
+ [![PyPI Version](https://img.shields.io/pypi/v/mf6rtm.png)](https://pypi.python.org/pypi/mf6rtm)
50
+ [![PyPI Versions](https://img.shields.io/pypi/pyversions/mf6rtm.png)](https://pypi.python.org/pypi/mf6rtm)
51
+
52
+ ## Benchmarks
53
+ Benchmark comparing model results against PHT3D are in `benchmark/`. Each folder contains a Jupyter notebook to write and execute an MF6RTM model via the MUP3D class. Additionally, PHT3D files are provided in the corresponding `pht3d` directory for each example.
54
+
55
+ ## Considerations
56
+ The current version is intended to work with structured grids (dis object in MF6) and one MF6 simulation that includes the flow and transport solutions. No support is currently provided for a 'flow then transport scheme,' meaning that advanced packages cannot be incorporated yet.
57
+
58
+ On the PHREEQC side, the following have been included:
59
+
60
+ - Solution
61
+ - Equilibrium phases
62
+ - Cation Exchange
63
+ - Surface Complexation
64
+ - Kinetic Phases
65
+
66
+ Most options for each phreeqc block can be passed by adding list with options. However, not all options had been tested, so please create an issue if any option is not working or crashing the model.
67
+
68
+ ## Software requirements
69
+ All dependencies and executables are included in this repo. This package extensively uses [modflowapi](https://github.com/MODFLOW-USGS/modflowapi) and [phreeqcrm](https://github.com/usgs-coupled/phreeqcrm)
70
+
71
+ ## Installation
72
+ The package can be installed through pip as:
73
+
74
+ ```commandline
75
+ pip install mf6rtm
76
+ ```
77
+ ## Developing
78
+ We recommend forking and cloning a local version of this repo. A development Conda environment is provided in the `env.yml` file, which should install all required dependencies to run tests and modify the package on the fly. To install the environment, use the following command:
79
+
80
+ ```commandline
81
+ conda env create -f env.yml
82
+ ```
83
+
84
+ ## Funding
85
+ The developing of mf6rtm was kindly funded and supported by [Intera, Inc](https://www.intera.com).
86
+
87
+ ## Authors
88
+ Pablo Ortega (Portega)
mf6rtm-0.0.0/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # MF6RTM: Reactive Transport Model via the MODFLOW 6 and PHREEQCRM APIs
2
+ ![Tests](https://github.com/p-ortega/mf6rtm/actions/workflows/tests_main.yml/badge.svg)
3
+ ![Tests](https://github.com/p-ortega/mf6rtm/actions/workflows/tests_macos.yml/badge.svg)
4
+
5
+ <!-- [![GitHub tag](https://img.shields.io/github/tag/mf6rtm/mf6rtm.svg)](https://github.com/p-ortega/mf6rtm/releases/tag/latest) -->
6
+ [![PyPI License](https://img.shields.io/pypi/l/mf6rtm)](https://pypi.python.org/pypi/mf6rtm)
7
+ <!-- [![PyPI Status](https://img.shields.io/pypi/status/mf6rtm.png)](https://pypi.python.org/pypi/mf6rtm) -->
8
+ <!-- [![PyPI Format](https://img.shields.io/pypi/format/mf6rtm)](https://pypi.python.org/pypi/mf6rtm) -->
9
+ [![PyPI Version](https://img.shields.io/pypi/v/mf6rtm.png)](https://pypi.python.org/pypi/mf6rtm)
10
+ [![PyPI Versions](https://img.shields.io/pypi/pyversions/mf6rtm.png)](https://pypi.python.org/pypi/mf6rtm)
11
+
12
+ ## Benchmarks
13
+ Benchmark comparing model results against PHT3D are in `benchmark/`. Each folder contains a Jupyter notebook to write and execute an MF6RTM model via the MUP3D class. Additionally, PHT3D files are provided in the corresponding `pht3d` directory for each example.
14
+
15
+ ## Considerations
16
+ The current version is intended to work with structured grids (dis object in MF6) and one MF6 simulation that includes the flow and transport solutions. No support is currently provided for a 'flow then transport scheme,' meaning that advanced packages cannot be incorporated yet.
17
+
18
+ On the PHREEQC side, the following have been included:
19
+
20
+ - Solution
21
+ - Equilibrium phases
22
+ - Cation Exchange
23
+ - Surface Complexation
24
+ - Kinetic Phases
25
+
26
+ Most options for each phreeqc block can be passed by adding list with options. However, not all options had been tested, so please create an issue if any option is not working or crashing the model.
27
+
28
+ ## Software requirements
29
+ All dependencies and executables are included in this repo. This package extensively uses [modflowapi](https://github.com/MODFLOW-USGS/modflowapi) and [phreeqcrm](https://github.com/usgs-coupled/phreeqcrm)
30
+
31
+ ## Installation
32
+ The package can be installed through pip as:
33
+
34
+ ```commandline
35
+ pip install mf6rtm
36
+ ```
37
+ ## Developing
38
+ We recommend forking and cloning a local version of this repo. A development Conda environment is provided in the `env.yml` file, which should install all required dependencies to run tests and modify the package on the fly. To install the environment, use the following command:
39
+
40
+ ```commandline
41
+ conda env create -f env.yml
42
+ ```
43
+
44
+ ## Funding
45
+ The developing of mf6rtm was kindly funded and supported by [Intera, Inc](https://www.intera.com).
46
+
47
+ ## Authors
48
+ Pablo Ortega (Portega)
@@ -0,0 +1,30 @@
1
+ [build-system]
2
+ requires = ["setuptools>=42.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [tool.pytest.ini_options]
6
+ # addopts = [
7
+ # "--cov=mf6rtm",
8
+ # "-rs",
9
+ # "-vvv "
10
+ # ]
11
+ testpaths = [
12
+ "autotest",
13
+ ]
14
+
15
+ [tool.mypy]
16
+ mypy_path = "src"
17
+ check_untyped_defs = true
18
+ disallow_any_generics = true
19
+ ignore_missing_imports = true
20
+ no_implicit_optional = true
21
+ show_error_codes = true
22
+ strict_equality = true
23
+ warn_redundant_casts = true
24
+ warn_return_any = true
25
+ warn_unreachable = true
26
+ warn_unused_configs = true
27
+ no_implicit_reexport = true
28
+
29
+ [tool.scripts]
30
+ mf6rtm = "mf6rtm:run_cmd"
mf6rtm-0.0.0/setup.cfg ADDED
@@ -0,0 +1,66 @@
1
+ [metadata]
2
+ name = mf6rtm
3
+ description = Reactive transport model through MODFLOW 6 and PHREEQCRM
4
+ author = Pablo Ortega
5
+ author-email = portega@intera.com
6
+ license = BSD 3-Clause
7
+ license_file = LICENSE
8
+ platforms = unix, linux, osx, cygwin, win32
9
+ keywords = MODFLOW, PHREEQCRM, reactive transport, groundwater, hydrology
10
+ classifiers =
11
+ Development Status :: 3 - Alpha
12
+ Programming Language :: Python :: 3
13
+ Programming Language :: Python :: 3 :: Only
14
+ Programming Language :: Python :: 3.9
15
+ Programming Language :: Python :: 3.10
16
+ Programming Language :: Python :: 3.11
17
+ Programming Language :: Python :: 3.12
18
+ License :: OSI Approved :: BSD License
19
+ Topic :: Scientific/Engineering :: Hydrology
20
+ version =
21
+ long_description = file: README.md
22
+ long_description_content_type = text/markdown
23
+
24
+ [options]
25
+ packages =
26
+ mf6rtm
27
+ include_package_data = True
28
+ py_modules =
29
+ mf6rtm
30
+ utils
31
+ install_requires =
32
+ phreeqcrm
33
+ modflowapi
34
+ flopy
35
+ python_requires = >=3.9
36
+ package_dir =
37
+ =src
38
+ zip_safe = no
39
+
40
+ [options.extras_require]
41
+ testing =
42
+ pytest>=7.0
43
+ pytest-cov>=2.0
44
+ mypy>=1.10
45
+ flake8>=3.9
46
+ tox>=3.24
47
+ flaky>=3.8
48
+ jupytext>=1.16.0
49
+ nbconvert>=7.16
50
+ ipykernel>=6.29
51
+
52
+ [options.package_data]
53
+ mf6rtm = py.typed
54
+
55
+ [flake8]
56
+ max-line-length = 160
57
+ extend-ignore = E, F
58
+
59
+ [options.entry_points]
60
+ console_scripts =
61
+ mf6rtm = mf6rtm:run_cmd
62
+
63
+ [egg_info]
64
+ tag_build =
65
+ tag_date = 0
66
+
mf6rtm-0.0.0/setup.py ADDED
@@ -0,0 +1,10 @@
1
+ from setuptools import setup
2
+
3
+ if __name__ == "__main__":
4
+ setup(
5
+ entry_points={
6
+ 'console_scripts': [
7
+ 'mf6rtm = mf6rtm:run_cmd',
8
+ ],
9
+ },
10
+ )
@@ -0,0 +1,15 @@
1
+ """
2
+ The MF6RTM (Modflow 6 Reactive Transport Model) package is a python package
3
+ for reactive transport modeling via the MODFLOW 6 and PhreeqcRM APIs.
4
+ """
5
+
6
+ # populate package namespace
7
+ from mf6rtm import (
8
+ mf6rtm,
9
+ mup3d,
10
+ utils,
11
+ )
12
+
13
+ from mf6rtm.mf6rtm import run_cmd
14
+
15
+ __author__ = "Pablo Ortega"
@@ -0,0 +1,4 @@
1
+ from . import run_cmd
2
+
3
+ if __name__ == '__main__':
4
+ run_cmd()