mf6rtm 0.1.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.1.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.
mf6rtm-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,36 @@
1
+ Metadata-Version: 2.1
2
+ Name: mf6rtm
3
+ Version: 0.1.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
+ Platform: unix
9
+ Platform: linux
10
+ Platform: osx
11
+ Platform: cygwin
12
+ Platform: win32
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Programming Language :: Python :: 3.6
16
+ Classifier: Programming Language :: Python :: 3.7
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Requires-Python: >=3.6
23
+ License-File: LICENSE
24
+ Requires-Dist: phreeqcrm
25
+ Requires-Dist: modflowapi
26
+ Requires-Dist: flopy
27
+ Provides-Extra: testing
28
+ Requires-Dist: pytest>=7.0; extra == "testing"
29
+ Requires-Dist: pytest-cov>=2.0; extra == "testing"
30
+ Requires-Dist: mypy>=1.10; extra == "testing"
31
+ Requires-Dist: flake8>=3.9; extra == "testing"
32
+ Requires-Dist: tox>=3.24; extra == "testing"
33
+ Requires-Dist: flaky>=3.8; extra == "testing"
34
+ Requires-Dist: jupytext>=1.16.0; extra == "testing"
35
+ Requires-Dist: nbconvert>=7.16; extra == "testing"
36
+ Requires-Dist: ipykernel>=6.29; extra == "testing"
mf6rtm-0.1.0/README.md ADDED
@@ -0,0 +1,43 @@
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
+ ## Benchmarks
6
+ 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.
7
+
8
+ ## Considerations
9
+ 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.
10
+
11
+ On the PHREEQC side, the following have been included:
12
+
13
+ - Solution
14
+ - Equilibrium phases
15
+ - Cation Exchange
16
+ - Surface Complexation
17
+ - Kinetic Phases
18
+
19
+ 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.
20
+
21
+ ## Software requirements
22
+ 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)
23
+
24
+ ## Installation
25
+ The package is still not published in PyPi but it can be installed through pip by cloning the repository.
26
+
27
+ Once the repository is already cloned in your local machine, please just type the following in your conda prompt:
28
+
29
+ ```commandline
30
+ conda env create -f env.yml
31
+ ```
32
+
33
+ Otherwise, the package can be installed through pip as:
34
+
35
+ ```commandline
36
+ pip install git+https://github.com/p-ortega/mf6rtm.git#egg=mf6rtm
37
+ ```
38
+
39
+ ## Funding
40
+ The developing of mf6rtm was kindly funded and supported by [Intera, Inc](https://www.intera.com).
41
+
42
+ ## Authors
43
+ 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.1.0/setup.cfg ADDED
@@ -0,0 +1,62 @@
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
+ classifiers =
10
+ Programming Language :: Python :: 3
11
+ Programming Language :: Python :: 3 :: Only
12
+ Programming Language :: Python :: 3.6
13
+ Programming Language :: Python :: 3.7
14
+ Programming Language :: Python :: 3.8
15
+ Programming Language :: Python :: 3.9
16
+ Programming Language :: Python :: 3.10
17
+ Programming Language :: Python :: 3.11
18
+ Programming Language :: Python :: 3.12
19
+ version = 0.1.0
20
+
21
+ [options]
22
+ packages =
23
+ mf6rtm
24
+ py_modules =
25
+ mf6rtm
26
+ utils
27
+ install_requires =
28
+ phreeqcrm
29
+ modflowapi
30
+ flopy
31
+ python_requires = >=3.6
32
+ package_dir =
33
+ =src
34
+ zip_safe = no
35
+
36
+ [options.extras_require]
37
+ testing =
38
+ pytest>=7.0
39
+ pytest-cov>=2.0
40
+ mypy>=1.10
41
+ flake8>=3.9
42
+ tox>=3.24
43
+ flaky>=3.8
44
+ jupytext>=1.16.0
45
+ nbconvert>=7.16
46
+ ipykernel>=6.29
47
+
48
+ [options.package_data]
49
+ mf6rtm = py.typed
50
+
51
+ [flake8]
52
+ max-line-length = 160
53
+ extend-ignore = E, F
54
+
55
+ [options.entry_points]
56
+ console_scripts =
57
+ mf6rtm = mf6rtm:run_cmd
58
+
59
+ [egg_info]
60
+ tag_build =
61
+ tag_date = 0
62
+
mf6rtm-0.1.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,10 @@
1
+ from mf6rtm import mf6rtm
2
+ import os
3
+
4
+ __author__ = "Pablo Ortega"
5
+
6
+ def run_cmd():
7
+ # get the current directory
8
+ cwd = os.getcwd()
9
+ # run the solve function
10
+ mf6rtm.solve(cwd)
@@ -0,0 +1,4 @@
1
+ from . import run_cmd
2
+
3
+ if __name__ == '__main__':
4
+ run_cmd()