From a0844998303e82b335f680a8afcf966f361e3cc8 Mon Sep 17 00:00:00 2001 From: Joseph D Hughes Date: Tue, 1 Feb 2022 11:47:53 -0600 Subject: [PATCH 1/4] ci: Add isort to linting step Update flopy using latest version of black. Add autotest\pull_request_prepare.py to help contributors to run isort and black prior to a pull request. --- .docs/conf.py | 4 +- .docs/create_rstfiles.py | 7 +- .docs/create_tutorials.py | 17 +- .docs/pysrc/tutorial1.py | 3 + .docs/pysrc/tutorial2.py | 3 + .github/workflows/ci.yml | 14 +- CONTRIBUTING.md | 15 +- autotest/ci_framework.py | 1 + autotest/pull_request_prepare.py | 19 +++ autotest/t020_test.py | 2 +- autotest/t029_test.py | 41 +++-- autotest/t062_test_intersect.py | 31 ++-- autotest/t064_test_performance.py | 4 +- autotest/t075_test_ugrid.py | 21 ++- .../Testing/flopy3_CrossSectionExample.py | 89 +++++----- examples/Testing/flopy3_Oahu_02_02b.py | 158 +++++++++++------- examples/Testing/flopy3_loadSUB.py | 14 +- examples/Testing/flopy3_loadSWT.py | 14 +- examples/Testing/flopy3_loadplotfreyberg.py | 13 +- examples/Testing/flopy3_plotdata.py | 15 +- examples/Testing/testunitcbc.py | 51 +++--- examples/Testing/util_list_tester.py | 89 +++++----- examples/Tutorials/modflow/tutorial01_mf.py | 2 + examples/Tutorials/modflow/tutorial02_mf.py | 2 + examples/Tutorials/modflow6/tutorial01_mf6.py | 26 +-- .../modflow6data/tutorial01_mf6_data.py | 8 +- .../modflow6data/tutorial02_mf6_data.py | 2 + .../modflow6data/tutorial03_mf6_data.py | 2 + .../modflow6data/tutorial04_mf6_data.py | 2 + .../modflow6data/tutorial05_mf6_data.py | 2 + .../modflow6data/tutorial06_mf6_data.py | 2 + .../modflow6data/tutorial07_mf6_data.py | 2 + .../modflow6data/tutorial08_mf6_data.py | 2 + .../modflow6output/tutorial01_mf6_output.py | 10 +- .../Tutorials/seawat/tutorial01_seawat.py | 8 +- examples/common/setup_pmv_demo.py | 9 +- flopy/discretization/modeltime.py | 2 +- flopy/modflow/mfdis.py | 2 +- flopy/modflow/mfmlt.py | 2 +- flopy/modflow/mfsfr2.py | 2 +- flopy/plot/crosssection.py | 10 +- flopy/plot/map.py | 10 +- flopy/utils/binaryfile.py | 2 +- flopy/utils/flopy_io.py | 2 +- setup.py | 1 - 45 files changed, 451 insertions(+), 286 deletions(-) create mode 100644 autotest/pull_request_prepare.py diff --git a/.docs/conf.py b/.docs/conf.py index d18a44d0dc..adfdf9e414 100644 --- a/.docs/conf.py +++ b/.docs/conf.py @@ -15,10 +15,10 @@ # add flopy root directory to the python path sys.path.insert(0, os.path.abspath("..")) -from flopy import __version__, __author__ +from flopy import __author__, __version__ # -- determine if running on readthedocs ------------------------------------ -on_rtd = os.environ.get('READTHEDOCS') == 'True' +on_rtd = os.environ.get("READTHEDOCS") == "True" # -- determine if this version is a release candidate with open("../README.md", "r") as f: diff --git a/.docs/create_rstfiles.py b/.docs/create_rstfiles.py index 5a428f3d89..325f4c4c77 100644 --- a/.docs/create_rstfiles.py +++ b/.docs/create_rstfiles.py @@ -19,8 +19,11 @@ def create_tutorial_rst(): tutorial_dict = {} for dirpath, _, filenames in os.walk(pth): key = os.path.basename(os.path.normpath(dirpath)) - files = [filename.replace(".py", "") for filename in sorted(filenames) - if filename.endswith(".py")] + files = [ + filename.replace(".py", "") + for filename in sorted(filenames) + if filename.endswith(".py") + ] if len(files) > 0: tutorial_dict[key] = files diff --git a/.docs/create_tutorials.py b/.docs/create_tutorials.py index dacc696a1a..1f9a9b051d 100644 --- a/.docs/create_tutorials.py +++ b/.docs/create_tutorials.py @@ -14,8 +14,11 @@ def create_notebooks(): # get a list of python files py_files = [] for dirpath, _, filenames in os.walk(pth): - py_files += [os.path.join(dirpath, filename) for filename in - sorted(filenames) if filename.endswith(".py")] + py_files += [ + os.path.join(dirpath, filename) + for filename in sorted(filenames) + if filename.endswith(".py") + ] # sort the python files py_files = sorted(py_files) @@ -43,10 +46,12 @@ def create_notebooks(): os.makedirs(npth) for filepath in py_files: - src = os.path.join(wpth, - os.path.basename(filepath).replace(".py", ".ipynb")) - dst = os.path.join(npth, - os.path.basename(filepath).replace(".py", ".ipynb")) + src = os.path.join( + wpth, os.path.basename(filepath).replace(".py", ".ipynb") + ) + dst = os.path.join( + npth, os.path.basename(filepath).replace(".py", ".ipynb") + ) shutil.copyfile(src, dst) shutil.rmtree(".working") diff --git a/.docs/pysrc/tutorial1.py b/.docs/pysrc/tutorial1.py index 83e68a8553..89cebd992a 100644 --- a/.docs/pysrc/tutorial1.py +++ b/.docs/pysrc/tutorial1.py @@ -1,6 +1,8 @@ import os import sys + import numpy as np + import flopy # Assign name and create modflow model object @@ -52,6 +54,7 @@ mf.run_model() import matplotlib.pyplot as plt + import flopy.utils.binaryfile as bf plt.subplot(1, 1, 1, aspect="equal") diff --git a/.docs/pysrc/tutorial2.py b/.docs/pysrc/tutorial2.py index c299e9cdae..b045ff9f7e 100644 --- a/.docs/pysrc/tutorial2.py +++ b/.docs/pysrc/tutorial2.py @@ -1,5 +1,7 @@ import os + import numpy as np + import flopy # Model domain and grid definition @@ -121,6 +123,7 @@ # Imports import matplotlib.pyplot as plt + import flopy.utils.binaryfile as bf # Create the headfile and budget file objects diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b564cbc20..1f61aed5ee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,9 +76,20 @@ jobs: python -m pip install --upgrade pip pip install -r etc/requirements.pip.txt + - name: Run isort + run: | + echo "if isort check fails update isort using" + echo " pip install isort --upgrade" + echo "and run" + echo " isort ./flopy" + echo "and then commit the changes." + isort --check --diff ./flopy + - name: Run black run: | - echo "if black check fails run" + echo "if black check fails update black using" + echo " pip install black --upgrade" + echo "and run" echo " black ./flopy" echo "and then commit the changes." black --check --diff ./flopy @@ -93,7 +104,6 @@ jobs: flopyCI: name: autotests - needs: [flopy_setup, flopy_lint] runs-on: ${{ matrix.os }} strategy: fail-fast: false diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67dead21e4..f78fdf6bf9 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,15 +55,14 @@ Before you submit your Pull Request (PR) consider the following guidelines: ``` 4. Create your patch, **including appropriate test cases**. See [Autotesting,md](autotest/Autotesting.md) for guidelines for constructing autotests. -5. -6. Run the [black formatter](https://github.com/psf/black) on Flopy source files from the git repository root directory using: +5. Run the [isort import sorter](https://github.com/PyCQA/isort) and [black formatter](https://github.com/psf/black) on Flopy source files from the git repository `autotest` directory using: ```shell - black ./flopy + python pull_request_prepare.py ``` - Note: Pull Requests must pass black format checks run on the [GitHub actions](https://github.com/modflowpy/flopy/actions) (*linting*) before they will be accepted. The black formatter can be installed using [`pip`](https://pypi.org/project/black/) and [`conda`](https://anaconda.org/conda-forge/black). + Note: Pull Requests must pass isort import and black format checks run on the [GitHub actions](https://github.com/modflowpy/flopy/actions) (*linting*) before they will be accepted. isort can be installed using [`pip`](https://pypi.org/project/isort/) and [`conda`](https://anaconda.org/conda-forge/isort). The black formatter can also be installed using [`pip`](https://pypi.org/project/black/) and [`conda`](https://anaconda.org/conda-forge/black). If the Pull Request fails the *linting* job in the [flopy continuous integration](https://github.com/modflowpy/flopy/actions/workflows/ci.yml) workflow, make sure the latest versions of isort and black are installed. -7. Run the full FloPy test suite and ensure that all tests pass: +6. Run the full FloPy test suite and ensure that all tests pass: ```shell cd autotest @@ -72,7 +71,7 @@ Before you submit your Pull Request (PR) consider the following guidelines: ``` Note: the FloPy test suite requires the [pytest](https://pypi.org/project/pytest/) and [pymake](https://github.com/modflowpy/pymake) python packages. All the FloPy dependencies must also be installed for the tests to pass. -8. Commit your changes using a descriptive commit message that follows our +7. Commit your changes using a descriptive commit message that follows our [commit message conventions](#commit). Adherence to these conventions is necessary because release notes are automatically generated from these messages. @@ -81,13 +80,13 @@ Before you submit your Pull Request (PR) consider the following guidelines: ``` Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files. -9. Push your branch to GitHub: +8. Push your branch to GitHub: ```shell git push origin my-fix-branch ``` -10. In GitHub, send a pull request to `flopy:develop`. +9. In GitHub, send a pull request to `flopy:develop`. * If we suggest changes then: * Make the required updates. * Re-run the FloPy test suites, in the autotest directory, to ensure tests are still passing. diff --git a/autotest/ci_framework.py b/autotest/ci_framework.py index c8e2ef4747..4d2c0c6a2b 100644 --- a/autotest/ci_framework.py +++ b/autotest/ci_framework.py @@ -212,6 +212,7 @@ def save_as_artifact(self): shutil.copytree(test_dir, dst) return + def _get_mf6path(): """ Get the path for the MODFLOW 6 example problems diff --git a/autotest/pull_request_prepare.py b/autotest/pull_request_prepare.py new file mode 100644 index 0000000000..6e3865c4b4 --- /dev/null +++ b/autotest/pull_request_prepare.py @@ -0,0 +1,19 @@ +import os + +try: + import isort + print(f"isort version: {isort.__version__}") +except ModuleNotFoundError: + print("isort not installed\n\tInstall using pip install isort") + +try: + import black + print(f"black version: {black.__version__}") +except ModuleNotFoundError: + print("black not installed\n\tInstall using pip install black") + +print("running isort...") +os.system("isort -v ../flopy") + +print("running black...") +os.system("black -v ../flopy") diff --git a/autotest/t020_test.py b/autotest/t020_test.py index 36bff6bf91..2eeabe2863 100644 --- a/autotest/t020_test.py +++ b/autotest/t020_test.py @@ -16,7 +16,7 @@ def analyticalWaterTableSolution(h1, h2, z, R, K, L, x): b2 = h2 - z h = ( np.sqrt( - b1 ** 2 - (x / L) * (b1 ** 2 - b2 ** 2) + (R * x / K) * (L - x) + b1**2 - (x / L) * (b1**2 - b2**2) + (R * x / K) * (L - x) ) + z ) diff --git a/autotest/t029_test.py b/autotest/t029_test.py index 0c69007d13..d00cbecf42 100644 --- a/autotest/t029_test.py +++ b/autotest/t029_test.py @@ -328,22 +328,29 @@ def test_flowja_residuals(): def test_structured_faceflows_3d(): model_ws = f"{base_dir}_test_faceflows_3d" test_setup = FlopyTestSetup(verbose=True, test_dirs=model_ws) - name = 'mymodel' - sim = flopy.mf6.MFSimulation(sim_name=name, sim_ws=model_ws, exe_name='mf6') + name = "mymodel" + sim = flopy.mf6.MFSimulation( + sim_name=name, sim_ws=model_ws, exe_name="mf6" + ) tdis = flopy.mf6.ModflowTdis(sim) ims = flopy.mf6.ModflowIms(sim) gwf = flopy.mf6.ModflowGwf(sim, modelname=name, save_flows=True) - dis = flopy.mf6.ModflowGwfdis(gwf, nlay=3, nrow=10, ncol=10, top=0, botm=[-1, -2, -3]) + dis = flopy.mf6.ModflowGwfdis( + gwf, nlay=3, nrow=10, ncol=10, top=0, botm=[-1, -2, -3] + ) ic = flopy.mf6.ModflowGwfic(gwf) npf = flopy.mf6.ModflowGwfnpf(gwf, save_specific_discharge=True) - chd = flopy.mf6.ModflowGwfchd(gwf, stress_period_data=[[(0, 0, 0), 1.], - [(0, 9, 9), 0.]]) - budget_file = name + '.bud' - head_file = name + '.hds' - oc = flopy.mf6.ModflowGwfoc(gwf, - budget_filerecord=budget_file, - head_filerecord=head_file, - saverecord=[('HEAD', 'ALL'), ('BUDGET', 'ALL')]) + chd = flopy.mf6.ModflowGwfchd( + gwf, stress_period_data=[[(0, 0, 0), 1.0], [(0, 9, 9), 0.0]] + ) + budget_file = name + ".bud" + head_file = name + ".hds" + oc = flopy.mf6.ModflowGwfoc( + gwf, + budget_filerecord=budget_file, + head_filerecord=head_file, + saverecord=[("HEAD", "ALL"), ("BUDGET", "ALL")], + ) sim.write_simulation() sim.run_simulation() @@ -354,9 +361,15 @@ def test_structured_faceflows_3d(): flowja, grb_file=os.path.join(model_ws, "mymodel.dis.grb"), ) - assert frf.shape == head.shape, f"frf.shape {frf.shape} != head.shape {head.shape}" - assert fff.shape == head.shape, f"frf.shape {frf.shape} != head.shape {head.shape}" - assert flf.shape == head.shape, f"frf.shape {frf.shape} != head.shape {head.shape}" + assert ( + frf.shape == head.shape + ), f"frf.shape {frf.shape} != head.shape {head.shape}" + assert ( + fff.shape == head.shape + ), f"frf.shape {frf.shape} != head.shape {head.shape}" + assert ( + flf.shape == head.shape + ), f"frf.shape {frf.shape} != head.shape {head.shape}" return diff --git a/autotest/t062_test_intersect.py b/autotest/t062_test_intersect.py index e05cfec24b..42345e1632 100644 --- a/autotest/t062_test_intersect.py +++ b/autotest/t062_test_intersect.py @@ -99,14 +99,15 @@ def get_vlist(i, j, nrow, ncol): # simple functions to load vertices and index lists for unstructured grid def load_verts(fname): - verts = np.genfromtxt(fname, dtype=[int, float, float], - names=['iv', 'x', 'y']) - verts['iv'] -= 1 # zero based + verts = np.genfromtxt( + fname, dtype=[int, float, float], names=["iv", "x", "y"] + ) + verts["iv"] -= 1 # zero based return verts def load_iverts(fname): - f = open(fname, 'r') + f = open(fname, "r") iverts = [] xc = [] yc = [] @@ -244,8 +245,12 @@ def test_unstructured_xyz_intersect(): ncpl = np.array(3 * [len(iverts)]) nnodes = np.sum(ncpl) - top = np.ones((nnodes), ) - botm = np.ones((nnodes), ) + top = np.ones( + (nnodes), + ) + botm = np.ones( + (nnodes), + ) # set top and botm elevations i0 = 0 @@ -258,11 +263,15 @@ def test_unstructured_xyz_intersect(): i1 += cpl # create the modelgrid - mg = flopy.discretization.UnstructuredGrid(vertices=verts, - iverts=iverts, - xcenters=xc, - ycenters=yc, top=top, - botm=botm, ncpl=ncpl) + mg = flopy.discretization.UnstructuredGrid( + vertices=verts, + iverts=iverts, + xcenters=xc, + ycenters=yc, + top=top, + botm=botm, + ncpl=ncpl, + ) xc, yc, zc = mg.xyzcellcenters zc = zc[0].reshape(mg.nlay, mg.ncpl[0]) diff --git a/autotest/t064_test_performance.py b/autotest/t064_test_performance.py index 6aa64dfafa..808e521ef0 100644 --- a/autotest/t064_test_performance.py +++ b/autotest/t064_test_performance.py @@ -29,7 +29,7 @@ def setup_class(cls): size = 100 nlay = 10 nper = 10 - nsfr = int((size ** 2) / 5) + nsfr = int((size**2) / 5) letters = string.ascii_lowercase prepend = "".join(random.choice(letters) for i in range(10)) @@ -63,7 +63,7 @@ def setup_class(cls): m, rech={k: 0.001 - np.cos(k) * 0.001 for k in range(nper)} ) - ra = fm.ModflowWel.get_empty(size ** 2) + ra = fm.ModflowWel.get_empty(size**2) well_spd = {} for kper in range(nper): ra_per = ra.copy() diff --git a/autotest/t075_test_ugrid.py b/autotest/t075_test_ugrid.py index f8de805cfe..8e1dcec0c5 100644 --- a/autotest/t075_test_ugrid.py +++ b/autotest/t075_test_ugrid.py @@ -300,9 +300,9 @@ def test_voronoi_grid0(plot=False): [1330.11116, 1809.788273], [399.1804436, 2998.515188], [914.7728404, 5132.494831], -# [1831.381546, 6335.543757], + # [1831.381546, 6335.543757], ] - area_max = 100.0 ** 2 + area_max = 100.0**2 tri = Triangle(maximum_area=area_max, angle=30, model_ws=model_ws) poly = np.array(domain) tri.add_polygon(poly) @@ -427,6 +427,7 @@ def test_voronoi_grid2(plot=False): if plot: import matplotlib.pyplot as plt + fig = plt.figure(figsize=(10, 10)) ax = fig.add_subplot() ax.set_aspect("equal") @@ -607,7 +608,11 @@ def test_voronoi_grid5(plot=False): voronoi_grid.plot(ax=ax) # plot invalid cells - ax.plot(voronoi_grid.xcellcenters[ninvalid_cells], voronoi_grid.ycellcenters[ninvalid_cells], 'ro') + ax.plot( + voronoi_grid.xcellcenters[ninvalid_cells], + voronoi_grid.ycellcenters[ninvalid_cells], + "ro", + ) plt.savefig(os.path.join(model_ws, f"{name}.png")) @@ -632,9 +637,9 @@ def test_voronoi_grid5(plot=False): # test_create_unstructured_grid_from_verts() # test_triangle_unstructured_grid() # test_voronoi_vertex_grid() - #test_voronoi_grid0(plot=True) - #test_voronoi_grid1(plot=True) + # test_voronoi_grid0(plot=True) + # test_voronoi_grid1(plot=True) test_voronoi_grid2(plot=True) - #test_voronoi_grid3(plot=True) - #test_voronoi_grid4(plot=True) - #test_voronoi_grid5(plot=True) + # test_voronoi_grid3(plot=True) + # test_voronoi_grid4(plot=True) + # test_voronoi_grid5(plot=True) diff --git a/examples/Testing/flopy3_CrossSectionExample.py b/examples/Testing/flopy3_CrossSectionExample.py index 6077e5e729..8d78c09859 100644 --- a/examples/Testing/flopy3_CrossSectionExample.py +++ b/examples/Testing/flopy3_CrossSectionExample.py @@ -7,39 +7,40 @@ import flopy -#Set name of MODFLOW exe +# Set name of MODFLOW exe # assumes executable is in users path statement -version = 'mf2005' -exe_name = 'mf2005' -if platform.system() == 'Windows': - exe_name = 'mf2005.exe' +version = "mf2005" +exe_name = "mf2005" +if platform.system() == "Windows": + exe_name = "mf2005.exe" mfexe = exe_name -#Set the paths -loadpth = os.path.join('..', 'data', 'freyberg') -modelpth = os.path.join('data') +# Set the paths +loadpth = os.path.join("..", "data", "freyberg") +modelpth = os.path.join("data") -#make sure modelpth directory exists +# make sure modelpth directory exists if not os.path.exists(modelpth): os.makedirs(modelpth) - -ml = flopy.modflow.Modflow.load('freyberg.nam', model_ws=loadpth, exe_name=exe_name, version=version) +ml = flopy.modflow.Modflow.load( + "freyberg.nam", model_ws=loadpth, exe_name=exe_name, version=version +) ml.change_model_ws(new_pth=modelpth) ml.write_input() success, buff = ml.run_model() if not success: - print('Something bad happened.') -files = ['freyberg.hds', 'freyberg.cbc'] + print("Something bad happened.") +files = ["freyberg.hds", "freyberg.cbc"] for f in files: if os.path.isfile(os.path.join(modelpth, f)): - print (f'Output file located: {f}') + print(f"Output file located: {f}") else: - print (f'Error. Output file cannot be found: {f}') + print(f"Error. Output file cannot be found: {f}") -fname = os.path.join(modelpth, 'freyberg.hds') +fname = os.path.join(modelpth, "freyberg.hds") hdobj = flopy.utils.HeadFile(fname) head = hdobj.get_data() @@ -47,13 +48,15 @@ ax = fig.add_subplot(1, 1, 1) # Next we create an instance of the ModelMap class -modelxsect = flopy.plot.ModelCrossSection(model=ml, line={'Row': 20}) -fb = modelxsect.plot_fill_between(head, colors=['brown', 'cyan'], masked_values=[999.00]) -#patches = modelxsect.csplot_ibound(head=head) -patches = modelxsect.plot_bc('RIV', head=head) -patches = modelxsect.plot_bc('WEL', color='navy', head=head) +modelxsect = flopy.plot.ModelCrossSection(model=ml, line={"Row": 20}) +fb = modelxsect.plot_fill_between( + head, colors=["brown", "cyan"], masked_values=[999.00] +) +# patches = modelxsect.csplot_ibound(head=head) +patches = modelxsect.plot_bc("RIV", head=head) +patches = modelxsect.plot_bc("WEL", color="navy", head=head) linecollection = modelxsect.plot_grid() -t = ax.set_title('Row 20') +t = ax.set_title("Row 20") plt.show() @@ -62,43 +65,49 @@ ax = fig.add_subplot(1, 1, 1) # Next we create an instance of the ModelMap class -modelxsect = flopy.plot.ModelCrossSection(ml=ml, line={'Row': 20}) +modelxsect = flopy.plot.ModelCrossSection(ml=ml, line={"Row": 20}) # Then we can use the plot_grid() method to draw the grid # The return value for this function is a matplotlib LineCollection object, # which could be manipulated (or used) later if necessary. -cmap = plt.get_cmap('jet') -cr = np.linspace(10., 25., num=cmap.N) +cmap = plt.get_cmap("jet") +cr = np.linspace(10.0, 25.0, num=cmap.N) norm = matplotlib.colors.BoundaryNorm(cr, cmap.N) -hv = modelxsect.plot_array(head, head=head, masked_values=[999.00, -1.00000E+30]) #, norm=norm) +hv = modelxsect.plot_array( + head, head=head, masked_values=[999.00, -1.00000e30] +) # , norm=norm) patches = modelxsect.plot_ibound(head=head) -patches = modelxsect.plot_bc('RIV', head=head) -patches = modelxsect.plot_bc('WEL', color='navy', head=head) +patches = modelxsect.plot_bc("RIV", head=head) +patches = modelxsect.plot_bc("WEL", color="navy", head=head) linecollection = modelxsect.plot_grid() -t = ax.set_title('Row 20') -fig.colorbar(hv, orientation='horizontal', format='%3.1f') +t = ax.set_title("Row 20") +fig.colorbar(hv, orientation="horizontal", format="%3.1f") plt.show() - # First step is to set up the plot fig = plt.figure(figsize=(5, 5)) ax = fig.add_subplot(1, 1, 1) # Next we create an instance of the ModelMap class -modelxsect = flopy.plot.ModelCrossSection(ml=ml, line={'Column': 10}) +modelxsect = flopy.plot.ModelCrossSection(ml=ml, line={"Column": 10}) # Then we can use the plot_grid() method to draw the grid # The return value for this function is a matplotlib LineCollection object, # which could be manipulated (or used) later if necessary. -hv = modelxsect.plot_array(head, masked_values=[999.00, -1.00000E+30], norm=norm) -ct = modelxsect.contour_array(head, masked_values=[999.00, -1.00000E+30], - colors='black', linewidths=0.5, - levels=[10, 15, 20, 25, 30]) -plt.clabel(ct, fontsize=8, fmt='%3.1f') +hv = modelxsect.plot_array( + head, masked_values=[999.00, -1.00000e30], norm=norm +) +ct = modelxsect.contour_array( + head, + masked_values=[999.00, -1.00000e30], + colors="black", + linewidths=0.5, + levels=[10, 15, 20, 25, 30], +) +plt.clabel(ct, fontsize=8, fmt="%3.1f") patches = modelxsect.plot_ibound() linecollection = modelxsect.plot_grid() -t = ax.set_title('Column 10') -fig.colorbar(hv, orientation='horizontal', format='%3.1f') +t = ax.set_title("Column 10") +fig.colorbar(hv, orientation="horizontal", format="%3.1f") plt.show() - diff --git a/examples/Testing/flopy3_Oahu_02_02b.py b/examples/Testing/flopy3_Oahu_02_02b.py index c136b4a1a9..ac7582d155 100755 --- a/examples/Testing/flopy3_Oahu_02_02b.py +++ b/examples/Testing/flopy3_Oahu_02_02b.py @@ -9,36 +9,36 @@ # changed origin of grid in plot to upper left corner. # # uses FLOPY3, modified from FLOPY2 tutorial 2 -# +# # Kolja Rotzoll (kolja@usgs.gov), 1/15/2015 # ---------------------------------------------------- import os import sys import numpy as np -from pylab import * from PIL import Image, ImageDraw +from pylab import * -flopypath = os.path.join('..', '..') +flopypath = os.path.join("..", "..") if flopypath not in sys.path: - print('Adding to sys.path: ', flopypath) + print("Adding to sys.path: ", flopypath) sys.path.append(flopypath) import flopy -workspace = os.path.join('data') -#make sure workspace directory exists +workspace = os.path.join("data") +# make sure workspace directory exists if not os.path.exists(workspace): os.makedirs(workspace) # flopy objects -modelname = 'Oahu_01' -mf = flopy.modflow.Modflow(modelname, exe_name='mf2005', model_ws=workspace) +modelname = "Oahu_01" +mf = flopy.modflow.Modflow(modelname, exe_name="mf2005", model_ws=workspace) # model domain and grid definition -ztop = 30. # top of layer (ft rel to msl) -botm = -1000. # bottom of layer (ft rel to msl) +ztop = 30.0 # top of layer (ft rel to msl) +botm = -1000.0 # bottom of layer (ft rel to msl) nlay = 1 # number of layers (z) nrow = 18 # number of rows (y) ncol = 20 # number of columns (x) @@ -53,27 +53,50 @@ nstp = 1000 # number of time steps perlen = nstp * ts # length of simulation, in days steady = True # steady state or transient -dis = flopy.modflow.ModflowDis(mf, nlay, nrow, ncol, delr=delr, delc=delc, - top=ztop, botm=botm, nper=nper, - perlen=perlen, nstp=nstp, steady=steady) +dis = flopy.modflow.ModflowDis( + mf, + nlay, + nrow, + ncol, + delr=delr, + delc=delc, + top=ztop, + botm=botm, + nper=nper, + perlen=perlen, + nstp=nstp, + steady=steady, +) # hydraulic parameters (lpf or bcf) -hk = 1500. # horizontal K +hk = 1500.0 # horizontal K sy = 0.05 # specific yield -ss = 1.e-5 # specific storage +ss = 1.0e-5 # specific storage layavg = 0 # 0 = harmonic mean, 1 = logarithmic mean, # 2 = arithmetic mean of sat b and log-mean K laytyp = 1 # 0 = confined, 1 = convertible -lpf = flopy.modflow.ModflowLpf(mf, hk=hk, sy=sy, ss=ss, laytyp=laytyp, layavg=layavg) +lpf = flopy.modflow.ModflowLpf( + mf, hk=hk, sy=sy, ss=ss, laytyp=laytyp, layavg=layavg +) laycon = 2 # 0 = confined, 1 = unconfined T varies, # 2 = convertible T const, 3 = convertible T varies # water/land interface (now replaced with coarse Oahu coastline) -polyg = [(6, 13), (3, 6), (6, 6), (9, 3), (12, 8), (14, 9), (16, 13), (13, 14), (11, 13), - (6, 13)] # referenced to row/col +polyg = [ + (6, 13), + (3, 6), + (6, 6), + (9, 3), + (12, 8), + (14, 9), + (16, 13), + (13, 14), + (11, 13), + (6, 13), +] # referenced to row/col px, py = zip(*polyg) colcell, rowcell = meshgrid(range(ncol), range(nrow)) -mask = Image.new('L', (ncol, nrow), 0) +mask = Image.new("L", (ncol, nrow), 0) ImageDraw.Draw(mask).polygon(polyg, outline=1, fill=1) index = np.array(mask) @@ -83,7 +106,7 @@ peak = 15 # maximum expected water level h_start[:, :][index == 1] = peak # starting heads over land h_start[:, :][index == 0] = 0 # starting heads over ocean -#print h_start +# print h_start bas = flopy.modflow.ModflowBas(mf, ibound=ibound, strt=h_start) # general head boundary @@ -92,9 +115,9 @@ lrchc[:, 0] = 0 lrchc[:, 1] = rowcell[index == 0] lrchc[:, 2] = colcell[index == 0] -lrchc[:, 3] = 0. +lrchc[:, 3] = 0.0 lrchc[:, 4] = hk * 10 -#print lrchc +# print lrchc ghb = flopy.modflow.ModflowGhb(mf, stress_period_data={0: lrchc}) # recharge & withdrawal @@ -105,8 +128,10 @@ lrcq[:, 1] = rowcell[index == 1] lrcq[:, 2] = colcell[index == 1] lrcq[:, 3] = Recharge / nrech -lrcq = np.vstack((lrcq, [0, 8, 7, -90 * 133680], [0, 10, 9, -80 * 133680])) # add wells (row/col, zero-based) -#print lrcq +lrcq = np.vstack( + (lrcq, [0, 8, 7, -90 * 133680], [0, 10, 9, -80 * 133680]) +) # add wells (row/col, zero-based) +# print lrcq wel = flopy.modflow.ModflowWel(mf, stress_period_data={0: lrcq}) # horizontal flow barrier @@ -118,50 +143,67 @@ lrcrch[:, 3] = arange(2, nhfb + 2) # row 2 lrcrch[:, 4] = ones(nhfb) * (ncol / 2) # col 2 lrcrch[:, 5] = 0.000001 # hydrologic characteristics -#print lrcrch +# print lrcrch hfb = flopy.modflow.ModflowHfb(mf, hfb_data=lrcrch) # SWI input z1 = np.zeros((nrow, ncol)) z1[index == 1] = peak * (-40) # 50% salinity from starting head z = array([z1]) # zeta interfaces -#print z +# print z iso = np.zeros((nrow, ncol), dtype=np.int32) # water type of sinks and sources iso[:, :][index == 1] = 1 # land iso[:, :][index == 0] = -2 # ocean (ghb) -#print iso -swi = flopy.modflow.ModflowSwi2(mf, nsrf=1, istrat=1, toeslope=0.04, tipslope=0.04, - nu=[0, 0.025], zeta=z, ssz=0.05, isource=iso, nsolver=1) +# print iso +swi = flopy.modflow.ModflowSwi2( + mf, + nsrf=1, + istrat=1, + toeslope=0.04, + tipslope=0.04, + nu=[0, 0.025], + zeta=z, + ssz=0.05, + isource=iso, + nsolver=1, +) # output control & solver -spd = {(0, 0): ['print head'], - (0, 1): [], - (0, 249): ['print head'], - (0, 250): [], - (0, 499): ['print head', 'save ibound'], - (0, 500): [], - (0, 749): ['print head', 'ddreference'], - (0, 750): [], - (0, 999): ['print head']} -#oc = flopy.modflow.ModflowOc(mf, stress_period_data=spd, cboufm='(20i5)') -oc = flopy.modflow.ModflowOc88(mf, save_head_every=100, - item2=[[0, 1, 0, 0]], item3=[[0, 1, 0, 0]]) -pcg = flopy.modflow.ModflowPcg(mf, hclose=1.0e-4, rclose=5.0e-0) # pre-conjugate gradient solver -#de4 = flopy.modflow.ModflowDe4(mf, itmx=1, hclose=1e-5) # direct solver +spd = { + (0, 0): ["print head"], + (0, 1): [], + (0, 249): ["print head"], + (0, 250): [], + (0, 499): ["print head", "save ibound"], + (0, 500): [], + (0, 749): ["print head", "ddreference"], + (0, 750): [], + (0, 999): ["print head"], +} +# oc = flopy.modflow.ModflowOc(mf, stress_period_data=spd, cboufm='(20i5)') +oc = flopy.modflow.ModflowOc88( + mf, save_head_every=100, item2=[[0, 1, 0, 0]], item3=[[0, 1, 0, 0]] +) +pcg = flopy.modflow.ModflowPcg( + mf, hclose=1.0e-4, rclose=5.0e-0 +) # pre-conjugate gradient solver +# de4 = flopy.modflow.ModflowDe4(mf, itmx=1, hclose=1e-5) # direct solver # -------------------------------------------------------------------- # write the model input files mf.write_input() -print('\n\nfinished write...\n') +print("\n\nfinished write...\n") -m2 = flopy.modflow.Modflow.load(modelname, exe_name='mf2005', model_ws=workspace, verbose=True) +m2 = flopy.modflow.Modflow.load( + modelname, exe_name="mf2005", model_ws=workspace, verbose=True +) -print('\nfinished read...\n') +print("\nfinished read...\n") -oc2 = m2.get_package('OC') +oc2 = m2.get_package("OC") -#print(oc2.stress_period_data.keys()) +# print(oc2.stress_period_data.keys()) oc2.write_file() @@ -169,18 +211,16 @@ print(len(ax)) plt.show() -#m2.dis.plot(colorbar=True) -#plt.show() - -#m2.lpf.plot(colorbar=True) -#plt.show() - -#m2.ghb.plot(key='cond', colorbar=True, masked_values=[0]) -#plt.show() +# m2.dis.plot(colorbar=True) +# plt.show() -#m2.ghb.plot() -#plt.show() +# m2.lpf.plot(colorbar=True) +# plt.show() -print('\nthis is the end...my friend\n') +# m2.ghb.plot(key='cond', colorbar=True, masked_values=[0]) +# plt.show() +# m2.ghb.plot() +# plt.show() +print("\nthis is the end...my friend\n") diff --git a/examples/Testing/flopy3_loadSUB.py b/examples/Testing/flopy3_loadSUB.py index c7f87d09d8..6365940d32 100644 --- a/examples/Testing/flopy3_loadSUB.py +++ b/examples/Testing/flopy3_loadSUB.py @@ -2,18 +2,20 @@ import flopy -pth = os.path.join('..', 'data', 'mf2005_test') -opth = os.path.join('data') -mname = 'tr2k_s3' +pth = os.path.join("..", "data", "mf2005_test") +opth = os.path.join("data") +mname = "tr2k_s3" -ml = flopy.modflow.Modflow.load(mname, version='mf2005', model_ws=pth, verbose=True) +ml = flopy.modflow.Modflow.load( + mname, version="mf2005", model_ws=pth, verbose=True +) ml.change_model_ws(opth) ml.write_input() -ml.set_exename('mf2005dbl') +ml.set_exename("mf2005dbl") ml.run_model() -print('finished...') \ No newline at end of file +print("finished...") diff --git a/examples/Testing/flopy3_loadSWT.py b/examples/Testing/flopy3_loadSWT.py index 308028da07..e954224943 100644 --- a/examples/Testing/flopy3_loadSWT.py +++ b/examples/Testing/flopy3_loadSWT.py @@ -2,18 +2,20 @@ import flopy -pth = os.path.join('..', 'data', 'mf2005_test') -opth = os.path.join('data') -mname = 'swtex4' +pth = os.path.join("..", "data", "mf2005_test") +opth = os.path.join("data") +mname = "swtex4" -ml = flopy.modflow.Modflow.load(mname, version='mf2005', model_ws=pth, verbose=True) +ml = flopy.modflow.Modflow.load( + mname, version="mf2005", model_ws=pth, verbose=True +) ml.change_model_ws(opth) ml.write_input() -ml.set_exename('mf2005dbl') +ml.set_exename("mf2005dbl") ml.run_model() -print('finished...') \ No newline at end of file +print("finished...") diff --git a/examples/Testing/flopy3_loadplotfreyberg.py b/examples/Testing/flopy3_loadplotfreyberg.py index 991f768da7..5765dc4d2b 100644 --- a/examples/Testing/flopy3_loadplotfreyberg.py +++ b/examples/Testing/flopy3_loadplotfreyberg.py @@ -1,18 +1,21 @@ import os + import matplotlib.pyplot as plt import flopy -ml = flopy.modflow.Modflow.load('freyberg.nam', version='mf2005', verbose=True, model_ws='data') +ml = flopy.modflow.Modflow.load( + "freyberg.nam", version="mf2005", verbose=True, model_ws="data" +) ml.check() -fb = os.path.join('data', 'ml') +fb = os.path.join("data", "ml") ml.plot(filename_base=fb) -#ml.plot() -#plt.show() +# ml.plot() +# plt.show() binobj = ml.load_results() -print('then end my friend') \ No newline at end of file +print("then end my friend") diff --git a/examples/Testing/flopy3_plotdata.py b/examples/Testing/flopy3_plotdata.py index aa07401bde..6653343beb 100644 --- a/examples/Testing/flopy3_plotdata.py +++ b/examples/Testing/flopy3_plotdata.py @@ -4,7 +4,12 @@ import flopy -fb = flopy.modflow.Modflow.load('freyberg', version='mf2005', model_ws=os.path.join('..', 'data', 'freyberg'), verbose=True) +fb = flopy.modflow.Modflow.load( + "freyberg", + version="mf2005", + model_ws=os.path.join("..", "data", "freyberg"), + verbose=True, +) dis = fb.dis @@ -21,10 +26,10 @@ fig = plt.figure(figsize=(8, 8)) -ax = fig.add_subplot(1,2,1, aspect='equal') -fb.dis.top.plot(grid=True, axes=ax, colorbar=True) -ax = fig.add_subplot(1,2,2, aspect='equal') +ax = fig.add_subplot(1, 2, 1, aspect="equal") +fb.dis.top.plot(grid=True, axes=ax, colorbar=True) +ax = fig.add_subplot(1, 2, 2, aspect="equal") fb.dis.botm.plot(grid=True, axes=ax, colorbar=True) plt.show() -print('this is the end my friend') \ No newline at end of file +print("this is the end my friend") diff --git a/examples/Testing/testunitcbc.py b/examples/Testing/testunitcbc.py index b03a40d927..cc0c6e770d 100644 --- a/examples/Testing/testunitcbc.py +++ b/examples/Testing/testunitcbc.py @@ -1,4 +1,3 @@ - import os import numpy as np @@ -6,44 +5,49 @@ import flopy # Assign name and create modflow model object -modelname = 'units' -mf = flopy.modflow.Modflow(modelname, exe_name='mf2005', model_ws=os.path.join('data')) +modelname = "units" +mf = flopy.modflow.Modflow( + modelname, exe_name="mf2005", model_ws=os.path.join("data") +) cbc_unit_nb = 1053 # Model domain and grid definition -Lx = 1000. -Ly = 1000. -ztop = 0. -zbot = -50. +Lx = 1000.0 +Ly = 1000.0 +ztop = 0.0 +zbot = -50.0 nlay = 1 nrow = 10 ncol = 10 -delr = Lx/ncol -delc = Ly/nrow +delr = Lx / ncol +delc = Ly / nrow delv = (ztop - zbot) / nlay botm = np.linspace(ztop, zbot, nlay + 1) # Create the discretization object -dis = flopy.modflow.ModflowDis(mf, nlay, nrow, ncol, delr=delr, delc=delc, - top=ztop, botm=botm[1:]) +dis = flopy.modflow.ModflowDis( + mf, nlay, nrow, ncol, delr=delr, delc=delc, top=ztop, botm=botm[1:] +) # Variables for the BAS package ibound = np.ones((nlay, nrow, ncol), dtype=np.int32) ibound[:, :, 0] = -1 ibound[:, :, -1] = -1 strt = np.ones((nlay, nrow, ncol), dtype=np.float32) -strt[:, :, 0] = 10. -strt[:, :, -1] = 0. +strt[:, :, 0] = 10.0 +strt[:, :, -1] = 0.0 bas = flopy.modflow.ModflowBas(mf, ibound=ibound, strt=strt) # Add LPF package to the MODFLOW model -lpf = flopy.modflow.ModflowLpf(mf, hk=10., vka=10., ipakcb=cbc_unit_nb) +lpf = flopy.modflow.ModflowLpf(mf, hk=10.0, vka=10.0, ipakcb=cbc_unit_nb) # add well -wel = flopy.modflow.ModflowWel(mf, ipakcb=cbc_unit_nb, stress_period_data={0:[0, 4, 4, -100.]}) +wel = flopy.modflow.ModflowWel( + mf, ipakcb=cbc_unit_nb, stress_period_data={0: [0, 4, 4, -100.0]} +) # Add OC package to the MODFLOW model -spd = {(0, 0): ['print head', 'print budget', 'save head', 'save budget']} +spd = {(0, 0): ["print head", "print budget", "save head", "save budget"]} oc = flopy.modflow.ModflowOc(mf, stress_period_data=spd, compact=True) # Add PCG package to the MODFLOW model @@ -60,18 +64,18 @@ import flopy.utils.binaryfile as bf -fig = plt.figure(figsize=(10,10)) -ax = fig.add_subplot(1, 1, 1, aspect='equal') +fig = plt.figure(figsize=(10, 10)) +ax = fig.add_subplot(1, 1, 1, aspect="equal") -hds = bf.HeadFile(os.path.join('data', f"{modelname}.hds")) +hds = bf.HeadFile(os.path.join("data", f"{modelname}.hds")) times = hds.get_times() head = hds.get_data(totim=times[-1]) levels = np.linspace(0, 10, 11) -cbb = bf.CellBudgetFile(os.path.join('data', f"{modelname}.cbc")) +cbb = bf.CellBudgetFile(os.path.join("data", f"{modelname}.cbc")) kstpkper_list = cbb.get_kstpkper() -frf = cbb.get_data(text='FLOW RIGHT FACE', totim=times[-1])[0] -fff = cbb.get_data(text='FLOW FRONT FACE', totim=times[-1])[0] +frf = cbb.get_data(text="FLOW RIGHT FACE", totim=times[-1])[0] +fff = cbb.get_data(text="FLOW FRONT FACE", totim=times[-1])[0] modelmap = flopy.plot.ModelMap(model=mf, layer=0) qm = modelmap.plot_ibound() @@ -79,6 +83,3 @@ cs = modelmap.contour_array(head, levels=levels) quiver = modelmap.plot_discharge(frf, fff, head=head) plt.show() - - - diff --git a/examples/Testing/util_list_tester.py b/examples/Testing/util_list_tester.py index 4b4b0fedc7..a5e79b4054 100644 --- a/examples/Testing/util_list_tester.py +++ b/examples/Testing/util_list_tester.py @@ -3,65 +3,72 @@ import flopy # instance testing -#override the default data type -dtype = np.dtype([("k", int), ("i", int), ("j", int),\ - ("stage",np.float32),("cond",np.float32),("rbot",np.float32),\ - ("aux1",np.float32),("aux2",np.float32),])#("comments",object)]) - -#a dict to store data +# override the default data type +dtype = np.dtype( + [ + ("k", int), + ("i", int), + ("j", int), + ("stage", np.float32), + ("cond", np.float32), + ("rbot", np.float32), + ("aux1", np.float32), + ("aux2", np.float32), + ] +) # ("comments",object)]) + +# a dict to store data data = {} -#sp 2 = -1 +# sp 2 = -1 data[1] = -1 -#build a nested list for sp 4 +# build a nested list for sp 4 d = [] -for k in range(0,2): - for i in range(1,3): - for j in range(4,6): - dd = np.array([k,i,j,10,1,2,999,1]) +for k in range(0, 2): + for i in range(1, 3): + for j in range(4, 6): + dd = np.array([k, i, j, 10, 1, 2, 999, 1]) d.append(dd) data[3] = d -#a single entry for sp 5 -data[4] = np.array((9,8,7,6,5,4,999,2)) +# a single entry for sp 5 +data[4] = np.array((9, 8, 7, 6, 5, 4, 999, 2)) -#an external file for sp 10 -f = open("some_list.dat",'w') -f.write(' 0 0 0 1.0 1.0 1.0 999 2 \n') -f.write(' 0 0 0 1.0 1.0 1.0 999 2 \n') -f.write(' 0 0 0 1.0 1.0 1.0 999 2 \n') +# an external file for sp 10 +f = open("some_list.dat", "w") +f.write(" 0 0 0 1.0 1.0 1.0 999 2 \n") +f.write(" 0 0 0 1.0 1.0 1.0 999 2 \n") +f.write(" 0 0 0 1.0 1.0 1.0 999 2 \n") f.close() -#data[9] = "some_list.dat" +# data[9] = "some_list.dat" model = flopy.modflow.Modflow() -dis = flopy.modflow.ModflowDis(model,nlay=1,nrow=1,ncol=1,nper=3) -riv = flopy.modflow.ModflowRiv(model,stress_period_data=data,dtype=dtype,options=["aux aux1","aux aux2"]) +dis = flopy.modflow.ModflowDis(model, nlay=1, nrow=1, ncol=1, nper=3) +riv = flopy.modflow.ModflowRiv( + model, + stress_period_data=data, + dtype=dtype, + options=["aux aux1", "aux aux2"], +) riv.write_file() model1 = flopy.modflow.Modflow("test") -dis1 = flopy.modflow.ModflowDis(model1,nlay=1,nrow=1,ncol=1,nper=3) -riv1 = flopy.modflow.ModflowRiv.load("modflowtest.riv",model1,nper=10) - -riv2 = flopy.pakbase.Package.load(model,flopy.modflow.ModflowRiv,"modflowtest.riv") -ghb = flopy.pakbase.Package.load(model,flopy.modflow.ModflowGhb,"modflowtest.ghb") +dis1 = flopy.modflow.ModflowDis(model1, nlay=1, nrow=1, ncol=1, nper=3) +riv1 = flopy.modflow.ModflowRiv.load("modflowtest.riv", model1, nper=10) + +riv2 = flopy.pakbase.Package.load( + model, flopy.modflow.ModflowRiv, "modflowtest.riv" +) +ghb = flopy.pakbase.Package.load( + model, flopy.modflow.ModflowGhb, "modflowtest.ghb" +) riv1.write_file() -#get the recarray from sp 10 +# get the recarray from sp 10 sp10_rec = riv[9] -#check bounds +# check bounds riv.stress_period_data.check_kij() -#write file +# write file riv.write_file() - - - - - - - - - - - diff --git a/examples/Tutorials/modflow/tutorial01_mf.py b/examples/Tutorials/modflow/tutorial01_mf.py index 11cda47e47..e63e9afa27 100644 --- a/examples/Tutorials/modflow/tutorial01_mf.py +++ b/examples/Tutorials/modflow/tutorial01_mf.py @@ -22,6 +22,7 @@ # If FloPy has been properly installed, then it can be imported as follows: import numpy as np + import flopy # Now that we can import flopy, we begin creating our simple MODFLOW model. @@ -145,6 +146,7 @@ # read the binary head file and create a plot of simulated heads for layer 1: import matplotlib.pyplot as plt + import flopy.utils.binaryfile as bf # Extract the heads diff --git a/examples/Tutorials/modflow/tutorial02_mf.py b/examples/Tutorials/modflow/tutorial02_mf.py index be9f421b05..87f876cac4 100644 --- a/examples/Tutorials/modflow/tutorial02_mf.py +++ b/examples/Tutorials/modflow/tutorial02_mf.py @@ -35,6 +35,7 @@ # As shown in the previous MODFLOW tutorial, import flopy. import numpy as np + import flopy # ## Creating the MODFLOW Model @@ -211,6 +212,7 @@ # Imports import matplotlib.pyplot as plt + import flopy.utils.binaryfile as bf # Create the headfile and budget file objects diff --git a/examples/Tutorials/modflow6/tutorial01_mf6.py b/examples/Tutorials/modflow6/tutorial01_mf6.py index 17a0d9c35d..8cf2b225c3 100644 --- a/examples/Tutorials/modflow6/tutorial01_mf6.py +++ b/examples/Tutorials/modflow6/tutorial01_mf6.py @@ -20,8 +20,10 @@ # ## Getting Started import os -import numpy as np + import matplotlib.pyplot as plt +import numpy as np + import flopy # We are creating a square model with a specified head equal to `h1` along @@ -221,7 +223,7 @@ x = y = np.linspace(0, L, N) y = y[::-1] vmin, vmax = 90.0, 100.0 -contour_intervals = np.arange(90, 100.1, 1.) +contour_intervals = np.arange(90, 100.1, 1.0) # ### Plot a Map of Layer 1 @@ -229,7 +231,7 @@ fig = plt.figure(figsize=(6, 6)) ax = fig.add_subplot(1, 1, 1, aspect="equal") c = ax.contour(x, y, h[0], contour_intervals, colors="black") -plt.clabel(c, fmt="%2.1f"); +plt.clabel(c, fmt="%2.1f") # ### Plot a Map of Layer 10 @@ -239,7 +241,7 @@ fig = plt.figure(figsize=(6, 6)) ax = fig.add_subplot(1, 1, 1, aspect="equal") c = ax.contour(x, y, h[-1], contour_intervals, colors="black") -plt.clabel(c, fmt="%1.1f"); +plt.clabel(c, fmt="%1.1f") # ### Plot a Cross-section along row 25 @@ -247,7 +249,7 @@ fig = plt.figure(figsize=(9, 3)) ax = fig.add_subplot(1, 1, 1, aspect="auto") c = ax.contour(x, z, h[:, int(N / 4), :], contour_intervals, colors="black") -plt.clabel(c, fmt="%1.1f"); +plt.clabel(c, fmt="%1.1f") # ### Use the FloPy `PlotMapView()` capabilities for MODFLOW 6 # @@ -281,7 +283,7 @@ colors="black", ) ax.clabel(contours, fmt="%2.1f") -cb = plt.colorbar(pa, shrink=0.5, ax=ax); +cb = plt.colorbar(pa, shrink=0.5, ax=ax) # ### Use the FloPy `PlotCrossSection()` capabilities for MODFLOW 6 @@ -305,7 +307,7 @@ colors="black", ) ax.clabel(contours, fmt="%2.1f") -cb = plt.colorbar(pa, shrink=0.5, ax=ax); +cb = plt.colorbar(pa, shrink=0.5, ax=ax) # ## Determine the Flow Residual @@ -318,9 +320,9 @@ # # First extract the `FLOW-JA-FACE` array from the cell-by-cell budget file -flowja = gwf.oc.output.budget().get_data( - text="FLOW-JA-FACE", kstpkper=(0, 0) -)[0] +flowja = gwf.oc.output.budget().get_data(text="FLOW-JA-FACE", kstpkper=(0, 0))[ + 0 +] # Next extract the flow residual. The MODFLOW 6 binary grid file is passed # into the function because it contains the ia array that defines @@ -343,6 +345,4 @@ colors="black", ) ax.clabel(contours, fmt="%2.1f") -plt.colorbar(pa, shrink=0.5); - - +plt.colorbar(pa, shrink=0.5) diff --git a/examples/Tutorials/modflow6data/tutorial01_mf6_data.py b/examples/Tutorials/modflow6data/tutorial01_mf6_data.py index b153adf729..e64d1474ea 100644 --- a/examples/Tutorials/modflow6data/tutorial01_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial01_mf6_data.py @@ -44,13 +44,17 @@ # set up simulation and basic packages name = "tutorial02_mf6" sim = flopy.mf6.MFSimulation(sim_name=name, sim_ws=".") -flopy.mf6.ModflowTdis(sim, nper=10, perioddata=[[365.0, 1, 1.0] for _ in range(10)]) +flopy.mf6.ModflowTdis( + sim, nper=10, perioddata=[[365.0, 1, 1.0] for _ in range(10)] +) flopy.mf6.ModflowIms(sim) gwf = flopy.mf6.ModflowGwf(sim, modelname=name, save_flows=True) flopy.mf6.ModflowGwfdis(gwf, nlay=3, nrow=4, ncol=5) flopy.mf6.ModflowGwfic(gwf) flopy.mf6.ModflowGwfnpf(gwf, save_specific_discharge=True) -flopy.mf6.ModflowGwfchd(gwf, stress_period_data=[[(0, 0, 0), 1.0], [(2, 3, 4), 0.0]]) +flopy.mf6.ModflowGwfchd( + gwf, stress_period_data=[[(0, 0, 0), 1.0], [(2, 3, 4), 0.0]] +) budget_file = f"{name}.bud" head_file = f"{name}.hds" flopy.mf6.ModflowGwfoc( diff --git a/examples/Tutorials/modflow6data/tutorial02_mf6_data.py b/examples/Tutorials/modflow6data/tutorial02_mf6_data.py index df0bcb0cf9..968e57bcb6 100644 --- a/examples/Tutorials/modflow6data/tutorial02_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial02_mf6_data.py @@ -31,7 +31,9 @@ # package import import os + import numpy as np + import flopy # set up where simulation workspace will be stored diff --git a/examples/Tutorials/modflow6data/tutorial03_mf6_data.py b/examples/Tutorials/modflow6data/tutorial03_mf6_data.py index c2f7a3bf72..ce1862b77b 100644 --- a/examples/Tutorials/modflow6data/tutorial03_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial03_mf6_data.py @@ -34,7 +34,9 @@ # package import import os + import numpy as np + import flopy # set up where simulation workspace will be stored diff --git a/examples/Tutorials/modflow6data/tutorial04_mf6_data.py b/examples/Tutorials/modflow6data/tutorial04_mf6_data.py index e785dc7707..d9adaaf232 100644 --- a/examples/Tutorials/modflow6data/tutorial04_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial04_mf6_data.py @@ -33,7 +33,9 @@ # package import import os + import numpy as np + import flopy # set up where simulation workspace will be stored diff --git a/examples/Tutorials/modflow6data/tutorial05_mf6_data.py b/examples/Tutorials/modflow6data/tutorial05_mf6_data.py index 94460f974e..1d633a7b7d 100644 --- a/examples/Tutorials/modflow6data/tutorial05_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial05_mf6_data.py @@ -57,7 +57,9 @@ # package import import os + import numpy as np + import flopy # set up where simulation workspace will be stored diff --git a/examples/Tutorials/modflow6data/tutorial06_mf6_data.py b/examples/Tutorials/modflow6data/tutorial06_mf6_data.py index 49de9d6005..c2ceeb44fb 100644 --- a/examples/Tutorials/modflow6data/tutorial06_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial06_mf6_data.py @@ -65,7 +65,9 @@ # package import import os + import numpy as np + import flopy # set up where simulation workspace will be stored diff --git a/examples/Tutorials/modflow6data/tutorial07_mf6_data.py b/examples/Tutorials/modflow6data/tutorial07_mf6_data.py index 1608d91cb0..e652193d43 100644 --- a/examples/Tutorials/modflow6data/tutorial07_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial07_mf6_data.py @@ -60,7 +60,9 @@ # package import import os + import numpy as np + import flopy # set up where simulation workspace will be stored diff --git a/examples/Tutorials/modflow6data/tutorial08_mf6_data.py b/examples/Tutorials/modflow6data/tutorial08_mf6_data.py index 956868a70b..7c4f18e4ff 100644 --- a/examples/Tutorials/modflow6data/tutorial08_mf6_data.py +++ b/examples/Tutorials/modflow6data/tutorial08_mf6_data.py @@ -47,7 +47,9 @@ # package import import os + import numpy as np + import flopy # set up where simulation workspace will be stored diff --git a/examples/Tutorials/modflow6output/tutorial01_mf6_output.py b/examples/Tutorials/modflow6output/tutorial01_mf6_output.py index c15819be5c..1e26f12280 100644 --- a/examples/Tutorials/modflow6output/tutorial01_mf6_output.py +++ b/examples/Tutorials/modflow6output/tutorial01_mf6_output.py @@ -18,12 +18,14 @@ # by using the built in `.output` attribute on any MODFLOW 6 model or # package object -# ## Package import -import flopy import os import platform + import numpy as np +# ## Package import +import flopy + # ## Load a simple demonstration model exe_name = "mf6" if platform.system().lower() == "windows": @@ -37,7 +39,9 @@ ) # load the model sim = flopy.mf6.MFSimulation.load( - sim_ws=sim_ws, exe_name=exe_name, verbosity_level=0, + sim_ws=sim_ws, + exe_name=exe_name, + verbosity_level=0, ) # change the simulation path, rewrite the files, and run the model sim_ws = os.path.join("..", "..", "autotest", "temp", "mf6_output") diff --git a/examples/Tutorials/seawat/tutorial01_seawat.py b/examples/Tutorials/seawat/tutorial01_seawat.py index a2969d540e..3fed6dfe10 100644 --- a/examples/Tutorials/seawat/tutorial01_seawat.py +++ b/examples/Tutorials/seawat/tutorial01_seawat.py @@ -20,6 +20,7 @@ # ## Getting Started import numpy as np + import flopy # ### Input variables for the Henry Problem @@ -148,6 +149,7 @@ # ## Post-process the results import numpy as np + import flopy.utils.binaryfile as bf # ### Load the concentration data @@ -168,13 +170,13 @@ import matplotlib.pyplot as plt -fig = plt.figure(figsize=(12,9)) +fig = plt.figure(figsize=(12, 9)) ax = fig.add_subplot(1, 1, 1, aspect="equal") pmv = flopy.plot.PlotCrossSection(model=swt, ax=ax, line={"row": 0}) arr = pmv.plot_array(concentration) pmv.plot_vector(qx, qy, -qz, color="white", kstep=3, hstep=3) plt.colorbar(arr, shrink=0.5, ax=ax) -ax.set_title("Simulated Concentrations"); +ax.set_title("Simulated Concentrations") # ### Load the head data @@ -192,4 +194,4 @@ contours = pmv.contour_array(head, colors="white") ax.clabel(contours, fmt="%2.2f") plt.colorbar(arr, shrink=0.5, ax=ax) -ax.set_title("Simulated Heads"); +ax.set_title("Simulated Heads") diff --git a/examples/common/setup_pmv_demo.py b/examples/common/setup_pmv_demo.py index 5956433d35..ee4165f310 100644 --- a/examples/common/setup_pmv_demo.py +++ b/examples/common/setup_pmv_demo.py @@ -385,14 +385,13 @@ def run(): rchspd[0] = [[(0, 0, j), rrate, recharge_conc] for j in rcol] rchspd[1] = [[(0, 0, j), rrate, 0.0] for j in rcol] + def build_mf6gwf(sim_folder): print(f"Building mf6gwf model...{sim_folder}") ws = os.path.join("data", "mf6-gwt-keating") name = "flow" - sim_ws = os.path.join(ws, 'mf6gwf') - sim = flopy.mf6.MFSimulation( - sim_name=name, sim_ws=sim_ws, exe_name="mf6" - ) + sim_ws = os.path.join(ws, "mf6gwf") + sim = flopy.mf6.MFSimulation(sim_name=name, sim_ws=sim_ws, exe_name="mf6") tdis_ds = ((period1, 1, 1.0), (period2, 1, 1.0)) flopy.mf6.ModflowTdis( sim, nper=len(tdis_ds), perioddata=tdis_ds, time_units=time_units @@ -476,7 +475,7 @@ def build_mf6gwt(sim_folder): print(f"Building mf6gwt model...{sim_folder}") ws = os.path.join("data", "mf6-gwt-keating") name = "trans" - sim_ws = os.path.join(ws, 'mf6gwt') + sim_ws = os.path.join(ws, "mf6gwt") sim = flopy.mf6.MFSimulation( sim_name=name, sim_ws=sim_ws, diff --git a/flopy/discretization/modeltime.py b/flopy/discretization/modeltime.py index 83994ea3ed..da7014931e 100644 --- a/flopy/discretization/modeltime.py +++ b/flopy/discretization/modeltime.py @@ -65,7 +65,7 @@ def totim(self): for stp in range(nstp): if stp == 0: if tsmult != 1.0: - dt = perlen * (tsmult - 1) / ((tsmult ** nstp) - 1) + dt = perlen * (tsmult - 1) / ((tsmult**nstp) - 1) else: dt = perlen / nstp else: diff --git a/flopy/modflow/mfdis.py b/flopy/modflow/mfdis.py index 836d0fc313..879337bc00 100644 --- a/flopy/modflow/mfdis.py +++ b/flopy/modflow/mfdis.py @@ -300,7 +300,7 @@ def get_totim(self, use_cached=False): p = float(nstp[kper]) dt = perlen[kper] if m > 1: - dt *= (m - 1.0) / (m ** p - 1.0) + dt *= (m - 1.0) / (m**p - 1.0) else: dt = dt / p for kstp in range(nstp[kper]): diff --git a/flopy/modflow/mfmlt.py b/flopy/modflow/mfmlt.py index eaea8b6d80..f827b97224 100644 --- a/flopy/modflow/mfmlt.py +++ b/flopy/modflow/mfmlt.py @@ -243,7 +243,7 @@ def mult_function(mult_dict, line): elif op == "/": multarray = multarray / atemp elif op == "^": - multarray = multarray ** atemp + multarray = multarray**atemp else: raise Exception(f"Invalid MULT operation {op}") return multarray diff --git a/flopy/modflow/mfsfr2.py b/flopy/modflow/mfsfr2.py index 50a613057d..9da7cfb6ab 100644 --- a/flopy/modflow/mfsfr2.py +++ b/flopy/modflow/mfsfr2.py @@ -2499,7 +2499,7 @@ def routing(self): dx = delr[rd.j] dy = delc[rd.i] - hyp = np.sqrt(dx ** 2 + dy ** 2) + hyp = np.sqrt(dx**2 + dy**2) # breaks are when the connection distance is greater than # max node with * a tolerance diff --git a/flopy/plot/crosssection.py b/flopy/plot/crosssection.py index e84950249c..4049684944 100644 --- a/flopy/plot/crosssection.py +++ b/flopy/plot/crosssection.py @@ -537,13 +537,13 @@ def contour_array(self, a, masked_values=None, head=None, **kwargs): kwargs["levels"] = levels # workaround for tri-contour nan issue - plotarray[np.isnan(plotarray)] = -(2 ** 31) + plotarray[np.isnan(plotarray)] = -(2**31) if masked_values is None: - masked_values = [-(2 ** 31)] + masked_values = [-(2**31)] else: masked_values = list(masked_values) - if -(2 ** 31) not in masked_values: - masked_values.append(-(2 ** 31)) + if -(2**31) not in masked_values: + masked_values.append(-(2**31)) ismasked = None if masked_values is not None: @@ -965,7 +965,7 @@ def plot_vector( # normalize if normalize: - vmag = np.sqrt(u ** 2.0 + v ** 2.0) + vmag = np.sqrt(u**2.0 + v**2.0) idx = vmag > 0.0 u[idx] /= vmag[idx] v[idx] /= vmag[idx] diff --git a/flopy/plot/map.py b/flopy/plot/map.py index e0ef87bfe3..fafaf6eb4c 100644 --- a/flopy/plot/map.py +++ b/flopy/plot/map.py @@ -182,13 +182,13 @@ def contour_array(self, a, masked_values=None, **kwargs): # workaround for tri-contour nan issue # use -2**31 to allow for 32 bit int arrays - plotarray[np.isnan(plotarray)] = -(2 ** 31) + plotarray[np.isnan(plotarray)] = -(2**31) if masked_values is None: - masked_values = [-(2 ** 31)] + masked_values = [-(2**31)] else: masked_values = list(masked_values) - if -(2 ** 31) not in masked_values: - masked_values.append(-(2 ** 31)) + if -(2**31) not in masked_values: + masked_values.append(-(2**31)) ismasked = None if masked_values is not None: @@ -684,7 +684,7 @@ def plot_vector( # normalize if normalize: - vmag = np.sqrt(u ** 2.0 + v ** 2.0) + vmag = np.sqrt(u**2.0 + v**2.0) idx = vmag > 0.0 u[idx] /= vmag[idx] v[idx] /= vmag[idx] diff --git a/flopy/utils/binaryfile.py b/flopy/utils/binaryfile.py index e9be3346c8..75c43fe13d 100755 --- a/flopy/utils/binaryfile.py +++ b/flopy/utils/binaryfile.py @@ -781,7 +781,7 @@ def _totim_from_kstpkper(self, kstpkper): if tsmult == 1: dt1 = this_perlen / float(nstp) else: - dt1 = this_perlen * (tsmult - 1.0) / ((tsmult ** nstp) - 1.0) + dt1 = this_perlen * (tsmult - 1.0) / ((tsmult**nstp) - 1.0) kstp_len = [dt1] for i in range(kstp + 1): kstp_len.append(kstp_len[-1] * tsmult) diff --git a/flopy/utils/flopy_io.py b/flopy/utils/flopy_io.py index 084c9146df..6061a223bc 100755 --- a/flopy/utils/flopy_io.py +++ b/flopy/utils/flopy_io.py @@ -184,7 +184,7 @@ def write_fixed_var(v, length=10, ipos=None, free=False, comment=None): width = ipos[n] if isinstance(v[n], (float, np.float32, np.float64)): decimal = width - 6 - vmin, vmax = 10 ** -decimal, 10 ** decimal + vmin, vmax = 10**-decimal, 10**decimal if abs(v[n]) < vmin or abs(v[n]) > vmax: ctype = "g" # default precision is 6 if not specified else: diff --git a/setup.py b/setup.py index b024da80e9..606849326a 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,3 @@ from setuptools import setup - setup() From 717293081474119b95492df50304e93f90e752a3 Mon Sep 17 00:00:00 2001 From: Joseph D Hughes Date: Tue, 1 Feb 2022 12:34:20 -0600 Subject: [PATCH 2/4] ci: Add isort to linting step Update flopy using latest version of black. Add autotest\pull_request_prepare.py to help contributors to run isort and black prior to a pull request. Clean-up unused examples/Testing directory. --- .gitignore | 2 - autotest/pull_request_prepare.py | 2 + examples/Testing/SFRexample.ipynb | 701 ------------------ examples/Testing/flopy3_2L_CS.py | 73 -- .../Testing/flopy3_CrossSectionExample.py | 113 --- examples/Testing/flopy3_Oahu_02_02b.py | 226 ------ examples/Testing/flopy3_loadSECP.py | 31 - examples/Testing/flopy3_loadSUB.py | 21 - examples/Testing/flopy3_loadSWT.py | 21 - ...existing_model_with_openclose_option.ipynb | 227 ------ examples/Testing/flopy3_load_parameters.py | 60 -- .../Testing/flopy3_loadplotfreyberg.ipynb | 679 ----------------- examples/Testing/flopy3_loadplotfreyberg.py | 21 - examples/Testing/flopy3_loadusg.ipynb | 138 ---- examples/Testing/flopy3_new_ncomp_demp.ipynb | 247 ------ examples/Testing/flopy3_plotdata.py | 35 - .../Testing/flopy3_read_write_models.ipynb | 154 ---- .../Testing/flopy3_transient2d_demo.ipynb | 170 ----- examples/Testing/henry_example.ipynb | 421 ----------- examples/Testing/island_example.ipynb | 297 -------- examples/Testing/testunitcbc.py | 85 --- examples/Testing/util_list_tester.py | 74 -- 22 files changed, 2 insertions(+), 3796 deletions(-) delete mode 100644 examples/Testing/SFRexample.ipynb delete mode 100644 examples/Testing/flopy3_2L_CS.py delete mode 100644 examples/Testing/flopy3_CrossSectionExample.py delete mode 100755 examples/Testing/flopy3_Oahu_02_02b.py delete mode 100644 examples/Testing/flopy3_loadSECP.py delete mode 100644 examples/Testing/flopy3_loadSUB.py delete mode 100644 examples/Testing/flopy3_loadSWT.py delete mode 100644 examples/Testing/flopy3_load_existing_model_with_openclose_option.ipynb delete mode 100644 examples/Testing/flopy3_load_parameters.py delete mode 100644 examples/Testing/flopy3_loadplotfreyberg.ipynb delete mode 100644 examples/Testing/flopy3_loadplotfreyberg.py delete mode 100644 examples/Testing/flopy3_loadusg.ipynb delete mode 100644 examples/Testing/flopy3_new_ncomp_demp.ipynb delete mode 100644 examples/Testing/flopy3_plotdata.py delete mode 100644 examples/Testing/flopy3_read_write_models.ipynb delete mode 100644 examples/Testing/flopy3_transient2d_demo.ipynb delete mode 100644 examples/Testing/henry_example.ipynb delete mode 100644 examples/Testing/island_example.ipynb delete mode 100644 examples/Testing/testunitcbc.py delete mode 100644 examples/Testing/util_list_tester.py diff --git a/.gitignore b/.gitignore index 4088bc63f9..cff940b708 100644 --- a/.gitignore +++ b/.gitignore @@ -62,8 +62,6 @@ flopy/.idea examples/Notebooks/data examples/Notebooks/temp examples/FAQ/temp -examples/Testing/.idea -examples/Testing/data examples/scripts/data examples/groundwater_paper/Notebooks/temp diff --git a/autotest/pull_request_prepare.py b/autotest/pull_request_prepare.py index 6e3865c4b4..af663f7f00 100644 --- a/autotest/pull_request_prepare.py +++ b/autotest/pull_request_prepare.py @@ -2,12 +2,14 @@ try: import isort + print(f"isort version: {isort.__version__}") except ModuleNotFoundError: print("isort not installed\n\tInstall using pip install isort") try: import black + print(f"black version: {black.__version__}") except ModuleNotFoundError: print("black not installed\n\tInstall using pip install black") diff --git a/examples/Testing/SFRexample.ipynb b/examples/Testing/SFRexample.ipynb deleted file mode 100644 index da1e3ac769..0000000000 --- a/examples/Testing/SFRexample.ipynb +++ /dev/null @@ -1,701 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import os\n", - "import numpy as np\n", - "import pandas as pd\n", - "import flopy" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "path = '../data/'\n", - "mfnam = 'test1ss.nam'\n", - "mfsfr = 'test1ss.sfr'\n", - "model_ws = path + 'test-run'\n", - "outpath = 'written_sfr/'" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Creating new model with name: test1ss\n", - "--------------------------------------------------\n", - "\n", - "Parsing the namefile --> ../data/test-run/test1ss.nam\n", - "Setting filehandles:\n", - "could not set filehandle for test1ss.lst\n", - "could not set filehandle for test1ss.hds\n", - "could not set filehandle for test1ss.et\n", - "could not set filehandle for test1ss.flw\n", - "could not set filehandle for test1ss.sg1\n", - "could not set filehandle for test1ss.sg2\n", - "could not set filehandle for test1ss.sg3\n", - "could not set filehandle for test1ss.sg4\n", - "could not set filehandle for test1ss.sg5\n", - "could not set filehandle for test1ss.sg6\n", - "could not set filehandle for test1ss.sg7\n", - "could not set filehandle for test1ss.sg8\n", - "could not set filehandle for test1ss.dvsg9\n", - "\n", - "--------------------------------------------------\n", - "External unit dictionary:\n", - "{7: , 8: , 9: , 75: , 13: , 14: , 15: , 81: , 18: , 83: , 84: , 85: , 86: , 87: , 88: , 89: , 90: , 91: , 32: , 17: , 19: , 58: , 59: }\n", - "--------------------------------------------------\n", - "\n", - "loading dis package file...\n", - " Loading dis package with:\n", - " 1 layers, 15 rows, 10 columns, and 1 stress periods\n", - " loading laycbd...\n", - " loading delr...\n", - " loading delc...\n", - " loading top...\n", - " loading botm...\n", - " loading stress period data...\n", - "adding Package: DIS\n", - " DIS package load...success\n", - "loading lpf package file...\n", - " loading IBCFCB, HDRY, NPLPF...\n", - " loading LAYTYP...\n", - " loading LAYAVG...\n", - " loading CHANI...\n", - " loading LAYVKA...\n", - " loading LAYWET...\n", - " loading hk layer 1...\n", - " loading vka layer 1...\n", - "adding Package: LPF\n", - " LPF package load...success\n", - " LIST package load...skipped\n", - "loading bas6 package file...\n", - "adding Package: BAS6\n", - " BAS6 package load...success\n", - "loading sip package file...\n", - " Warning: load method not completed. default sip object created.\n", - "adding Package: SIP\n", - " SIP package load...success\n", - "loading oc package file...\n", - "adding Package: OC\n", - " OC package load...success\n", - "adding Package: SFR2\n", - " SFR2 package load...success\n", - " DATA file load...skipped\n", - " test1ss.flw\n", - "loading evt package file...\n", - " loading surf stress period 1...\n", - " loading evtr stress period 1...\n", - " loading exdp stress period 1...\n", - "adding Package: EVT\n", - " EVT package load...success\n", - " DATA file load...skipped\n", - " test1ss.sg1\n", - " DATA file load...skipped\n", - " test1ss.sg2\n", - " DATA file load...skipped\n", - " test1ss.sg3\n", - " DATA file load...skipped\n", - " test1ss.sg4\n", - " DATA file load...skipped\n", - " test1ss.sg5\n", - " DATA file load...skipped\n", - " test1ss.sg6\n", - " DATA file load...skipped\n", - " test1ss.sg7\n", - " DATA file load...skipped\n", - " test1ss.sg8\n", - " DATA file load...skipped\n", - " test1ss.dvsg9\n", - " GAGE package load...skipped\n", - "loading ghb package file...\n", - " loading for kper 1\n", - "adding Package: GHB\n", - " GHB package load...success\n", - "loading rch package file...\n", - " loading rech stress period 1...\n", - "adding Package: RCH\n", - " RCH package load...success\n", - " DATA file load...skipped\n", - " test1ss.hds\n", - " DATA(binary) file load...skipped\n", - " test1ss.et\n", - "\n", - "\n", - " The following 9 packages were successfully loaded.\n", - " test1ss.dis\n", - " test1ss.lpf\n", - " test1ss.ba6\n", - " test1ss.sip\n", - " test1ss.oc\n", - " test1ss.sfr\n", - " test1ss.evt\n", - " test1ss.ghb\n", - " test1ss.rch\n", - " The following 2 packages were not loaded.\n", - " test1ss.lst\n", - " test1ss.gag\n", - "\n", - "\n" - ] - } - ], - "source": [ - "m = flopy.modflow.Modflow.load(mfnam, model_ws=model_ws, verbose=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "sfr = m.get_package('SFR2')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(36, 8, 1.486, 0.0001, -1, 81)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sfr.nstrm, sfr.nss, sfr.const, sfr.dleak, sfr.istcb1, sfr.istcb2" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "rec.array([(0, 0, 0, 1, 1, 4500.0), (0, 1, 1, 1, 2, 7000.0),\n", - " (0, 2, 2, 1, 3, 6000.0), (0, 2, 3, 1, 4, 5550.0),\n", - " (0, 3, 4, 2, 1, 6500.0), (0, 4, 5, 2, 2, 5000.0),\n", - " (0, 5, 5, 2, 3, 5000.0), (0, 6, 5, 2, 4, 5000.0),\n", - " (0, 7, 5, 2, 5, 5000.0), (0, 2, 4, 3, 1, 5000.0),\n", - " (0, 2, 5, 3, 2, 5000.0), (0, 2, 6, 3, 3, 4500.0),\n", - " (0, 3, 7, 3, 4, 6000.0), (0, 4, 7, 3, 5, 5000.0),\n", - " (0, 5, 7, 3, 6, 2000.0), (0, 4, 9, 4, 1, 2500.0),\n", - " (0, 4, 8, 4, 2, 5000.0), (0, 5, 7, 4, 3, 3500.0),\n", - " (0, 5, 7, 5, 1, 4000.0), (0, 6, 6, 5, 2, 5000.0),\n", - " (0, 7, 6, 5, 3, 3500.0), (0, 7, 5, 5, 4, 2500.0),\n", - " (0, 8, 5, 6, 1, 5000.0), (0, 9, 6, 6, 2, 5000.0),\n", - " (0, 10, 6, 6, 3, 5000.0), (0, 11, 6, 6, 4, 5000.0),\n", - " (0, 12, 6, 6, 5, 2000.0), (0, 13, 8, 7, 1, 5000.0),\n", - " (0, 12, 7, 7, 2, 5500.0), (0, 12, 6, 7, 3, 5000.0),\n", - " (0, 12, 5, 8, 1, 5000.0), (0, 12, 4, 8, 2, 5000.0),\n", - " (0, 12, 3, 8, 3, 5000.0), (0, 12, 2, 8, 4, 5000.0),\n", - " (0, 12, 1, 8, 5, 5000.0), (0, 12, 0, 8, 6, 3000.0)], \n", - " dtype=[('krch', '\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
nsegicalcoutsegiupsegipriornstrptsflowrunoffetswpptsw...uhc1hcond2thickm2elevup2width2depth2thts2thti2eps2uhc2
0142001125000...00.0000331075000000
12160000000...00.00003310501200000
230510010000...00.0000321060610000
341500010000...00.00003310601000000
45360000000...00.0000331045000000
56180000000...00.00003310251200000
6728000150000...00.0000631025000000
78200000000...00.000063990000000
\n", - "

