mf6pqc 1.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.
- mf6pqc-1.0.0/CHANGELOG.md +30 -0
- mf6pqc-1.0.0/CITATION.cff +10 -0
- mf6pqc-1.0.0/CONTRIBUTING.md +24 -0
- mf6pqc-1.0.0/LICENSE +674 -0
- mf6pqc-1.0.0/MANIFEST.in +21 -0
- mf6pqc-1.0.0/PKG-INFO +158 -0
- mf6pqc-1.0.0/README.md +118 -0
- mf6pqc-1.0.0/docs/api.md +110 -0
- mf6pqc-1.0.0/docs/architecture.md +138 -0
- mf6pqc-1.0.0/docs/installation.md +71 -0
- mf6pqc-1.0.0/docs/modflowapi-1.0.1-compatibility.md +36 -0
- mf6pqc-1.0.0/docs/performance.md +45 -0
- mf6pqc-1.0.0/docs/publishing-first-release.zh-CN.md +194 -0
- mf6pqc-1.0.0/docs/release-readiness.md +56 -0
- mf6pqc-1.0.0/docs/release-verification.json +72 -0
- mf6pqc-1.0.0/docs/releasing.md +55 -0
- mf6pqc-1.0.0/docs/scientific-contracts.md +109 -0
- mf6pqc-1.0.0/docs/splitting-audit.md +115 -0
- mf6pqc-1.0.0/docs/thermal-coupling.md +101 -0
- mf6pqc-1.0.0/docs/validation.md +114 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/input_data/database.dat +36 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/input_data/input.pqi +62 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/modflow_model.py +240 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/plot.ipynb +368 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/run.py +95 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/GWE_VSC_Reactive/validate.py +122 -0
- mf6pqc-1.0.0/examples/Hamann2015/input_data/input.pqi +86 -0
- mf6pqc-1.0.0/examples/Hamann2015/input_data/pitzer.dat +998 -0
- mf6pqc-1.0.0/examples/Hamann2015/modflow_model.py +428 -0
- mf6pqc-1.0.0/examples/Hamann2015/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Hamann2015/plot.ipynb +343 -0
- mf6pqc-1.0.0/examples/Hamann2015/run.py +136 -0
- mf6pqc-1.0.0/examples/Hamann2015/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/input_data/input.pqi +47 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/input_data/phreeqc.dat +33 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/modflow_model.py +199 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/plot.ipynb +108 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/run.py +89 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E01/validate.py +51 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/input_data/PHT3D_results.npy +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/input_data/input.pqi +50 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/input_data/phreeqc.dat +1935 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/modflow_model.py +205 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/plot.ipynb +113 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/run.py +66 -0
- mf6pqc-1.0.0/examples/PHT3D_E02/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/input_data/phreeqc.dat +296 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/input_data/phreeqc.pqi +68 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/modflow_model.py +196 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/plot.ipynb +204 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/run.py +63 -0
- mf6pqc-1.0.0/examples/PHT3D_E03/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/input_data/input.pqi +45 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/input_data/phreeqc.dat +84 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/modflow_model.py +208 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/plot.ipynb +129 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/plot.py +159 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/run.py +82 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E04/validate.py +39 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/input_data/phreeqc.dat +130 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/input_data/phreeqc.pqi +49 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/modflow_model.py +212 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/plot.ipynb +443 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/run.py +68 -0
- mf6pqc-1.0.0/examples/PHT3D_E05/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E06/input_data/phreeqc.dat +107 -0
- mf6pqc-1.0.0/examples/PHT3D_E06/input_data/phreeqc.pqi +52 -0
- mf6pqc-1.0.0/examples/PHT3D_E06/modflow_model.py +239 -0
- mf6pqc-1.0.0/examples/PHT3D_E06/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E06/plot.ipynb +318 -0
- mf6pqc-1.0.0/examples/PHT3D_E06/run.py +68 -0
- mf6pqc-1.0.0/examples/PHT3D_E06/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/input_data/phreeqc.dat +117 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/input_data/phreeqc.pqi +69 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/modflow_model.py +229 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/plot.ipynb +148 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/run.py +83 -0
- mf6pqc-1.0.0/examples/PHT3D_E07/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/input_data/input.pqi +65 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/input_data/phreeqc.dat +127 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/modflow_model.py +233 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/plot.ipynb +143 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/run.py +70 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E08/validate.py +66 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/input_data/input.pqi +87 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/input_data/phreeqc.dat +212 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/modflow_model.py +210 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/plot.ipynb +120 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/run.py +67 -0
- mf6pqc-1.0.0/examples/PHT3D_E09/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/input_data/haed_ref.npy +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/input_data/hk.npy +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/input_data/init_Benznapl.npy +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/input_data/init_Tolunapl.npy +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/input_data/input.pqi +175 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/input_data/phreeqc.dat +1723 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/input_data/strt.npy +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/modflow_model.py +236 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/plot.ipynb +168 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/run.py +90 -0
- mf6pqc-1.0.0/examples/PHT3D_E10/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/input_data/input.pqi +356 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/input_data/phreeqc.dat +1018 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/modflow_model.py +326 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/plot.ipynb +371 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/plot.py +194 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/run.py +134 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E11/validate.py +202 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/input_data/input.pqi +52 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/input_data/phreeqc.dat +168 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/modflow_model.py +293 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/plot.ipynb +193 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/run.py +136 -0
- mf6pqc-1.0.0/examples/PHT3D_E12/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/input_data/appelo98_data.txt +109 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/input_data/input.pqi +174 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/input_data/official_reference.npz +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/input_data/phreeqc.dat +1640 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/modflow_model.py +181 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/plot.ipynb +64 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/plot.py +120 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/run.py +79 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/PHT3D_E13/validate.py +63 -0
- mf6pqc-1.0.0/examples/README.md +41 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/README.md +121 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/input_data/input.pqi +309 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/modflow_model.py +606 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/plot.ipynb +276 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/plot.py +829 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/run.py +269 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/SaltLake_Brine3D/validate.py +376 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/input_data/input.pqi +68 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/modflow_model.py +165 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/plot.ipynb +299 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/plot.py +152 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/run.py +463 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Splitting_KineticDecay/validate.py +147 -0
- mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/input_data/input.pqi +80 -0
- mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/modflow_model.py +224 -0
- mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/plot.ipynb +433 -0
- mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/run.py +421 -0
- mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/input_data/MIN3P_output.csv +82 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/input_data/input.pqi +49 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/input_data/phreeqc.dat +1730 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/modflow_model.py +332 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/plot.ipynb +325 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/run.py +87 -0
- mf6pqc-1.0.0/examples/Xie2015_B1/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/input_data/MIN3P_output.csv +82 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/input_data/phreeqc.dat +1935 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/input_data/phreeqc.pqi +63 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/modflow_model.py +255 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/plot.ipynb +253 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/run.py +105 -0
- mf6pqc-1.0.0/examples/Xie2015_B2/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/input_data/MIN3P_output_minerals.csv +82 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/input_data/MIN3P_output_porosity-permeability.csv +82 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/input_data/input.pqi +135 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/input_data/phreeqc.dat +1892 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/modflow_model.py +266 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/plot.ipynb +319 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/run.py +105 -0
- mf6pqc-1.0.0/examples/Xie2015_B3/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/input_data/MIN3P_output.csv +82 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/input_data/MIN3P_output_minerals.csv +82 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/input_data/input.pqi +67 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/input_data/phreeqc.dat +1939 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/modflow_model.py +239 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/output/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/plot.ipynb +307 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/run.py +136 -0
- mf6pqc-1.0.0/examples/Xie2015_B4/simulation/.gitkeep +0 -0
- mf6pqc-1.0.0/examples/_example_support.py +55 -0
- mf6pqc-1.0.0/mf6pqc/__init__.py +32 -0
- mf6pqc-1.0.0/mf6pqc/_version.py +3 -0
- mf6pqc-1.0.0/mf6pqc/backends.py +259 -0
- mf6pqc-1.0.0/mf6pqc/config.py +203 -0
- mf6pqc-1.0.0/mf6pqc/constants.py +72 -0
- mf6pqc-1.0.0/mf6pqc/coupling/__init__.py +64 -0
- mf6pqc-1.0.0/mf6pqc/coupling/common.py +511 -0
- mf6pqc-1.0.0/mf6pqc/coupling/sia.py +517 -0
- mf6pqc-1.0.0/mf6pqc/coupling/snia.py +88 -0
- mf6pqc-1.0.0/mf6pqc/coupling/state.py +63 -0
- mf6pqc-1.0.0/mf6pqc/coupling/strang.py +187 -0
- mf6pqc-1.0.0/mf6pqc/coupling/thermal_snia.py +102 -0
- mf6pqc-1.0.0/mf6pqc/energy.py +354 -0
- mf6pqc-1.0.0/mf6pqc/exceptions.py +29 -0
- mf6pqc-1.0.0/mf6pqc/feedback.py +244 -0
- mf6pqc-1.0.0/mf6pqc/input_processing.py +95 -0
- mf6pqc-1.0.0/mf6pqc/mf6pqc.py +1028 -0
- mf6pqc-1.0.0/mf6pqc/output_processing.py +337 -0
- mf6pqc-1.0.0/mf6pqc/permeability.py +239 -0
- mf6pqc-1.0.0/mf6pqc/py.typed +1 -0
- mf6pqc-1.0.0/mf6pqc/types.py +10 -0
- mf6pqc-1.0.0/mf6pqc/utils.py +107 -0
- mf6pqc-1.0.0/mf6pqc.egg-info/PKG-INFO +158 -0
- mf6pqc-1.0.0/mf6pqc.egg-info/SOURCES.txt +249 -0
- mf6pqc-1.0.0/mf6pqc.egg-info/dependency_links.txt +1 -0
- mf6pqc-1.0.0/mf6pqc.egg-info/requires.txt +22 -0
- mf6pqc-1.0.0/mf6pqc.egg-info/top_level.txt +1 -0
- mf6pqc-1.0.0/pyproject.toml +93 -0
- mf6pqc-1.0.0/requirements.txt +2 -0
- mf6pqc-1.0.0/scripts/check_distribution.py +109 -0
- mf6pqc-1.0.0/scripts/check_examples.py +151 -0
- mf6pqc-1.0.0/setup.cfg +4 -0
- mf6pqc-1.0.0/tests/__init__.py +1 -0
- mf6pqc-1.0.0/tests/test_coupling_primitives.py +373 -0
- mf6pqc-1.0.0/tests/test_energy_coupling.py +131 -0
- mf6pqc-1.0.0/tests/test_fields.py +144 -0
- mf6pqc-1.0.0/tests/test_modflowapi_compatibility.py +118 -0
- mf6pqc-1.0.0/tests/test_public_api.py +268 -0
- mf6pqc-1.0.0/tests/test_release_regressions.py +203 -0
- mf6pqc-1.0.0/tests/test_salt_lake_case.py +83 -0
- mf6pqc-1.0.0/tests/test_splitting_algorithms.py +172 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
- Provide SNIA, SIA and Strang coupling with optional porosity, hydraulic
|
|
6
|
+
conductivity, diffusion and density feedback, and an opt-in thermal pathway.
|
|
7
|
+
|
|
8
|
+
- Require modflowapi 1.0.1 or a compatible 1.x release.
|
|
9
|
+
- Standard Python logging with opt-in progress messages for library users.
|
|
10
|
+
- Single-source versioning, explicit package contents, build checks and CI.
|
|
11
|
+
- Consistent example layout, portable paths, isolated native verification,
|
|
12
|
+
import-safe drivers and clean plotting notebooks.
|
|
13
|
+
- Strict integer, schedule, mask, initial-condition and tolerance validation.
|
|
14
|
+
- Native PhreeqcRM status failures become actionable Python exceptions;
|
|
15
|
+
failures finalize resources and closed instances cannot be reused.
|
|
16
|
+
- Correct geometric TDIS expansion for multipliers close to one; reject
|
|
17
|
+
unsupported time units and ATS before native initialization.
|
|
18
|
+
- Honor configured chemistry print masks and initial user density.
|
|
19
|
+
- Read calculated density independently of selected output, preserving all columns.
|
|
20
|
+
- Validate serialized metadata and physical fields before writing; write the
|
|
21
|
+
manifest last and include provenance and explicit time-axis semantics.
|
|
22
|
+
- Retain historical class, constructor, coupling-method and updater imports.
|
|
23
|
+
|
|
24
|
+
The recorded E13 pH/Ca comparison exceeds its acceptance thresholds; see
|
|
25
|
+
[verification history](docs/release-readiness.md). Version 1.0.0 packaging
|
|
26
|
+
preparation does not constitute a new numerical validation of the examples.
|
|
27
|
+
|
|
28
|
+
## 0.1.0 — 2026-03-01
|
|
29
|
+
|
|
30
|
+
- Initial archived release on [Zenodo](https://doi.org/10.5281/zenodo.18822578).
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use MF6PQC, cite the software and the original MODFLOW 6 and PhreeqcRM publications."
|
|
3
|
+
title: "MF6PQC: A Reactive Transport Framework Coupling MODFLOW 6 and PhreeqcRM"
|
|
4
|
+
type: software
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
authors:
|
|
7
|
+
- family-names: Wang
|
|
8
|
+
given-names: Zitao
|
|
9
|
+
repository-code: "https://github.com/wangzitao21/mf6pqc"
|
|
10
|
+
license: GPL-3.0-only
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Install `python -m pip install -e ".[dev,examples]"` in an isolated environment.
|
|
4
|
+
Run unittest, Ruff lint/format checks, and `python scripts/check_examples.py`
|
|
5
|
+
before submitting changes. Use an appropriate short native case when changing
|
|
6
|
+
numerical behavior; do not launch expensive benchmarks automatically.
|
|
7
|
+
|
|
8
|
+
Keep the runtime independent of individual case names, repository paths and
|
|
9
|
+
plotting dependencies. Add a regression test for a demonstrated numerical or
|
|
10
|
+
lifecycle failure. State units, array ordering, timestep semantics and state
|
|
11
|
+
ownership whenever an interface changes. Preserve reference inputs and acceptance
|
|
12
|
+
thresholds during refactoring; a changed benchmark definition requires evidence
|
|
13
|
+
and explicit documentation.
|
|
14
|
+
|
|
15
|
+
Examples follow the shared layout described in `examples/README.md`. Put model
|
|
16
|
+
construction and scientific constants in `modflow_model.py`, orchestration in
|
|
17
|
+
`run.py`, and figures in `plot.ipynb` or `plot.py`. Importing a script must not
|
|
18
|
+
run a simulation or read generated outputs. Clear notebook outputs before commit.
|
|
19
|
+
Generated output and workspaces are never committed.
|
|
20
|
+
|
|
21
|
+
A pull request should describe the problem, resulting behavior, relevant tests,
|
|
22
|
+
quantitative before/after comparisons, and any unresolved scientific limitation.
|
|
23
|
+
Do not present unrun cases as newly validated. For research use, report both solver
|
|
24
|
+
convergence and comparison against independent evidence.
|