1312 lines
49 KiB
Plaintext
1312 lines
49 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# FloPy\n",
|
|
"\n",
|
|
"### Quick demo on how FloPy handles external files for arrays"
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"flopy version: 3.3.3\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import os \n",
|
|
"import sys\n",
|
|
"import shutil\n",
|
|
"import numpy as np\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('flopy version: {}'.format(flopy.__version__))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# make a model\n",
|
|
"nlay,nrow,ncol = 10,20,5\n",
|
|
"model_ws = os.path.join(\"data\",\"external_demo\")\n",
|
|
"\n",
|
|
"if os.path.exists(model_ws):\n",
|
|
" shutil.rmtree(model_ws)\n",
|
|
"\n",
|
|
"# the place for all of your hand made and costly model inputs \n",
|
|
"array_dir = os.path.join(\"data\",\"array_dir\")\n",
|
|
"if os.path.exists(array_dir):\n",
|
|
" shutil.rmtree(array_dir) \n",
|
|
"os.mkdir(array_dir) \n",
|
|
" \n",
|
|
"ml = flopy.modflow.Modflow(model_ws=model_ws)\n",
|
|
"dis = flopy.modflow.ModflowDis(ml,nlay=nlay,nrow=nrow,ncol=ncol,steady=False,nper=2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"make an ``hk`` and ```vka``` array. We'll save ```hk``` to files - pretent that you spent months making this important model property. Then make an ```lpf```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"hk = np.zeros((nlay,nrow,ncol)) + 5.0\n",
|
|
"vka = np.zeros_like(hk)\n",
|
|
"fnames = []\n",
|
|
"for i,h in enumerate(hk):\n",
|
|
" fname = os.path.join(array_dir,\"hk_{0}.ref\".format(i+1))\n",
|
|
" fnames.append(fname)\n",
|
|
" np.savetxt(fname,h)\n",
|
|
" vka[i] = i+1\n",
|
|
"lpf = flopy.modflow.ModflowLpf(ml,hk=fnames,vka=vka)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let's also have some recharge with mixed args as well. Pretend the recharge in the second stress period is very important and precise"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"warmup_recharge = np.ones((nrow,ncol))\n",
|
|
"important_recharge = np.random.random((nrow,ncol))\n",
|
|
"fname = os.path.join(array_dir,\"important_recharge.ref\")\n",
|
|
"np.savetxt(fname,important_recharge)\n",
|
|
"rch = flopy.modflow.ModflowRch(ml,rech={0:warmup_recharge,1:fname})"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"ml.write_input()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let's look at the files that were created"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"model_ws: data/external_demo\n",
|
|
"important_recharge.ref\n",
|
|
"hk_9.ref\n",
|
|
"hk_8.ref\n",
|
|
"hk_6.ref\n",
|
|
"modflowtest.rch\n",
|
|
"hk_7.ref\n",
|
|
"hk_5.ref\n",
|
|
"hk_4.ref\n",
|
|
"hk_1.ref\n",
|
|
"hk_3.ref\n",
|
|
"hk_10.ref\n",
|
|
"hk_2.ref\n",
|
|
"modflowtest.dis\n",
|
|
"modflowtest.nam\n",
|
|
"modflowtest.lpf\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(\"model_ws:\",ml.model_ws)\n",
|
|
"print('\\n'.join(os.listdir(ml.model_ws)))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We see that a copy of the ``hk`` files as well as the important recharge file were made in the ```model_ws```.Let's looks at the ```lpf``` file"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# LPF package for MODFLOW-2005, generated by Flopy.\\n',\n",
|
|
" ' 0 -1E+30 0 \\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" 'OPEN/CLOSE hk_1.ref 1 (FREE) -1 hk layer 1 \\n',\n",
|
|
" 'INTERNAL 1 (5E15.6) -1 #vka1 \\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n']"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"open(os.path.join(ml.model_ws,ml.name+\".lpf\"),'r').readlines()[:20]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We see that the ```open/close``` approach was used - this is because ``ml.array_free_format`` is ``True``. Notice that ```vka``` is written internally"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"True"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ml.array_free_format"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now change ```model_ws```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"data/external_demo\n",
|
|
"\n",
|
|
"creating model workspace...\n",
|
|
" data/new_external_demo_dir\n",
|
|
"\n",
|
|
"changing model workspace...\n",
|
|
" data/new_external_demo_dir\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(ml.model_ws)\n",
|
|
"ml.model_ws = os.path.join(\"data\",\"new_external_demo_dir\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now when we call ``write_input()``, a copy of external files are made in the current ```model_ws```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"ml.write_input()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"important_recharge.ref\n",
|
|
"hk_9.ref\n",
|
|
"hk_8.ref\n",
|
|
"hk_6.ref\n",
|
|
"hk_7.ref\n",
|
|
"hk_5.ref\n",
|
|
"hk_4.ref\n",
|
|
"hk_1.ref\n",
|
|
"hk_3.ref\n",
|
|
"hk_10.ref\n",
|
|
"hk_2.ref\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# list the files in model_ws that have 'hk' in the name\n",
|
|
"print('\\n'.join([name for name in os.listdir(ml.model_ws) if \"hk\" in name or \"impor\" in name]))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now we see that the external files were copied to the new ```model_ws```\n",
|
|
"\n",
|
|
"### Using ```external_path```\n",
|
|
"\n",
|
|
"It is sometimes useful when first building a model to write the model arrays as external files for processing and parameter estimation. The ```model``` attribute ```external_path``` triggers this behavior"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# make a model - same code as before except for the model constructor\n",
|
|
"nlay,nrow,ncol = 10,20,5\n",
|
|
"model_ws = os.path.join(\"data\",\"external_demo\")\n",
|
|
"\n",
|
|
"if os.path.exists(model_ws):\n",
|
|
" shutil.rmtree(model_ws)\n",
|
|
"\n",
|
|
"# the place for all of your hand made and costly model inputs \n",
|
|
"array_dir = os.path.join(\"data\",\"array_dir\")\n",
|
|
"if os.path.exists(array_dir):\n",
|
|
" shutil.rmtree(array_dir) \n",
|
|
"os.mkdir(array_dir) \n",
|
|
"\n",
|
|
"# lets make an external path relative to the model_ws\n",
|
|
"ml = flopy.modflow.Modflow(model_ws=model_ws, external_path=\"ref\")\n",
|
|
"dis = flopy.modflow.ModflowDis(ml,nlay=nlay,nrow=nrow,ncol=ncol,steady=False,nper=2)\n",
|
|
"\n",
|
|
"hk = np.zeros((nlay,nrow,ncol)) + 5.0\n",
|
|
"vka = np.zeros_like(hk)\n",
|
|
"fnames = []\n",
|
|
"for i,h in enumerate(hk):\n",
|
|
" fname = os.path.join(array_dir,\"hk_{0}.ref\".format(i+1))\n",
|
|
" fnames.append(fname)\n",
|
|
" np.savetxt(fname,h)\n",
|
|
" vka[i] = i+1\n",
|
|
"lpf = flopy.modflow.ModflowLpf(ml,hk=fnames,vka=vka) \n",
|
|
"\n",
|
|
"warmup_recharge = np.ones((nrow,ncol))\n",
|
|
"important_recharge = np.random.random((nrow,ncol))\n",
|
|
"fname = os.path.join(array_dir,\"important_recharge.ref\")\n",
|
|
"np.savetxt(fname,important_recharge)\n",
|
|
"rch = flopy.modflow.ModflowRch(ml,rech={0:warmup_recharge,1:fname})"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We can see that the model constructor created both ```model_ws``` and ```external_path``` which is _relative to the model_ws_"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['ref']"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"os.listdir(ml.model_ws)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, when we call ```write_input()```, any array properties that were specified as ```np.ndarray``` will be written externally. If a scalar was passed as the argument, the value remains internal to the model input files"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:delr: resetting 'how' to external\n",
|
|
"Util2d:delc: resetting 'how' to external\n",
|
|
"Util2d:model_top: resetting 'how' to external\n",
|
|
"Util2d:botm layer 1: resetting 'how' to external\n",
|
|
"Util2d:botm layer 2: resetting 'how' to external\n",
|
|
"Util2d:botm layer 3: resetting 'how' to external\n",
|
|
"Util2d:botm layer 4: resetting 'how' to external\n",
|
|
"Util2d:botm layer 5: resetting 'how' to external\n",
|
|
"Util2d:botm layer 6: resetting 'how' to external\n",
|
|
"Util2d:botm layer 7: resetting 'how' to external\n",
|
|
"Util2d:botm layer 8: resetting 'how' to external\n",
|
|
"Util2d:botm layer 9: resetting 'how' to external\n",
|
|
"Util2d:botm layer 10: resetting 'how' to external\n",
|
|
"Util2d:ss layer 1: resetting 'how' to external\n",
|
|
"Util2d:ss layer 2: resetting 'how' to external\n",
|
|
"Util2d:ss layer 3: resetting 'how' to external\n",
|
|
"Util2d:ss layer 4: resetting 'how' to external\n",
|
|
"Util2d:ss layer 5: resetting 'how' to external\n",
|
|
"Util2d:ss layer 6: resetting 'how' to external\n",
|
|
"Util2d:ss layer 7: resetting 'how' to external\n",
|
|
"Util2d:ss layer 8: resetting 'how' to external\n",
|
|
"Util2d:ss layer 9: resetting 'how' to external\n",
|
|
"Util2d:ss layer 10: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# LPF package for MODFLOW-2005, generated by Flopy.\\n',\n",
|
|
" ' 0 -1E+30 0 \\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_1.ref 1 (FREE) -1 hk layer 1 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka1.ref 1 (5E15.6) -1 vka1 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_1.ref 1 (5E15.6) -1 ss layer 1 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_2.ref 1 (FREE) -1 hk layer 2 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka2.ref 1 (5E15.6) -1 vka2 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_2.ref 1 (5E15.6) -1 ss layer 2 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_3.ref 1 (FREE) -1 hk layer 3 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka3.ref 1 (5E15.6) -1 vka3 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_3.ref 1 (5E15.6) -1 ss layer 3 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_4.ref 1 (FREE) -1 hk layer 4 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka4.ref 1 (5E15.6) -1 vka4 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_4.ref 1 (5E15.6) -1 ss layer 4 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_5.ref 1 (FREE) -1 hk layer 5 \\n']"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ml.write_input()\n",
|
|
"open(os.path.join(ml.model_ws,ml.name+\".lpf\"),'r').readlines()[:20]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, ```vka``` was also written externally, but not the storage properties.Let's verify the contents of the external path directory. We see our hard-fought ```hk``` and ```important_recharge``` arrays, as well as the ``vka`` arrays."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:delr: resetting 'how' to external\n",
|
|
"Util2d:delc: resetting 'how' to external\n",
|
|
"Util2d:model_top: resetting 'how' to external\n",
|
|
"Util2d:botm layer 1: resetting 'how' to external\n",
|
|
"Util2d:botm layer 2: resetting 'how' to external\n",
|
|
"Util2d:botm layer 3: resetting 'how' to external\n",
|
|
"Util2d:botm layer 4: resetting 'how' to external\n",
|
|
"Util2d:botm layer 5: resetting 'how' to external\n",
|
|
"Util2d:botm layer 6: resetting 'how' to external\n",
|
|
"Util2d:botm layer 7: resetting 'how' to external\n",
|
|
"Util2d:botm layer 8: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:botm layer 9: resetting 'how' to external\n",
|
|
"Util2d:botm layer 10: resetting 'how' to external\n",
|
|
"Util2d:ss layer 1: resetting 'how' to external\n",
|
|
"Util2d:ss layer 2: resetting 'how' to external\n",
|
|
"Util2d:ss layer 3: resetting 'how' to external\n",
|
|
"Util2d:ss layer 4: resetting 'how' to external\n",
|
|
"Util2d:ss layer 5: resetting 'how' to external\n",
|
|
"Util2d:ss layer 6: resetting 'how' to external\n",
|
|
"Util2d:ss layer 7: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:ss layer 8: resetting 'how' to external\n",
|
|
"Util2d:ss layer 9: resetting 'how' to external\n",
|
|
"Util2d:ss layer 10: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# LPF package for MODFLOW-2005, generated by Flopy.\\n',\n",
|
|
" ' 0 -1E+30 0 \\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_1.ref 1 (FREE) -1 hk layer 1 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka1.ref 1 (5E15.6) -1 vka1 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_1.ref 1 (5E15.6) -1 ss layer 1 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_2.ref 1 (FREE) -1 hk layer 2 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka2.ref 1 (5E15.6) -1 vka2 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_2.ref 1 (5E15.6) -1 ss layer 2 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_3.ref 1 (FREE) -1 hk layer 3 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka3.ref 1 (5E15.6) -1 vka3 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_3.ref 1 (5E15.6) -1 ss layer 3 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_4.ref 1 (FREE) -1 hk layer 4 \\n',\n",
|
|
" 'OPEN/CLOSE ref/vka4.ref 1 (5E15.6) -1 vka4 \\n',\n",
|
|
" 'OPEN/CLOSE ref/ss_layer_4.ref 1 (5E15.6) -1 ss layer 4 \\n',\n",
|
|
" 'OPEN/CLOSE ref/hk_5.ref 1 (FREE) -1 hk layer 5 \\n']"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ml.lpf.ss.how = \"internal\"\n",
|
|
"ml.write_input()\n",
|
|
"open(os.path.join(ml.model_ws,ml.name+\".lpf\"),'r').readlines()[:20]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"ss_layer_1.ref\n",
|
|
"ss_layer_3.ref\n",
|
|
"ss_layer_2.ref\n",
|
|
"ss_layer_6.ref\n",
|
|
"ss_layer_10.ref\n",
|
|
"ss_layer_7.ref\n",
|
|
"ss_layer_5.ref\n",
|
|
"important_recharge.ref\n",
|
|
"ss_layer_4.ref\n",
|
|
"botm_layer_8.ref\n",
|
|
"vka7.ref\n",
|
|
"vka6.ref\n",
|
|
"botm_layer_9.ref\n",
|
|
"vka4.ref\n",
|
|
"vka5.ref\n",
|
|
"hk_9.ref\n",
|
|
"vka1.ref\n",
|
|
"hk_8.ref\n",
|
|
"vka2.ref\n",
|
|
"vka3.ref\n",
|
|
"model_top.ref\n",
|
|
"hk_6.ref\n",
|
|
"botm_layer_1.ref\n",
|
|
"hk_7.ref\n",
|
|
"hk_5.ref\n",
|
|
"botm_layer_2.ref\n",
|
|
"botm_layer_3.ref\n",
|
|
"hk_4.ref\n",
|
|
"botm_layer_7.ref\n",
|
|
"vka8.ref\n",
|
|
"vka9.ref\n",
|
|
"hk_1.ref\n",
|
|
"botm_layer_6.ref\n",
|
|
"vka10.ref\n",
|
|
"botm_layer_4.ref\n",
|
|
"hk_3.ref\n",
|
|
"hk_10.ref\n",
|
|
"hk_2.ref\n",
|
|
"botm_layer_5.ref\n",
|
|
"ss_layer_9.ref\n",
|
|
"rech_0.ref\n",
|
|
"botm_layer_10.ref\n",
|
|
"delc.ref\n",
|
|
"ss_layer_8.ref\n",
|
|
"delr.ref\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print('\\n'.join(os.listdir(os.path.join(ml.model_ws,ml.external_path))))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Fixed format\n",
|
|
"\n",
|
|
"All of this behavior also works for fixed-format type models (really, really old models - I mean OLD!)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:delr: resetting 'how' to external\n",
|
|
"Util2d:delc: resetting 'how' to external\n",
|
|
"Util2d:model_top: resetting 'how' to external\n",
|
|
"Util2d:botm layer 1: resetting 'how' to external\n",
|
|
"Util2d:botm layer 2: resetting 'how' to external\n",
|
|
"Util2d:botm layer 3: resetting 'how' to external\n",
|
|
"Util2d:botm layer 4: resetting 'how' to external\n",
|
|
"Util2d:botm layer 5: resetting 'how' to external\n",
|
|
"Util2d:botm layer 6: resetting 'how' to external\n",
|
|
"Util2d:botm layer 7: resetting 'how' to external\n",
|
|
"Util2d:botm layer 8: resetting 'how' to external\n",
|
|
"Util2d:botm layer 9: resetting 'how' to external\n",
|
|
"Util2d:botm layer 10: resetting 'how' to external\n",
|
|
"Util2d hk layer 1: can't be free format...resetting\n",
|
|
"Util2d:ss layer 1: resetting 'how' to external\n",
|
|
"Util2d hk layer 2: can't be free format...resetting\n",
|
|
"Util2d:ss layer 2: resetting 'how' to external\n",
|
|
"Util2d hk layer 3: can't be free format...resetting\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:ss layer 3: resetting 'how' to external\n",
|
|
"Util2d hk layer 4: can't be free format...resetting\n",
|
|
"Util2d:ss layer 4: resetting 'how' to external\n",
|
|
"Util2d hk layer 5: can't be free format...resetting\n",
|
|
"Util2d:ss layer 5: resetting 'how' to external\n",
|
|
"Util2d hk layer 6: can't be free format...resetting\n",
|
|
"Util2d:ss layer 6: resetting 'how' to external\n",
|
|
"Util2d hk layer 7: can't be free format...resetting\n",
|
|
"Util2d:ss layer 7: resetting 'how' to external\n",
|
|
"Util2d hk layer 8: can't be free format...resetting\n",
|
|
"Util2d:ss layer 8: resetting 'how' to external\n",
|
|
"Util2d hk layer 9: can't be free format...resetting\n",
|
|
"Util2d:ss layer 9: resetting 'how' to external\n",
|
|
"Util2d hk layer 10: can't be free format...resetting\n",
|
|
"Util2d:ss layer 10: resetting 'how' to external\n",
|
|
"Util2d rech_2: can't be free format...resetting\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# make a model - same code as before except for the model constructor\n",
|
|
"nlay,nrow,ncol = 10,20,5\n",
|
|
"model_ws = os.path.join(\"data\",\"external_demo\")\n",
|
|
"\n",
|
|
"if os.path.exists(model_ws):\n",
|
|
" shutil.rmtree(model_ws)\n",
|
|
"\n",
|
|
"# the place for all of your hand made and costly model inputs \n",
|
|
"array_dir = os.path.join(\"data\",\"array_dir\")\n",
|
|
"if os.path.exists(array_dir):\n",
|
|
" shutil.rmtree(array_dir) \n",
|
|
"os.mkdir(array_dir) \n",
|
|
"\n",
|
|
"# lets make an external path relative to the model_ws\n",
|
|
"ml = flopy.modflow.Modflow(model_ws=model_ws, external_path=\"ref\")\n",
|
|
"\n",
|
|
"# explicitly reset the free_format flag BEFORE ANY PACKAGES ARE MADE!!!\n",
|
|
"ml.array_free_format = False\n",
|
|
"\n",
|
|
"dis = flopy.modflow.ModflowDis(ml,nlay=nlay,nrow=nrow,ncol=ncol,steady=False,nper=2)\n",
|
|
"\n",
|
|
"hk = np.zeros((nlay,nrow,ncol)) + 5.0\n",
|
|
"vka = np.zeros_like(hk)\n",
|
|
"fnames = []\n",
|
|
"for i,h in enumerate(hk):\n",
|
|
" fname = os.path.join(array_dir,\"hk_{0}.ref\".format(i+1))\n",
|
|
" fnames.append(fname)\n",
|
|
" np.savetxt(fname,h)\n",
|
|
" vka[i] = i+1\n",
|
|
"lpf = flopy.modflow.ModflowLpf(ml,hk=fnames,vka=vka)\n",
|
|
"ml.lpf.ss.how = \"internal\"\n",
|
|
"warmup_recharge = np.ones((nrow,ncol))\n",
|
|
"important_recharge = np.random.random((nrow,ncol))\n",
|
|
"fname = os.path.join(array_dir,\"important_recharge.ref\")\n",
|
|
"np.savetxt(fname,important_recharge)\n",
|
|
"rch = flopy.modflow.ModflowRch(ml,rech={0:warmup_recharge,1:fname})\n",
|
|
"\n",
|
|
"ml.write_input()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We see that now the external arrays are being handled through the name file. Let's look at the name file"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# Name file for MODFLOW-2005, generated by Flopy version 3.3.3.\\n',\n",
|
|
" '#xll:0.0; yll:0.0; rotation:0.0; units:meters; lenuni:2; start_datetime:1-1-1970\\n',\n",
|
|
" 'LIST 2 modflowtest.list\\n',\n",
|
|
" 'DIS 11 modflowtest.dis\\n',\n",
|
|
" 'LPF 15 modflowtest.lpf\\n',\n",
|
|
" 'RCH 19 modflowtest.rch\\n',\n",
|
|
" 'DATA 1001 ref/delr.ref\\n',\n",
|
|
" 'DATA 1002 ref/delc.ref\\n',\n",
|
|
" 'DATA 1003 ref/model_top.ref\\n',\n",
|
|
" 'DATA 1004 ref/botm_layer_1.ref\\n',\n",
|
|
" 'DATA 1005 ref/botm_layer_2.ref\\n',\n",
|
|
" 'DATA 1006 ref/botm_layer_3.ref\\n',\n",
|
|
" 'DATA 1007 ref/botm_layer_4.ref\\n',\n",
|
|
" 'DATA 1008 ref/botm_layer_5.ref\\n',\n",
|
|
" 'DATA 1009 ref/botm_layer_6.ref\\n',\n",
|
|
" 'DATA 1010 ref/botm_layer_7.ref\\n',\n",
|
|
" 'DATA 1011 ref/botm_layer_8.ref\\n',\n",
|
|
" 'DATA 1012 ref/botm_layer_9.ref\\n',\n",
|
|
" 'DATA 1013 ref/botm_layer_10.ref\\n',\n",
|
|
" 'DATA 1014 ref/hk_1.ref\\n',\n",
|
|
" 'DATA 1015 ref/vka1.ref\\n',\n",
|
|
" 'DATA 1016 ref/ss_layer_1.ref\\n',\n",
|
|
" 'DATA 1017 ref/hk_2.ref\\n',\n",
|
|
" 'DATA 1018 ref/vka2.ref\\n',\n",
|
|
" 'DATA 1019 ref/ss_layer_2.ref\\n',\n",
|
|
" 'DATA 1020 ref/hk_3.ref\\n',\n",
|
|
" 'DATA 1021 ref/vka3.ref\\n',\n",
|
|
" 'DATA 1022 ref/ss_layer_3.ref\\n',\n",
|
|
" 'DATA 1023 ref/hk_4.ref\\n',\n",
|
|
" 'DATA 1024 ref/vka4.ref\\n',\n",
|
|
" 'DATA 1025 ref/ss_layer_4.ref\\n',\n",
|
|
" 'DATA 1026 ref/hk_5.ref\\n',\n",
|
|
" 'DATA 1027 ref/vka5.ref\\n',\n",
|
|
" 'DATA 1028 ref/ss_layer_5.ref\\n',\n",
|
|
" 'DATA 1029 ref/hk_6.ref\\n',\n",
|
|
" 'DATA 1030 ref/vka6.ref\\n',\n",
|
|
" 'DATA 1031 ref/ss_layer_6.ref\\n',\n",
|
|
" 'DATA 1032 ref/hk_7.ref\\n',\n",
|
|
" 'DATA 1033 ref/vka7.ref\\n',\n",
|
|
" 'DATA 1034 ref/ss_layer_7.ref\\n',\n",
|
|
" 'DATA 1035 ref/hk_8.ref\\n',\n",
|
|
" 'DATA 1036 ref/vka8.ref\\n',\n",
|
|
" 'DATA 1037 ref/ss_layer_8.ref\\n',\n",
|
|
" 'DATA 1038 ref/hk_9.ref\\n',\n",
|
|
" 'DATA 1039 ref/vka9.ref\\n',\n",
|
|
" 'DATA 1040 ref/ss_layer_9.ref\\n',\n",
|
|
" 'DATA 1041 ref/hk_10.ref\\n',\n",
|
|
" 'DATA 1042 ref/vka10.ref\\n',\n",
|
|
" 'DATA 1043 ref/ss_layer_10.ref\\n',\n",
|
|
" 'DATA 1044 ref/rech_0.ref\\n',\n",
|
|
" 'DATA 1045 ref/important_recharge.ref\\n']"
|
|
]
|
|
},
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"open(os.path.join(ml.model_ws,ml.name+\".nam\"),'r').readlines()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### \"free\" and \"binary\" format"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:delr: resetting 'how' to external\n",
|
|
"Util2d:delc: resetting 'how' to external\n",
|
|
"Util2d:model_top: resetting 'how' to external\n",
|
|
"Util2d:botm layer 1: resetting 'how' to external\n",
|
|
"Util2d:botm layer 2: resetting 'how' to external\n",
|
|
"Util2d:botm layer 3: resetting 'how' to external\n",
|
|
"Util2d:botm layer 4: resetting 'how' to external\n",
|
|
"Util2d:botm layer 5: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:botm layer 6: resetting 'how' to external\n",
|
|
"Util2d:botm layer 7: resetting 'how' to external\n",
|
|
"Util2d:botm layer 8: resetting 'how' to external\n",
|
|
"Util2d:botm layer 9: resetting 'how' to external\n",
|
|
"Util2d:botm layer 10: resetting 'how' to external\n",
|
|
"Util2d:ss layer 1: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:ss layer 2: resetting 'how' to external\n",
|
|
"Util2d:ss layer 3: resetting 'how' to external\n",
|
|
"Util2d:ss layer 4: resetting 'how' to external\n",
|
|
"Util2d:ss layer 5: resetting 'how' to external\n",
|
|
"Util2d:ss layer 6: resetting 'how' to external\n",
|
|
"Util2d:ss layer 7: resetting 'how' to external\n",
|
|
"Util2d:ss layer 8: resetting 'how' to external\n",
|
|
"Util2d:ss layer 9: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:ss layer 10: resetting 'how' to external\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"ml.dis.botm[0].format.binary = True\n",
|
|
"ml.write_input()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# Name file for MODFLOW-2005, generated by Flopy version 3.3.3.\\n',\n",
|
|
" '#xll:0.0; yll:0.0; rotation:0.0; units:meters; lenuni:2; start_datetime:1-1-1970\\n',\n",
|
|
" 'LIST 2 modflowtest.list\\n',\n",
|
|
" 'DIS 11 modflowtest.dis\\n',\n",
|
|
" 'LPF 15 modflowtest.lpf\\n',\n",
|
|
" 'RCH 19 modflowtest.rch\\n',\n",
|
|
" 'DATA 1046 ref/delr.ref\\n',\n",
|
|
" 'DATA 1047 ref/delc.ref\\n',\n",
|
|
" 'DATA 1048 ref/model_top.ref\\n',\n",
|
|
" 'DATA(BINARY) 1049 ref/botm_layer_1.ref\\n',\n",
|
|
" 'DATA 1050 ref/botm_layer_2.ref\\n',\n",
|
|
" 'DATA 1051 ref/botm_layer_3.ref\\n',\n",
|
|
" 'DATA 1052 ref/botm_layer_4.ref\\n',\n",
|
|
" 'DATA 1053 ref/botm_layer_5.ref\\n',\n",
|
|
" 'DATA 1054 ref/botm_layer_6.ref\\n',\n",
|
|
" 'DATA 1055 ref/botm_layer_7.ref\\n',\n",
|
|
" 'DATA 1056 ref/botm_layer_8.ref\\n',\n",
|
|
" 'DATA 1057 ref/botm_layer_9.ref\\n',\n",
|
|
" 'DATA 1058 ref/botm_layer_10.ref\\n',\n",
|
|
" 'DATA 1059 ref/hk_1.ref\\n',\n",
|
|
" 'DATA 1060 ref/vka1.ref\\n',\n",
|
|
" 'DATA 1061 ref/ss_layer_1.ref\\n',\n",
|
|
" 'DATA 1062 ref/hk_2.ref\\n',\n",
|
|
" 'DATA 1063 ref/vka2.ref\\n',\n",
|
|
" 'DATA 1064 ref/ss_layer_2.ref\\n',\n",
|
|
" 'DATA 1065 ref/hk_3.ref\\n',\n",
|
|
" 'DATA 1066 ref/vka3.ref\\n',\n",
|
|
" 'DATA 1067 ref/ss_layer_3.ref\\n',\n",
|
|
" 'DATA 1068 ref/hk_4.ref\\n',\n",
|
|
" 'DATA 1069 ref/vka4.ref\\n',\n",
|
|
" 'DATA 1070 ref/ss_layer_4.ref\\n',\n",
|
|
" 'DATA 1071 ref/hk_5.ref\\n',\n",
|
|
" 'DATA 1072 ref/vka5.ref\\n',\n",
|
|
" 'DATA 1073 ref/ss_layer_5.ref\\n',\n",
|
|
" 'DATA 1074 ref/hk_6.ref\\n',\n",
|
|
" 'DATA 1075 ref/vka6.ref\\n',\n",
|
|
" 'DATA 1076 ref/ss_layer_6.ref\\n',\n",
|
|
" 'DATA 1077 ref/hk_7.ref\\n',\n",
|
|
" 'DATA 1078 ref/vka7.ref\\n',\n",
|
|
" 'DATA 1079 ref/ss_layer_7.ref\\n',\n",
|
|
" 'DATA 1080 ref/hk_8.ref\\n',\n",
|
|
" 'DATA 1081 ref/vka8.ref\\n',\n",
|
|
" 'DATA 1082 ref/ss_layer_8.ref\\n',\n",
|
|
" 'DATA 1083 ref/hk_9.ref\\n',\n",
|
|
" 'DATA 1084 ref/vka9.ref\\n',\n",
|
|
" 'DATA 1085 ref/ss_layer_9.ref\\n',\n",
|
|
" 'DATA 1086 ref/hk_10.ref\\n',\n",
|
|
" 'DATA 1087 ref/vka10.ref\\n',\n",
|
|
" 'DATA 1088 ref/ss_layer_10.ref\\n',\n",
|
|
" 'DATA 1089 ref/rech_0.ref\\n',\n",
|
|
" 'DATA 1090 ref/important_recharge.ref\\n']"
|
|
]
|
|
},
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"open(os.path.join(ml.model_ws,ml.name+\".nam\"),'r').readlines()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# DIS package for MODFLOW-2005, generated by Flopy.\\n',\n",
|
|
" ' 10 20 5 2 4 2\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 1046 1 (5E15.6) -1 #delr\\n',\n",
|
|
" ' 1047 1 (20E15.6) -1 #delc\\n',\n",
|
|
" ' 1048 1 (5E15.6) -1 #model_top\\n',\n",
|
|
" ' -1049 1 (BINARY) -1 #botm layer 1\\n',\n",
|
|
" ' 1050 1 (5E15.6) -1 #botm layer 2\\n',\n",
|
|
" ' 1051 1 (5E15.6) -1 #botm layer 3\\n',\n",
|
|
" ' 1052 1 (5E15.6) -1 #botm layer 4\\n',\n",
|
|
" ' 1053 1 (5E15.6) -1 #botm layer 5\\n',\n",
|
|
" ' 1054 1 (5E15.6) -1 #botm layer 6\\n',\n",
|
|
" ' 1055 1 (5E15.6) -1 #botm layer 7\\n',\n",
|
|
" ' 1056 1 (5E15.6) -1 #botm layer 8\\n',\n",
|
|
" ' 1057 1 (5E15.6) -1 #botm layer 9\\n',\n",
|
|
" ' 1058 1 (5E15.6) -1 #botm layer 10\\n',\n",
|
|
" ' 1.000000 1 1.000000 TR \\n',\n",
|
|
" ' 1.000000 1 1.000000 TR \\n']"
|
|
]
|
|
},
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"open(os.path.join(ml.model_ws,ml.name+\".dis\"),'r').readlines()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### The ```.how``` attribute\n",
|
|
"```Util2d``` includes a ```.how``` attribute that gives finer grained control of how arrays will written"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'external'"
|
|
]
|
|
},
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ml.lpf.hk[0].how"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"This will raise an error since our model does not support free format..."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:delr: resetting 'how' to external\n",
|
|
"Util2d:delc: resetting 'how' to external\n",
|
|
"Util2d:model_top: resetting 'how' to external\n",
|
|
"Util2d:botm layer 1: resetting 'how' to external\n",
|
|
"Util2d:botm layer 2: resetting 'how' to external\n",
|
|
"Util2d:botm layer 3: resetting 'how' to external\n",
|
|
"Util2d:botm layer 4: resetting 'how' to external\n",
|
|
"Util2d:botm layer 5: resetting 'how' to external\n",
|
|
"Util2d:botm layer 6: resetting 'how' to external\n",
|
|
"Util2d:botm layer 7: resetting 'how' to external\n",
|
|
"Util2d:botm layer 8: resetting 'how' to external\n",
|
|
"Util2d:botm layer 9: resetting 'how' to external\n",
|
|
"Util2d:botm layer 10: resetting 'how' to external\n",
|
|
"\n",
|
|
" Util2d error: 'how' is openclose,but model doesn't support free fmt \n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"try:\n",
|
|
" ml.lpf.hk[0].how = \"openclose\"\n",
|
|
" ml.lpf.hk[0].how\n",
|
|
" ml.write_input()\n",
|
|
"except Exception as e:\n",
|
|
" print('\\n', e, '\\n')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"So let's reset hk layer 1 back to external..."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'external'"
|
|
]
|
|
},
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ml.lpf.hk[0].how = \"external\"\n",
|
|
"ml.lpf.hk[0].how"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"ml.dis.top.how = \"external\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:delr: resetting 'how' to external\n",
|
|
"Util2d:delc: resetting 'how' to external\n",
|
|
"Util2d:botm layer 1: resetting 'how' to external\n",
|
|
"Util2d:botm layer 2: resetting 'how' to external\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Util2d:botm layer 3: resetting 'how' to external\n",
|
|
"Util2d:botm layer 4: resetting 'how' to external\n",
|
|
"Util2d:botm layer 5: resetting 'how' to external\n",
|
|
"Util2d:botm layer 6: resetting 'how' to external\n",
|
|
"Util2d:botm layer 7: resetting 'how' to external\n",
|
|
"Util2d:botm layer 8: resetting 'how' to external\n",
|
|
"Util2d:botm layer 9: resetting 'how' to external\n",
|
|
"Util2d:botm layer 10: resetting 'how' to external\n",
|
|
"Util2d:ss layer 1: resetting 'how' to external\n",
|
|
"Util2d:ss layer 2: resetting 'how' to external\n",
|
|
"Util2d:ss layer 3: resetting 'how' to external\n",
|
|
"Util2d:ss layer 4: resetting 'how' to external\n",
|
|
"Util2d:ss layer 5: resetting 'how' to external\n",
|
|
"Util2d:ss layer 6: resetting 'how' to external\n",
|
|
"Util2d:ss layer 7: resetting 'how' to external\n",
|
|
"Util2d:ss layer 8: resetting 'how' to external\n",
|
|
"Util2d:ss layer 9: resetting 'how' to external\n",
|
|
"Util2d:ss layer 10: resetting 'how' to external\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"ml.write_input()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# DIS package for MODFLOW-2005, generated by Flopy.\\n',\n",
|
|
" ' 10 20 5 2 4 2\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 1104 1 (5E15.6) -1 #delr\\n',\n",
|
|
" ' 1105 1 (20E15.6) -1 #delc\\n',\n",
|
|
" ' 1106 1 (5E15.6) -1 #model_top\\n',\n",
|
|
" ' -1107 1 (BINARY) -1 #botm layer 1\\n',\n",
|
|
" ' 1108 1 (5E15.6) -1 #botm layer 2\\n',\n",
|
|
" ' 1109 1 (5E15.6) -1 #botm layer 3\\n',\n",
|
|
" ' 1110 1 (5E15.6) -1 #botm layer 4\\n',\n",
|
|
" ' 1111 1 (5E15.6) -1 #botm layer 5\\n',\n",
|
|
" ' 1112 1 (5E15.6) -1 #botm layer 6\\n',\n",
|
|
" ' 1113 1 (5E15.6) -1 #botm layer 7\\n',\n",
|
|
" ' 1114 1 (5E15.6) -1 #botm layer 8\\n',\n",
|
|
" ' 1115 1 (5E15.6) -1 #botm layer 9\\n',\n",
|
|
" ' 1116 1 (5E15.6) -1 #botm layer 10\\n',\n",
|
|
" ' 1.000000 1 1.000000 TR \\n',\n",
|
|
" ' 1.000000 1 1.000000 TR \\n']"
|
|
]
|
|
},
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"open(os.path.join(ml.model_ws,ml.name+\".dis\"),'r').readlines()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# LPF package for MODFLOW-2005, generated by Flopy.\\n',\n",
|
|
" ' 0 -1E+30 0 \\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00 1.000000E+00\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 0 0 0 0 0 0 0 0 0 0\\n',\n",
|
|
" ' 1117 1 (5E15.6) -1 #hk layer 1\\n',\n",
|
|
" ' 1118 1 (5E15.6) -1 #vka1\\n',\n",
|
|
" ' 1119 1 (5E15.6) -1 #ss layer 1\\n',\n",
|
|
" ' 1120 1 (5E15.6) -1 #hk layer 2\\n',\n",
|
|
" ' 1121 1 (5E15.6) -1 #vka2\\n',\n",
|
|
" ' 1122 1 (5E15.6) -1 #ss layer 2\\n',\n",
|
|
" ' 1123 1 (5E15.6) -1 #hk layer 3\\n',\n",
|
|
" ' 1124 1 (5E15.6) -1 #vka3\\n',\n",
|
|
" ' 1125 1 (5E15.6) -1 #ss layer 3\\n',\n",
|
|
" ' 1126 1 (5E15.6) -1 #hk layer 4\\n',\n",
|
|
" ' 1127 1 (5E15.6) -1 #vka4\\n',\n",
|
|
" ' 1128 1 (5E15.6) -1 #ss layer 4\\n',\n",
|
|
" ' 1129 1 (5E15.6) -1 #hk layer 5\\n',\n",
|
|
" ' 1130 1 (5E15.6) -1 #vka5\\n',\n",
|
|
" ' 1131 1 (5E15.6) -1 #ss layer 5\\n',\n",
|
|
" ' 1132 1 (5E15.6) -1 #hk layer 6\\n',\n",
|
|
" ' 1133 1 (5E15.6) -1 #vka6\\n',\n",
|
|
" ' 1134 1 (5E15.6) -1 #ss layer 6\\n',\n",
|
|
" ' 1135 1 (5E15.6) -1 #hk layer 7\\n',\n",
|
|
" ' 1136 1 (5E15.6) -1 #vka7\\n',\n",
|
|
" ' 1137 1 (5E15.6) -1 #ss layer 7\\n',\n",
|
|
" ' 1138 1 (5E15.6) -1 #hk layer 8\\n',\n",
|
|
" ' 1139 1 (5E15.6) -1 #vka8\\n',\n",
|
|
" ' 1140 1 (5E15.6) -1 #ss layer 8\\n',\n",
|
|
" ' 1141 1 (5E15.6) -1 #hk layer 9\\n',\n",
|
|
" ' 1142 1 (5E15.6) -1 #vka9\\n',\n",
|
|
" ' 1143 1 (5E15.6) -1 #ss layer 9\\n',\n",
|
|
" ' 1144 1 (5E15.6) -1 #hk layer 10\\n',\n",
|
|
" ' 1145 1 (5E15.6) -1 #vka10\\n',\n",
|
|
" ' 1146 1 (5E15.6) -1 #ss layer 10\\n']"
|
|
]
|
|
},
|
|
"execution_count": 28,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"open(os.path.join(ml.model_ws,ml.name+\".lpf\"),'r').readlines()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['# Name file for MODFLOW-2005, generated by Flopy version 3.3.3.\\n',\n",
|
|
" '#xll:0.0; yll:0.0; rotation:0.0; units:meters; lenuni:2; start_datetime:1-1-1970\\n',\n",
|
|
" 'LIST 2 modflowtest.list\\n',\n",
|
|
" 'DIS 11 modflowtest.dis\\n',\n",
|
|
" 'LPF 15 modflowtest.lpf\\n',\n",
|
|
" 'RCH 19 modflowtest.rch\\n',\n",
|
|
" 'DATA 1104 ref/delr.ref\\n',\n",
|
|
" 'DATA 1105 ref/delc.ref\\n',\n",
|
|
" 'DATA 1106 ref/model_top.ref\\n',\n",
|
|
" 'DATA(BINARY) 1107 ref/botm_layer_1.ref\\n',\n",
|
|
" 'DATA 1108 ref/botm_layer_2.ref\\n',\n",
|
|
" 'DATA 1109 ref/botm_layer_3.ref\\n',\n",
|
|
" 'DATA 1110 ref/botm_layer_4.ref\\n',\n",
|
|
" 'DATA 1111 ref/botm_layer_5.ref\\n',\n",
|
|
" 'DATA 1112 ref/botm_layer_6.ref\\n',\n",
|
|
" 'DATA 1113 ref/botm_layer_7.ref\\n',\n",
|
|
" 'DATA 1114 ref/botm_layer_8.ref\\n',\n",
|
|
" 'DATA 1115 ref/botm_layer_9.ref\\n',\n",
|
|
" 'DATA 1116 ref/botm_layer_10.ref\\n',\n",
|
|
" 'DATA 1117 ref/hk_1.ref\\n',\n",
|
|
" 'DATA 1118 ref/vka1.ref\\n',\n",
|
|
" 'DATA 1119 ref/ss_layer_1.ref\\n',\n",
|
|
" 'DATA 1120 ref/hk_2.ref\\n',\n",
|
|
" 'DATA 1121 ref/vka2.ref\\n',\n",
|
|
" 'DATA 1122 ref/ss_layer_2.ref\\n',\n",
|
|
" 'DATA 1123 ref/hk_3.ref\\n',\n",
|
|
" 'DATA 1124 ref/vka3.ref\\n',\n",
|
|
" 'DATA 1125 ref/ss_layer_3.ref\\n',\n",
|
|
" 'DATA 1126 ref/hk_4.ref\\n',\n",
|
|
" 'DATA 1127 ref/vka4.ref\\n',\n",
|
|
" 'DATA 1128 ref/ss_layer_4.ref\\n',\n",
|
|
" 'DATA 1129 ref/hk_5.ref\\n',\n",
|
|
" 'DATA 1130 ref/vka5.ref\\n',\n",
|
|
" 'DATA 1131 ref/ss_layer_5.ref\\n',\n",
|
|
" 'DATA 1132 ref/hk_6.ref\\n',\n",
|
|
" 'DATA 1133 ref/vka6.ref\\n',\n",
|
|
" 'DATA 1134 ref/ss_layer_6.ref\\n',\n",
|
|
" 'DATA 1135 ref/hk_7.ref\\n',\n",
|
|
" 'DATA 1136 ref/vka7.ref\\n',\n",
|
|
" 'DATA 1137 ref/ss_layer_7.ref\\n',\n",
|
|
" 'DATA 1138 ref/hk_8.ref\\n',\n",
|
|
" 'DATA 1139 ref/vka8.ref\\n',\n",
|
|
" 'DATA 1140 ref/ss_layer_8.ref\\n',\n",
|
|
" 'DATA 1141 ref/hk_9.ref\\n',\n",
|
|
" 'DATA 1142 ref/vka9.ref\\n',\n",
|
|
" 'DATA 1143 ref/ss_layer_9.ref\\n',\n",
|
|
" 'DATA 1144 ref/hk_10.ref\\n',\n",
|
|
" 'DATA 1145 ref/vka10.ref\\n',\n",
|
|
" 'DATA 1146 ref/ss_layer_10.ref\\n',\n",
|
|
" 'DATA 1147 ref/rech_0.ref\\n',\n",
|
|
" 'DATA 1148 ref/important_recharge.ref\\n']"
|
|
]
|
|
},
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"open(os.path.join(ml.model_ws,ml.name+\".nam\"),'r').readlines()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"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.8.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 1
|
|
}
|