8 rows × 34 columns

\n", - "" - ], - "text/plain": [ - " nseg icalc outseg iupseg iprior nstrpts flow runoff etsw pptsw \\\n", - "0 1 4 2 0 0 11 25 0 0 0 \n", - "1 2 1 6 0 0 0 0 0 0 0 \n", - "2 3 0 5 1 0 0 10 0 0 0 \n", - "3 4 1 5 0 0 0 10 0 0 0 \n", - "4 5 3 6 0 0 0 0 0 0 0 \n", - "5 6 1 8 0 0 0 0 0 0 0 \n", - "6 7 2 8 0 0 0 150 0 0 0 \n", - "7 8 2 0 0 0 0 0 0 0 0 \n", - "\n", - " ... uhc1 hcond2 thickm2 elevup2 width2 depth2 thts2 thti2 eps2 \\\n", - "0 ... 0 0.00003 3 1075 0 0 0 0 0 \n", - "1 ... 0 0.00003 3 1050 12 0 0 0 0 \n", - "2 ... 0 0.00003 2 1060 6 1 0 0 0 \n", - "3 ... 0 0.00003 3 1060 10 0 0 0 0 \n", - "4 ... 0 0.00003 3 1045 0 0 0 0 0 \n", - "5 ... 0 0.00003 3 1025 12 0 0 0 0 \n", - "6 ... 0 0.00006 3 1025 0 0 0 0 0 \n", - "7 ... 0 0.00006 3 990 0 0 0 0 0 \n", - "\n", - " uhc2 \n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", - "5 0 \n", - "6 0 \n", - "7 0 \n", - "\n", - "[8 rows x 34 columns]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.DataFrame(sfr.segment_data[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "rec.array([], \n", - " dtype=[('krch', ' \n", - "replacing existing Package...\n" - ] - } - ], - "source": [ - "sfr = flopy.modflow.ModflowSfr2.load(outpath + mfsfr, m)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.array_equal(reach_data, sfr.reach_data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.4.3" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/Testing/flopy3_2L_CS.py b/examples/Testing/flopy3_2L_CS.py deleted file mode 100644 index f04eec5628..0000000000 --- a/examples/Testing/flopy3_2L_CS.py +++ /dev/null @@ -1,73 +0,0 @@ -import os -import platform -import sys - -import matplotlib.colors -import matplotlib.pyplot as plt -import numpy as np - -import flopy - -#Set name of MODFLOW exe -# assumes executable is in users path statement -version = 'mf2005' -exe_name = 'mf2005' -if platform.system() == 'Windows': - exe_name = 'mf2005.exe' -mfexe = exe_name - -#Set the paths -loadpth = os.path.join('..', 'Notebooks', 'data') -modelpth = os.path.join('data') -modelname = 'swiex4_s1' - -#make sure modelpth directory exists -if not os.path.exists(modelpth): - os.makedirs(modelpth) - -ml = flopy.modflow.Modflow.load(modelname, model_ws=loadpth, exe_name=exe_name, version=version, verbose=True) -ml.change_model_ws(new_pth=modelpth) -ml.set_name('woohoo') -ml.write_input() -success, buff = ml.run_model() -success = True - -if not success: - print 'Something bad happened.' -files = [modelname+'.hds', modelname+'.zta'] -for f in files: - if os.path.isfile(os.path.join(modelpth, f)): - msg = 'Output file located: {}'.format(f) - print (msg) - else: - errmsg = 'Error. Output file cannot be found: {}'.format(f) - print (errmsg) - - -fname = os.path.join(modelpth, modelname+'.hds') -hdobj = flopy.utils.HeadFile(fname) -kstpkper = hdobj.get_kstpkper() -head = [] -for kk in kstpkper: - head.append(hdobj.get_data(kstpkper=kk)) - -fname = os.path.join(modelpth, modelname+'.zta') -zobj = flopy.utils.CellBudgetFile(fname) -kstpkper = zobj.get_kstpkper() -zeta = [] -for kk in kstpkper: - zeta.append(zobj.get_data(kstpkper=kk, text='ZETASRF 1')[0]) - - -fig = plt.figure(figsize=(5, 5)) -ax = fig.add_subplot(1, 1, 1) - -# Next we create an instance of the ModelMap class -modelxsect = flopy.plot.ModelCrossSection(ml=ml, line={'Row': 20}) -fb = modelxsect.plot_fill_between(head[4], colors=['brown', 'cyan']) -#patches = modelxsect.csplot_ibound(head=head) -linecollection = modelxsect.plot_grid() -t = ax.set_title('Row 20') -plt.show() - -print '...end' diff --git a/examples/Testing/flopy3_CrossSectionExample.py b/examples/Testing/flopy3_CrossSectionExample.py deleted file mode 100644 index 8d78c09859..0000000000 --- a/examples/Testing/flopy3_CrossSectionExample.py +++ /dev/null @@ -1,113 +0,0 @@ -import os -import platform - -import matplotlib.colors -import matplotlib.pyplot as plt -import numpy as np - -import flopy - -# Set name of MODFLOW exe -# assumes executable is in users path statement -version = "mf2005" -exe_name = "mf2005" -if platform.system() == "Windows": - exe_name = "mf2005.exe" -mfexe = exe_name - -# Set the paths -loadpth = os.path.join("..", "data", "freyberg") -modelpth = os.path.join("data") - -# make sure modelpth directory exists -if not os.path.exists(modelpth): - os.makedirs(modelpth) - - -ml = flopy.modflow.Modflow.load( - "freyberg.nam", model_ws=loadpth, exe_name=exe_name, version=version -) -ml.change_model_ws(new_pth=modelpth) -ml.write_input() -success, buff = ml.run_model() -if not success: - print("Something bad happened.") -files = ["freyberg.hds", "freyberg.cbc"] -for f in files: - if os.path.isfile(os.path.join(modelpth, f)): - print(f"Output file located: {f}") - else: - print(f"Error. Output file cannot be found: {f}") - - -fname = os.path.join(modelpth, "freyberg.hds") -hdobj = flopy.utils.HeadFile(fname) -head = hdobj.get_data() - -fig = plt.figure(figsize=(5, 5)) -ax = fig.add_subplot(1, 1, 1) - -# Next we create an instance of the ModelMap class -modelxsect = flopy.plot.ModelCrossSection(model=ml, line={"Row": 20}) -fb = modelxsect.plot_fill_between( - head, colors=["brown", "cyan"], masked_values=[999.00] -) -# patches = modelxsect.csplot_ibound(head=head) -patches = modelxsect.plot_bc("RIV", head=head) -patches = modelxsect.plot_bc("WEL", color="navy", head=head) -linecollection = modelxsect.plot_grid() -t = ax.set_title("Row 20") -plt.show() - - -# First step is to set up the plot -fig = plt.figure(figsize=(5, 5)) -ax = fig.add_subplot(1, 1, 1) - -# Next we create an instance of the ModelMap class -modelxsect = flopy.plot.ModelCrossSection(ml=ml, line={"Row": 20}) - -# Then we can use the plot_grid() method to draw the grid -# The return value for this function is a matplotlib LineCollection object, -# which could be manipulated (or used) later if necessary. -cmap = plt.get_cmap("jet") -cr = np.linspace(10.0, 25.0, num=cmap.N) -norm = matplotlib.colors.BoundaryNorm(cr, cmap.N) -hv = modelxsect.plot_array( - head, head=head, masked_values=[999.00, -1.00000e30] -) # , norm=norm) -patches = modelxsect.plot_ibound(head=head) -patches = modelxsect.plot_bc("RIV", head=head) -patches = modelxsect.plot_bc("WEL", color="navy", head=head) -linecollection = modelxsect.plot_grid() -t = ax.set_title("Row 20") -fig.colorbar(hv, orientation="horizontal", format="%3.1f") -plt.show() - - -# First step is to set up the plot -fig = plt.figure(figsize=(5, 5)) -ax = fig.add_subplot(1, 1, 1) - -# Next we create an instance of the ModelMap class -modelxsect = flopy.plot.ModelCrossSection(ml=ml, line={"Column": 10}) - -# Then we can use the plot_grid() method to draw the grid -# The return value for this function is a matplotlib LineCollection object, -# which could be manipulated (or used) later if necessary. -hv = modelxsect.plot_array( - head, masked_values=[999.00, -1.00000e30], norm=norm -) -ct = modelxsect.contour_array( - head, - masked_values=[999.00, -1.00000e30], - colors="black", - linewidths=0.5, - levels=[10, 15, 20, 25, 30], -) -plt.clabel(ct, fontsize=8, fmt="%3.1f") -patches = modelxsect.plot_ibound() -linecollection = modelxsect.plot_grid() -t = ax.set_title("Column 10") -fig.colorbar(hv, orientation="horizontal", format="%3.1f") -plt.show() diff --git a/examples/Testing/flopy3_Oahu_02_02b.py b/examples/Testing/flopy3_Oahu_02_02b.py deleted file mode 100755 index ac7582d155..0000000000 --- a/examples/Testing/flopy3_Oahu_02_02b.py +++ /dev/null @@ -1,226 +0,0 @@ -# OAHU island-wide GWRP model -# using retarded units (ft) and a coarse test grid -# simulating 1 short stress period (eventually steady-state) -# simulating 1 layer of volcanic rock referenced to sea level -# simulating 50% seawater salinity with SWI2 -# uses GH relation for initial salinity conditions -# apply crude mask of Oahu coastline as ocean boundary -# uniform recharge, add 2 wells, and 1 horizontal flow barrier -# changed origin of grid in plot to upper left corner. -# -# uses FLOPY3, modified from FLOPY2 tutorial 2 -# -# Kolja Rotzoll (kolja@usgs.gov), 1/15/2015 -# ---------------------------------------------------- -import os -import sys - -import numpy as np -from PIL import Image, ImageDraw -from pylab import * - -flopypath = os.path.join("..", "..") -if flopypath not in sys.path: - print("Adding to sys.path: ", flopypath) - sys.path.append(flopypath) - -import flopy - -workspace = os.path.join("data") -# make sure workspace directory exists -if not os.path.exists(workspace): - os.makedirs(workspace) - - -# flopy objects -modelname = "Oahu_01" -mf = flopy.modflow.Modflow(modelname, exe_name="mf2005", model_ws=workspace) - -# model domain and grid definition -ztop = 30.0 # top of layer (ft rel to msl) -botm = -1000.0 # bottom of layer (ft rel to msl) -nlay = 1 # number of layers (z) -nrow = 18 # number of rows (y) -ncol = 20 # number of columns (x) -delr = 16000 # row width of cell, in ft -delc = delr # column width of cell, in ft -Lx = delr * ncol # length of x model domain, in ft -Ly = delc * nrow # length of y model domain, in ft - -# define the stress periods -nper = 1 -ts = 1 # length of time step, in days -nstp = 1000 # number of time steps -perlen = nstp * ts # length of simulation, in days -steady = True # steady state or transient -dis = flopy.modflow.ModflowDis( - mf, - nlay, - nrow, - ncol, - delr=delr, - delc=delc, - top=ztop, - botm=botm, - nper=nper, - perlen=perlen, - nstp=nstp, - steady=steady, -) - -# hydraulic parameters (lpf or bcf) -hk = 1500.0 # horizontal K -sy = 0.05 # specific yield -ss = 1.0e-5 # specific storage -layavg = 0 # 0 = harmonic mean, 1 = logarithmic mean, -# 2 = arithmetic mean of sat b and log-mean K -laytyp = 1 # 0 = confined, 1 = convertible -lpf = flopy.modflow.ModflowLpf( - mf, hk=hk, sy=sy, ss=ss, laytyp=laytyp, layavg=layavg -) -laycon = 2 # 0 = confined, 1 = unconfined T varies, -# 2 = convertible T const, 3 = convertible T varies - -# water/land interface (now replaced with coarse Oahu coastline) -polyg = [ - (6, 13), - (3, 6), - (6, 6), - (9, 3), - (12, 8), - (14, 9), - (16, 13), - (13, 14), - (11, 13), - (6, 13), -] # referenced to row/col -px, py = zip(*polyg) -colcell, rowcell = meshgrid(range(ncol), range(nrow)) -mask = Image.new("L", (ncol, nrow), 0) -ImageDraw.Draw(mask).polygon(polyg, outline=1, fill=1) -index = np.array(mask) - -# BAS package -ibound = np.ones((nlay, nrow, ncol), dtype=np.int32) # active cells -h_start = np.zeros((nrow, ncol), dtype=float) -peak = 15 # maximum expected water level -h_start[:, :][index == 1] = peak # starting heads over land -h_start[:, :][index == 0] = 0 # starting heads over ocean -# print h_start -bas = flopy.modflow.ModflowBas(mf, ibound=ibound, strt=h_start) - -# general head boundary -nghb = ncol * nrow - np.sum(index) -lrchc = np.zeros((nghb, 5)) -lrchc[:, 0] = 0 -lrchc[:, 1] = rowcell[index == 0] -lrchc[:, 2] = colcell[index == 0] -lrchc[:, 3] = 0.0 -lrchc[:, 4] = hk * 10 -# print lrchc -ghb = flopy.modflow.ModflowGhb(mf, stress_period_data={0: lrchc}) - -# recharge & withdrawal -Recharge = 600 * 133680.56 # Total recharge over the island, in ft^3/d -nrech = np.sum(index) -lrcq = np.zeros((nrech, 4)) -lrcq[:, 0] = 0 -lrcq[:, 1] = rowcell[index == 1] -lrcq[:, 2] = colcell[index == 1] -lrcq[:, 3] = Recharge / nrech -lrcq = np.vstack( - (lrcq, [0, 8, 7, -90 * 133680], [0, 10, 9, -80 * 133680]) -) # add wells (row/col, zero-based) -# print lrcq -wel = flopy.modflow.ModflowWel(mf, stress_period_data={0: lrcq}) - -# horizontal flow barrier -nhfb = 12 -lrcrch = np.zeros((nhfb, 6)) -lrcrch[:, 0] = 0 # layer -lrcrch[:, 1] = arange(2, nhfb + 2) # row 1 -lrcrch[:, 2] = ones(nhfb) * (ncol / 2 - 1) # col 1 -lrcrch[:, 3] = arange(2, nhfb + 2) # row 2 -lrcrch[:, 4] = ones(nhfb) * (ncol / 2) # col 2 -lrcrch[:, 5] = 0.000001 # hydrologic characteristics -# print lrcrch -hfb = flopy.modflow.ModflowHfb(mf, hfb_data=lrcrch) - -# SWI input -z1 = np.zeros((nrow, ncol)) -z1[index == 1] = peak * (-40) # 50% salinity from starting head -z = array([z1]) # zeta interfaces -# print z -iso = np.zeros((nrow, ncol), dtype=np.int32) # water type of sinks and sources -iso[:, :][index == 1] = 1 # land -iso[:, :][index == 0] = -2 # ocean (ghb) -# print iso -swi = flopy.modflow.ModflowSwi2( - mf, - nsrf=1, - istrat=1, - toeslope=0.04, - tipslope=0.04, - nu=[0, 0.025], - zeta=z, - ssz=0.05, - isource=iso, - nsolver=1, -) - -# output control & solver -spd = { - (0, 0): ["print head"], - (0, 1): [], - (0, 249): ["print head"], - (0, 250): [], - (0, 499): ["print head", "save ibound"], - (0, 500): [], - (0, 749): ["print head", "ddreference"], - (0, 750): [], - (0, 999): ["print head"], -} -# oc = flopy.modflow.ModflowOc(mf, stress_period_data=spd, cboufm='(20i5)') -oc = flopy.modflow.ModflowOc88( - mf, save_head_every=100, item2=[[0, 1, 0, 0]], item3=[[0, 1, 0, 0]] -) -pcg = flopy.modflow.ModflowPcg( - mf, hclose=1.0e-4, rclose=5.0e-0 -) # pre-conjugate gradient solver -# de4 = flopy.modflow.ModflowDe4(mf, itmx=1, hclose=1e-5) # direct solver -# -------------------------------------------------------------------- - -# write the model input files -mf.write_input() - -print("\n\nfinished write...\n") - -m2 = flopy.modflow.Modflow.load( - modelname, exe_name="mf2005", model_ws=workspace, verbose=True -) - -print("\nfinished read...\n") - -oc2 = m2.get_package("OC") - -# print(oc2.stress_period_data.keys()) - -oc2.write_file() - -ax = m2.plot(colorbar=True) -print(len(ax)) -plt.show() - -# m2.dis.plot(colorbar=True) -# plt.show() - -# m2.lpf.plot(colorbar=True) -# plt.show() - -# m2.ghb.plot(key='cond', colorbar=True, masked_values=[0]) -# plt.show() - -# m2.ghb.plot() -# plt.show() - -print("\nthis is the end...my friend\n") diff --git a/examples/Testing/flopy3_loadSECP.py b/examples/Testing/flopy3_loadSECP.py deleted file mode 100644 index 5e16c64bb1..0000000000 --- a/examples/Testing/flopy3_loadSECP.py +++ /dev/null @@ -1,31 +0,0 @@ -import os -import platform -import sys - -import matplotlib.pyplot as plt -import numpy as np - -import flopy - -#Set name of MODFLOW exe -# assumes executable is in users path statement -version = 'mf2005' -exe_name = 'mf2005' -if platform.system() == 'Windows': - exe_name = 'mf2005.exe' -mfexe = exe_name - -#Set the paths -loadpth = os.path.join('..', 'data', 'secp') -modelpth = os.path.join('data') - -#make sure modelpth directory exists -if not os.path.exists(modelpth): - os.makedirs(modelpth) - -ml = flopy.modflow.Modflow.load('secp.nam', model_ws=loadpth, - exe_name=exe_name, version=version, verbose=True) -ml.change_model_ws(new_pth=modelpth) -ml.write_input() - -print '...end' diff --git a/examples/Testing/flopy3_loadSUB.py b/examples/Testing/flopy3_loadSUB.py deleted file mode 100644 index 6365940d32..0000000000 --- a/examples/Testing/flopy3_loadSUB.py +++ /dev/null @@ -1,21 +0,0 @@ -import os - -import flopy - -pth = os.path.join("..", "data", "mf2005_test") -opth = os.path.join("data") -mname = "tr2k_s3" - -ml = flopy.modflow.Modflow.load( - mname, version="mf2005", model_ws=pth, verbose=True -) - -ml.change_model_ws(opth) - -ml.write_input() - -ml.set_exename("mf2005dbl") - -ml.run_model() - -print("finished...") diff --git a/examples/Testing/flopy3_loadSWT.py b/examples/Testing/flopy3_loadSWT.py deleted file mode 100644 index e954224943..0000000000 --- a/examples/Testing/flopy3_loadSWT.py +++ /dev/null @@ -1,21 +0,0 @@ -import os - -import flopy - -pth = os.path.join("..", "data", "mf2005_test") -opth = os.path.join("data") -mname = "swtex4" - -ml = flopy.modflow.Modflow.load( - mname, version="mf2005", model_ws=pth, verbose=True -) - -ml.change_model_ws(opth) - -ml.write_input() - -ml.set_exename("mf2005dbl") - -ml.run_model() - -print("finished...") diff --git a/examples/Testing/flopy3_load_existing_model_with_openclose_option.ipynb b/examples/Testing/flopy3_load_existing_model_with_openclose_option.ipynb deleted file mode 100644 index 5c68e08f5d..0000000000 --- a/examples/Testing/flopy3_load_existing_model_with_openclose_option.ipynb +++ /dev/null @@ -1,227 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#load an existing model with external arrays and explicit `model_ws`\n", - "First using `free_format` which results in `open/close`" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import os\n", - "import numpy as np\n", - "import flopy\n", - "\n", - "starting_dir = os.getcwd()\n", - "base_dir = \"base_model_dir\"\n", - "if not os.path.exists(base_dir):\n", - " os.mkdir(base_dir)\n", - "# change to base_dir \n", - "os.chdir(base_dir) \n", - "nlay, nrow, ncol = 1, 1, 10\n", - "ml = flopy.modflow.Modflow(modelname=\"base\",external_path=\"ref\")\n", - "dis = flopy.modflow.ModflowDis(ml, nrow=1, ncol=10,\n", - " nlay=nlay, nper=2, perlen=[1,1],\n", - " steady=[True,True])\n", - "bas = flopy.modflow.ModflowBas(ml, ibound=1)\n", - "hk = np.zeros((nlay, nrow, ncol))+2.5\n", - "lpf = flopy.modflow.ModflowLpf(ml, hk=hk,vka=hk)\n", - "\n", - "well_data = {}\n", - "well_data[0] = [0, 0, 9, 0.5]\n", - "well_data[1] = [0, 0, 9, 1.0]\n", - "wel = flopy.modflow.ModflowWel(ml, stress_period_data=well_data)\n", - "\n", - "ghb_data = {}\n", - "ghb_data[0] = [0, 0, 0, 0.5, 1000.0]\n", - "ghb = flopy.modflow.ModflowGhb(ml, stress_period_data=ghb_data)\n", - "ml.write_input()\n", - "# change back \n", - "os.chdir(starting_dir)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now load the model using `base_dir` as the `model_ws` arg" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5]]]\n", - "\n", - "creating model workspace...\n", - " new_dir\n", - "\n", - "changing model workspace...\n", - " new_dir\n" - ] - } - ], - "source": [ - "ml_loaded = flopy.modflow.Modflow.load(\"base.nam\",model_ws=base_dir)\n", - "print ml_loaded.get_package(\"lpf\").hk.array\n", - "ml_loaded.change_model_ws(\"new_dir\")\n", - "ml_loaded.write_input()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now without `free_format` which results in old-style control records and unit numbers in the `nam` file" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: external_path ref already exists\n" - ] - } - ], - "source": [ - "base_dir = \"base_model_dir\"\n", - "if not os.path.exists(base_dir):\n", - " os.mkdir(base_dir)\n", - "# change to base_dir \n", - "os.chdir(base_dir) \n", - "nlay, nrow, ncol = 1, 1, 10\n", - "ml = flopy.modflow.Modflow(modelname=\"base\",external_path=\"ref\")\n", - "ml.array_free_format = False\n", - "dis = flopy.modflow.ModflowDis(ml, nrow=1, ncol=10,\n", - " nlay=nlay, nper=2, perlen=[1,1],\n", - " steady=[True,True])\n", - "bas = flopy.modflow.ModflowBas(ml, ibound=1)\n", - "hk = np.zeros((nlay, nrow, ncol))+2.5\n", - "lpf = flopy.modflow.ModflowLpf(ml, hk=hk,vka=hk)\n", - "\n", - "well_data = {}\n", - "well_data[0] = [0, 0, 9, 0.5]\n", - "well_data[1] = [0, 0, 9, 1.0]\n", - "wel = flopy.modflow.ModflowWel(ml, stress_period_data=well_data)\n", - "\n", - "ghb_data = {}\n", - "ghb_data[0] = [0, 0, 0, 0.5, 1000.0]\n", - "ghb = flopy.modflow.ModflowGhb(ml, stress_period_data=ghb_data)\n", - "ml.write_input()\n", - "# change back \n", - "os.chdir(\"..\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Creating new model with name: base\n", - "--------------------------------------------------\n", - "\n", - " DIS package load...success\n", - " LIST package load...skipped\n", - " DATA file load...skipped\n", - " hk_Layer_1.ref\n", - " DATA file load...skipped\n", - " vka_Layer_1.ref\n", - " BAS6 package load...success\n", - " LPF package load...success\n", - " WEL package load...success\n", - " GHB package load...success\n", - "\n", - "\n", - " The following 5 packages were successfully loaded.\n", - " base.dis\n", - " base.bas\n", - " base.lpf\n", - " base.wel\n", - " base.ghb\n", - " The following 1 packages were not loaded.\n", - " base.list\n", - "\n", - "\n", - "[[[ 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5]]]\n", - "\n", - "creating model workspace...\n", - " new_dir2\n", - "\n", - "changing model workspace...\n", - " new_dir2\n" - ] - } - ], - "source": [ - "ml_loaded = flopy.modflow.Modflow.load(\"base.nam\",model_ws=base_dir)\n", - "print ml_loaded.get_package(\"lpf\").hk.array\n", - "ml_loaded.change_model_ws(\"new_dir2\")\n", - "ml_loaded.write_input()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/Testing/flopy3_load_parameters.py b/examples/Testing/flopy3_load_parameters.py deleted file mode 100644 index 5415565064..0000000000 --- a/examples/Testing/flopy3_load_parameters.py +++ /dev/null @@ -1,60 +0,0 @@ -import os -import platform -import sys - -import numpy as np - -# -- add development version of flopy to system path -flopypath = os.path.join('..', '..') -if flopypath not in sys.path: - print 'Adding to sys.path: ', flopypath - sys.path.append(flopypath) - -import flopy -import flopy.utils as fputl - -spth = os.getcwd() - -mname = 'twrip.nam' -#mname = 'Oahu_01.nam' - -model_ws = os.path.join('..', 'data', 'parameters') -omodel_ws = os.path.join('..', 'basic', 'data') - -#mname = 'freyberg' -#bpth = os.path.join('/Users/jdhughes/Documents/Training/GW1774Materials/GitRepository/GW1774/ClassMaterials/Exercises/Data/FreybergModel') -#os.chdir(bpth) - -#model_ws = os.path.join('.') -#omodel_ws = os.path.join('..', '17_streamcapture') - -exe_name = 'mf2005' -version = 'mf2005' - -# -- load the model -ml = flopy.modflow.Modflow.load(mname, version=version, exe_name=exe_name, - verbose=False, model_ws=model_ws) - - - -# -- change model workspace -ml.change_model_ws(new_pth=omodel_ws) - -# -- add pcg package -if mname == 'twrip.nam': - ml.remove_package('SIP') - pcg = flopy.modflow.ModflowPcg(ml) - -# wel = ml.get_package('WEL') -# wd = wel.stress_period_data[0] -# wel.stress_period_data[0] = [[0, 8, 7, -5.], -# [0, 8, 9, -5.], -# [0, 8, 11, -5.]] - -# -- save the model -ml.write_input() - -os.chdir(spth) - - -print 'finished...' \ No newline at end of file diff --git a/examples/Testing/flopy3_loadplotfreyberg.ipynb b/examples/Testing/flopy3_loadplotfreyberg.ipynb deleted file mode 100644 index 3da83689ae..0000000000 --- a/examples/Testing/flopy3_loadplotfreyberg.ipynb +++ /dev/null @@ -1,679 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import os\n", - "import numpy as np\n", - "import flopy" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Creating new model with name: freyberg\n", - "--------------------------------------------------\n", - "\n", - "Parsing the namefile --> data/freyberg.nam\n", - "Setting filehandles:\n", - "\n", - "--------------------------------------------------\n", - "External unit dictionary:\n", - "{51: , 2: , 11: , 13: , 14: , 15: , 18: , 19: , 20: , 53: , 52: , 27: }\n", - "--------------------------------------------------\n", - "\n", - "loading dis package file...\n", - " Loading dis package with:\n", - " 1 layers, 40 rows, 20 columns, and 1 stress periods\n", - " loading laycbd...\n", - " loading delr...\n", - " loading delc...\n", - " loading top...\n", - " loading botm...\n", - " loading stress period data...\n", - "adding Package: DIS\n", - " DIS package load...success\n", - " DATA(BINARY) file load...skipped\n", - " freyberg.hds\n", - " LIST package load...skipped\n", - "loading bas6 package file...\n", - "adding Package: BAS6\n", - " BAS6 package load...success\n", - "loading oc package file...\n", - "adding Package: OC\n", - " OC package load...success\n", - "loading lpf package file...\n", - " loading IBCFCB, HDRY, NPLPF...\n", - " loading LAYTYP...\n", - " loading LAYAVG...\n", - " loading CHANI...\n", - " loading LAYVKA...\n", - " loading LAYWET...\n", - " loading hk layer 1...\n", - " loading vka layer 1...\n", - "adding Package: LPF\n", - " LPF package load...success\n", - "loading riv package file...\n", - " loading for kper 1\n", - "adding Package: RIV\n", - " RIV package load...success\n", - "loading rch package file...\n", - " loading rech stress period 1...\n", - "adding Package: RCH\n", - " RCH package load...success\n", - "loading wel package file...\n", - " loading for kper 1\n", - "adding Package: WEL\n", - " WEL package load...success\n", - " DATA(BINARY) file load...skipped\n", - " freyberg.cbc\n", - " DATA(BINARY) file load...skipped\n", - " freyberg.ddn\n", - "loading pcg package file...\n", - "adding Package: PCG\n", - " PCG package load...success\n", - "\n", - "\n", - " The following 8 packages were successfully loaded.\n", - " freyberg.dis\n", - " freyberg.bas\n", - " freyberg.oc\n", - " freyberg.lpf\n", - " freyberg.riv\n", - " freyberg.rch\n", - " freyberg.wel\n", - " freyberg.pcg\n", - " The following 1 packages were not loaded.\n", - " freyberg.list\n", - "\n", - "\n" - ] - } - ], - "source": [ - "ml = flopy.modflow.Modflow.load('freyberg.nam', version='mf2005', verbose=True, model_ws='data')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Plotting Packages\n", - "plotting DIS package util_2d instance: top\n", - "plotting DIS package util_3d instance: _ModflowDis__thickness\n", - "plotting DIS package util_3d instance: botm\n", - "plotting BAS6 package util_3d instance: ibound\n", - "plotting BAS6 package util_3d instance: strt\n", - "plotting LPF package util_3d instance: wetdry\n", - "plotting LPF package util_3d instance: vka\n", - "plotting LPF package util_3d instance: hani\n", - "plotting LPF package util_3d instance: vkcb\n", - "plotting LPF package util_3d instance: hk\n", - "plotting LPF package util_3d instance: sy\n", - "plotting LPF package util_3d instance: ss\n", - "plotting RIV package mflist instance: stress_period_data\n", - "plotting RCH package transient_2d instance: rech\n", - "plotting WEL package mflist instance: stress_period_data\n", - " \n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n49fP/klKdQqJNIiSRpLlJDBJewKq1WggDCdoIt5Z2fUcJ0+afiBwYpnsSwBm9nPgCODLklYDb5LN\nhWqmaQxnuz92XFf06v7+epxNj6iuGf7HlfvxfwZfWyU/kLvcNlLZtj0nw4T/aKuSbXLai+71Ky7z\nUsaA7xyobjfDC5l5MKHrpcZNhMu4TgdwnRTjEk4Ap0paPXlrRddzHDN7g4rcPLnBlPZ/Cvy0p31p\nGsPpCZ7RdMYfnLqpT5BIRxWsM1a+3TghNz2KHJA0KH/6emt+PELSLElPSpopaXiZ7lRJT0laIGly\nmXx3SXPzcz/uSX+Cfs7bgztufUhPQ26+SrZirpTswM1hJWki2XLUiWS5qy6RVHoIdSlwgpmNJ1u+\nWpkXKwgyVqjj1ocUNhxJY8jKw11G+5PYVA6rw4FpZrbKzNqAhcCkPHnCMDObk+tdg5/3KgiyZ7Hl\nWx/SkznOj8hKxJXPHlM5rLYCyrNoPEc2y11Fx2wii0gvGAkGOu/0dQfaKWQ4kj5F5gt/SFKLp9NJ\nDqtiVCT1GcxKV235VaOqZD88+huu7p3v8WupHvAL5yHbmGoRgOczWPFqotDTVxMFmVyvWErXKxaV\nCnXxHk+kfpcOScidsJ1ExffOEyrVgRVdq0hqI3vz3gVWmVV7eiRdRPYPvwl8zsweqrUrRUecfYDD\nJB0KbAi8R9K1pHNYVeatGkP2Ni+i41dyDP6yRc4qy+TUshOZNz5oTFa1wurW+rfrlr6twoCW1EPN\n/Du7nZmNlzSJbI69V61dKWQ4ZvZN4Jt5Rw4gC5Q7VtL5+DmsZgDXS/oh2U/eeGBOPiq9lv8Dc4Bj\ngYu81zzryI7HV3tKQWOwQUu2lXi70wLO3ad7hgOdRz+vnYeb2WxJwyWVTzG6Rb0WspVuydwcVnn0\n6XQyD9ztwElmVrrmJDIHw1Nkia/vqFOfgv7G2xWbjwF3Sbpf0onOeS9PdOpGPEmPH4Ca2R+AP+T7\nL+PksMrPnQOc48gfgGSqzSBopxtzHGBfM1ssaQuyEu0L8ioG5VSOSJE7OujHPNYKf2vtVMXMFud/\nX5B0M1kJj3LD8ebb7ry6M5rHcP7R8XAi/tqjy7/4L1Wy0fzd1V325Db+a1Wnn4YvJfr1K0f200Ro\nyOYJ+YveQ4nUQjZvwVlqEVotMXCpeDfHC7drQjU1ItyTkNfKmJZsK3F3x7mTpI2AQWb2eh7sORmo\n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\nhhMEBfj/EDnXN0vhWloAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n3HEAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nRK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\njpql+gAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nGGIQlID/DwIOMlYefY2RAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nwWVWkv8PceySmhW94vUAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nNA0YEBHT0iTMtcDRFJeYtwGHRkRIugc4D1gG3AxcHhG3VBwruqOPbfNA1ZfjZ1JJs9rvX8yobdsk\nERHdd7IzyzECApwLXCOpL/B74BygF7BQ0mRgHXAaQESslLQQWAlsBqaUEjUFmAP0o5hV3Sp8Zru6\nLCNgLXkE3DkeAWvDT8KYZeQAmmXkAJpl5ACaZeQAmmXkAJpl5ACaZeQAmmXkAJpl5ACaZeQAmmXk\nAJpl5ACaZeQAmmXkAJpl5ACaZeQAmmXkAJpl5ACaZeQAmmXkAJpl5ACaZeQAmmXkAJpllOv/jP2a\nsyv8z3Zt1+MR0CwjB9AsIwfQLCMH0CwjB9AsI8+C7qSOZjW7858ts57HI6BZRg6gWUYOoFlGDqBZ\nRp6EqTI/cmY7ItsIKKmXpOWSbkrvB0paImm1pMWSBpS2nS5pjaRVksaVysdIWpHWXZajH2ZdkfMS\n9JPASqB1yJgGLImIUcDS9B5Jo4HTgdHAeOBKtc31zwYmR8RIYKSk8TVsv1mXZQmgpGHAu4DvAK1h\nmgDMTctzgVPT8kRgQURsioh1wFpgrKQhQP+IWJa2m1fax6wu5BoBLwE+B2wplQ2KiJa03AIMSssH\nAOtL260HhrZT3pTKzepGzQMo6T3AhohYTtvot5UoZjI8m2E9Xo5Z0OOACZLeBbwO2FvSfKBF0uCI\naE6XlxvS9k3A8NL+wyhGvqa0XC5vau+AM2fOfGW5oaGBhoaG6vTEqq6xsZHGxsbczagZ5Zw2l/QO\n4LMR8Q+SvgI8FREXSZoGDIiIaWkS5lrgaIpLzNuAQyMiJN0DnAcsA24GLo+IWyqOEf7VwI7TrPaf\naY0ZtT2XkoiIHvuA7a7we8DWn+iFwEJJk4F1wGkAEbFS0kKKGdPNwJRSoqYAc4B+wKLK8Jnt6rKO\ngLXgEXDneASsDT+KZpaRA2iWkQNolpEDaJaRA2iWkQNolpEDaJaRA2iWkQNolpEDaJaRA2iWkQNo\nlpEDaJaRA2iWkQNolpEDaJaRA2iWkQNolpEDaJaRA2iWkQNolpEDaJaRA2iWkQNolpEDaJaRA2iW\nkQNolpEDaJaRA2iWkQNolpEDaJaRA2iWkQNolpEDaJaRA2iWkQNollHNAyhpuKTbJT0o6QFJ56Xy\ngZKWSFotabGkAaV9pktaI2mVpHGl8jGSVqR1l9W6L2ZdlWME3AR8OiIOB44BPi7pMGAasCQiRgFL\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n1lU5ZwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOYAAAEKCAYAAAAGmyn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGAVJREFUeJzt3X+cXWVh5/HPlx/ht8QUXuG3oRBWgrZAXktQoYyomNUu\nsPuy/GilFCLbXWzR+tIlabdL7A+F1iq4Flwr8ms1bhZbCkKBSBlAq6QoVCCkJNQAGUj4TQAtBvLd\nP84z5GQ6k0ySO3Ofmfm+X6/7yrnPPec5zzlzv+d57nPPTGSbiKjLNt1uQET8WwlmRIUSzIgKJZgR\nFUowIyqUYEZUqNpgSlon6RdHeZ+XSfofo7nP8WhrzqOkXklzOtSOUX8PdcpGgylpnqSbBpQtG6Ls\nlLK8TtLLkl5qPT5ZXpsv6ZpOH8SWkPRbku5ql9n+b7b/ZBTbMK2cr2ovkFtiK8+jy+PfkPQ2SbdI\nelrSui1v4eiSdIqkf5D0iqTbh7PNpt4QdwDvlKSyg72B7YDD+99Mpewg4M7Wdr9ke7fW43OlPHcz\nDE5DviBtO5oN2VojfJH5OfBNoCM96kgY4vifBT4PXDjcejZ1Eu8BtgcOL8+PBW4HHh5Q9ojtVcPY\n35BvwI1uJO0u6WpJT0laIekP+i8W5fVzJC2RtEbSg5KOKOVzJS1vlZ9cyg8FLgPeUXr050r5lZL+\neEC9yyQ9K+lvy0Wo/7V1kn5b0sOSnpf0pY20/yhJ90h6UdIqSf0Xqv6L2QuljUeXnvx7kj4v6Rng\nAkmTJH1O0qNl+8sk7Vjq3kPSt0sbnpV0Z2u/50taWepeKun4Idp3paQvS7q1rNsr6YDW62+VtKjU\nv1TSrw3Y9jJJN0l6GXj3Zp7H95U6X5D0v2jeI4O+T2w/bPsKYMlQ53ookj4o6d7yM3hM0gWt126U\n9DsD1v+xpJO24Ph7Bmn3bbavBZ4cdoNtb/QB/D3w8bL8JeAs4E8GlH21tf464KAh6poPXLOpfbbq\n+cWyfDXwN8AuwFuAfwbOLq/9GrASmFmeHwQcUJY/BOxVlk8BXgamludnAncN2OcVwB+V5eOBp2ku\nQJOALwJ3DGjf9cCbgP2Bp4D3D3Es3wd+oyzvDMwqy28p9WzTWve3gLXAR2kunDsCXwCuAyYDu5b9\nfqas/1mai8y25fGuUv7vgMdax39A//kcpH1XAmuAY8qxXtx/bso5f7ycr23K+XgaOLS17QvAO8rz\nHYZ7HoE9yn7/c2n7x8uxn72J98bBwLrNfA8dBxxWlt8OrAJOar2HftDa7peBZ2hGh5t9/Btpz0eA\n24fz/h/OsOMO4FfK8jE0V/m7WmXHlnXaflSu4P2P9w1jP4MqQ7lTgXm2X7H9KPAXwBlllY8AF9n+\nIYDtR2w/Vpav7e/JbS8ElgGz+qvexK5/A7jc9n22fw7Mo+lhD2itc6HtNbYfpxlJHD5YRTRDsOmS\n9rD9U9t3b6INT9j+S9vrgFeBc4BP2H7B9ss0YTytVffewDTbr9v+Xil/nSYkh0na3vZjtv9lI8f7\nbdvfLcf6B+VY9wN+FfiJ7atsr7N9H/DXNG/mftfZ/j6A7VcH1DvUeXwL8AHgAdt/Xdp+MU1gOs72\nHbYfLMv30wyJjysv3wAcIumg8vwM4Ju2X2Prj3+LDCeYdwLHSHozsKftR2h6gHeWssPY8PMlwBG2\n39x6LNqKNu5BM5x+tFX2GLBvWd4PeGSwDSX9Zhm+PC/peeBtwC8Mc797t/dp+xWazwr7ttZpv4l+\nStObDWYOcAjwkKTFkj64iX0/3lrek6aX/WHrOP6O5rwA/DmwHLhV0iOSzi/tXU7TA80HVkta0B5C\nDmCaUUf7WJ8D9qHp1We1L7TArwNTW9s+ztA2dh73bu93kGPvGEmzJN2u5uPQC8BvU94Ltv8VWAic\nIUk0F73+ScqtPf4tMpxg/gDYneaq/T0A22uAJ4D/QnN1f3TozTewJZM/z9AMb6a1yg5g/Q/0cZqh\nzQbKFfkrNEPCKbbfDDzA+l5qU215or1PSbvQ/CD7NvcAbC+3/eu29wQuAq6VtNNG2tAufwb4GTCj\ndaGbbPtNpe6XbX/S9kHAicAn+j9L2l5g+1iaN5fLvgcjmuF4/7HuCkwpx/oYzdCzfaHdzfZHh3n4\nQ53HlTSfudr73aAdHfYNmo8D+9meDHyZDd//V9H07u8F2qOarT3+tmG//zcZTNs/o5kE+gQb9ozf\nLWUDh7Ew9BBNwDaSdpC0Y3nssIn9v05zNftTSbuWwP0e8H/KKl8FPinpSDUOLsPNXWhOxDNln2fR\n9Jj9VgP7Sdp+QPv6274AOEvSL5c2fobmc8hjGzm2wV+QPixpz/L0xdKudTSfVdbRfC4e6vjXAX8F\nXNxfh6R9JZ1Qlj9Yjlk0n9deB16XdIik40vbXwX+tbw2lA9IepekScAfA9+33QfcSDPM+7Ck7cvj\n30t660aOe7jn8SaaofZ/krQdcB6w10baiJpJr0lleYdNvX9adgWet/1zSUfR9HpvBKUMRQ18jmZO\no9+3t+D4B7Z5m9Lu7Vn//t9+Y9sMd2r7Dpoh1XdbZXfRDKcGDmMB/kkbfo/5+VJu4HSaHuCn5bFs\niH22ry6/C7wC/EvZ79dpJhhwM9v1pzRXxDU04/83215C81n0+zRDzrcNaP9twIPAKklPtfbpUu9t\nwB8C36K56h/I+s91A9u3wbaDeD/wgKSXaCZyTrP9qu2flrZ/T9JzkmYNUc/5NMPVH0h6EVhEMzQG\nmF6evwT8A/CXtu+g+Xz5WZrwP0nzs5o3RPtMc/4uoBlmHgF8uJyHl4ATyrH3lbo+SwnHEO0d1nm0\n/QzNZ7ULaS6gB7Phz2gDkqbRvGceKPX/DHhoqPUHtOtc4I8krSnt+b+DrH81zcRQ/0Wf8pl+c49/\noN8s7b6UZk7mZ8D/3tgG8ij8orSkrwEfBJ6y/fZSNoXm5LwFWAGcYvuF8to84GyaK/x5tm8t5TNp\nZsF2BG6y/bFSvgPNST2S5o116mYMryc8SVcAK23/Ybfb0k2SzgDOsf0rm1x5hI3WHSdXALMHlM0F\nFtk+hKb3mgsgaQbNLOyMss2lZZgGzdcCc2xPp5nl7K9zDvBsKf8CQ3+WisFt0ffL44mknWnmI77S\n7bbAKAXT9l3A8wOKT6T5wE359+SyfBKwwPZa2ytohnCzyozibrYXl/Wubm3TrutbwHs6fhDj23CG\nY+OWpPfTfA/9JM2Qvuu26+K+p9peXZZXs376eR+ameB+K2mm1tey4dR6H+u/utiXMmVt+zU1d3dM\nsf3cSDV+PLF9Vrfb0E22b2Hor7q6ooqbp9180J2wV+yIgbrZY66WtJftVWWY2j8z2seG32XtR9NT\n9pXlgeX92xwAPFGm3XcfrLeUlPCPcbYnxOfhbvaY19Pcf0j597pW+Wlqbtw+kObrgMXl1ro15Q4O\n0dw29beD1PUhmsmkQXkY9yluyeOCCy5IvSNYr0fh24OajEqPKWkBzX2Je0h6HPifNN9dLVTzS7Er\naG4yx/YSSQtpfoPgNeBcr/+pnEvzdclONF+X3FzKLweukbSM5uuS9veNEWPOqATT9ulDvPTeIdb/\nDM0dIgPLf0jzBfDA8lcpwY4YD6qY/BkPenp6Uu8I1jvRjMqdP7WQ5Il0vOONpEz+RET3JJgRFUow\nIyqUYEZUKMGMqFCCGVGhBDOiQglmRIUSzIgKJZgRFUowIyqUYEZUKMGMqFCCGVGhBDOiQglmRIUS\nzIgKJZgRFUowIyqUYEZUKMGMqFCCGVGhBDOiQglmRIUSzIgKJZgRFUowIyqUYEZUKMGMqFCCGVGh\nBDOiQglmRIUSzIgKJZgRFep6MCXNk/SgpPslfUPSDpKmSFok6WFJt0qaPGD9ZZKWSjqhVT6z1LFM\n0iXdOZqIzuhqMCVNA84BjrT9dmBb4DRgLrDI9iHAbeU5kmYApwIzgNnApZJUqrsMmGN7OjBd0uxR\nPJSIjup2j7kGWAvsLGk7YGfgCeBE4KqyzlXAyWX5JGCB7bW2VwDLgVmS9gZ2s724rHd1a5uIMaer\nwbT9HPAXwGM0gXzB9iJgqu3VZbXVwNSyvA+wslXFSmDfQcr7SnnEmLRdN3cu6SDg48A04EXg/0n6\ncHsd25bkTu1z/vz5byz39PTQ09Oz1XWuH01vHbtjhznyNnbMHTqO3t5eent7O1LXWKNuvhkknQq8\nz/ZHyvMzgKOB44F3215Vhqm3236rpLkAti8s698MXAA8WtY5tJSfDhxn+78O2J9H4ngTzAFG6Dgk\nYbszJ7ty3f6MuRQ4WtJOZRLnvcAS4AbgzLLOmcB1Zfl64DRJkyQdCEwHFtteBayRNKvUc0Zrm4gx\np6tDWdv/JOlq4B5gHfAj4CvAbsBCSXOAFcApZf0lkhbShPc14NxWF3gucCWwE3CT7ZtH8VAiOqqr\nQ9nRlqFsB2UoO6K62mPGhgYL+JgKa3RMghlbJheMEdXtyZ+IGESCGVGhBDOiQglmRIUy+TNRDfV1\nRyZ1qpAeM6JCCWZEhRLMiAolmBEVSjAjKpRZ2Ykqs69VS48ZUaEEM6JCCWZEhRLMiAolmBEVSjAj\nKpRgRlQowYyoUIIZUaEEM6JCCWZEhRLMiAolmBEVSjAjKpRgRlQowYyoUIIZUaEEM6JCCWZEhRLM\niAolmBEVSjAjKtT1YEqaLOlaSQ9JWiJplqQpkhZJeljSrZImt9afJ2mZpKWSTmiVz5R0f3ntku4c\nTURndD2YwCXATbYPBX4JWArMBRbZPgS4rTxH0gzgVGAGMBu4VHrjv626DJhjezowXdLs0T2MiM7p\najAl7Q4ca/trALZfs/0icCJwVVntKuDksnwSsMD2WtsrgOXALEl7A7vZXlzWu7q1TcSY0+0e80Dg\naUlXSPqRpL+StAsw1fbqss5qYGpZ3gdY2dp+JbDvIOV9pTxiTOp2MLcDjgQutX0k8Apl2NrPtoH8\nPf+YULr9f5esBFba/sfy/FpgHrBK0l62V5Vh6lPl9T5g/9b2+5U6+spyu7xvsB3Onz//jeWenh56\nenq2/ihiRPT29tLb29vtZnSF3OX/XEbSncBHbD8saT6wc3npWdsXSZoLTLY9t0z+fAM4imao+h3g\nYNuWdDdwHrAYuBH4ou2bB+zLI3G8Guq/Te+Abv98aiIJ2yN3sivS7R4T4HeBr0uaBDwCnAVsCyyU\nNAdYAZwCYHuJpIXAEuA14NxW0s4FrgR2opnl3SCUEWNJ13vM0ZQec2ybSD1mtyd/ImIQCWZEhRLM\niAolmBEVSjAjKpRgRlQowYyoUIIZUaEEM6JCCWZEhRLMiAolmBEVquG3S6IWG7sZPzfTj6r0mBEV\nSjAjKpRgRlQowYyoUIIZUaEEM6JC+bok1stXItVIjxlRoQQzokIJZkSFEsyICmXypwvyR5xjU9Jj\nRlQowYyoUIIZUaEEM6JCCWZEhTIr2wFDzbKO5H/PF+NbesyICiWYERVKMCMqlGBGVCiTPyMot97F\nlqqix5S0raR7Jd1Qnk+RtEjSw5JulTS5te48ScskLZV0Qqt8pqT7y2uXdOM4IjqlimACHwOWAP1d\nzFxgke1DgNvKcyTNAE4FZgCzgUu1/juJy4A5tqcD0yXNHsX2R3RU14MpaT/gA8BXgf6QnQhcVZav\nAk4uyycBC2yvtb0CWA7MkrQ3sJvtxWW9q1vbRIw5XQ8m8AXgU8C6VtlU26vL8mpgalneB1jZWm8l\nsO8g5X2lPGJM6mowJf0q8JTte1nfW27AzQxKZlFiQun2rOw7gRMlfQDYEXiTpGuA1ZL2sr2qDFOf\nKuv3Afu3tt+PpqfsK8vt8r7Bdjh//vw3lnt6eujp6enMkUTH9fb20tvb2+1mdIVqmdKXdBzwSdv/\nUdKfAc/avkjSXGCy7bll8ucbwFE0Q9XvAAfbtqS7gfOAxcCNwBdt3zxgH67leGPzScL2hLgBuds9\n5kD9qbkQWChpDrACOAXA9hJJC2lmcF8Dzm0l7VzgSmAn4KaBoYwYS6rpMUdDesyxbSL1mDXMykbE\nALUNZWM48j8/j3vpMSMqlGBGVCjBjKhQghlRoQQzokKZlR2LMvM67qXHjKhQghlRoQQzokIJZkSF\nEsyICiWYERVKMCMqlGBGVCjBjKhQ7vwZSUP93mTu3IlNSI8ZUaEEM6JCCWZEhRLMiAolmBEVSjAj\nKpSvS0ZSvhaJLZQeM6JCCWZEhRLMiAolmBEVSjAjKpRgRlQowYyoUIIZUaEEM6JCCWZEhRLMiAp1\nNZiS9pd0u6QHJT0g6bxSPkXSIkkPS7pV0uTWNvMkLZO0VNIJrfKZku4vr13SjeOJ6JRu95hrgd+z\nfRhwNPBRSYcCc4FFtg8BbivPkTQDOBWYAcwGLpXe+MM6lwFzbE8HpkuaPbqHEtE5XQ2m7VW27yvL\nLwMPAfsCJwJXldWuAk4uyycBC2yvtb0CWA7MkrQ3sJvtxWW9q1vbRIw53e4x3yBpGnAEcDcw1fbq\n8tJqYGpZ3gdY2dpsJU2QB5b3lfKIMamK38eUtCvwLeBjtl9S688+2rakjv1iowb5k5LO701Wqbe3\nl97e3m43oyu6HkxJ29OE8hrb15Xi1ZL2sr2qDFOfKuV9wP6tzfej6Sn7ynK7vG9kWx4jraenh56e\nnjeef/rTn+5eY0ZZt2dlBVwOLLF9ceul64Ezy/KZwHWt8tMkTZJ0IDAdWGx7FbBG0qxS5xmtbSLG\nHHVzGCfpGOBO4MdAf0PmAYuBhcABwArgFNsvlG1+HzgbeI1m6HtLKZ8JXAnsBNxk+7xB9jfowWYo\nOzZIwvYQf95+fOlqMEdbgjm2TaRgdv0zZg0GmxCCcRLYof7/FMgfC6tYNV+XRMR6CWZEhRLMiAol\nmBEVSjAjKpRZ2Y3I7XvRLQnmeJcLyZiUoWxEhRLMiAolmBEVymfMzTSub9+rxFDneCJJjxlRoQQz\nokIJZkSFEsyICiWYERVKMCMqlGBGVCjBjKhQghlRoQQzokIJZkSFcq9sh+Qe2s2Xe2KHlh4zokIJ\nZkSFEsyICiWYERXK5E+Mikz0bJ70mBEVSjAjKpRgRlQowYyoUIIZUaHMysYWySzryBpXPaak2ZKW\nSlom6fxutydiS42bYEraFvgSMBuYAZwu6dDutmrr9fb2jql6ozPGTTCBo4DltlfYXgt8Ezipy23a\nagnmxDSegrkv8Hjr+cpSFjHmjKdg5hcfY9zQePlFXklHA/Ntzy7P5wHrbF/UWmd8HOwEZntCTAeP\np2BuB/wz8B7gCWAxcLrth7rasIgtMG6+x7T9mqTfAW4BtgUuTyhjrBo3PWbEeDKeJn82anNvPpD0\nNUmrJd3fKpsiaZGkhyXdKmly67V5pe6lkk5olc+UdH957RJJ+0u6XdKDkh6QdF6H6v6SpLsl3Sdp\niaTPdqrNpWxbSfdKuqHD9a6Q9ONS9+JO1j2m2R73D5qh7XJgGrA9cB9w6Ca2ORY4Ari/VfZnwH8v\ny+cDF5blGaXO7cs+lrN+NLIYOKos3wScDhxenu9K87n40A7VfVJZ3g74AXBMh+qdDXwC+DpwfQfP\nxWzgJ8CUAee+I3V3+323Ve/ZbjdgVA4S3gHc3Ho+F5g7jO2mDQjmUmBqWd4LWFqW5wHnt9a7GTga\n2Bt4qFV+GvDlAfu4DnhvJ+sGdgb+ETisQ/VeA3wHeDdwQyfPRQnmLww4Jx0/z2PtMVGGsp26+WCq\n7dVleTUwtSzvU+ocWP/A8r72fiVNo+mV7+5U3ZLuK9vfbvvBDtX7HuBTwLoROBcGviPpHknndLju\nMWvczMpuQsdnuGx7a74XlbQr8C3gY7Zfav+2xtbUbftwSbsDt0h6dwfa/A7gVdv3SuoZYp9bcy7e\nZftJSXsCiyQt7WDdY9ZE6TH7gP1bz/dnwyvscK2WtBeApL2Bp4aof79Sf19Zbpf3SdqeJpTX2L6u\nk3UD2H4RuBGY2YF63wnsKeknwALgeEnXdKq9tp8sbX4a+Buae547di7GqokSzHuA6ZKmSZoEnApc\nvwX1XA+cWZbPpPl82F9+mqRJkg4EpgOLba8C1kiapaZLPKNsczmwxPbFHaz7bGARgKSdgPcB93ag\n3knAh2wfSPPZ7e9tn9Ghc/F3knYrbd4FOAG4v4Pneezq9ofc0XoA/4FmBnQ5MG8Y6y+guYPo5zSf\nT88CptBMgjwM3ApMbq3/+6XupcD7W+Uzad5sy4Ev0syUrqOZXby3PGZ3oO6vAz8q9f4Y+FRZZ6vb\n3Co/jvWzsp04FweW9t4HPND/c+lkm8fqIzcYRFRoogxlI8aUBDOiQglmRIUSzIgKJZgRFUowIyqU\nYEZUKMGMqND/B43zG68dFpx8AAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ml.plot();" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "plotting DIS package util_2d instance: top\n", - "plotting DIS package util_3d instance: _ModflowDis__thickness\n", - "plotting DIS package util_3d instance: botm\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAM8AAAEKCAYAAAC10wHsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXuUXVWR/z9f8iJgAhPQ8AgY1KBEURAkKiKNIgZU0B/K\nQ0VU9OesCOOoOCbO6AR0gSKiOCo/FTWAPIwoCBqBgDSKDoRHkECIJEgLaUhAXuGZB6nfH2dfch+1\nb3efvunu26nPWmf1OXXr7LPv7Vt371OndpXMjCAI+s5mg92BIGhXwniCoCRhPEFQkjCeIChJGE8Q\nlCSMJwhKMqyMR9JkSeslue9L0ixJP+5FO3MkfbX1Pew/6f29bLD7EbS58UjqkvS23uqb2alm9sne\nqKYtyCDpCEl/kfS0pGsHuz+DwcjB7kA/MUAbqe2N1W7bIWkzM1tfJ34EOAPYDej1D9hwom1HHknn\nATsDl0t6UtKJVS9/WNI/JD0s6UtV58xO51WO35J+PR+TdJ+kjzjXGSfpWknfScdzJH1f0m8lrZJ0\nQ/U0StKrJM2X9IikJZI+UPXaIZLuTOctl/T5JN82tfdYOu+Pkno0XknvkrRQ0hOp//9d9drvJB1f\np3+7pMN60c85ks6SNE/SU0BH/bXN7Bozuxh4sKd+DlvMrG034F7gbVXHk4H1wA+BMcBrgeeAV6bX\n/xs4L+2/FFgFHAmMACYAr0uv/Qw4GdgGWACcXHWNOcA/gb3TeT8HLkyvbQncDxxL8cO0B/Aw8Kr0\n+oPAvml/K2DPtH8qcFZqb0RFJ/Oe1wMvS/v7A69O+7sDK4DD0vEHgBuqzntd6vfIJv3creo9Pg68\nKR2PadKfTwDXDvZ3YTC2th15euAkM1ttZrcDf6X44kDtVOyDwHwz+4WZPW9mj5rZX6te3xHoBH5h\nZl+pkhvwazO72cyeB86n+PIBvBu418zOMbP1ZnYb8GvgiPT6GuDVksab2RNmtrBKvj0wOfXlz715\nk2Z2nZndmfYXARdRGBTA5cCukl6ejo8BLjKzdU36+YGq5i81s/9Nba/uTX82NYar8ayo2n8GeJGj\nsxPw98z5At4FbE4xitWzsmr/2ar2XwpMS9OvxyQ9RmGkE9PrhwOHAF2SOiW9Mcm/CSwDrpJ0j6Qv\nNn13lU5K09KU8iFJjwOfohgtMbPngLnAMWkKeBRQmbL21E+jGJmCJgwHh0FZ7gP2adLuj4F/AeZJ\nmm5mz/SyzevM7CC3UbObgfdKGgGcQPHl3tnMngJOBE6U9GrgD5JuMrM/9HC9C4DvAu80szWSvg1s\nW/X6OcC5wJ+BZ8zsxt70s49ssl7Jdh95VgIv71HL5wLgQEkfkDRS0jaSaqZ3ZnY88DcKp8Tm1a9l\n+B3FVOnDkkal7Q3p5nyUpA9J2ipN954EngeQ9G5Jr0gjxKokf74X7+FFwGPJcPahGD1e+DKnaZcB\np1MYUYXf5vrZi/dI6vNm6TMZBWwmaYykUb3o87Ch3Y3nVOC/0tTjc0nW7Jfwhec3ZnYfxRTq8xRu\n14UUDoYaPeD/AsuBSyWNwX8GVGnzSeAgiilSN4WD4FRgdNL7MHCvpCdSux9K8lcA8ykM6i/A983s\nuibvocIM4GRJq4AvA79w9M+lcCb8/IUGipGuWT9785zrIxRT4h8A+1FMX70p7vClmTcB+CnFr/ui\nKtkEin/03cBVwNZVr80ClgJLgIOq5HsBi9JrZ1bJx1D8w5cCNwAvHWwPynDbKBwFfxzsfgzHraeR\n52fA9DrZTAov1a7ANekYSVMp3L5T0zk/qHpWcRZwnJlNAaZIqrR5HPBIkn8b+EbP5h70FklbAJ8G\nfjTYfRmONDUeM/sT8Fid+FCKG1HS3/em/cMonnesNbMuCu/RNEnbA+PMbEHSO7fqnOq2fgW8veT7\nCOqQ9E7gIYop2QWD3J1hSRlv20Qzq7hqV7LBvbkDxdSrwnKKZyVr036F7iQn/b0fwMzWpSflE8zs\n0RL9CqowsyvxXfRBi+iXw8CKSfUm66oMNm3KjDwrJW1nZivSlOyhJO+mePBYYRLFiNOd9uvllXN2\nBh6QNBLYyht1JIWBtjlmNuwCbcsYz2UUMVHfSH8vrZJfIOkMiunYFGCBmVkKhJxGESd2DMWDveq2\nbgDeT+GA8BlbZz/PdmYUn20UHXCwr/oJ4Fez4fDZtfIVjarXf25vt4nvckKD7J1cxW9m385hs19b\nJ7/SbWPHex9pFD7tqnLixWM4cfbmNbItnnfeMzD+vjUNssd2Gevqfn32WmbObnxM8y8/d9q+ze/b\nuq/48lFb+fJ2p6nxSLqQIlZqW0n3A18Bvg7MlXQc0EWK2zKzxZLmAouBdcCMNK2D4nnEHGAsMM/M\nrkjynwDnSVpK8azlqNa9tSDYuDQ1HjM7OvPSgRn9U4BTHPktFA/q6uWr2RA0GQRtRbtHGPSf3To2\nSrOv7JjYs1IJ3tyxccIR39IRX4W+og0zq6FL4TCoTz3wiYz27Y2i3722UQYp/tjhnkbR4R8831Wd\nzL0NskX417vywcP8681zZFtm+uY9CcsF8mzvyHKhpodk5Ds4shscGRR3uQ7afXg6DOLnJghKEsYT\nBCUJ4wmCkoTxBEFJ2mglab2D4NcZvcmNoldkVJdk5M5D0v34o6t6Me9vkM3MBIf/cvv3uPIP7H15\no9C7UQd4ypE956t279voERmx7zpXd7sznvAb8frhN8HTU3K/xfVZq4YHMfIEQUnCeIKgJGE8QVCS\nMJ4gKEkYTxCUpI3Cc+rDYG50dTcsL6rixMZlAwC8L9PE1xpFe83zk3h+lm83yD695nuu7rLRfvzK\nttMdF5rnVQM/FWEmLIYxjuwOX3XhP3Zz5XvOuatRmFssv7kv1ksiPCcIgirCeIKgJGE8QVCSMJ4g\nKEkbhefUOwhe76uNzd09O/wsI//XRtGJnO6qHn3yJQ2yE77yTVd32x9mvAAjHFnuP+PlA8iEyzhL\njeAlvuqeH3QcA+CnofTWH0GRymUTIkaeIChJGE8QlCSMJwhKEsYTBCUJ4wmCkrRPeM5+df38U8Y7\ntJMTZuJHy2TDSeh0ZA9ndL/suLp+67vKDp/hZ+C5+IgPNwpzdeGc5KJZz5yXgeeBjG7OY+dlGPpO\nRjeTbSvCc4IgqCGMJwhKEsYTBCUJ4wmCkoTxBEFJ2ie2rb6nN/iLtzi7UfSWQ+e7qtef8Q5X/ppT\nbmqQ3THjDc16V0ummOEhuaCw/v4XMvFqbru5a+2UkXtrAHOxbZtYRdkYeYKgJGE8QVCSMJ4gKEkY\nTxCUpH0cBteeVHt8zX/7evs1iq6/1XcM5ArT3vElxzkwqVEEwOedj3CyrzoiGwPjkAvP8eoK+4l9\n/EV2ueK6uQJZhzqym33V1cdn2himxMgTBCUpbTySZkm6U9IiSRdIGiNpgqT5ku6WdJWkrev0l0pa\nIumgKvleqY2lks7s7xsKgoGilPFImgx8Eni9me1OMUE4CpgJzDezXYFr0jGSpgJHAlOB6cAPJFWi\nbM8CjjOzKcAUSdNLv5sgGEDKjjyrgLXAFpJGAltQBLsfCpyTdM4B3pv2DwMuNLO1ZtYFLAOmSdoe\nGGdmC5LeuVXnBMGQppTxmNmjwLeA+yiM5nEzmw9MNLOVSW0lG1Z47AAsr2piObCjI+9O8iAY8pTy\ntkl6OfDvFH6lJ4BfSqpZ0WVmVuSYbhX/qNrfE97ia231xsaybk+8dztf+fctWp91T23lszkvO8pV\nO/aiuf75XsqmzFo/t4x7roqcl6s6UwAut5CNXzqyPTKXu6b427mo2IY7ZV3VewN/MbNHACT9GngT\nsELSdma2Ik3JKlnXu6mNnppEMeJ0U+sEnpRkDseV7Gow0HTsXmwVTrpo8PqyMSl7z7MEeKOksenG\n/0BgMXA5cGzSORa4NO1fBhwlabSkXSjy+i8wsxXAKknTUjvHVJ0TBEOaUiOPmf1V0rkUj8vWA7cC\nPwLGAXMlHQd0AUck/cWS5lIY2Dpghm1InjADmAOMBeaZ2RWl300QDCClIwzM7DTgtDrxoxSjkKd/\nCnCKI78F2L3xjCAY2rRPeA5X1x5uva+r9cSHHOdAY7X3gt/3r0cv8PLa2e9HgY/aWQ1qx+6bcRjM\ncWQrHRn4N/a5m3MvlMfLXw2QWR7lfkO8jDrg57UexkR4ThCUJIwnCEoSxhMMGyRtLulGSbdJWizp\n1CSfLWm5pIVpc0PAJE1PsZdLJX2xp+u10T1PEDTHzJ6TdICZPZPCxq6X9BbAgDPM7IzcuZJGUOSW\nPZDiWeNNki4zs9zj6hh5guGFmT2TdkdTBCw/lo57CifZB1hmZl1mtha4iCImM0sbjTxfqj28OKP2\nZUf21Vb3pWfWMLpRmCnj7i5ayxW4W+XIchXZHnVkXv5qyIftjHdkCzO6uT7nFuv1gVyoV30ObEmb\nUTx3fDlwlpndKen9wAmSPkLxbPLzZvZ4XVM7AvdXHS8HpjXrUxsZT7Cp87W64/9ydMxsPbCHpK2A\nKyV1UCx7OTmpfJUiqLk+3qvPcZhhPEHb0A3c00tdM3tC0u+Avc2ssyKXdDZFGJnXfHX85U7URvw3\nEPc8QduwO8Vir8pWj6RtK6uXJY0F3gEslFT95Px9+I+Vb6ZYjDlZ0miKxZuXNetPjDxB2+DdftWx\nPXBOuu/ZDDjPzK6RdK6kPSimZvcCnwKQtAPwYzN7l5mtk3Q8cCXFXehPmnnaoI2MZ5vnH6o5fqQz\ns2but45sT/yb8pzToQW83JtgPJdRvt+RvSeje4sj89btQL6QledgyGXV+bsj85wWzeQtYmwPr5vZ\nIuD1jvwjGf0HgHdVHf+ePgRttY3x9AvPcDZVcp65NqAn4xloNg3jCYYFvZi2DShhPEHbECNPEJQk\njCcIShLTtpI8MqfWu/bSjy9x9f7x8KsahW/IPDye2d9e5dnde5SQWUS2ammj7NmGNbdJ7sjGZ/6L\na53U2OOdawGMzRWmetqR+esQ/TL3LWRs/fuse3+SNqfIuj2GIrbtN2Y2S9I3gXcDayies37MzBoC\nkiR1UfgMnwfWmtk+zfoTD0mDtmHsmNqtHjN7DjjAzPYAXgsckKKqrwJebWavA+4GZmUuYUCHme3Z\nk+FAG408QTB28zqBMyo6UdWPmtniKpUbgcObXKbXyfxi5Anahy3rNgdJm0m6jSILxLV1hgPwcfJV\nVQ24WtLNkj7ZU3di5Anah1wkRRVeVHUlMFTSfwJrzOyCzOn7mtmDkl4MzJe0xMz+lLtWGE/QNnSu\ng07PgeFQHVUNdEr6KHAITWp2m9mD6e/Dki6hWCA3DIynbiHZP+Y5XjVgtyMbV2pN40ZXd05/+9SE\nrlx5OIdnnZi3UZn/zKOOB21UpuDcBGdqsyrz5RubK0fvtZ2LmcvJW0THROioOj6pNtwRSdsC68zs\n8aqo6pNSzoIvAPsnp0IDkrYARpjZk5K2BA4CTvJ0K7SP8QRBz9O2XFT1UgoHwvxUFup/zWxGdVQ1\nsB3w6/T6SOB8M7uq2cXCeIL2od7bVkeTqGp3gXh1VLWZ/Z1s/QefMJ6gfeiFw2AgCeMJ2odc8pJB\non2M5/i6EJsl/rOsPZ3ULoPhMBjh1IK31/i6XY4sl4imL8GRdznOgcm5//jLMnIv881DjgzgbRl5\npvR8n4mRJwhK0sM9z0ATxhO0D0Ns2hbhOUH7MKZuq6NJruoJkuZLulvSVZUMO875fcpVHcYTtA+b\n1211NImqngnMN7NdgWtwFqNU5aqeDkwFjpaUq1oEhPEE7UQvAkMzuaoPBc5J8nPw074N41zVl9Z5\n1zIZtUYfsmbj96UXeOE5uYnABEc2MvOfGZsJxfHwknOtzIXyPJVpxAvb2SWjm0tf1Sp64W3L5Kqe\naGaVWnsr8evr9TlXdemRR9LWki6WdFeaX05rNreUNCvNJZdIOqhKvpekRem1M8v2J9gE6GHaBkVU\ndZq2TQLeKumAutcNPy/1gOaqPpOievX7Uy2ULYH/pJhbnpZuuGYCMyVNpUhfOpXCwq+WNCW9kbOA\n48xsgaR5kqZHRezAo/Pv0Nk0h+cGqqKq9wJWStrOzFZI2h7/SdXA5KpOayX2M7Ofpo6uS2vCc3PL\nw4ALzWytmXUBy4Bp6Y2MM7MFSe9c/PloENCxN8w+ZsNWTy5XNUXO6WOT2rHApU7zA5arehfgYUk/\nA15HkQT234Hc3HIH4Iaq85dTjEBrqbXubvypehD05iFpLqp6ITBX0nEUAR1HwODlqh5JEb16vJnd\nJOk71Ln/zMxyBYlK0VF7+K3PfdpVG+EsQFnE7i3rRm95v5cIO/fk4OxGUXcmr7UXnuNl1AE/dXQ2\nfVOuAJXnHPCKZkE+bKdV9OAwaBJV/ShFucR6+aDkql4OLDezm9LxxRQZSVZk5pb188lJqY3utF8t\n73av+MPZG/b36nA+omCo0PnPYms5QyzCoJTxJOO4X9KuZnY3hVXfmbZjgW9QO7e8DLhA0hkU07Ip\nwII0Oq2SNA1YABwDfNe96Kdm1wl+WabrwQDQsW2xVTjp7hY1PIxi204Azk83V/cAH6OYKzbMLc1s\nsaS5wGKKhb0zkqcNYAZFgPNYCu9deNoCn+ESVW1mfwXe4LzUMLdM+qcADXkwzewWGISbkqD9GC7G\nEwQDzosGuwO1tI/x1D2uevz1bmAsJz5/eoPsv0bU11He+HybzzbI3rrl0a6uFzGT84qtdGS5BXKT\nHNnaXLvX+fKJXudyXrXG9X8tZV0PI4+knSieFb6EImLgR2b2XUm/AHZNalsDj5vZns75XfQhV3X7\nGE+wybN6TP0z/fX1KmuBz5rZbZJeBNwiab6ZHVlRkHQ68HjmEpVc1TlnfA1hPEHb8OyYLeoktdGs\nZrYCWJH2n5J0F8UD+rsAVOSVOgI4gDyRqzoYfqxmTM3WDEmTKUo5Vyew2A9YaWZOtWUgclUHw5U1\njO6VXpqyXQx8xsyqh6ejgVyeaohc1cFwpbNT3NSZC0YqkDQK+BXwczO7tEo+EngfTWJThm+u6rqe\n/oU3u2rj72pcDLf4NVM3Ro+a4laGy+SJnuj8F7oyi9Y8z1rOM+d51nKeuexX0gmQW3V/owxgvB9u\nCN/KNd439ujYij06Nqy4O+ukx2peT/c0PwEWm9l36k4/ELgrxbM1UCZXddzzBG1DL+559gU+TJG7\nYGHapqfXjgQurFaWtENa8wNFruo/pdo+NwK/jVzVwbChp3seM7uezIBgZh9zZJGrOtg0eIZ6V/Xg\nEsYTtA299bYNFO1jPF21h6/kb77enEbRNqdvjMUlzbm/ZvlSIrMucalX8j3Tbl/+YZN3aJR1ZQpQ\njco14qT2Gb9/RveGjLxF9PRsZ6BpH+MJNnme6VOa+41PGE/QNqwZYiNPuKqDtmENo2u2eiTtJOla\nSXdKukPSvyX5bEnLHfd1/fl9ylUdI0/QNvTinseNqqaIWTvDzM7InViVq/pAijwaN0m6rFkGnTCe\noG3o6Z4nE1VdSWXWU7T0C7mqASRVclW3v/Fs86+1SXW2zizJuOH0xudcbqgMMLf/3cryTq5sFF7j\n677WyQrTlQnl8VIL5RLdrXJWpeS+fn1IgZ3PVb2RvW19ueepiqq+gSLy4ARJH6FIbvh5M6v/Ag1c\nruogGGh6uuep4ERVn0Vh8nsAD+JH2w1oruogGFDu7nyQ7s7cUpwCL6razB6qev1s4HLn1D7nqg7j\nCdqGF3fsxos7NtSbWnDS1TWv56KqJW1fWW5AsSzBm8e/kKsaeIAikNRPOpEI4wnahl7c81Siqm9P\n+akBvkRR5W0PiqnZvcCnoP+5qrUh9+DQRZLx5dp+Hn7y+a7uxd//cIPsik93uLoHq7O/XctitznC\nEb7urU7WupwTYHwfnAseO2aybuZyY3uFtybmig1mHAmaB2bW69wAbhuSHWFzamRz9dF+t9sfYuTp\nAyfYaQ2yX3Bkg2zlX186EN3Z5BhqEQZhPEHbsDqiqoOgHDHyBEFJYjFcEJQkFsOVZNLJy2qO38xf\nfMUpjaInGdeSPjzvuMvG8kzvG8iVh3dknlcN4C7Hs/b6bXzdpY80ylZmvGq5HNZeVp1Hl/q6E7yy\n8y2kp3ueJrmqvwm8G1hDKoeTaujWn99F5KruHb+xg1z5YWqaNCUYJJ7tedqWi6q+Cviima2X9HWK\nKoYznfMjV3UwPOlpSUIuV7WZza9SuxE4vEkzkas6GH70NjAUsrmqAT4OzMucFrmqg+HJ6jX9y1Ut\n6T+BNWaWy1c9PHNVL//1K2qOt/4//nqeFQdt1SDbjz9yHh9pkF/tV4CkmCI34jkeun7YGKvyz0/5\nJcy2vegpV+45DHIhN17Yzq2OYwBw3SQTM+E5d2UcCV4Wnwn7+robu1r101fcwvo/X99Up0mu6o8C\nhwBvz507fHNV9wPPcJqxjzWWScumugoGjHV7Hwh7V/3gnfb1mtebRFVPB74A7G9m7s/EgOeqljQi\nJVS4PB1PkDRf0t2SrpK0dZXurJRYYYmkg6rke0lalF47sz/9CYY5z42u3RrxclUfDPwPRUXT+Un2\nAxj8XNWfoSgPX5khzATmm9lpKfvITGCmpKkU6yOmUsw8rpY0JZWTPws4zswWSJonaXqUkw9cnmru\nCGuSq9p5+tf/XNWlRx5JkyjmkGezwb13KHBO2j8HeG/aPwy40MzWpgQLy4BpkrYHxpnZgqR3btU5\nQVDLs3XbINOfkefbFPPI6nvKiWZWKdi8EpiY9negNj3EcooRaC21S127yS9lCTZ1Vg92B2opZTyS\n3g08ZGYLJXV4OmZmklq30m5F7WHOz7/dJQ1RF/zHXn66rrfv7GS4AW68xEnG7OR9BtwJwbhnfK/a\nqoYiFwW3erqZy3lZbrwFawDeY/IdM161g3f25Uvv62UnoFi8vDHxP9ZBo+zI82bgUEmHAJsD4yWd\nB6yUtJ2ZrUhTskrihfrkCpMoRpzutF8t97Irwe9mb9if0lGy28FA0PkkdG6ML3rG8AeLUsZjZl+i\nWBuOpP2BE83sGEmnAccC30h/K372y4ALJJ1BMS2bAixIo9MqSdOABcAxwHfdi75rdp3gHE8rGAJ0\njCu2CietzOv2iSFmPK0Kz6lMz74OvEPS3cDb0jFmtpgix+Bi4PfADNuQPGEGhdNhKUXGxvC0BT7P\n1W11NMlVnX2EUnf+wOaqNrPrgOvS/qPgP7Y3s1OAUxz5LYCTAiMI6uh5KpiLqv4YziOU6hPL5KqO\nwNCgfejBVW1mK8yKvEUppq2Sqzr3CKWaF3JVm9laoJKrOkv7hOfcW3u4GL88/Ife95MG2T8y3u+d\nH37IlXOzI8t4yvhlo2jM2b7qmNf48med6/WlPHxuIZsbM5fRvdXzqpF5bpCbJ+RSYHlpuMrQB1d1\nXVR17hFKNX3OVd0+xhMET/ZOLU3ZfkURVf1kEfJW0OQRSuSqDoYx93RCd2dTlaqo6vOqoqpzj1Cq\niVzVwTBmm45iq7CgNug5F1VN8ajEe4RSTZ9zVYfDIGgfVtdtjXhR1dPJPEKpjqo2s3VAJVf1YuAX\nwydX9XW1/XzvWy9ydac1rLqFBzKxNWc++h/+9e53hH4kj4/jRACyuZzPdvRz+X76UoTKcyTkSsYf\nnJmDrHUumAsdmpL5ndaFrclVzfvqvquXKHJVB0GvGGIRBmE8QfsQxhMEJemlq3qgCOMJ2ofhsJ4n\nCAaFIbB6tJr2MZ66TFM3ZiInPG9bLrv+AxP8JM9bb/lYg2zLB9b7/fqZL3b5gy+e7Mi6Mk14ITc5\n71dfeCTjxvM+uWzS20wO65bRQwU8ST+lyEnwkJntnmQXAa9MKlsDj5vZns65XfQhTzW0k/EEQc8O\ng59RZMo5tyIws6Mq+5JOp+Fn+AX6lKcawniCdqIH4zGzP6UIgQZS9MERwAFNmujTM6OIMAjahx4W\nw/XAfsBKM7sn83qf8lRDjDxBO9G/YJijgVyOauhjnmpoJ+O5uvZwj0MXumreOp/HcVfdMnGVn+R5\nZB9Ks3OHI8tUwng282vpBVDl1uj0JS+XtybIczhAPmzHc0bksvWQKzHvrY8qxdWkRct9QtJI4H3A\n63M6fc1TDe1kPEHAPmmr8LXennggcFfKENpAmTzVEPc8QVuxqm6rRdKFwF+AXSXdL6my/vdI4MI6\n3X7lqYYYeYK2ovlTUjNz47rNrGERfX/zVEMYT9BWDK0QgzCeoI0I4ylH3aD6Wha5aoc45SbfevkC\nRxPIZLPhFkeWczF9z5F93ldd+7wv95LR5JJsdjmyXKYdz4v3CkcG8OeM3CsCNyr3rdnoSwaGVlh1\n+xhPEMTIEwRleWawO1BDGE/QRsS0LQhKEtO2IChJGE8p3vTxa2uOR7PG1RvnDO3vfM9vXN0rz/Dz\neHd/rnGRXK4S3S4XP9gozHyqKzPeqGWOzEumDP5CtFwc3EscWe7rl/PYeV6/nG7WZdcyeqz6MaC0\njfEEmzaDmZ8tR8S2BUFJwniCoCRhPEFQkrbJVT36kdoS8SdM8Ov+3uMEoFxyRiaJ8t6ZC+7kyHJl\n0r0Fu7n43Gt88eVOwYtcbQtvvVlf6uXmbva7MnIvPCfndJh2iC/XvKF5z9JfYuQJgpKUMp4yVYcl\nzUpVhpdIOqhKvpekRem1M/v/loJgYCg78lSqDr8aeCPwaUm7UVQYnm9mu1JMUmYCSJpKsZpvKjAd\n+IE21Lo7CzjOzKZQFBeaXvrdBMEAUsp4SlQdPgy40MzWmlkXxXPBaanE3Tgzq6wZOBe/UnEQDDn6\nfc/Ty6rDO1B7D7ycwtjq5d30LUFMEAwa/YowKFl1uBRrttmq5vhbwBw7okHPLTH/dr/N1VN8+Wgn\njEZLMh3zFtRlUi2tzWT59wLtJ2Uu5y1wy3nQPHnOM5erOOe1kY1tvrf40/k0dA6t1QMbhdLG08eq\nw/WVhidRjDjd1H5PJiVZ0MZ0bFlsFU765+D1ZWNS1tvWU9VhqK06fBlwlKTRknYBpgALzGwFsErS\ntNTmMfiVioNgyFF25KlUHb5dUiV15yyKKsNzJR1H8dztCAAzWyxpLkWV4XXADNvwdHYGMIcimeU8\nM7uiZJ8gGROcAAAF4UlEQVSCYEApZTxmdj35UevAzDmnAKc48lvwc2AEwZCmbcJz+qJ/sP2q5nje\nssN9xUxO6dVOzasxmdAT9+cn025nY2IfADcP0OTM5foSiuOtCcoVwsrlsPZ+1bbJ/OSuyngddiHC\nc4IgqCKMJwhKEsYTBCUJ4wmCkoTxBEFJhqW3zePvtn2DzM18A/CUI9vKkYHvjjreV73rSl/e5chy\nXjWvgluufLMXJNjXynD7O+97XcarNnZzX65HwtsWBEEVYTxBUJIwniAoSRhPEJRkk8kY+jL5zgH7\niiPc2ZHlHAbe2p1MeM7EzKe9LLeYxsFrwkurC77TIZfGN9eF7icaZTmnwxZPZ14YpsTIEwQlCeMJ\ngpKE8QRBScJ4gqAkYTxBUJJNxtuW5VBH5pSNX7GL727b7kDHHbXUv9TajEvL84rlsqC8ypFNzuh6\nbeTyTOdCfPZ3Qm4e3egl49uDGHmCoCRhPEFQkjCeIChJGE8QlCSMJwhKssl725SpDrf+kdrj7b7v\neNWAVU759PHTMhe7zxd78WZ9+cd4pejBdRpmvW3jMnLPs7ZLz13aJIiRJwhKEsYTBCUJ4wmCkoTx\nBEFJNnmHQQ5dVSd4o683fgdHmFkUlssT3eXIvJt98Bet5UJrJmfkHl7RLICj+tDGpkaMPEFQkjCe\nIChJGE8QlCSMJwhKEsYTBCUJb1uGVR8YXXM8/sw1vuKWjiyz6C2XD9pLHZXzoHmhPF5OavBL1If3\nrHUMiZFH0nRJSyQtlfTFwe5PEPSGQTceSSOA7wHTganA0ZJ2G9xe9Z/OJzdOu3dsnGaDEgy68QD7\nAMvMrMvM1gIXAYcNcp/6TadXpqQF3Llxmg1KMBSMZ0fg/qrj5eSn8UEwZBgKxjP0q2sFgcNQ8LZ1\nAztVHe9EMfoMKluNzHjX+sBJufJu/WTuxmk26CODXlZR0kjgb8DbgQeABcDRZpaLVQyCIcGgjzxm\ntk7S8cCVwAjgJ2E4QTsw6CNPELQrQ8Fh0JS+PkCV9FNJKyUtqpJNkDRf0t2SrpK0ddVrs1LbSyQd\nVCXfS9Ki9NqZknaSdK2kOyXdIenfWtT29yTdKOk2SYslndqqPifZCEkLJV3e4na7JN2e2l7Qyrbb\nBjMbshvFNG4ZxbquUcBtwG49nLMfsCewqEp2GvAfaf+LwNfT/tTU5qh0jWVsGI0XAPuk/XnA0cAe\n6fhFFPdpu7Wo7cPS/kjgBuAtLWp3OvA54HzgshZ+FtOBe4EJdZ99S9oe7O9dr7+fg92BHgzhTcAV\nVcczgZm9OG9ynfEsASam/e2AJWl/FvDFKr0rKNaMbg/cVSU/Cvh/dde4FDiwlW0DWwA3Aa9uUbvn\nAVcDBwCXt/KzSMazTd1n0vLPeShvQ33a1qoHqBPNrOI4XsmG+ModqHWLV9qvl3dXX1fSZIrR7cZW\ntS3ptnT+tWZ2Z4vafTvwBWD9RvgsDLha0s2SPtnittuCQfe29UDLvRlmZpJKtyvpRcCvgM+Y2ZOS\nWtK2me0haSvgSkkHtKDPbwJWm9lCSR2Za/bns9jXzB6U9GJgvqQlLWy7LRjqI0+rHqCulLQdgKTt\ngYcy7U9K7Xen/Wp5t6RRFIZznpld2sq2AczsCeB3wF4taPfNwIsl3QtcCLxN0nmt6q+ZPZj6/DBw\nCUWMYss+i3ZgqBvPzcAUSZMljQaOBC4r0c5lwLFp/1iK+5WK/ChJoyXtAkwBFpjZCmCVpGkqhpZj\n0jk/ARab2Xda2PbHgfkAksYC7wAWtqDd0cD7zWwXinuJP5jZMS36LH4vaVzq85bAQcCiFn7O7cFg\n33T1tAEHU3i2lgGzeqF/IUWkwhqK+6WPUWRyuhq4G7gK2LpK/0up7SXAO6vke1F8IZYB36XwgK2n\n8BotTNv0FrR9PnBravd24AtJp999rpLvzwZvWys+i11Sf2+jWCUxq9V9boctHpIGQUmG+rQtCIYs\nYTxBUJIwniAoSRhPEJQkjCcIShLGEwQlCeMJgpKE8QRBSf4/AphBDn/AVH4AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n49fP/klKdQqJNIiSRpLlJDBJewKq1WggDCdoIt5Z2fUcJ0+afiBwYpnsSwBm9nPgCODLklYDb5LN\nhWqmaQxnuz92XFf06v7+epxNj6iuGf7HlfvxfwZfWyU/kLvcNlLZtj0nw4T/aKuSbXLai+71Ky7z\nUsaA7xyobjfDC5l5MKHrpcZNhMu4TgdwnRTjEk4Ap0paPXlrRddzHDN7g4rcPLnBlPZ/Cvy0p31p\nGsPpCZ7RdMYfnLqpT5BIRxWsM1a+3TghNz2KHJA0KH/6emt+PELSLElPSpopaXiZ7lRJT0laIGly\nmXx3SXPzcz/uSX+Cfs7bgztufUhPQ26+SrZirpTswM1hJWki2XLUiWS5qy6RVHoIdSlwgpmNJ1u+\nWpkXKwgyVqjj1ocUNhxJY8jKw11G+5PYVA6rw4FpZrbKzNqAhcCkPHnCMDObk+tdg5/3KgiyZ7Hl\nWx/SkznOj8hKxJXPHlM5rLYCyrNoPEc2y11Fx2wii0gvGAkGOu/0dQfaKWQ4kj5F5gt/SFKLp9NJ\nDqtiVCT1GcxKV235VaOqZD88+huu7p3v8WupHvAL5yHbmGoRgOczWPFqotDTVxMFmVyvWErXKxaV\nCnXxHk+kfpcOScidsJ1ExffOEyrVgRVdq0hqI3vz3gVWmVV7eiRdRPYPvwl8zsweqrUrRUecfYDD\nJB0KbAi8R9K1pHNYVeatGkP2Ni+i41dyDP6yRc4qy+TUshOZNz5oTFa1wurW+rfrlr6twoCW1EPN\n/Du7nZmNlzSJbI69V61dKWQ4ZvZN4Jt5Rw4gC5Q7VtL5+DmsZgDXS/oh2U/eeGBOPiq9lv8Dc4Bj\ngYu81zzryI7HV3tKQWOwQUu2lXi70wLO3ad7hgOdRz+vnYeb2WxJwyWVTzG6Rb0WspVuydwcVnn0\n6XQyD9ztwElmVrrmJDIHw1Nkia/vqFOfgv7G2xWbjwF3Sbpf0onOeS9PdOpGPEmPH4Ca2R+AP+T7\nL+PksMrPnQOc48gfgGSqzSBopxtzHGBfM1ssaQuyEu0L8ioG5VSOSJE7OujHPNYKf2vtVMXMFud/\nX5B0M1kJj3LD8ebb7ry6M5rHcP7R8XAi/tqjy7/4L1Wy0fzd1V325Db+a1Wnn4YvJfr1K0f200Ro\nyOYJ+YveQ4nUQjZvwVlqEVotMXCpeDfHC7drQjU1ItyTkNfKmJZsK3F3x7mTpI2AQWb2eh7sORmo\n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\nhhMEBfj/EDnXN0vhWloAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ml.dis.plot();" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "plotting DIS package util_2d instance: top\n", - " created...ml.lpf_top.png\n", - "plotting DIS package util_3d instance: _ModflowDis__thickness\n", - " created...ml.lpf_thickness_Layer1.png\n", - "plotting DIS package util_3d instance: botm\n", - " created...ml.lpf_botm_Layer1.png\n" - ] - } - ], - "source": [ - "fb = os.path.join('data', 'ml.lpf')\n", - "ml.dis.plot(filename_base=fb);" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Plotting Packages\n", - "plotting DIS package util_2d instance: top\n", - " created...ml_top.png\n", - "plotting DIS package util_3d instance: _ModflowDis__thickness\n", - " created...ml_thickness_Layer1.png\n", - "plotting DIS package util_3d instance: botm\n", - " created...ml_botm_Layer1.png\n", - "plotting BAS6 package util_3d instance: ibound\n", - " created...ml_ibound_Layer1.png\n", - "plotting BAS6 package util_3d instance: strt\n", - " created...ml_strt_Layer1.png\n", - "plotting LPF package util_3d instance: wetdry\n", - " created...ml_wetdry_Layer1.png\n", - "plotting LPF package util_3d instance: vka\n", - " created...ml_vka_Layer1.png\n", - "plotting LPF package util_3d instance: hani\n", - " created...ml_hani_Layer1.png\n", - "plotting LPF package util_3d instance: vkcb\n", - " created...ml_vkcb_Layer1.png\n", - "plotting LPF package util_3d instance: hk\n", - " created...ml_hk_Layer1.png\n", - "plotting LPF package util_3d instance: sy\n", - " created...ml_sy_Layer1.png\n", - "plotting LPF package util_3d instance: ss\n", - " created...ml_ss_Layer1.png\n", - "plotting RIV package mflist instance: stress_period_data\n", - " created...ml_RIV_StressPeriod1_Layer1.png\n", - "plotting RCH package transient_2d instance: rech\n", - " created...ml_00001.png\n", - "plotting WEL package mflist instance: stress_period_data\n", - " created...ml_WEL_StressPeriod1_Layer1.png\n", - " \n" - ] - } - ], - "source": [ - "fb = os.path.join('data', 'ml')\n", - "ml.plot(filename_base=fb);" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "plotting WEL package mflist instance: stress_period_data\n", - " created...ml.wel_WEL_StressPeriod1_Layer1.png\n" - ] - } - ], - "source": [ - "fb = os.path.join('data', 'ml.wel')\n", - "ml.wel.plot(filename_base=fb);" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "ml.oc.compact = True\n", - "ml.oc.write_file()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FloPy is using the following executable to run the model: /Users/langevin/langevin/bin/mac/mf2005\n", - "\n", - " MODFLOW-2005 \n", - " U.S. GEOLOGICAL SURVEY MODULAR FINITE-DIFFERENCE GROUND-WATER FLOW MODEL\n", - " Version 1.11.00 8/8/2013 \n", - "\n", - " Using NAME file: freyberg.nam \n", - " Run start date and time (yyyy/mm/dd hh:mm:ss): 2015/10/24 8:15:54\n", - "\n", - " Solving: Stress period: 1 Time step: 1 Ground-Water Flow Eqn.\n", - " Run end date and time (yyyy/mm/dd hh:mm:ss): 2015/10/24 8:15:54\n", - " Elapsed run time: 0.020 Seconds\n", - "\n", - " Normal termination of simulation\n" - ] - }, - { - "data": { - "text/plain": [ - "[True, []]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ml.exe_name = 'mf2005'\n", - "ml.run_model()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1, 1, ' CONSTANT HEAD', 20, 40, -1, 2, 10.0, 10.0, 10.0)\n", - "(1, 1, 'FLOW RIGHT FACE ', 20, 40, -1, 1, 10.0, 10.0, 10.0)\n", - "(1, 1, 'FLOW FRONT FACE ', 20, 40, -1, 1, 10.0, 10.0, 10.0)\n", - "(1, 1, ' WELLS', 20, 40, -1, 5, 10.0, 10.0, 10.0)\n", - "(1, 1, ' RIVER LEAKAGE', 20, 40, -1, 5, 10.0, 10.0, 10.0)\n", - "(1, 1, ' RECHARGE', 20, 40, -1, 3, 10.0, 10.0, 10.0)\n" - ] - } - ], - "source": [ - "bobj = flopy.utils.CellBudgetFile(os.path.join('data', 'freyberg.cbc'))\n", - "bobj.list_records()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[10.0]\n" - ] - } - ], - "source": [ - "times = bobj.get_times()\n", - "print(times)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[(0, 0)]\n" - ] - } - ], - "source": [ - "kk = bobj.get_kstpkper()\n", - "print(kk)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[('node', '\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mmt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMt3dms\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodflowmodel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mml\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mbtn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMt3dBtn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmt\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msconc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mncomp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msconc3\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m/Users/langevin/langevin/dev/flopy3.git/flopy/mt3d/mtbtn.pyc\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, model, nlay, nrow, ncol, nper, ncomp, mcomp, tunit, lunit, munit, laycon, delr, delc, htop, dz, prsity, icbund, sconc, cinact, thkmin, ifmtcn, ifmtnp, ifmtrf, ifmtdp, savucn, nprs, timprs, obs, nprobs, chkmas, nprmas, perlen, nstp, tsmult, ssflag, dt0, mxstrn, ttsmult, ttsmax, species_names, extension, **kwargs)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 223\u001b[0m raise Exception(\"BTN error: unrecognized kwargs: \" +\n\u001b[0;32m--> 224\u001b[0;31m ' '.join(list(kwargs.keys())))\n\u001b[0m\u001b[1;32m 225\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0;31m# Finally add self to parent's package list and return\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mException\u001b[0m: BTN error: unrecognized kwargs: sconc3" - ] - } - ], - "source": [ - "mt = Mt3dms(modflowmodel=ml)\n", - "btn = Mt3dBtn(mt,sconc=1.0,ncomp=2,sconc3=1.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "same behavior for `SSM`" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[, ] [, ]\n" - ] - } - ], - "source": [ - "mt = Mt3dms(modflowmodel=ml)\n", - "btn = Mt3dBtn(mt,sconc=1.0,ncomp=2, mcomp=2, sconc2=1.5)\n", - "ssm = Mt3dSsm(mt,crch=1.0,crch2=1.0,cevt=0.5,cevt2=1.5)\n", - "print ssm.crch,ssm.cevt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`DSP` does not need `multDiff` flag for multi species. But in this case, arrays are by layer, not by layer, row, column." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "dsp = Mt3dDsp(mt,dmcoef2=1.0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we set multiDiff to True, then there will be mcomp (not ncomp, according to mt3d supplemental guide) number of 3d dmcoef arrays." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "****Warning -- two packages of the same type: \n", - "replacing existing Package...\n", - "[, ]\n" - ] - } - ], - "source": [ - "dsp = Mt3dDsp(mt,dmcoef2=1.0,multiDiff=True)\n", - "print dsp.dmcoef" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/Testing/flopy3_plotdata.py b/examples/Testing/flopy3_plotdata.py deleted file mode 100644 index 6653343beb..0000000000 --- a/examples/Testing/flopy3_plotdata.py +++ /dev/null @@ -1,35 +0,0 @@ -import os - -import matplotlib.pyplot as plt - -import flopy - -fb = flopy.modflow.Modflow.load( - "freyberg", - version="mf2005", - model_ws=os.path.join("..", "data", "freyberg"), - verbose=True, -) - -dis = fb.dis - -top = fb.dis.top - -fb.dis.top.plot(grid=True, colorbar=True) -fb.dis.botm.plot(grid=True, colorbar=True) - -fb.dis.plot() -plt.show() - -fb.dis.plot() -plt.show() - - -fig = plt.figure(figsize=(8, 8)) -ax = fig.add_subplot(1, 2, 1, aspect="equal") -fb.dis.top.plot(grid=True, axes=ax, colorbar=True) -ax = fig.add_subplot(1, 2, 2, aspect="equal") -fb.dis.botm.plot(grid=True, axes=ax, colorbar=True) -plt.show() - -print("this is the end my friend") diff --git a/examples/Testing/flopy3_read_write_models.ipynb b/examples/Testing/flopy3_read_write_models.ipynb deleted file mode 100644 index 1644601317..0000000000 --- a/examples/Testing/flopy3_read_write_models.ipynb +++ /dev/null @@ -1,154 +0,0 @@ -{ - "metadata": { - "name": "", - "signature": "sha256:59d8491a089c88a64bb8012d72a3cb297744a84a059f7bc22e3ffee343cf0005" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#Read and write model files" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import os\n", - "import numpy as np\n", - "import flopy" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, we need to create a model for test" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "base_dir = \"base_model_dir\"\n", - "nlay, nrow, ncol = 1, 1, 10\n", - "#ml = flopy.modflow.Modflow(modelname=\"base\", model_ws=base_dir,\n", - "# external_path=\"ref\")\n", - "ml = flopy.modflow.Modflow(modelname=\"base\", model_ws=base_dir,external_path=\"ref\")\n", - "dis = flopy.modflow.ModflowDis(ml, nrow=1, ncol=10,\n", - " nlay=nlay, nper=2, perlen=[1,1],\n", - " steady=[True,True])\n", - "bas = flopy.modflow.ModflowBas(ml, ibound=1)\n", - "hk = np.zeros((nlay, nrow, ncol))+2.5\n", - "#the full relative path to the external hk array\n", - "#np.savetxt(os.path.join(base_dir,\"hk.ref\"),hk.flatten(),fmt=\"%15.6E\",delimiter='')\n", - "\n", - "# but we have to pass on the filename as the namefile sees it\n", - "lpf = flopy.modflow.ModflowLpf(ml, hk=hk,vka=hk)\n", - "\n", - "well_data = {}\n", - "well_data[0] = [0, 0, 9, 0.5]\n", - "well_data[1] = [0, 0, 9, 1.0]\n", - "wel = flopy.modflow.ModflowWel(ml, stress_period_data=well_data)\n", - "\n", - "ghb_data = {}\n", - "ghb_data[0] = [0, 0, 0, 0.5, 1000.0]\n", - "ghb = flopy.modflow.ModflowGhb(ml, stress_period_data=ghb_data)\n", - "print ghb.stress_period_data.data\n", - "ml.write_input()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "ename": "AssertionError", - "evalue": "ERROR: external cannot be used with model_ws", - "output_type": "pyerr", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;31m#ml = flopy.modflow.Modflow(modelname=\"base\", model_ws=base_dir,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# external_path=\"ref\")\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mflopy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mModflow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodelname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"base\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_ws\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbase_dir\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mexternal_path\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"ref\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m dis = flopy.modflow.ModflowDis(ml, nrow=1, ncol=10,\n\u001b[1;32m 7\u001b[0m \u001b[0mnlay\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnlay\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnper\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mperlen\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/jwhite/anaconda/lib/python2.7/site-packages/flopy/modflow/mf.pyc\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, modelname, namefile_ext, version, exe_name, listunit, model_ws, external_path, verbose, load, silent)\u001b[0m\n\u001b[1;32m 119\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mexternal_path\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 120\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mmodel_ws\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'.'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"ERROR: external cannot be used \"\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 121\u001b[0;31m \u001b[0;34m\"with model_ws\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 122\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[0;31m#external_path = os.path.join(model_ws, external_path)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAssertionError\u001b[0m: ERROR: external cannot be used with model_ws" - ] - } - ], - "prompt_number": 4 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, lets load the `base` model" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ml_loaded = flopy.modflow.Modflow.load(\"base.nam\",model_ws=base_dir)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - "Creating new model with name: base\n", - "--------------------------------------------------\n", - "\n", - " DIS package load...success\n", - " LIST package load...skipped\n", - " BAS6 package load...success\n", - " LPF package load...success\n", - " WEL package load...success\n", - " GHB package load...success\n", - "\n", - "\n", - " The following 5 packages were successfully loaded.\n", - " base.dis\n", - " base.bas\n", - " base.lpf\n", - " base.wel\n", - " base.ghb\n", - " The following 1 packages were not loaded.\n", - " base.list\n", - "\n", - "\n" - ] - } - ], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", - "metadata": {}, - "outputs": [] - } - ], - "metadata": {} - } - ] -} \ No newline at end of file diff --git a/examples/Testing/flopy3_transient2d_demo.ipynb b/examples/Testing/flopy3_transient2d_demo.ipynb deleted file mode 100644 index 21b085b9df..0000000000 --- a/examples/Testing/flopy3_transient2d_demo.ipynb +++ /dev/null @@ -1,170 +0,0 @@ -{ - "metadata": { - "name": "", - "signature": "sha256:f2ea643377998e0a535c36db4ff145f215df697a6b130f81e3c69cb102e4dd79" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#transient_2d\n", - "The `transient_2d` class is a collection of `util_2d` instances that are time-dependent for packages like `RCH`, `EVT`, and `SSM`. It is instantiated similar to `mflist` in that it can take a dict keyed on kper with value pairs that can be parsed into `util_2d` instances. It will accept a mixture of filename, `ndarrays`, and scalars." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import numpy as np\n", - "from flopy.modflow import Modflow\n", - "from flopy.utils.util_array import transient_2d" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "create a model instance - `modflow` (free format). envoke the external file option" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "model = Modflow(external_path='.')\n", - "nrow, ncol = 10, 5\n" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "build some args for transient_2d" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "arr = np.ones((nrow, ncol))\n", - "np.savetxt(\"arr.ref\",arr,fmt=\"%15.6E\",delimiter='')\n", - "\n", - "args = {}\n", - "args[3] = 1.0\n", - "args[8] = np.ones((nrow, ncol))\n", - "args[12] = \"arr.ref\"" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "instantiate `transient_2d`" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "t2d = transient_2d(model,(nrow, ncol), np.float32, args, name=\"rch\")" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "print out the `kper`-based file info" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for kper in xrange(20):\n", - " itmp,file_entry = t2d.get_kper_entry(kper)\n", - " print itmp\n", - " print file_entry\n", - " " - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "now for a model without free format or external suppport" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "model = Modflow()\n", - "model.array_free_format = False" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "for non-freeformat models without external support, `locat` must be explicitly passed:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "t2d = transient_2d(model,(nrow, ncol), np.float32, args, name=\"rch\",locat=31)" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for kper in xrange(20):\n", - " itmp,file_entry = t2d.get_kper_entry(kper)\n", - " print itmp\n", - " print file_entry" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", - "metadata": {}, - "outputs": [] - } - ], - "metadata": {} - } - ] -} \ No newline at end of file diff --git a/examples/Testing/henry_example.ipynb b/examples/Testing/henry_example.ipynb deleted file mode 100644 index c6a0407b11..0000000000 --- a/examples/Testing/henry_example.ipynb +++ /dev/null @@ -1,421 +0,0 @@ -{ - "metadata": { - "name": "", - "signature": "sha256:82a7440c3ffa329cf5ea19c89668c45b7914f8beb8b3537f30c0d83db6a2b878" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#Henry problem example\n", - "use flopy to create a 2-D cross section SEAWAT model patterned after the Henry saltwater intrusion problem. The has two stress periods: a steady-state first period followed by a transient second period with no freshwater inflow" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import os\n", - "import numpy as np\n", - "import flopy" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 13 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setup the basic dir structure. Since we are using external arrays, we have to change into the `model_ws` dir." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "starting_ws = os.getcwd()\n", - "model_ws = \"henry\"\n", - "if not os.path.exists(model_ws):\n", - " os.mkdir(model_ws)\n", - "# change to base_dir to write the model files\n", - "os.chdir(model_ws)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 14 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#MODFLOW\n", - "Now we can create the `MODFLOW` instance and associated package. Setting `free_format` to `False` forces external arrays to have a `nam` file unit" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ml = flopy.modflow.Modflow(modelname=\"henry\", external_path=\"ref\")\n", - "ml.array_free_format = False" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Note: external_path ref already exists\n" - ] - } - ], - "prompt_number": 15 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`DIS` package" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "nlay, nrow, ncol = 20, 1, 120\n", - "delr, delc = 0.1, 1.0\n", - "delz = 0.1\n", - "botm = np.linspace(-delz, -float(nlay)*delz, nlay)\n", - "dis = flopy.modflow.ModflowDis(ml, nrow=nrow, ncol=ncol,\n", - " nlay=nlay, nper=2, perlen=[1,0.33],\n", - " steady=[True, False], delr=delr,\n", - " delc=delc, botm=botm, top=0.0)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 16 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`BAS` package" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "bas = flopy.modflow.ModflowBas(ml, ibound=1, strt=0.0)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 17 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`LPF` package using external arrays for `hk` and `vka`" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "hk = np.zeros((nlay, nrow, ncol))+200.0\n", - "lpf = flopy.modflow.ModflowLpf(ml, hk=hk, vka=hk, ss=1.0E-5, sy=0.15, laytyp=1)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 18 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`WEL`, `GHB` and `PCG` packages. `WEL`'s are set along the left side of the domain to represent freshwater inflow and `GHB`'s are set along the right side of the domain to represent a saltwater boundary. Also track `SSM` entries for later" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "well_data, ghb_data, ssm_data = {}, {}, {}\n", - "wel_1, ghb_1, ssm_1 = [], [], []\n", - "itype = flopy.mt3d.Mt3dSsm.itype_dict()\n", - "for k in xrange(nlay):\n", - " wel_1.append([k, 0, 0, 0.2])\n", - " ssm_1.append([k, 0, 0, 0.0, itype[\"WEL\"]])\n", - " ghb_1.append([k, 0, ncol-1, 0.0, 1.0E+3])\n", - " ssm_1.append([k, 0, ncol-1, 1.0, itype[\"GHB\"]])\n", - "ghb_data[0] = ghb_1\n", - "well_data[0] = wel_1\n", - "# turn off the freshwater flux in sp 2\n", - "well_data[1] = 0\n", - "ssm_data[0] = ssm_1\n", - "\n", - "ghb = flopy.modflow.ModflowGhb(ml, stress_period_data=ghb_data)\n", - "wel = flopy.modflow.ModflowWel(ml, stress_period_data=well_data)\n", - "pcg = flopy.modflow.ModflowPcg(ml,)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 19 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "write the `modflow` input" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ml.write_input()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 20 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#MT3DMS and SEAWAT\n", - "Pretty basic - mostly relying on default `arg` values" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "mt = flopy.mt3d.Mt3dms(\"henry\", namefile_ext=\"nam_mt\", modflowmodel=ml,\n", - " external_path=\"ref\")#,model_ws=model_ws)\n", - "btn = flopy.mt3d.Mt3dBtn(mt)\n", - "adv = flopy.mt3d.Mt3dAdv(mt, mixelm=0)\n", - "ssm = flopy.mt3d.Mt3dSsm(mt, stress_period_data=ssm_data)\n", - "gcg = flopy.mt3d.Mt3dGcg(mt)\n", - "mt.write_input()\n", - "\n", - "swt = flopy.seawat.Seawat(modelname=\"henry\", namefile_ext=\"nam_swt\", \n", - " modflowmodel=ml, mt3dmsmodel=mt)#,model_ws=model_ws)\n", - "vdf = flopy.seawat.SeawatVdf(swt, densemin=0.0, densemax=0.0, denseslp=24.5)\n", - "swt.write_input()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Note: external_path ref already exists\n" - ] - } - ], - "prompt_number": 21 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "change back to the original dir" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "os.chdir(starting_ws)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 22 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "verify that we can load the `modflow`" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ml_loaded = flopy.modflow.Modflow.load(\"henry.nam\", model_ws=model_ws)\n", - "ml_loaded.change_model_ws(\"new_henry\")\n", - "ml_loaded.write_input()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - "Creating new model with name: henry\n", - "--------------------------------------------------\n", - "\n", - " DIS package load...success\n", - " DATA file load...skipped\n", - " vka_Layer_12.ref\n", - " DATA file load...skipped\n", - " hk_Layer_13.ref\n", - " LIST package load...skipped\n", - " DATA file load...skipped\n", - " hk_Layer_14.ref\n", - " DATA file load...skipped\n", - " vka_Layer_14.ref\n", - " DATA file load...skipped\n", - " hk_Layer_15.ref\n", - " DATA file load...skipped\n", - " vka_Layer_15.ref\n", - " DATA file load...skipped\n", - " hk_Layer_16.ref\n", - " DATA file load...skipped\n", - " vka_Layer_16.ref\n", - " DATA file load...skipped\n", - " hk_Layer_17.ref\n", - " DATA file load...skipped\n", - " vka_Layer_17.ref\n", - " DATA file load...skipped\n", - " vka_Layer_18.ref\n", - " BAS6 package load...success\n", - " DATA file load...skipped\n", - " vka_Layer_19.ref\n", - " LPF package load...success\n", - " DATA file load...skipped\n", - " vka_Layer_20.ref\n", - " WEL package load...success\n", - " GHB package load...success\n", - " PCG package load...success\n", - " DATA file load...skipped\n", - " hk_Layer_18.ref\n", - " DATA file load...skipped\n", - " hk_Layer_19.ref\n", - " DATA file load...skipped\n", - " hk_Layer_20.ref\n", - " DATA file load...skipped\n", - " vka_Layer_13.ref\n", - " DATA file load...skipped\n", - " hk_Layer_1.ref\n", - " DATA file load...skipped\n", - " vka_Layer_1.ref\n", - " DATA file load...skipped\n", - " hk_Layer_2.ref\n", - " DATA file load...skipped\n", - " vka_Layer_2.ref\n", - " DATA file load...skipped\n", - " hk_Layer_3.ref\n", - " DATA file load...skipped\n", - " vka_Layer_3.ref\n", - " DATA file load...skipped\n", - " hk_Layer_4.ref\n", - " DATA file load...skipped\n", - " vka_Layer_4.ref\n", - " DATA file load...skipped\n", - " hk_Layer_5.ref\n", - " DATA file load...skipped\n", - " vka_Layer_5.ref\n", - " DATA file load...skipped\n", - " hk_Layer_6.ref\n", - " DATA file load...skipped\n", - " vka_Layer_6.ref\n", - " DATA file load...skipped\n", - " hk_Layer_7.ref\n", - " DATA file load...skipped\n", - " vka_Layer_7.ref\n", - " DATA file load...skipped\n", - " hk_Layer_8.ref\n", - " DATA file load...skipped\n", - " vka_Layer_8.ref\n", - " DATA file load...skipped\n", - " hk_Layer_9.ref\n", - " DATA file load...skipped\n", - " vka_Layer_9.ref\n", - " DATA file load...skipped\n", - " hk_Layer_10.ref\n", - " DATA file load...skipped\n", - " vka_Layer_10.ref\n", - " DATA file load...skipped\n", - " hk_Layer_11.ref\n", - " DATA file load...skipped\n", - " vka_Layer_11.ref\n", - " DATA file load...skipped\n", - " hk_Layer_12.ref\n", - "\n", - "\n", - " The following 6 packages were successfully loaded.\n", - " henry.dis\n", - " henry.bas\n", - " henry.lpf\n", - " henry.wel\n", - " henry.ghb\n", - " henry.pcg\n", - " The following 1 packages were not loaded.\n", - " henry.list\n", - "\n", - "\n", - "\n", - "changing model workspace...\n", - " new_henry\n" - ] - } - ], - "prompt_number": 23 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print ml_loaded.get_package(\"lpf\").hk.array" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "[[[ 200. 200. 200. ..., 200. 200. 200.]]\n", - "\n", - " [[ 200. 200. 200. ..., 200. 200. 200.]]\n", - "\n", - " [[ 200. 200. 200. ..., 200. 200. 200.]]\n", - "\n", - " ..., \n", - " [[ 200. 200. 200. ..., 200. 200. 200.]]\n", - "\n", - " [[ 200. 200. 200. ..., 200. 200. 200.]]\n", - "\n", - " [[ 200. 200. 200. ..., 200. 200. 200.]]]\n" - ] - } - ], - "prompt_number": 24 - } - ], - "metadata": {} - } - ] -} \ No newline at end of file diff --git a/examples/Testing/island_example.ipynb b/examples/Testing/island_example.ipynb deleted file mode 100644 index 5987fb31d6..0000000000 --- a/examples/Testing/island_example.ipynb +++ /dev/null @@ -1,297 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "%matplotlib inline\n", - "import os\n", - "import sys\n", - "flopypth = os.path.join('..', '..', '..', 'flopy')\n", - "if flopypth not in sys.path:\n", - " sys.path.append(flopypth)\n", - "import flopy.modflow as mf\n", - "import flopy.mt3d as mt\n", - "import flopy.seawat as swt\n", - "import flopy.utils as fu" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "name = 'island'\n", - "mf_model = mf.Modflow(modelname = name)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "L = 1000.\n", - "nlay = 20\n", - "nrow = 1\n", - "ncol = 100\n", - "delr = L / ncol \n", - "H = 20.\n", - "delz = H / nlay\n", - "top = np.ones((1, ncol)) * delz / 2.\n", - "top[0, 10:-10] += delz / 2.\n", - "botm = np.linspace(-delz / 2., -H + delz / 2., nlay)\n", - "perlen = 7300\n", - "dis = mf.ModflowDis(mf_model, nlay, nrow, ncol, delr = delr, delc = 1, \n", - " top = top, botm = botm, laycbd = 0, perlen = perlen, \n", - " nstp = 730, steady = False)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "ibound = np.ones((nlay, nrow, ncol))\n", - "ibound[0, 0, :10] = -1\n", - "ibound[0, 0, 90:] = -1\n", - "bas = mf.ModflowBas(mf_model, ibound = ibound, strt = 0.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "lpf = mf.ModflowLpf(mf_model, hk = 100.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "rech = np.zeros((nrow, ncol))\n", - "rech[0, (ibound[0, 0, :] == 1)] = 2e-3\n", - "rch = mf.ModflowRch(mf_model, rech = rech)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "pcg = mf.ModflowPcg(mf_model)\n", - "oc = mf.ModflowOc(mf_model) \n", - "mf_model.write_input()\n", - "#mf_model.run_model2()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "mt_model = mt.Mt3dms(name, 'nam_mt3dms', mf_model)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "adv = mt.Mt3dAdv(mt_model, mixelm = 0, percel = 1.)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "sconc_1 = np.ones([nlay, nrow, ncol]) * 35.7\n", - "timprs = np.arange(1, perlen, 100)\n", - "btn = mt.Mt3dBtn(mt_model, ncomp=1, sconc=sconc_1, prsity = 0.25, timprs = timprs)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "dsp = mt.Mt3dDsp(mt_model, al=0.1, dmcoef=5e-10*3600.*24.)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "gcg = mt.Mt3dGcg(mt_model, cclose = 1e-8)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "crch = {0: 0.001}\n", - "sp_data = []\n", - "for c in range(10):\n", - " dd = np.array([0, 0, c, 0, 1])\n", - " sp_data.append(dd)\n", - "for c in range(90, 100):\n", - " dd = np.array([0, 0, c, 0, 1])\n", - " sp_data.append(dd)\n", - "stress_period_data = {0:sp_data}\n", - "ssm = mt.Mt3dSsm(mt_model, crch=crch, stress_period_data=stress_period_data)\n", - "\n", - "mt_model.write_input()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "swt_model = swt.Seawat(name, 'nam_swt', mf_model, mt_model, exe_name='swtv4') # Coupled to modflow model mf and mt3dms model mt\n", - "vdf = swt.SeawatVdf(swt_model, firstdt = 0.1, denseslp = .7)\n", - "swt_model.write_input()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[False, []]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "swt_model.run_model(silent=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\nAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "conc = fu.UcnFile('MT3D001.UCN')\n", - "c = conc.get_data(totim = 7300)\n", - "\n", - "y, x, z = dis.get_node_coordinates()\n", - "X, Z = np.meshgrid(x, z[:, 0, 0])\n", - "plt.contourf(X, Z, c[:, 0, :])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/Testing/testunitcbc.py b/examples/Testing/testunitcbc.py deleted file mode 100644 index cc0c6e770d..0000000000 --- a/examples/Testing/testunitcbc.py +++ /dev/null @@ -1,85 +0,0 @@ -import os - -import numpy as np - -import flopy - -# Assign name and create modflow model object -modelname = "units" -mf = flopy.modflow.Modflow( - modelname, exe_name="mf2005", model_ws=os.path.join("data") -) -cbc_unit_nb = 1053 - -# Model domain and grid definition -Lx = 1000.0 -Ly = 1000.0 -ztop = 0.0 -zbot = -50.0 -nlay = 1 -nrow = 10 -ncol = 10 -delr = Lx / ncol -delc = Ly / nrow -delv = (ztop - zbot) / nlay -botm = np.linspace(ztop, zbot, nlay + 1) - -# Create the discretization object -dis = flopy.modflow.ModflowDis( - mf, nlay, nrow, ncol, delr=delr, delc=delc, top=ztop, botm=botm[1:] -) - -# Variables for the BAS package -ibound = np.ones((nlay, nrow, ncol), dtype=np.int32) -ibound[:, :, 0] = -1 -ibound[:, :, -1] = -1 -strt = np.ones((nlay, nrow, ncol), dtype=np.float32) -strt[:, :, 0] = 10.0 -strt[:, :, -1] = 0.0 -bas = flopy.modflow.ModflowBas(mf, ibound=ibound, strt=strt) - -# Add LPF package to the MODFLOW model -lpf = flopy.modflow.ModflowLpf(mf, hk=10.0, vka=10.0, ipakcb=cbc_unit_nb) - -# add well -wel = flopy.modflow.ModflowWel( - mf, ipakcb=cbc_unit_nb, stress_period_data={0: [0, 4, 4, -100.0]} -) - -# Add OC package to the MODFLOW model -spd = {(0, 0): ["print head", "print budget", "save head", "save budget"]} -oc = flopy.modflow.ModflowOc(mf, stress_period_data=spd, compact=True) - -# Add PCG package to the MODFLOW model -pcg = flopy.modflow.ModflowPcg(mf) - -# Write the MODFLOW model input files -mf.write_input() - -# Run the MODFLOW model -success, buff = mf.run_model() - -# Post process the results -import matplotlib.pyplot as plt - -import flopy.utils.binaryfile as bf - -fig = plt.figure(figsize=(10, 10)) -ax = fig.add_subplot(1, 1, 1, aspect="equal") - -hds = bf.HeadFile(os.path.join("data", f"{modelname}.hds")) -times = hds.get_times() -head = hds.get_data(totim=times[-1]) -levels = np.linspace(0, 10, 11) - -cbb = bf.CellBudgetFile(os.path.join("data", f"{modelname}.cbc")) -kstpkper_list = cbb.get_kstpkper() -frf = cbb.get_data(text="FLOW RIGHT FACE", totim=times[-1])[0] -fff = cbb.get_data(text="FLOW FRONT FACE", totim=times[-1])[0] - -modelmap = flopy.plot.ModelMap(model=mf, layer=0) -qm = modelmap.plot_ibound() -lc = modelmap.plot_grid() -cs = modelmap.contour_array(head, levels=levels) -quiver = modelmap.plot_discharge(frf, fff, head=head) -plt.show() diff --git a/examples/Testing/util_list_tester.py b/examples/Testing/util_list_tester.py deleted file mode 100644 index a5e79b4054..0000000000 --- a/examples/Testing/util_list_tester.py +++ /dev/null @@ -1,74 +0,0 @@ -import numpy as np - -import flopy - -# instance testing -# override the default data type -dtype = np.dtype( - [ - ("k", int), - ("i", int), - ("j", int), - ("stage", np.float32), - ("cond", np.float32), - ("rbot", np.float32), - ("aux1", np.float32), - ("aux2", np.float32), - ] -) # ("comments",object)]) - -# a dict to store data -data = {} - -# sp 2 = -1 -data[1] = -1 - - -# build a nested list for sp 4 -d = [] -for k in range(0, 2): - for i in range(1, 3): - for j in range(4, 6): - dd = np.array([k, i, j, 10, 1, 2, 999, 1]) - d.append(dd) -data[3] = d - -# a single entry for sp 5 -data[4] = np.array((9, 8, 7, 6, 5, 4, 999, 2)) - - -# an external file for sp 10 -f = open("some_list.dat", "w") -f.write(" 0 0 0 1.0 1.0 1.0 999 2 \n") -f.write(" 0 0 0 1.0 1.0 1.0 999 2 \n") -f.write(" 0 0 0 1.0 1.0 1.0 999 2 \n") -f.close() -# data[9] = "some_list.dat" - -model = flopy.modflow.Modflow() -dis = flopy.modflow.ModflowDis(model, nlay=1, nrow=1, ncol=1, nper=3) -riv = flopy.modflow.ModflowRiv( - model, - stress_period_data=data, - dtype=dtype, - options=["aux aux1", "aux aux2"], -) -riv.write_file() - -model1 = flopy.modflow.Modflow("test") -dis1 = flopy.modflow.ModflowDis(model1, nlay=1, nrow=1, ncol=1, nper=3) -riv1 = flopy.modflow.ModflowRiv.load("modflowtest.riv", model1, nper=10) - -riv2 = flopy.pakbase.Package.load( - model, flopy.modflow.ModflowRiv, "modflowtest.riv" -) -ghb = flopy.pakbase.Package.load( - model, flopy.modflow.ModflowGhb, "modflowtest.ghb" -) -riv1.write_file() -# get the recarray from sp 10 -sp10_rec = riv[9] -# check bounds -riv.stress_period_data.check_kij() -# write file -riv.write_file() From 55c1d49876bf57fe480ca8825ad55410e3eef214 Mon Sep 17 00:00:00 2001 From: Joseph D Hughes Date: Tue, 1 Feb 2022 14:18:54 -0600 Subject: [PATCH 3/4] ci: Add isort to linting step Update flopy using latest version of black. Add autotest\pull_request_prepare.py to help contributors to run isort and black prior to a pull request. Clean-up unused examples/Testing directory. Modified t064_test_performance.py to guard against failures on macOS. --- autotest/t064_test_performance.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/autotest/t064_test_performance.py b/autotest/t064_test_performance.py index 808e521ef0..39989ad048 100644 --- a/autotest/t064_test_performance.py +++ b/autotest/t064_test_performance.py @@ -120,7 +120,10 @@ def test_9_load_time(self): print("loading model...") mfp = TestModflowPerformance() mfp.m.write_input() - target = 3 + if sys.platform == "darwin": + target = 3.25 + else: + target = 3.0 t0 = time.time() m = fm.Modflow.load( f"{mfp.modelname}.nam", model_ws=mfp.model_ws, check=False From 09212ccfc4f333559012d7c134c9de6bbd830ec9 Mon Sep 17 00:00:00 2001 From: Joseph D Hughes Date: Tue, 1 Feb 2022 15:40:31 -0600 Subject: [PATCH 4/4] ci: Add isort to linting step Update flopy using latest version of black. Add autotest\pull_request_prepare.py to help contributors to run isort and black prior to a pull request. Clean-up unused examples/Testing directory. Modified t064_test_performance.py to guard against failures on macOS. --- autotest/t064_test_performance.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autotest/t064_test_performance.py b/autotest/t064_test_performance.py index 39989ad048..b1faf11929 100644 --- a/autotest/t064_test_performance.py +++ b/autotest/t064_test_performance.py @@ -121,7 +121,7 @@ def test_9_load_time(self): mfp = TestModflowPerformance() mfp.m.write_input() if sys.platform == "darwin": - target = 3.25 + target = 4.0 else: target = 3.0 t0 = time.time() @@ -131,7 +131,7 @@ def test_9_load_time(self): t1 = time.time() - t0 assert ( t1 < target - ), f"model load took {t1:.2f}s, should take {target:.1f}s" + ), f"model load took {t1:.2f}s, should take {target:.2f}s" print(f"loading the model took {t1:.2f}s") @classmethod