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.
Files changed (251) hide show
  1. mf6pqc-1.0.0/CHANGELOG.md +30 -0
  2. mf6pqc-1.0.0/CITATION.cff +10 -0
  3. mf6pqc-1.0.0/CONTRIBUTING.md +24 -0
  4. mf6pqc-1.0.0/LICENSE +674 -0
  5. mf6pqc-1.0.0/MANIFEST.in +21 -0
  6. mf6pqc-1.0.0/PKG-INFO +158 -0
  7. mf6pqc-1.0.0/README.md +118 -0
  8. mf6pqc-1.0.0/docs/api.md +110 -0
  9. mf6pqc-1.0.0/docs/architecture.md +138 -0
  10. mf6pqc-1.0.0/docs/installation.md +71 -0
  11. mf6pqc-1.0.0/docs/modflowapi-1.0.1-compatibility.md +36 -0
  12. mf6pqc-1.0.0/docs/performance.md +45 -0
  13. mf6pqc-1.0.0/docs/publishing-first-release.zh-CN.md +194 -0
  14. mf6pqc-1.0.0/docs/release-readiness.md +56 -0
  15. mf6pqc-1.0.0/docs/release-verification.json +72 -0
  16. mf6pqc-1.0.0/docs/releasing.md +55 -0
  17. mf6pqc-1.0.0/docs/scientific-contracts.md +109 -0
  18. mf6pqc-1.0.0/docs/splitting-audit.md +115 -0
  19. mf6pqc-1.0.0/docs/thermal-coupling.md +101 -0
  20. mf6pqc-1.0.0/docs/validation.md +114 -0
  21. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/input_data/database.dat +36 -0
  22. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/input_data/input.pqi +62 -0
  23. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/modflow_model.py +240 -0
  24. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/output/.gitkeep +0 -0
  25. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/plot.ipynb +368 -0
  26. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/run.py +95 -0
  27. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/simulation/.gitkeep +0 -0
  28. mf6pqc-1.0.0/examples/GWE_VSC_Reactive/validate.py +122 -0
  29. mf6pqc-1.0.0/examples/Hamann2015/input_data/input.pqi +86 -0
  30. mf6pqc-1.0.0/examples/Hamann2015/input_data/pitzer.dat +998 -0
  31. mf6pqc-1.0.0/examples/Hamann2015/modflow_model.py +428 -0
  32. mf6pqc-1.0.0/examples/Hamann2015/output/.gitkeep +0 -0
  33. mf6pqc-1.0.0/examples/Hamann2015/plot.ipynb +343 -0
  34. mf6pqc-1.0.0/examples/Hamann2015/run.py +136 -0
  35. mf6pqc-1.0.0/examples/Hamann2015/simulation/.gitkeep +0 -0
  36. mf6pqc-1.0.0/examples/PHT3D_E01/input_data/input.pqi +47 -0
  37. mf6pqc-1.0.0/examples/PHT3D_E01/input_data/official_reference.npz +0 -0
  38. mf6pqc-1.0.0/examples/PHT3D_E01/input_data/phreeqc.dat +33 -0
  39. mf6pqc-1.0.0/examples/PHT3D_E01/modflow_model.py +199 -0
  40. mf6pqc-1.0.0/examples/PHT3D_E01/output/.gitkeep +0 -0
  41. mf6pqc-1.0.0/examples/PHT3D_E01/plot.ipynb +108 -0
  42. mf6pqc-1.0.0/examples/PHT3D_E01/run.py +89 -0
  43. mf6pqc-1.0.0/examples/PHT3D_E01/simulation/.gitkeep +0 -0
  44. mf6pqc-1.0.0/examples/PHT3D_E01/validate.py +51 -0
  45. mf6pqc-1.0.0/examples/PHT3D_E02/input_data/PHT3D_results.npy +0 -0
  46. mf6pqc-1.0.0/examples/PHT3D_E02/input_data/input.pqi +50 -0
  47. mf6pqc-1.0.0/examples/PHT3D_E02/input_data/phreeqc.dat +1935 -0
  48. mf6pqc-1.0.0/examples/PHT3D_E02/modflow_model.py +205 -0
  49. mf6pqc-1.0.0/examples/PHT3D_E02/output/.gitkeep +0 -0
  50. mf6pqc-1.0.0/examples/PHT3D_E02/plot.ipynb +113 -0
  51. mf6pqc-1.0.0/examples/PHT3D_E02/run.py +66 -0
  52. mf6pqc-1.0.0/examples/PHT3D_E02/simulation/.gitkeep +0 -0
  53. mf6pqc-1.0.0/examples/PHT3D_E03/input_data/official_reference.npz +0 -0
  54. mf6pqc-1.0.0/examples/PHT3D_E03/input_data/phreeqc.dat +296 -0
  55. mf6pqc-1.0.0/examples/PHT3D_E03/input_data/phreeqc.pqi +68 -0
  56. mf6pqc-1.0.0/examples/PHT3D_E03/modflow_model.py +196 -0
  57. mf6pqc-1.0.0/examples/PHT3D_E03/output/.gitkeep +0 -0
  58. mf6pqc-1.0.0/examples/PHT3D_E03/plot.ipynb +204 -0
  59. mf6pqc-1.0.0/examples/PHT3D_E03/run.py +63 -0
  60. mf6pqc-1.0.0/examples/PHT3D_E03/simulation/.gitkeep +0 -0
  61. mf6pqc-1.0.0/examples/PHT3D_E04/input_data/input.pqi +45 -0
  62. mf6pqc-1.0.0/examples/PHT3D_E04/input_data/official_reference.npz +0 -0
  63. mf6pqc-1.0.0/examples/PHT3D_E04/input_data/phreeqc.dat +84 -0
  64. mf6pqc-1.0.0/examples/PHT3D_E04/modflow_model.py +208 -0
  65. mf6pqc-1.0.0/examples/PHT3D_E04/output/.gitkeep +0 -0
  66. mf6pqc-1.0.0/examples/PHT3D_E04/plot.ipynb +129 -0
  67. mf6pqc-1.0.0/examples/PHT3D_E04/plot.py +159 -0
  68. mf6pqc-1.0.0/examples/PHT3D_E04/run.py +82 -0
  69. mf6pqc-1.0.0/examples/PHT3D_E04/simulation/.gitkeep +0 -0
  70. mf6pqc-1.0.0/examples/PHT3D_E04/validate.py +39 -0
  71. mf6pqc-1.0.0/examples/PHT3D_E05/input_data/official_reference.npz +0 -0
  72. mf6pqc-1.0.0/examples/PHT3D_E05/input_data/phreeqc.dat +130 -0
  73. mf6pqc-1.0.0/examples/PHT3D_E05/input_data/phreeqc.pqi +49 -0
  74. mf6pqc-1.0.0/examples/PHT3D_E05/modflow_model.py +212 -0
  75. mf6pqc-1.0.0/examples/PHT3D_E05/output/.gitkeep +0 -0
  76. mf6pqc-1.0.0/examples/PHT3D_E05/plot.ipynb +443 -0
  77. mf6pqc-1.0.0/examples/PHT3D_E05/run.py +68 -0
  78. mf6pqc-1.0.0/examples/PHT3D_E05/simulation/.gitkeep +0 -0
  79. mf6pqc-1.0.0/examples/PHT3D_E06/input_data/phreeqc.dat +107 -0
  80. mf6pqc-1.0.0/examples/PHT3D_E06/input_data/phreeqc.pqi +52 -0
  81. mf6pqc-1.0.0/examples/PHT3D_E06/modflow_model.py +239 -0
  82. mf6pqc-1.0.0/examples/PHT3D_E06/output/.gitkeep +0 -0
  83. mf6pqc-1.0.0/examples/PHT3D_E06/plot.ipynb +318 -0
  84. mf6pqc-1.0.0/examples/PHT3D_E06/run.py +68 -0
  85. mf6pqc-1.0.0/examples/PHT3D_E06/simulation/.gitkeep +0 -0
  86. mf6pqc-1.0.0/examples/PHT3D_E07/input_data/official_reference.npz +0 -0
  87. mf6pqc-1.0.0/examples/PHT3D_E07/input_data/phreeqc.dat +117 -0
  88. mf6pqc-1.0.0/examples/PHT3D_E07/input_data/phreeqc.pqi +69 -0
  89. mf6pqc-1.0.0/examples/PHT3D_E07/modflow_model.py +229 -0
  90. mf6pqc-1.0.0/examples/PHT3D_E07/output/.gitkeep +0 -0
  91. mf6pqc-1.0.0/examples/PHT3D_E07/plot.ipynb +148 -0
  92. mf6pqc-1.0.0/examples/PHT3D_E07/run.py +83 -0
  93. mf6pqc-1.0.0/examples/PHT3D_E07/simulation/.gitkeep +0 -0
  94. mf6pqc-1.0.0/examples/PHT3D_E08/input_data/input.pqi +65 -0
  95. mf6pqc-1.0.0/examples/PHT3D_E08/input_data/official_reference.npz +0 -0
  96. mf6pqc-1.0.0/examples/PHT3D_E08/input_data/phreeqc.dat +127 -0
  97. mf6pqc-1.0.0/examples/PHT3D_E08/modflow_model.py +233 -0
  98. mf6pqc-1.0.0/examples/PHT3D_E08/output/.gitkeep +0 -0
  99. mf6pqc-1.0.0/examples/PHT3D_E08/plot.ipynb +143 -0
  100. mf6pqc-1.0.0/examples/PHT3D_E08/run.py +70 -0
  101. mf6pqc-1.0.0/examples/PHT3D_E08/simulation/.gitkeep +0 -0
  102. mf6pqc-1.0.0/examples/PHT3D_E08/validate.py +66 -0
  103. mf6pqc-1.0.0/examples/PHT3D_E09/input_data/input.pqi +87 -0
  104. mf6pqc-1.0.0/examples/PHT3D_E09/input_data/official_reference.npz +0 -0
  105. mf6pqc-1.0.0/examples/PHT3D_E09/input_data/phreeqc.dat +212 -0
  106. mf6pqc-1.0.0/examples/PHT3D_E09/modflow_model.py +210 -0
  107. mf6pqc-1.0.0/examples/PHT3D_E09/output/.gitkeep +0 -0
  108. mf6pqc-1.0.0/examples/PHT3D_E09/plot.ipynb +120 -0
  109. mf6pqc-1.0.0/examples/PHT3D_E09/run.py +67 -0
  110. mf6pqc-1.0.0/examples/PHT3D_E09/simulation/.gitkeep +0 -0
  111. mf6pqc-1.0.0/examples/PHT3D_E10/input_data/haed_ref.npy +0 -0
  112. mf6pqc-1.0.0/examples/PHT3D_E10/input_data/hk.npy +0 -0
  113. mf6pqc-1.0.0/examples/PHT3D_E10/input_data/init_Benznapl.npy +0 -0
  114. mf6pqc-1.0.0/examples/PHT3D_E10/input_data/init_Tolunapl.npy +0 -0
  115. mf6pqc-1.0.0/examples/PHT3D_E10/input_data/input.pqi +175 -0
  116. mf6pqc-1.0.0/examples/PHT3D_E10/input_data/phreeqc.dat +1723 -0
  117. mf6pqc-1.0.0/examples/PHT3D_E10/input_data/strt.npy +0 -0
  118. mf6pqc-1.0.0/examples/PHT3D_E10/modflow_model.py +236 -0
  119. mf6pqc-1.0.0/examples/PHT3D_E10/output/.gitkeep +0 -0
  120. mf6pqc-1.0.0/examples/PHT3D_E10/plot.ipynb +168 -0
  121. mf6pqc-1.0.0/examples/PHT3D_E10/run.py +90 -0
  122. mf6pqc-1.0.0/examples/PHT3D_E10/simulation/.gitkeep +0 -0
  123. mf6pqc-1.0.0/examples/PHT3D_E11/input_data/input.pqi +356 -0
  124. mf6pqc-1.0.0/examples/PHT3D_E11/input_data/official_reference.npz +0 -0
  125. mf6pqc-1.0.0/examples/PHT3D_E11/input_data/phreeqc.dat +1018 -0
  126. mf6pqc-1.0.0/examples/PHT3D_E11/modflow_model.py +326 -0
  127. mf6pqc-1.0.0/examples/PHT3D_E11/output/.gitkeep +0 -0
  128. mf6pqc-1.0.0/examples/PHT3D_E11/plot.ipynb +371 -0
  129. mf6pqc-1.0.0/examples/PHT3D_E11/plot.py +194 -0
  130. mf6pqc-1.0.0/examples/PHT3D_E11/run.py +134 -0
  131. mf6pqc-1.0.0/examples/PHT3D_E11/simulation/.gitkeep +0 -0
  132. mf6pqc-1.0.0/examples/PHT3D_E11/validate.py +202 -0
  133. mf6pqc-1.0.0/examples/PHT3D_E12/input_data/input.pqi +52 -0
  134. mf6pqc-1.0.0/examples/PHT3D_E12/input_data/official_reference.npz +0 -0
  135. mf6pqc-1.0.0/examples/PHT3D_E12/input_data/phreeqc.dat +168 -0
  136. mf6pqc-1.0.0/examples/PHT3D_E12/modflow_model.py +293 -0
  137. mf6pqc-1.0.0/examples/PHT3D_E12/output/.gitkeep +0 -0
  138. mf6pqc-1.0.0/examples/PHT3D_E12/plot.ipynb +193 -0
  139. mf6pqc-1.0.0/examples/PHT3D_E12/run.py +136 -0
  140. mf6pqc-1.0.0/examples/PHT3D_E12/simulation/.gitkeep +0 -0
  141. mf6pqc-1.0.0/examples/PHT3D_E13/input_data/appelo98_data.txt +109 -0
  142. mf6pqc-1.0.0/examples/PHT3D_E13/input_data/input.pqi +174 -0
  143. mf6pqc-1.0.0/examples/PHT3D_E13/input_data/official_reference.npz +0 -0
  144. mf6pqc-1.0.0/examples/PHT3D_E13/input_data/phreeqc.dat +1640 -0
  145. mf6pqc-1.0.0/examples/PHT3D_E13/modflow_model.py +181 -0
  146. mf6pqc-1.0.0/examples/PHT3D_E13/output/.gitkeep +0 -0
  147. mf6pqc-1.0.0/examples/PHT3D_E13/plot.ipynb +64 -0
  148. mf6pqc-1.0.0/examples/PHT3D_E13/plot.py +120 -0
  149. mf6pqc-1.0.0/examples/PHT3D_E13/run.py +79 -0
  150. mf6pqc-1.0.0/examples/PHT3D_E13/simulation/.gitkeep +0 -0
  151. mf6pqc-1.0.0/examples/PHT3D_E13/validate.py +63 -0
  152. mf6pqc-1.0.0/examples/README.md +41 -0
  153. mf6pqc-1.0.0/examples/SaltLake_Brine3D/README.md +121 -0
  154. mf6pqc-1.0.0/examples/SaltLake_Brine3D/input_data/input.pqi +309 -0
  155. mf6pqc-1.0.0/examples/SaltLake_Brine3D/modflow_model.py +606 -0
  156. mf6pqc-1.0.0/examples/SaltLake_Brine3D/output/.gitkeep +0 -0
  157. mf6pqc-1.0.0/examples/SaltLake_Brine3D/plot.ipynb +276 -0
  158. mf6pqc-1.0.0/examples/SaltLake_Brine3D/plot.py +829 -0
  159. mf6pqc-1.0.0/examples/SaltLake_Brine3D/run.py +269 -0
  160. mf6pqc-1.0.0/examples/SaltLake_Brine3D/simulation/.gitkeep +0 -0
  161. mf6pqc-1.0.0/examples/SaltLake_Brine3D/validate.py +376 -0
  162. mf6pqc-1.0.0/examples/Splitting_KineticDecay/input_data/input.pqi +68 -0
  163. mf6pqc-1.0.0/examples/Splitting_KineticDecay/modflow_model.py +165 -0
  164. mf6pqc-1.0.0/examples/Splitting_KineticDecay/output/.gitkeep +0 -0
  165. mf6pqc-1.0.0/examples/Splitting_KineticDecay/plot.ipynb +299 -0
  166. mf6pqc-1.0.0/examples/Splitting_KineticDecay/plot.py +152 -0
  167. mf6pqc-1.0.0/examples/Splitting_KineticDecay/run.py +463 -0
  168. mf6pqc-1.0.0/examples/Splitting_KineticDecay/simulation/.gitkeep +0 -0
  169. mf6pqc-1.0.0/examples/Splitting_KineticDecay/validate.py +147 -0
  170. mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/input_data/input.pqi +80 -0
  171. mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/modflow_model.py +224 -0
  172. mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/output/.gitkeep +0 -0
  173. mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/plot.ipynb +433 -0
  174. mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/run.py +421 -0
  175. mf6pqc-1.0.0/examples/Splitting_RedoxFront2D/simulation/.gitkeep +0 -0
  176. mf6pqc-1.0.0/examples/Xie2015_B1/input_data/MIN3P_output.csv +82 -0
  177. mf6pqc-1.0.0/examples/Xie2015_B1/input_data/input.pqi +49 -0
  178. mf6pqc-1.0.0/examples/Xie2015_B1/input_data/phreeqc.dat +1730 -0
  179. mf6pqc-1.0.0/examples/Xie2015_B1/modflow_model.py +332 -0
  180. mf6pqc-1.0.0/examples/Xie2015_B1/output/.gitkeep +0 -0
  181. mf6pqc-1.0.0/examples/Xie2015_B1/plot.ipynb +325 -0
  182. mf6pqc-1.0.0/examples/Xie2015_B1/run.py +87 -0
  183. mf6pqc-1.0.0/examples/Xie2015_B1/simulation/.gitkeep +0 -0
  184. mf6pqc-1.0.0/examples/Xie2015_B2/input_data/MIN3P_output.csv +82 -0
  185. mf6pqc-1.0.0/examples/Xie2015_B2/input_data/phreeqc.dat +1935 -0
  186. mf6pqc-1.0.0/examples/Xie2015_B2/input_data/phreeqc.pqi +63 -0
  187. mf6pqc-1.0.0/examples/Xie2015_B2/modflow_model.py +255 -0
  188. mf6pqc-1.0.0/examples/Xie2015_B2/output/.gitkeep +0 -0
  189. mf6pqc-1.0.0/examples/Xie2015_B2/plot.ipynb +253 -0
  190. mf6pqc-1.0.0/examples/Xie2015_B2/run.py +105 -0
  191. mf6pqc-1.0.0/examples/Xie2015_B2/simulation/.gitkeep +0 -0
  192. mf6pqc-1.0.0/examples/Xie2015_B3/input_data/MIN3P_output_minerals.csv +82 -0
  193. mf6pqc-1.0.0/examples/Xie2015_B3/input_data/MIN3P_output_porosity-permeability.csv +82 -0
  194. mf6pqc-1.0.0/examples/Xie2015_B3/input_data/input.pqi +135 -0
  195. mf6pqc-1.0.0/examples/Xie2015_B3/input_data/phreeqc.dat +1892 -0
  196. mf6pqc-1.0.0/examples/Xie2015_B3/modflow_model.py +266 -0
  197. mf6pqc-1.0.0/examples/Xie2015_B3/output/.gitkeep +0 -0
  198. mf6pqc-1.0.0/examples/Xie2015_B3/plot.ipynb +319 -0
  199. mf6pqc-1.0.0/examples/Xie2015_B3/run.py +105 -0
  200. mf6pqc-1.0.0/examples/Xie2015_B3/simulation/.gitkeep +0 -0
  201. mf6pqc-1.0.0/examples/Xie2015_B4/input_data/MIN3P_output.csv +82 -0
  202. mf6pqc-1.0.0/examples/Xie2015_B4/input_data/MIN3P_output_minerals.csv +82 -0
  203. mf6pqc-1.0.0/examples/Xie2015_B4/input_data/input.pqi +67 -0
  204. mf6pqc-1.0.0/examples/Xie2015_B4/input_data/phreeqc.dat +1939 -0
  205. mf6pqc-1.0.0/examples/Xie2015_B4/modflow_model.py +239 -0
  206. mf6pqc-1.0.0/examples/Xie2015_B4/output/.gitkeep +0 -0
  207. mf6pqc-1.0.0/examples/Xie2015_B4/plot.ipynb +307 -0
  208. mf6pqc-1.0.0/examples/Xie2015_B4/run.py +136 -0
  209. mf6pqc-1.0.0/examples/Xie2015_B4/simulation/.gitkeep +0 -0
  210. mf6pqc-1.0.0/examples/_example_support.py +55 -0
  211. mf6pqc-1.0.0/mf6pqc/__init__.py +32 -0
  212. mf6pqc-1.0.0/mf6pqc/_version.py +3 -0
  213. mf6pqc-1.0.0/mf6pqc/backends.py +259 -0
  214. mf6pqc-1.0.0/mf6pqc/config.py +203 -0
  215. mf6pqc-1.0.0/mf6pqc/constants.py +72 -0
  216. mf6pqc-1.0.0/mf6pqc/coupling/__init__.py +64 -0
  217. mf6pqc-1.0.0/mf6pqc/coupling/common.py +511 -0
  218. mf6pqc-1.0.0/mf6pqc/coupling/sia.py +517 -0
  219. mf6pqc-1.0.0/mf6pqc/coupling/snia.py +88 -0
  220. mf6pqc-1.0.0/mf6pqc/coupling/state.py +63 -0
  221. mf6pqc-1.0.0/mf6pqc/coupling/strang.py +187 -0
  222. mf6pqc-1.0.0/mf6pqc/coupling/thermal_snia.py +102 -0
  223. mf6pqc-1.0.0/mf6pqc/energy.py +354 -0
  224. mf6pqc-1.0.0/mf6pqc/exceptions.py +29 -0
  225. mf6pqc-1.0.0/mf6pqc/feedback.py +244 -0
  226. mf6pqc-1.0.0/mf6pqc/input_processing.py +95 -0
  227. mf6pqc-1.0.0/mf6pqc/mf6pqc.py +1028 -0
  228. mf6pqc-1.0.0/mf6pqc/output_processing.py +337 -0
  229. mf6pqc-1.0.0/mf6pqc/permeability.py +239 -0
  230. mf6pqc-1.0.0/mf6pqc/py.typed +1 -0
  231. mf6pqc-1.0.0/mf6pqc/types.py +10 -0
  232. mf6pqc-1.0.0/mf6pqc/utils.py +107 -0
  233. mf6pqc-1.0.0/mf6pqc.egg-info/PKG-INFO +158 -0
  234. mf6pqc-1.0.0/mf6pqc.egg-info/SOURCES.txt +249 -0
  235. mf6pqc-1.0.0/mf6pqc.egg-info/dependency_links.txt +1 -0
  236. mf6pqc-1.0.0/mf6pqc.egg-info/requires.txt +22 -0
  237. mf6pqc-1.0.0/mf6pqc.egg-info/top_level.txt +1 -0
  238. mf6pqc-1.0.0/pyproject.toml +93 -0
  239. mf6pqc-1.0.0/requirements.txt +2 -0
  240. mf6pqc-1.0.0/scripts/check_distribution.py +109 -0
  241. mf6pqc-1.0.0/scripts/check_examples.py +151 -0
  242. mf6pqc-1.0.0/setup.cfg +4 -0
  243. mf6pqc-1.0.0/tests/__init__.py +1 -0
  244. mf6pqc-1.0.0/tests/test_coupling_primitives.py +373 -0
  245. mf6pqc-1.0.0/tests/test_energy_coupling.py +131 -0
  246. mf6pqc-1.0.0/tests/test_fields.py +144 -0
  247. mf6pqc-1.0.0/tests/test_modflowapi_compatibility.py +118 -0
  248. mf6pqc-1.0.0/tests/test_public_api.py +268 -0
  249. mf6pqc-1.0.0/tests/test_release_regressions.py +203 -0
  250. mf6pqc-1.0.0/tests/test_salt_lake_case.py +83 -0
  251. 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.