flopy/examples/Notebooks/flopy3_mf6_B_complex-model....

1504 lines
143 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# FloPy\n",
"\n",
"## Creating a Complex MODFLOW 6 Model with Flopy\n",
"\n",
"The purpose of this notebook is to demonstrate the Flopy capabilities for building a more complex MODFLOW 6 model from scratch. This notebook will demonstrate the capabilities by replicating the advgw_tidal model that is distributed with MODFLOW 6."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Setup the Notebook Environment"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.8.6 | packaged by conda-forge | (default, Oct 7 2020, 18:42:56) \n",
"[Clang 10.0.1 ]\n",
"numpy version: 1.18.5\n",
"matplotlib version: 3.2.2\n",
"flopy version: 3.3.3\n"
]
}
],
"source": [
"import sys\n",
"import os\n",
"import platform\n",
"import numpy as np\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# run installed version of flopy or add local path\n",
"try:\n",
" import flopy\n",
"except:\n",
" fpth = os.path.abspath(os.path.join('..', '..'))\n",
" sys.path.append(fpth)\n",
" import flopy\n",
"\n",
"print(sys.version)\n",
"print('numpy version: {}'.format(np.__version__))\n",
"print('matplotlib version: {}'.format(mpl.__version__))\n",
"print('flopy version: {}'.format(flopy.__version__))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# For this example, we will set up a model workspace.\n",
"# Model input files and output files will reside here.\n",
"model_name = 'advgw_tidal'\n",
"workspace = os.path.join('data', model_name)\n",
"if not os.path.exists(workspace):\n",
" os.makedirs(workspace)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"data_pth = os.path.join('..', 'data', 'mf6', 'create_tests', \n",
" 'test005_advgw_tidal')\n",
"assert os.path.isdir(data_pth)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# create simulation\n",
"sim = flopy.mf6.MFSimulation(sim_name=model_name, version='mf6', exe_name='mf6', \n",
" sim_ws=workspace)\n",
"\n",
"# create tdis package\n",
"tdis_rc = [(1.0, 1, 1.0), (10.0, 120, 1.0), \n",
" (10.0, 120, 1.0), (10.0, 120, 1.0)]\n",
"tdis = flopy.mf6.ModflowTdis(sim, pname='tdis', time_units='DAYS', \n",
" nper=4, perioddata=tdis_rc)\n",
"\n",
"# create gwf model\n",
"gwf = flopy.mf6.ModflowGwf(sim, modelname=model_name,\n",
" model_nam_file='{}.nam'.format(model_name))\n",
"gwf.name_file.save_flows = True\n",
"\n",
"# create iterative model solution and register the gwf model with it\n",
"ims = flopy.mf6.ModflowIms(sim, pname='ims', print_option='SUMMARY', \n",
" complexity='SIMPLE', outer_hclose=0.0001, \n",
" outer_maximum=500, under_relaxation='NONE', \n",
" inner_maximum=100, inner_hclose=0.0001, \n",
" rcloserecord=0.001, linear_acceleration='CG', \n",
" scaling_method='NONE', reordering_method='NONE', \n",
" relaxation_factor=0.97)\n",
"sim.register_ims_package(ims, [gwf.name])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# discretization package\n",
"nlay = 3\n",
"nrow = 15\n",
"ncol = 10\n",
"botlay2 = {'factor':1.0, 'data': [-100 for x in range(150)]}\n",
"dis = flopy.mf6.ModflowGwfdis(gwf, pname='dis', nlay=nlay, nrow=nrow, ncol=ncol, \n",
" delr=500.0, delc=500.0, top=50.0, \n",
" botm=[5.0, -10.0, botlay2], \n",
" filename='{}.dis'.format(model_name))\n",
"\n",
"# initial conditions\n",
"ic = flopy.mf6.ModflowGwfic(gwf, pname='ic', strt=50.0,\n",
" filename='{}.ic'.format(model_name))\n",
"\n",
"# node property flow\n",
"npf = flopy.mf6.ModflowGwfnpf(gwf, pname='npf', save_flows=True, \n",
" icelltype=[1,0,0], \n",
" k=[5.0, 0.1, 4.0],\n",
" k33=[0.5, 0.005, 0.1])\n",
"\n",
"# output control\n",
"oc = flopy.mf6.ModflowGwfoc(gwf, pname='oc', budget_filerecord='{}.cbb'.format(model_name),\n",
" head_filerecord='{}.hds'.format(model_name),\n",
" headprintrecord=[('COLUMNS', 10, 'WIDTH', 15,\n",
" 'DIGITS', 6, 'GENERAL')],\n",
" saverecord=[('HEAD', 'ALL'), ('BUDGET', 'ALL')],\n",
" printrecord=[('HEAD', 'FIRST'), ('HEAD', 'LAST'), \n",
" ('BUDGET', 'LAST')])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# storage package\n",
"sy = flopy.mf6.ModflowGwfsto.sy.empty(gwf, layered=True)\n",
"for layer in range(0,3):\n",
" sy[layer]['data'] = 0.2\n",
" \n",
"ss = flopy.mf6.ModflowGwfsto.ss.empty(gwf, layered=True, default_value=0.000001)\n",
"\n",
"sto = flopy.mf6.ModflowGwfsto(gwf, pname='sto', save_flows=True, iconvert=1, \n",
" ss=ss, sy=sy, steady_state={0:True},\n",
" transient={1:True})"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# well package\n",
"# test empty with aux vars, bound names, and time series\n",
"period_two = flopy.mf6.ModflowGwfwel.stress_period_data.empty(gwf, maxbound=3, aux_vars=['var1', 'var2', 'var3'],\n",
" boundnames=True, timeseries=True)\n",
"period_two[0][0] = ((0,11,2), -50.0, -1, -2, -3, None)\n",
"period_two[0][1] = ((2,4,7), 'well_1_rate', 1, 2, 3, 'well_1')\n",
"period_two[0][2] = ((2,3,2), 'well_2_rate', 4, 5, 6, 'well_2')\n",
"period_three = flopy.mf6.ModflowGwfwel.stress_period_data.empty(gwf, maxbound=2, aux_vars=['var1', 'var2', 'var3'],\n",
" boundnames=True, timeseries=True)\n",
"period_three[0][0] = ((2,3,2), 'well_2_rate', 1, 2, 3, 'well_2')\n",
"period_three[0][1] = ((2,4,7), 'well_1_rate', 4, 5, 6, 'well_1')\n",
"period_four = flopy.mf6.ModflowGwfwel.stress_period_data.empty(gwf, maxbound=5, aux_vars=['var1', 'var2', 'var3'],\n",
" boundnames=True, timeseries=True)\n",
"period_four[0][0] = ((2,4,7), 'well_1_rate', 1, 2, 3, 'well_1')\n",
"period_four[0][1] = ((2,3,2), 'well_2_rate', 4, 5, 6, 'well_2')\n",
"period_four[0][2] = ((0,11,2), -10.0, 7, 8, 9, None)\n",
"period_four[0][3] = ((0,2,4), -20.0, 17, 18, 19, None)\n",
"period_four[0][4] = ((0,13,5), -40.0, 27, 28, 29, None)\n",
"stress_period_data = {}\n",
"stress_period_data[1] = period_two[0]\n",
"stress_period_data[2] = period_three[0]\n",
"stress_period_data[3] = period_four[0]\n",
"wel = flopy.mf6.ModflowGwfwel(gwf, pname='wel', print_input=True, print_flows=True,\n",
" auxiliary=[('var1', 'var2', 'var3')], maxbound=5,\n",
" stress_period_data=stress_period_data, boundnames=True, \n",
" save_flows=True)\n",
"\n",
"# well ts package\n",
"ts_data =[(0.0, 0.0, 0.0, 0.0),\n",
" (1.0, -200.0, 0.0, -100.0),\n",
" (11.0, -1800.0, -500.0, -200.0),\n",
" (21.0, -200.0, -400.0, -300.0),\n",
" (31.0, 0.0, -600.0, -400.0)]\n",
"wel.ts.initialize(filename='well-rates.ts', timeseries=ts_data,\n",
" time_series_namerecord=[('well_1_rate', 'well_2_rate', 'well_3_rate')],\n",
" interpolation_methodrecord=[('stepwise', 'stepwise', 'stepwise')])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# Evapotranspiration\n",
"evt_period = flopy.mf6.ModflowGwfevt.stress_period_data.empty(gwf, 150, nseg=3)\n",
"for col in range(0, 10):\n",
" for row in range(0, 15):\n",
" evt_period[0][col*15+row] = (((0, row, col), 50.0, 0.0004, 10.0, 0.2, 0.5, 0.3, 0.1, None))\n",
"evt = flopy.mf6.ModflowGwfevt(gwf, pname='evt', print_input=True, print_flows=True, \n",
" save_flows=True, maxbound=150,\n",
" nseg=3, stress_period_data=evt_period)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# General-Head Boundaries\n",
"ghb_period = {}\n",
"ghb_period_array = []\n",
"for layer, cond in zip(range(1, 3), [15.0, 1500.0]):\n",
" for row in range(0, 15):\n",
" ghb_period_array.append(((layer, row, 9), 'tides', cond, 'Estuary-L2'))\n",
"ghb_period[0] = ghb_period_array\n",
"ghb = flopy.mf6.ModflowGwfghb(gwf, pname='ghb', print_input=True, print_flows=True, \n",
" save_flows=True, boundnames=True,\n",
" maxbound=30, stress_period_data=ghb_period)\n",
"ts_recarray=[]\n",
"fd = open(os.path.join(data_pth, 'tides.txt'), 'r')\n",
"for line in fd:\n",
" line_list = line.strip().split(',')\n",
" ts_recarray.append((float(line_list[0]), float(line_list[1])))\n",
"ghb.ts.initialize(filename='tides.ts', timeseries=ts_recarray,\n",
" time_series_namerecord='tides',\n",
" interpolation_methodrecord='linear')\n",
"obs_recarray = {'ghb_obs.csv':[('ghb-2-6-10', 'GHB', (1, 5, 9)), \n",
" ('ghb-3-6-10', 'GHB', (2, 5, 9))],\n",
" 'ghb_flows.csv':[('Estuary2', 'GHB', 'Estuary-L2'), \n",
" ('Estuary3', 'GHB', 'Estuary-L3')]}\n",
"ghb.obs.initialize(filename='{}.ghb.obs'.format(model_name), digits=10, \n",
" print_input=True, continuous=obs_recarray)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"obs_recarray = {'head_obs.csv':[('h1_13_8', 'HEAD', (2, 12, 7))],\n",
" 'intercell_flow_obs1.csv':[('ICF1_1.0', 'FLOW-JA-FACE', (0, 4, 5), (0, 5, 5))],\n",
" 'head-hydrographs.csv':[('h3-13-9', 'HEAD', (2, 12, 8)),\n",
" ('h3-12-8', 'HEAD', (2, 11, 7)),\n",
" ('h1-4-3', 'HEAD', (0, 3, 2)),\n",
" ('h1-12-3', 'HEAD', (0, 11, 2)),\n",
" ('h1-13-9', 'HEAD', (0, 12, 8))]}\n",
"obs_package = flopy.mf6.ModflowUtlobs(gwf, pname='head_obs', filename='{}.obs'.format(model_name), \n",
" digits=10, print_input=True,\n",
" continuous=obs_recarray)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# River\n",
"riv_period = {}\n",
"riv_period_array = [((0,2,0),'river_stage_1',1001.0,35.9,None),\n",
" ((0,3,1),'river_stage_1',1002.0,35.8,None),\n",
" ((0,4,2),'river_stage_1',1003.0,35.7,None),\n",
" ((0,4,3),'river_stage_1',1004.0,35.6,None),\n",
" ((0,5,4),'river_stage_1',1005.0,35.5,None),\n",
" ((0,5,5),'river_stage_1',1006.0,35.4,'riv1_c6'),\n",
" ((0,5,6),'river_stage_1',1007.0,35.3,'riv1_c7'),\n",
" ((0,4,7),'river_stage_1',1008.0,35.2,None),\n",
" ((0,4,8),'river_stage_1',1009.0,35.1,None),\n",
" ((0,4,9),'river_stage_1',1010.0,35.0,None),\n",
" ((0,9,0),'river_stage_2',1001.0,36.9,'riv2_upper'),\n",
" ((0,8,1),'river_stage_2',1002.0,36.8,'riv2_upper'),\n",
" ((0,7,2),'river_stage_2',1003.0,36.7,'riv2_upper'),\n",
" ((0,6,3),'river_stage_2',1004.0,36.6,None),\n",
" ((0,6,4),'river_stage_2',1005.0,36.5,None),\n",
" ((0,5,5),'river_stage_2',1006.0,36.4,'riv2_c6'),\n",
" ((0,5,6),'river_stage_2',1007.0,36.3,'riv2_c7'),\n",
" ((0,6,7),'river_stage_2',1008.0,36.2,None),\n",
" ((0,6,8),'river_stage_2',1009.0,36.1),\n",
" ((0,6,9),'river_stage_2',1010.0,36.0)]\n",
"riv_period[0] = riv_period_array\n",
"riv = flopy.mf6.ModflowGwfriv(gwf, pname='riv', print_input=True, print_flows=True, \n",
" save_flows='{}.cbc'.format(model_name),\n",
" boundnames=True, maxbound=20, \n",
" stress_period_data=riv_period)\n",
"ts_recarray=[(0.0,40.0,41.0),(1.0,41.0,41.5),\n",
" (2.0,43.0,42.0),(3.0,45.0,42.8),\n",
" (4.0,44.0,43.0),(6.0,43.0,43.1),\n",
" (9.0,42.0,42.4),(11.0,41.0,41.5),\n",
" (31.0,40.0,41.0)]\n",
"riv.ts.initialize(filename='river_stages.ts', timeseries=ts_recarray,\n",
" time_series_namerecord=[('river_stage_1', 'river_stage_2')],\n",
" interpolation_methodrecord=[('linear', 'stepwise')])\n",
"obs_recarray = {'riv_obs.csv':[('rv1-3-1', 'RIV', (0,2,0)), ('rv1-4-2', 'RIV', (0,3,1)),\n",
" ('rv1-5-3', 'RIV', (0,4,2)), ('rv1-5-4', 'RIV', (0,4,3)),\n",
" ('rv1-6-5', 'RIV', (0,5,4)), ('rv1-c6', 'RIV', 'riv1_c6'),\n",
" ('rv1-c7', 'RIV', 'riv1_c7'), ('rv2-upper', 'RIV', 'riv2_upper'),\n",
" ('rv-2-7-4', 'RIV', (0,6,3)), ('rv2-8-5', 'RIV', (0,6,4)),\n",
" ('rv-2-9-6', 'RIV', (0,5,5,))],\n",
" 'riv_flowsA.csv':[('riv1-3-1', 'RIV', (0,2,0)), ('riv1-4-2', 'RIV', (0,3,1)),\n",
" ('riv1-5-3', 'RIV', (0,4,2))],\n",
" 'riv_flowsB.csv':[('riv2-10-1', 'RIV', (0,9,0)), ('riv-2-9-2', 'RIV', (0,8,1)),\n",
" ('riv2-8-3', 'RIV', (0,7,2))]}\n",
"riv.obs.initialize(filename='{}.riv.obs'.format(model_name), digits=10,\n",
" print_input=True, continuous=obs_recarray)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# First recharge package\n",
"rch1_period = {}\n",
"rch1_period_array = []\n",
"col_range = {0:3,1:4,2:5}\n",
"for row in range(0, 15):\n",
" if row in col_range:\n",
" col_max = col_range[row]\n",
" else:\n",
" col_max = 6\n",
" for col in range(0, col_max):\n",
" if (row == 3 and col == 5) or (row == 2 and col == 4) or (row == 1 and col == 3) or (row == 0 and col == 2):\n",
" mult = 0.5\n",
" else:\n",
" mult = 1.0\n",
" if row == 0 and col == 0:\n",
" bnd = 'rch-1-1'\n",
" elif row == 0 and col == 1:\n",
" bnd = 'rch-1-2'\n",
" elif row == 1 and col == 2:\n",
" bnd = 'rch-2-3'\n",
" else:\n",
" bnd = None\n",
" rch1_period_array.append(((0, row, col), 'rch_1', mult, bnd))\n",
"rch1_period[0] = rch1_period_array\n",
"rch1 = flopy.mf6.ModflowGwfrch(gwf, filename='{}_1.rch'.format(model_name), \n",
" pname='rch_1', fixed_cell=True,\n",
" auxiliary='MULTIPLIER', auxmultname='MULTIPLIER',\n",
" print_input=True, print_flows=True, \n",
" save_flows=True, boundnames=True,\n",
" maxbound=84, stress_period_data=rch1_period)\n",
"ts_data =[(0.0, 0.0015), (1.0, 0.0010),\n",
" (11.0, 0.0015),(21.0, 0.0025),\n",
" (31.0, 0.0015)]\n",
"rch1.ts.initialize(filename='recharge_rates_1.ts', timeseries=ts_data,\n",
" time_series_namerecord='rch_1',\n",
" interpolation_methodrecord='stepwise')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Second recharge package\n",
"rch2_period = {}\n",
"rch2_period_array = [((0,0,2), 'rch_2', 0.5),\n",
" ((0,0,3), 'rch_2', 1.0),\n",
" ((0,0,4), 'rch_2', 1.0),\n",
" ((0,0,5), 'rch_2', 1.0),\n",
" ((0,0,6), 'rch_2', 1.0),\n",
" ((0,0,7), 'rch_2', 1.0),\n",
" ((0,0,8), 'rch_2', 1.0),\n",
" ((0,0,9), 'rch_2', 0.5),\n",
" ((0,1,3), 'rch_2', 0.5),\n",
" ((0,1,4), 'rch_2', 1.0),\n",
" ((0,1,5), 'rch_2', 1.0),\n",
" ((0,1,6), 'rch_2', 1.0),\n",
" ((0,1,7), 'rch_2', 1.0),\n",
" ((0,1,8), 'rch_2', 0.5),\n",
" ((0,2,4), 'rch_2', 0.5),\n",
" ((0,2,5), 'rch_2', 1.0),\n",
" ((0,2,6), 'rch_2', 1.0),\n",
" ((0,2,7), 'rch_2', 0.5),\n",
" ((0,3,5), 'rch_2', 0.5),\n",
" ((0,3,6), 'rch_2', 0.5)]\n",
"rch2_period[0] = rch2_period_array\n",
"rch2 = flopy.mf6.ModflowGwfrch(gwf, filename='{}_2.rch'.format(model_name), \n",
" pname='rch_2', fixed_cell=True,\n",
" auxiliary='MULTIPLIER', auxmultname='MULTIPLIER',\n",
" print_input=True, print_flows=True, save_flows=True,\n",
" maxbound=20, stress_period_data=rch2_period)\n",
"ts_data = [(0.0, 0.0016), (1.0, 0.0018),\n",
" (11.0, 0.0019),(21.0, 0.0016),\n",
" (31.0, 0.0018)]\n",
"rch2.ts.initialize(filename='recharge_rates_2.ts', timeseries=ts_data,\n",
" time_series_namerecord='rch_2',\n",
" interpolation_methodrecord='linear')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# Third recharge package\n",
"rch3_period = {}\n",
"rch3_period_array = []\n",
"col_range = {0:9,1:8,2:7}\n",
"for row in range(0, 15):\n",
" if row in col_range:\n",
" col_min = col_range[row]\n",
" else:\n",
" col_min = 6\n",
" for col in range(col_min, 10):\n",
" if (row == 0 and col == 9) or (row == 1 and col == 8) or (row == 2 and col == 7) or (row == 3 and col == 6):\n",
" mult = 0.5\n",
" else:\n",
" mult = 1.0\n",
" rch3_period_array.append(((0, row, col), 'rch_3', mult))\n",
"rch3_period[0] = rch3_period_array\n",
"rch3 = flopy.mf6.ModflowGwfrch(gwf, filename='{}_3.rch'.format(model_name), \n",
" pname='rch_3', fixed_cell=True,\n",
" auxiliary='MULTIPLIER', auxmultname='MULTIPLIER',\n",
" print_input=True, print_flows=True, save_flows=True,\n",
" maxbound=54, stress_period_data=rch3_period)\n",
"ts_data=[(0.0, 0.0017),(1.0, 0.0020),(11.0, 0.0017),(21.0, 0.0018),(31.0, 0.0020)]\n",
"rch3.ts.initialize(filename='recharge_rates_3.ts', timeseries=ts_data,\n",
" time_series_namerecord='rch_3',\n",
" interpolation_methodrecord='linear')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create the MODFLOW 6 Input Files and Run the Model\n",
"\n",
"Once all the flopy objects are created, it is very easy to create all of the input files and run the model."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# change folder to save simulation\n",
"#sim.simulation_data.mfpath.set_sim_path(run_folder)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"writing simulation...\n",
" writing simulation name file...\n",
" writing simulation tdis package...\n",
" writing ims package ims...\n",
" writing model advgw_tidal...\n",
" writing model name file...\n",
" writing package dis...\n",
" writing package ic...\n",
" writing package npf...\n",
" writing package oc...\n",
" writing package sto...\n",
" writing package wel...\n",
" writing package ts_0...\n",
" writing package evt...\n",
" writing package ghb...\n",
" writing package ts_1...\n",
" writing package obs_0...\n",
" writing package head_obs...\n",
" writing package riv...\n",
" writing package ts_2...\n",
" writing package obs_1...\n",
" writing package rch_1...\n",
" writing package ts_3...\n",
" writing package rch_2...\n",
" writing package ts_4...\n",
" writing package rch_3...\n",
" writing package ts_5...\n"
]
}
],
"source": [
"# write simulation to new location\n",
"sim.write_simulation()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['advgw_tidal.nam', 'advgw_tidal.ic', 'recharge_rates_1.ts', 'advgw_tidal.sto', 'tides.ts', 'advgw_tidal.ims', 'well-rates.ts', 'advgw_tidal.ghb', 'advgw_tidal.obs', 'advgw_tidal.riv.obs', 'advgw_tidal.dis', 'advgw_tidal_1.rch', 'advgw_tidal_3.rch', 'advgw_tidal_2.rch', 'advgw_tidal.oc', 'river_stages.ts', 'advgw_tidal.wel', 'advgw_tidal.ghb.obs', 'advgw_tidal.npf', 'advgw_tidal.tdis', 'recharge_rates_2.ts', 'mfsim.nam', 'advgw_tidal.riv', 'recharge_rates_3.ts', 'advgw_tidal.evt']\n"
]
}
],
"source": [
"# Print a list of the files that were created\n",
"# in workspace\n",
"print(os.listdir(workspace))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Run the Simulation\n",
"\n",
"We can also run the simulation from the notebook, but only if the MODFLOW 6 executable is available. The executable can be made available by putting the executable in a folder that is listed in the system path variable. Another option is to just put a copy of the executable in the simulation folder, though this should generally be avoided. A final option is to provide a full path to the executable when the simulation is constructed. This would be done by specifying exe_name with the full path."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"FloPy is using the following executable to run the model: /Users/jdhughes/.local/bin/mf6\n",
" MODFLOW 6\n",
" U.S. GEOLOGICAL SURVEY MODULAR HYDROLOGIC MODEL\n",
" VERSION 6.2.0 10/22/2020\n",
"\n",
" MODFLOW 6 compiled Oct 29 2020 12:19:52 with IFORT compiler (ver. 19.10.3)\n",
"\n",
"This software has been approved for release by the U.S. Geological \n",
"Survey (USGS). Although the software has been subjected to rigorous \n",
"review, the USGS reserves the right to update the software as needed \n",
"pursuant to further analysis and review. No warranty, expressed or \n",
"implied, is made by the USGS or the U.S. Government as to the \n",
"functionality of the software and related material nor shall the \n",
"fact of release constitute any such warranty. Furthermore, the \n",
"software is released on condition that neither the USGS nor the U.S. \n",
"Government shall be held liable for any damages resulting from its \n",
"authorized or unauthorized use. Also refer to the USGS Water \n",
"Resources Software User Rights Notice for complete use, copyright, \n",
"and distribution information.\n",
"\n",
" \n",
" Run start date and time (yyyy/mm/dd hh:mm:ss): 2021/02/18 11:32:47\n",
" \n",
" Writing simulation list file: mfsim.lst\n",
" Using Simulation name file: mfsim.nam\n",
" \n",
" Solving: Stress period: 1 Time step: 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 2 Time step: 1\n",
" Solving: Stress period: 2 Time step: 2\n",
" Solving: Stress period: 2 Time step: 3\n",
" Solving: Stress period: 2 Time step: 4\n",
" Solving: Stress period: 2 Time step: 5\n",
" Solving: Stress period: 2 Time step: 6\n",
" Solving: Stress period: 2 Time step: 7\n",
" Solving: Stress period: 2 Time step: 8\n",
" Solving: Stress period: 2 Time step: 9\n",
" Solving: Stress period: 2 Time step: 10\n",
" Solving: Stress period: 2 Time step: 11\n",
" Solving: Stress period: 2 Time step: 12\n",
" Solving: Stress period: 2 Time step: 13\n",
" Solving: Stress period: 2 Time step: 14\n",
" Solving: Stress period: 2 Time step: 15\n",
" Solving: Stress period: 2 Time step: 16\n",
" Solving: Stress period: 2 Time step: 17\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 2 Time step: 18\n",
" Solving: Stress period: 2 Time step: 19\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 2 Time step: 20\n",
" Solving: Stress period: 2 Time step: 21\n",
" Solving: Stress period: 2 Time step: 22\n",
" Solving: Stress period: 2 Time step: 23\n",
" Solving: Stress period: 2 Time step: 24\n",
" Solving: Stress period: 2 Time step: 25\n",
" Solving: Stress period: 2 Time step: 26\n",
" Solving: Stress period: 2 Time step: 27\n",
" Solving: Stress period: 2 Time step: 28\n",
" Solving: Stress period: 2 Time step: 29\n",
" Solving: Stress period: 2 Time step: 30\n",
" Solving: Stress period: 2 Time step: 31\n",
" Solving: Stress period: 2 Time step: 32\n",
" Solving: Stress period: 2 Time step: 33\n",
" Solving: Stress period: 2 Time step: 34\n",
" Solving: Stress period: 2 Time step: 35\n",
" Solving: Stress period: 2 Time step: 36\n",
" Solving: Stress period: 2 Time step: 37\n",
" Solving: Stress period: 2 Time step: 38\n",
" Solving: Stress period: 2 Time step: 39\n",
" Solving: Stress period: 2 Time step: 40\n",
" Solving: Stress period: 2 Time step: 41\n",
" Solving: Stress period: 2 Time step: 42\n",
" Solving: Stress period: 2 Time step: 43\n",
" Solving: Stress period: 2 Time step: 44\n",
" Solving: Stress period: 2 Time step: 45\n",
" Solving: Stress period: 2 Time step: 46\n",
" Solving: Stress period: 2 Time step: 47\n",
" Solving: Stress period: 2 Time step: 48\n",
" Solving: Stress period: 2 Time step: 49\n",
" Solving: Stress period: 2 Time step: 50\n",
" Solving: Stress period: 2 Time step: 51\n",
" Solving: Stress period: 2 Time step: 52\n",
" Solving: Stress period: 2 Time step: 53\n",
" Solving: Stress period: 2 Time step: 54\n",
" Solving: Stress period: 2 Time step: 55\n",
" Solving: Stress period: 2 Time step: 56\n",
" Solving: Stress period: 2 Time step: 57\n",
" Solving: Stress period: 2 Time step: 58\n",
" Solving: Stress period: 2 Time step: 59\n",
" Solving: Stress period: 2 Time step: 60\n",
" Solving: Stress period: 2 Time step: 61\n",
" Solving: Stress period: 2 Time step: 62\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 2 Time step: 63\n",
" Solving: Stress period: 2 Time step: 64\n",
" Solving: Stress period: 2 Time step: 65\n",
" Solving: Stress period: 2 Time step: 66\n",
" Solving: Stress period: 2 Time step: 67\n",
" Solving: Stress period: 2 Time step: 68\n",
" Solving: Stress period: 2 Time step: 69\n",
" Solving: Stress period: 2 Time step: 70\n",
" Solving: Stress period: 2 Time step: 71\n",
" Solving: Stress period: 2 Time step: 72\n",
" Solving: Stress period: 2 Time step: 73\n",
" Solving: Stress period: 2 Time step: 74\n",
" Solving: Stress period: 2 Time step: 75\n",
" Solving: Stress period: 2 Time step: 76\n",
" Solving: Stress period: 2 Time step: 77\n",
" Solving: Stress period: 2 Time step: 78\n",
" Solving: Stress period: 2 Time step: 79\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 2 Time step: 80\n",
" Solving: Stress period: 2 Time step: 81\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 2 Time step: 82\n",
" Solving: Stress period: 2 Time step: 83\n",
" Solving: Stress period: 2 Time step: 84\n",
" Solving: Stress period: 2 Time step: 85\n",
" Solving: Stress period: 2 Time step: 86\n",
" Solving: Stress period: 2 Time step: 87\n",
" Solving: Stress period: 2 Time step: 88\n",
" Solving: Stress period: 2 Time step: 89\n",
" Solving: Stress period: 2 Time step: 90\n",
" Solving: Stress period: 2 Time step: 91\n",
" Solving: Stress period: 2 Time step: 92\n",
" Solving: Stress period: 2 Time step: 93\n",
" Solving: Stress period: 2 Time step: 94\n",
" Solving: Stress period: 2 Time step: 95\n",
" Solving: Stress period: 2 Time step: 96\n",
" Solving: Stress period: 2 Time step: 97\n",
" Solving: Stress period: 2 Time step: 98\n",
" Solving: Stress period: 2 Time step: 99\n",
" Solving: Stress period: 2 Time step: 100\n",
" Solving: Stress period: 2 Time step: 101\n",
" Solving: Stress period: 2 Time step: 102\n",
" Solving: Stress period: 2 Time step: 103\n",
" Solving: Stress period: 2 Time step: 104\n",
" Solving: Stress period: 2 Time step: 105\n",
" Solving: Stress period: 2 Time step: 106\n",
" Solving: Stress period: 2 Time step: 107\n",
" Solving: Stress period: 2 Time step: 108\n",
" Solving: Stress period: 2 Time step: 109\n",
" Solving: Stress period: 2 Time step: 110\n",
" Solving: Stress period: 2 Time step: 111\n",
" Solving: Stress period: 2 Time step: 112\n",
" Solving: Stress period: 2 Time step: 113\n",
" Solving: Stress period: 2 Time step: 114\n",
" Solving: Stress period: 2 Time step: 115\n",
" Solving: Stress period: 2 Time step: 116\n",
" Solving: Stress period: 2 Time step: 117\n",
" Solving: Stress period: 2 Time step: 118\n",
" Solving: Stress period: 2 Time step: 119\n",
" Solving: Stress period: 2 Time step: 120\n",
" Solving: Stress period: 3 Time step: 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 3 Time step: 2\n",
" Solving: Stress period: 3 Time step: 3\n",
" Solving: Stress period: 3 Time step: 4\n",
" Solving: Stress period: 3 Time step: 5\n",
" Solving: Stress period: 3 Time step: 6\n",
" Solving: Stress period: 3 Time step: 7\n",
" Solving: Stress period: 3 Time step: 8\n",
" Solving: Stress period: 3 Time step: 9\n",
" Solving: Stress period: 3 Time step: 10\n",
" Solving: Stress period: 3 Time step: 11\n",
" Solving: Stress period: 3 Time step: 12\n",
" Solving: Stress period: 3 Time step: 13\n",
" Solving: Stress period: 3 Time step: 14\n",
" Solving: Stress period: 3 Time step: 15\n",
" Solving: Stress period: 3 Time step: 16\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 3 Time step: 17\n",
" Solving: Stress period: 3 Time step: 18\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 3 Time step: 19\n",
" Solving: Stress period: 3 Time step: 20\n",
" Solving: Stress period: 3 Time step: 21\n",
" Solving: Stress period: 3 Time step: 22\n",
" Solving: Stress period: 3 Time step: 23\n",
" Solving: Stress period: 3 Time step: 24\n",
" Solving: Stress period: 3 Time step: 25\n",
" Solving: Stress period: 3 Time step: 26\n",
" Solving: Stress period: 3 Time step: 27\n",
" Solving: Stress period: 3 Time step: 28\n",
" Solving: Stress period: 3 Time step: 29\n",
" Solving: Stress period: 3 Time step: 30\n",
" Solving: Stress period: 3 Time step: 31\n",
" Solving: Stress period: 3 Time step: 32\n",
" Solving: Stress period: 3 Time step: 33\n",
" Solving: Stress period: 3 Time step: 34\n",
" Solving: Stress period: 3 Time step: 35\n",
" Solving: Stress period: 3 Time step: 36\n",
" Solving: Stress period: 3 Time step: 37\n",
" Solving: Stress period: 3 Time step: 38\n",
" Solving: Stress period: 3 Time step: 39\n",
" Solving: Stress period: 3 Time step: 40\n",
" Solving: Stress period: 3 Time step: 41\n",
" Solving: Stress period: 3 Time step: 42\n",
" Solving: Stress period: 3 Time step: 43\n",
" Solving: Stress period: 3 Time step: 44\n",
" Solving: Stress period: 3 Time step: 45\n",
" Solving: Stress period: 3 Time step: 46\n",
" Solving: Stress period: 3 Time step: 47\n",
" Solving: Stress period: 3 Time step: 48\n",
" Solving: Stress period: 3 Time step: 49\n",
" Solving: Stress period: 3 Time step: 50\n",
" Solving: Stress period: 3 Time step: 51\n",
" Solving: Stress period: 3 Time step: 52\n",
" Solving: Stress period: 3 Time step: 53\n",
" Solving: Stress period: 3 Time step: 54\n",
" Solving: Stress period: 3 Time step: 55\n",
" Solving: Stress period: 3 Time step: 56\n",
" Solving: Stress period: 3 Time step: 57\n",
" Solving: Stress period: 3 Time step: 58\n",
" Solving: Stress period: 3 Time step: 59\n",
" Solving: Stress period: 3 Time step: 60\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 3 Time step: 61\n",
" Solving: Stress period: 3 Time step: 62\n",
" Solving: Stress period: 3 Time step: 63\n",
" Solving: Stress period: 3 Time step: 64\n",
" Solving: Stress period: 3 Time step: 65\n",
" Solving: Stress period: 3 Time step: 66\n",
" Solving: Stress period: 3 Time step: 67\n",
" Solving: Stress period: 3 Time step: 68\n",
" Solving: Stress period: 3 Time step: 69\n",
" Solving: Stress period: 3 Time step: 70\n",
" Solving: Stress period: 3 Time step: 71\n",
" Solving: Stress period: 3 Time step: 72\n",
" Solving: Stress period: 3 Time step: 73\n",
" Solving: Stress period: 3 Time step: 74\n",
" Solving: Stress period: 3 Time step: 75\n",
" Solving: Stress period: 3 Time step: 76\n",
" Solving: Stress period: 3 Time step: 77\n",
" Solving: Stress period: 3 Time step: 78\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 3 Time step: 79\n",
" Solving: Stress period: 3 Time step: 80\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 3 Time step: 81\n",
" Solving: Stress period: 3 Time step: 82\n",
" Solving: Stress period: 3 Time step: 83\n",
" Solving: Stress period: 3 Time step: 84\n",
" Solving: Stress period: 3 Time step: 85\n",
" Solving: Stress period: 3 Time step: 86\n",
" Solving: Stress period: 3 Time step: 87\n",
" Solving: Stress period: 3 Time step: 88\n",
" Solving: Stress period: 3 Time step: 89\n",
" Solving: Stress period: 3 Time step: 90\n",
" Solving: Stress period: 3 Time step: 91\n",
" Solving: Stress period: 3 Time step: 92\n",
" Solving: Stress period: 3 Time step: 93\n",
" Solving: Stress period: 3 Time step: 94\n",
" Solving: Stress period: 3 Time step: 95\n",
" Solving: Stress period: 3 Time step: 96\n",
" Solving: Stress period: 3 Time step: 97\n",
" Solving: Stress period: 3 Time step: 98\n",
" Solving: Stress period: 3 Time step: 99\n",
" Solving: Stress period: 3 Time step: 100\n",
" Solving: Stress period: 3 Time step: 101\n",
" Solving: Stress period: 3 Time step: 102\n",
" Solving: Stress period: 3 Time step: 103\n",
" Solving: Stress period: 3 Time step: 104\n",
" Solving: Stress period: 3 Time step: 105\n",
" Solving: Stress period: 3 Time step: 106\n",
" Solving: Stress period: 3 Time step: 107\n",
" Solving: Stress period: 3 Time step: 108\n",
" Solving: Stress period: 3 Time step: 109\n",
" Solving: Stress period: 3 Time step: 110\n",
" Solving: Stress period: 3 Time step: 111\n",
" Solving: Stress period: 3 Time step: 112\n",
" Solving: Stress period: 3 Time step: 113\n",
" Solving: Stress period: 3 Time step: 114\n",
" Solving: Stress period: 3 Time step: 115\n",
" Solving: Stress period: 3 Time step: 116\n",
" Solving: Stress period: 3 Time step: 117\n",
" Solving: Stress period: 3 Time step: 118\n",
" Solving: Stress period: 3 Time step: 119\n",
" Solving: Stress period: 3 Time step: 120\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 4 Time step: 1\n",
" Solving: Stress period: 4 Time step: 2\n",
" Solving: Stress period: 4 Time step: 3\n",
" Solving: Stress period: 4 Time step: 4\n",
" Solving: Stress period: 4 Time step: 5\n",
" Solving: Stress period: 4 Time step: 6\n",
" Solving: Stress period: 4 Time step: 7\n",
" Solving: Stress period: 4 Time step: 8\n",
" Solving: Stress period: 4 Time step: 9\n",
" Solving: Stress period: 4 Time step: 10\n",
" Solving: Stress period: 4 Time step: 11\n",
" Solving: Stress period: 4 Time step: 12\n",
" Solving: Stress period: 4 Time step: 13\n",
" Solving: Stress period: 4 Time step: 14\n",
" Solving: Stress period: 4 Time step: 15\n",
" Solving: Stress period: 4 Time step: 16\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 4 Time step: 17\n",
" Solving: Stress period: 4 Time step: 18\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 4 Time step: 19\n",
" Solving: Stress period: 4 Time step: 20\n",
" Solving: Stress period: 4 Time step: 21\n",
" Solving: Stress period: 4 Time step: 22\n",
" Solving: Stress period: 4 Time step: 23\n",
" Solving: Stress period: 4 Time step: 24\n",
" Solving: Stress period: 4 Time step: 25\n",
" Solving: Stress period: 4 Time step: 26\n",
" Solving: Stress period: 4 Time step: 27\n",
" Solving: Stress period: 4 Time step: 28\n",
" Solving: Stress period: 4 Time step: 29\n",
" Solving: Stress period: 4 Time step: 30\n",
" Solving: Stress period: 4 Time step: 31\n",
" Solving: Stress period: 4 Time step: 32\n",
" Solving: Stress period: 4 Time step: 33\n",
" Solving: Stress period: 4 Time step: 34\n",
" Solving: Stress period: 4 Time step: 35\n",
" Solving: Stress period: 4 Time step: 36\n",
" Solving: Stress period: 4 Time step: 37\n",
" Solving: Stress period: 4 Time step: 38\n",
" Solving: Stress period: 4 Time step: 39\n",
" Solving: Stress period: 4 Time step: 40\n",
" Solving: Stress period: 4 Time step: 41\n",
" Solving: Stress period: 4 Time step: 42\n",
" Solving: Stress period: 4 Time step: 43\n",
" Solving: Stress period: 4 Time step: 44\n",
" Solving: Stress period: 4 Time step: 45\n",
" Solving: Stress period: 4 Time step: 46\n",
" Solving: Stress period: 4 Time step: 47\n",
" Solving: Stress period: 4 Time step: 48\n",
" Solving: Stress period: 4 Time step: 49\n",
" Solving: Stress period: 4 Time step: 50\n",
" Solving: Stress period: 4 Time step: 51\n",
" Solving: Stress period: 4 Time step: 52\n",
" Solving: Stress period: 4 Time step: 53\n",
" Solving: Stress period: 4 Time step: 54\n",
" Solving: Stress period: 4 Time step: 55\n",
" Solving: Stress period: 4 Time step: 56\n",
" Solving: Stress period: 4 Time step: 57\n",
" Solving: Stress period: 4 Time step: 58\n",
" Solving: Stress period: 4 Time step: 59\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 4 Time step: 60\n",
" Solving: Stress period: 4 Time step: 61\n",
" Solving: Stress period: 4 Time step: 62\n",
" Solving: Stress period: 4 Time step: 63\n",
" Solving: Stress period: 4 Time step: 64\n",
" Solving: Stress period: 4 Time step: 65\n",
" Solving: Stress period: 4 Time step: 66\n",
" Solving: Stress period: 4 Time step: 67\n",
" Solving: Stress period: 4 Time step: 68\n",
" Solving: Stress period: 4 Time step: 69\n",
" Solving: Stress period: 4 Time step: 70\n",
" Solving: Stress period: 4 Time step: 71\n",
" Solving: Stress period: 4 Time step: 72\n",
" Solving: Stress period: 4 Time step: 73\n",
" Solving: Stress period: 4 Time step: 74\n",
" Solving: Stress period: 4 Time step: 75\n",
" Solving: Stress period: 4 Time step: 76\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 4 Time step: 77\n",
" Solving: Stress period: 4 Time step: 78\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 4 Time step: 79\n",
" Solving: Stress period: 4 Time step: 80\n",
" Solving: Stress period: 4 Time step: 81\n",
" Solving: Stress period: 4 Time step: 82\n",
" Solving: Stress period: 4 Time step: 83\n",
" Solving: Stress period: 4 Time step: 84\n",
" Solving: Stress period: 4 Time step: 85\n",
" Solving: Stress period: 4 Time step: 86\n",
" Solving: Stress period: 4 Time step: 87\n",
" Solving: Stress period: 4 Time step: 88\n",
" Solving: Stress period: 4 Time step: 89\n",
" Solving: Stress period: 4 Time step: 90\n",
" Solving: Stress period: 4 Time step: 91\n",
" Solving: Stress period: 4 Time step: 92\n",
" Solving: Stress period: 4 Time step: 93\n",
" Solving: Stress period: 4 Time step: 94\n",
" Solving: Stress period: 4 Time step: 95\n",
" Solving: Stress period: 4 Time step: 96\n",
" Solving: Stress period: 4 Time step: 97\n",
" Solving: Stress period: 4 Time step: 98\n",
" Solving: Stress period: 4 Time step: 99\n",
" Solving: Stress period: 4 Time step: 100\n",
" Solving: Stress period: 4 Time step: 101\n",
" Solving: Stress period: 4 Time step: 102\n",
" Solving: Stress period: 4 Time step: 103\n",
" Solving: Stress period: 4 Time step: 104\n",
" Solving: Stress period: 4 Time step: 105\n",
" Solving: Stress period: 4 Time step: 106\n",
" Solving: Stress period: 4 Time step: 107\n",
" Solving: Stress period: 4 Time step: 108\n",
" Solving: Stress period: 4 Time step: 109\n",
" Solving: Stress period: 4 Time step: 110\n",
" Solving: Stress period: 4 Time step: 111\n",
" Solving: Stress period: 4 Time step: 112\n",
" Solving: Stress period: 4 Time step: 113\n",
" Solving: Stress period: 4 Time step: 114\n",
" Solving: Stress period: 4 Time step: 115\n",
" Solving: Stress period: 4 Time step: 116\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Solving: Stress period: 4 Time step: 117\n",
" Solving: Stress period: 4 Time step: 118\n",
" Solving: Stress period: 4 Time step: 119\n",
" Solving: Stress period: 4 Time step: 120\n",
" \n",
" Run end date and time (yyyy/mm/dd hh:mm:ss): 2021/02/18 11:32:49\n",
" Elapsed run time: 1.398 Seconds\n",
" \n",
"\n",
"WARNING REPORT:\n",
"\n",
" 1. NONLINEAR BLOCK VARIABLE 'OUTER_HCLOSE' IN FILE 'advgw_tidal.ims' WAS\n",
" DEPRECATED IN VERSION 6.1.1. SETTING OUTER_DVCLOSE TO OUTER_HCLOSE VALUE.\n",
" 2. LINEAR BLOCK VARIABLE 'INNER_HCLOSE' IN FILE 'advgw_tidal.ims' WAS\n",
" DEPRECATED IN VERSION 6.1.1. SETTING INNER_DVCLOSE TO INNER_HCLOSE VALUE.\n",
" Normal termination of simulation.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Success is: True\n"
]
}
],
"source": [
"# Run the simulation\n",
"success, buff = sim.run_simulation()\n",
"print('\\nSuccess is: ', success)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Post-Process Head Results\n",
"\n",
"Post-processing MODFLOW 6 results is still a work in progress. There aren't any Flopy plotting functions built in yet, like they are for other MODFLOW versions. So we need to plot the results using general Flopy capabilities. We can also use some of the Flopy ModelMap capabilities for MODFLOW 6, but in order to do so, we need to manually create a SpatialReference object, that is needed for the plotting. Examples of both approaches are shown below.\n",
"\n",
"First, a link to the heads file is created with `HeadFile`. The link can then be accessed with the `get_data` function, by specifying, in this case, the step number and period number for which we want to retrieve data. A three-dimensional array is returned of size `nlay, nrow, ncol`. Matplotlib contouring functions are used to make contours of the layers or a cross-section."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"# Read the binary head file and plot the results\n",
"# We can use the existing Flopy HeadFile class because\n",
"# the format of the headfile for MODFLOW 6 is the same\n",
"# as for previous MODFLOW verions\n",
"headfile = '{}.hds'.format(model_name)\n",
"fname = os.path.join(workspace, headfile)\n",
"hds = flopy.utils.binaryfile.HeadFile(fname)\n",
"h = hds.get_data()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# We can also use the Flopy PlotMapView capabilities for MODFLOW 6\n",
"fig = plt.figure(figsize=(10, 10))\n",
"ax = fig.add_subplot(1, 1, 1, aspect='equal')\n",
"\n",
"# Next we create an instance of the ModelMap class\n",
"modelmap = flopy.plot.PlotMapView(model=gwf, ax=ax)\n",
"\n",
"# Then we can use the plot_grid() method to draw the grid\n",
"# The return value for this function is a matplotlib LineCollection object,\n",
"# which could be manipulated (or used) later if necessary.\n",
"#quadmesh = modelmap.plot_ibound(ibound=ibd)\n",
"linecollection = modelmap.plot_grid()\n",
"contours = modelmap.contour_array(h[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Post-Process Flows\n",
"\n",
"MODFLOW 6 writes a binary grid file, which contains information about the model grid. MODFLOW 6 also writes a binary budget file, which contains flow information. Both of these files can be read using Flopy capabilities. The MfGrdFile class in Flopy can be used to read the binary grid file. The CellBudgetFile class in Flopy can be used to read the binary budget file written by MODFLOW 6."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OrderedDict([('NCELLS', 450),\n",
" ('NLAY', 3),\n",
" ('NROW', 15),\n",
" ('NCOL', 10),\n",
" ('NJA', 2700),\n",
" ('XORIGIN', 0.0),\n",
" ('YORIGIN', 0.0),\n",
" ('ANGROT', 0.0),\n",
" ('DELR',\n",
" array([500., 500., 500., 500., 500., 500., 500., 500., 500., 500.])),\n",
" ('DELC',\n",
" array([500., 500., 500., 500., 500., 500., 500., 500., 500., 500., 500.,\n",
" 500., 500., 500., 500.])),\n",
" ('TOP',\n",
" array([[50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.],\n",
" [50., 50., 50., 50., 50., 50., 50., 50., 50., 50.]])),\n",
" ('BOTM',\n",
" array([[[ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.],\n",
" [ 5., 5., 5., 5., 5., 5., 5., 5., 5.,\n",
" 5.]],\n",
" \n",
" [[ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.],\n",
" [ -10., -10., -10., -10., -10., -10., -10., -10., -10.,\n",
" -10.]],\n",
" \n",
" [[-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.],\n",
" [-100., -100., -100., -100., -100., -100., -100., -100., -100.,\n",
" -100.]]])),\n",
" ('IA',\n",
" array([ 1, 5, 10, 15, 20, 25, 30, 35, 40, 45, 49,\n",
" 54, 60, 66, 72, 78, 84, 90, 96, 102, 107, 112,\n",
" 118, 124, 130, 136, 142, 148, 154, 160, 165, 170, 176,\n",
" 182, 188, 194, 200, 206, 212, 218, 223, 228, 234, 240,\n",
" 246, 252, 258, 264, 270, 276, 281, 286, 292, 298, 304,\n",
" 310, 316, 322, 328, 334, 339, 344, 350, 356, 362, 368,\n",
" 374, 380, 386, 392, 397, 402, 408, 414, 420, 426, 432,\n",
" 438, 444, 450, 455, 460, 466, 472, 478, 484, 490, 496,\n",
" 502, 508, 513, 518, 524, 530, 536, 542, 548, 554, 560,\n",
" 566, 571, 576, 582, 588, 594, 600, 606, 612, 618, 624,\n",
" 629, 634, 640, 646, 652, 658, 664, 670, 676, 682, 687,\n",
" 692, 698, 704, 710, 716, 722, 728, 734, 740, 745, 750,\n",
" 756, 762, 768, 774, 780, 786, 792, 798, 803, 807, 812,\n",
" 817, 822, 827, 832, 837, 842, 847, 851, 856, 862, 868,\n",
" 874, 880, 886, 892, 898, 904, 909, 915, 922, 929, 936,\n",
" 943, 950, 957, 964, 971, 977, 983, 990, 997, 1004, 1011,\n",
" 1018, 1025, 1032, 1039, 1045, 1051, 1058, 1065, 1072, 1079, 1086,\n",
" 1093, 1100, 1107, 1113, 1119, 1126, 1133, 1140, 1147, 1154, 1161,\n",
" 1168, 1175, 1181, 1187, 1194, 1201, 1208, 1215, 1222, 1229, 1236,\n",
" 1243, 1249, 1255, 1262, 1269, 1276, 1283, 1290, 1297, 1304, 1311,\n",
" 1317, 1323, 1330, 1337, 1344, 1351, 1358, 1365, 1372, 1379, 1385,\n",
" 1391, 1398, 1405, 1412, 1419, 1426, 1433, 1440, 1447, 1453, 1459,\n",
" 1466, 1473, 1480, 1487, 1494, 1501, 1508, 1515, 1521, 1527, 1534,\n",
" 1541, 1548, 1555, 1562, 1569, 1576, 1583, 1589, 1595, 1602, 1609,\n",
" 1616, 1623, 1630, 1637, 1644, 1651, 1657, 1663, 1670, 1677, 1684,\n",
" 1691, 1698, 1705, 1712, 1719, 1725, 1731, 1738, 1745, 1752, 1759,\n",
" 1766, 1773, 1780, 1787, 1793, 1798, 1804, 1810, 1816, 1822, 1828,\n",
" 1834, 1840, 1846, 1851, 1855, 1860, 1865, 1870, 1875, 1880, 1885,\n",
" 1890, 1895, 1899, 1904, 1910, 1916, 1922, 1928, 1934, 1940, 1946,\n",
" 1952, 1957, 1962, 1968, 1974, 1980, 1986, 1992, 1998, 2004, 2010,\n",
" 2015, 2020, 2026, 2032, 2038, 2044, 2050, 2056, 2062, 2068, 2073,\n",
" 2078, 2084, 2090, 2096, 2102, 2108, 2114, 2120, 2126, 2131, 2136,\n",
" 2142, 2148, 2154, 2160, 2166, 2172, 2178, 2184, 2189, 2194, 2200,\n",
" 2206, 2212, 2218, 2224, 2230, 2236, 2242, 2247, 2252, 2258, 2264,\n",
" 2270, 2276, 2282, 2288, 2294, 2300, 2305, 2310, 2316, 2322, 2328,\n",
" 2334, 2340, 2346, 2352, 2358, 2363, 2368, 2374, 2380, 2386, 2392,\n",
" 2398, 2404, 2410, 2416, 2421, 2426, 2432, 2438, 2444, 2450, 2456,\n",
" 2462, 2468, 2474, 2479, 2484, 2490, 2496, 2502, 2508, 2514, 2520,\n",
" 2526, 2532, 2537, 2542, 2548, 2554, 2560, 2566, 2572, 2578, 2584,\n",
" 2590, 2595, 2600, 2606, 2612, 2618, 2624, 2630, 2636, 2642, 2648,\n",
" 2653, 2657, 2662, 2667, 2672, 2677, 2682, 2687, 2692, 2697, 2701],\n",
" dtype=int32)),\n",
" ('JA', array([ 1, 2, 11, ..., 300, 440, 449], dtype=int32)),\n",
" ('IDOMAIN',\n",
" array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)),\n",
" ('ICELLTYPE',\n",
" array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32))])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# read the binary grid file\n",
"fname = os.path.join(workspace, '{}.dis.grb'.format(model_name))\n",
"bgf = flopy.utils.mfgrdfile.MfGrdFile(fname)\n",
"\n",
"# data read from the binary grid file is stored in a dictionary\n",
"bgf._datadict"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# Information from the binary grid file is easily retrieved\n",
"ia = bgf._datadict['IA'] - 1\n",
"ja = bgf._datadict['JA'] - 1"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"# read the cell budget file\n",
"fname = os.path.join(workspace, '{}.cbb'.format(model_name))\n",
"cbb = flopy.utils.CellBudgetFile(fname, precision='double')\n",
"#cbb.list_records()\n",
"\n",
"flowja = cbb.get_data(text='FLOW-JA-FACE')[0][0, 0, :]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Printing flows for cell 413\n",
"Cell 413 flow with cell 263 is 251.46262091207623\n",
"Cell 413 flow with cell 403 is 0.7176346498656017\n",
"Cell 413 flow with cell 412 is 439.8629968543804\n",
"Cell 413 flow with cell 414 is -693.4212447574185\n",
"Cell 413 flow with cell 423 is 1.3779378787739915\n"
]
}
],
"source": [
"# By having the ia and ja arrays and the flow-ja-face we can look at\n",
"# the flows for any cell and process them in the follow manner.\n",
"k = 2; i = 7; j = 7\n",
"celln = k * nrow * ncol + i * nrow + j\n",
"print('Printing flows for cell {}'.format(celln + 1))\n",
"for ipos in range(ia[celln] + 1, ia[celln + 1]):\n",
" cellm = ja[ipos] # change from one-based to zero-based\n",
" print('Cell {} flow with cell {} is {}'.format(celln + 1, cellm + 1, flowja[ipos]))"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x123fd6970>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fname = 'head-hydrographs.csv'\n",
"fname = os.path.join(workspace, fname)\n",
"csv = np.genfromtxt(fname, delimiter=',', dtype=None, names=True)\n",
"for name in csv.dtype.names[1:]:\n",
" plt.plot(csv['time'], csv[name], label=name)\n",
"plt.legend()"
]
}
],
"metadata": {
"anaconda-cloud": {},
"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.8.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}