flopy/examples/Notebooks/flopy3_external_file_handli...

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
}