{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Quickstart for pyGSFLOW\n", "\n", "This tutorial shows how to load an existing model into pyGSFLOW and create\n", "a new (empty) GsflowModel object for building a new GSFLOW model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Package import" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import gsflow\n", "import flopy\n", "import platform\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load an existing GSFLOW model" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "model_ws = os.path.join(\"..\", \"..\", \"data\", \"sagehen\", \"gsflow\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Control file is loaded\n", "Working on loading PRMS model ...\n", "Prms model loading ...\n", "------------------------------------\n", "Reading parameter file : saghen_new_par_0.params\n", "------------------------------------\n", "Warning: ncascade data type will be infered from data supplied\n", "Warning: ncascdgw data type will be infered from data supplied\n", "Warning: ndays data type will be infered from data supplied\n", "Warning: ndepl data type will be infered from data supplied\n", "Warning: ndeplval data type will be infered from data supplied\n", "Warning: nevap data type will be infered from data supplied\n", "Warning: ngw data type will be infered from data supplied\n", "Warning: ngwcell data type will be infered from data supplied\n", "Warning: nhru data type will be infered from data supplied\n", "Warning: nhrucell data type will be infered from data supplied\n", "Warning: nlake data type will be infered from data supplied\n", "Warning: nlake_hrus data type will be infered from data supplied\n", "Warning: nmonths data type will be infered from data supplied\n", "Warning: nobs data type will be infered from data supplied\n", "Warning: nrain data type will be infered from data supplied\n", "Warning: nreach data type will be infered from data supplied\n", "Warning: nsegment data type will be infered from data supplied\n", "Warning: nsnow data type will be infered from data supplied\n", "Warning: nsol data type will be infered from data supplied\n", "Warning: nssr data type will be infered from data supplied\n", "Warning: nsub data type will be infered from data supplied\n", "Warning: ntemp data type will be infered from data supplied\n", "Warning: one data type will be infered from data supplied\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "------------------------------------\n", "Reading parameter file : saghen_new_par_1.params\n", "------------------------------------\n", "------------------------------------\n", "Reading parameter file : saghen_new_par_2.params\n", "------------------------------------\n", "------------------------------------\n", "Reading parameter file : saghen_new_par_3.params\n", "------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "PRMS model loaded ...\n", "Working on loading MODFLOW files ....\n", " loading iuzfbnd array...\n", " loading irunbnd array...\n", " loading vks array...\n", " loading eps array...\n", " loading thts array...\n", "stress period 1:\n", " loading finf array...\n", "stress period 2:\n", "MODFLOW files are loaded ... \n" ] } ], "source": [ "control_file = os.path.join(model_ws, \"saghen_new_cont.control\")\n", "gsf = gsflow.GsflowModel.load_from_file(control_file)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load and run a GSFLOW model from pyGSFLOW" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "control_file = os.path.join(model_ws, \"saghen_new_cont.control\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "exe_name = os.path.join(\"..\", \"..\", \"bin\", \"gsflow\")\n", "if platform.system().lower() == \"windows\":\n", " exe_name += \".exe\"" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Control file is loaded\n", "Working on loading PRMS model ...\n", "Prms model loading ...\n", "------------------------------------\n", "Reading parameter file : saghen_new_par_0.params\n", "------------------------------------\n", "Warning: ncascade data type will be infered from data supplied\n", "Warning: ncascdgw data type will be infered from data supplied\n", "Warning: ndays data type will be infered from data supplied\n", "Warning: ndepl data type will be infered from data supplied\n", "Warning: ndeplval data type will be infered from data supplied\n", "Warning: nevap data type will be infered from data supplied\n", "Warning: ngw data type will be infered from data supplied\n", "Warning: ngwcell data type will be infered from data supplied\n", "Warning: nhru data type will be infered from data supplied\n", "Warning: nhrucell data type will be infered from data supplied\n", "Warning: nlake data type will be infered from data supplied\n", "Warning: nlake_hrus data type will be infered from data supplied\n", "Warning: nmonths data type will be infered from data supplied\n", "Warning: nobs data type will be infered from data supplied\n", "Warning: nrain data type will be infered from data supplied\n", "Warning: nreach data type will be infered from data supplied\n", "Warning: nsegment data type will be infered from data supplied\n", "Warning: nsnow data type will be infered from data supplied\n", "Warning: nsol data type will be infered from data supplied\n", "Warning: nssr data type will be infered from data supplied\n", "Warning: nsub data type will be infered from data supplied\n", "Warning: ntemp data type will be infered from data supplied\n", "Warning: one data type will be infered from data supplied\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "------------------------------------\n", "Reading parameter file : saghen_new_par_1.params\n", "------------------------------------\n", "------------------------------------\n", "Reading parameter file : saghen_new_par_2.params\n", "------------------------------------\n", "------------------------------------\n", "Reading parameter file : saghen_new_par_3.params\n", "------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "PRMS model loaded ...\n", "Working on loading MODFLOW files ....\n", " loading iuzfbnd array...\n", " loading irunbnd array...\n", " loading vks array...\n", " loading eps array...\n", " loading thts array...\n", "stress period 1:\n", " loading finf array...\n", "stress period 2:\n", "MODFLOW files are loaded ... \n", "Warning : The executable of the model could not be found. Use the gsflow_exe= parameter to define its path... \n" ] } ], "source": [ "gsf = gsflow.GsflowModel.load_from_file(control_file, gsflow_exe=exe_name)\n", "gsf.run_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading common output files" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### stat var file" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading the statvar output file .....\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Finished Load the statvar output file .....\n" ] } ], "source": [ "stat_var = gsf.prms.get_StatVar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### gsflow.csv" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "csv_name = os.path.join(model_ws, \"saghen_new_csv_output.csv\")\n", "df = pd.read_csv(csv_name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### head file" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "head_name = os.path.join(model_ws, \"saghen_new.hds\")\n", "head = flopy.utils.HeadFile(head_name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### budget file" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "cbc_name = os.path.join(model_ws, \"saghen_new.cbc\")\n", "cbc = flopy.utils.CellBudgetFile(cbc_name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create an empty GsflowModel object for building a new model" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "gsflow.py:97: UserWarning: prms is not a PrmsModel object, skipping...\n", "gsflow.py:110: UserWarning: modflow is not a gsflow.modflow.Modflow object, skipping...\n" ] } ], "source": [ "control = gsflow.ControlFile(records_list=[])\n", "gsf = gsflow.GsflowModel(control)" ] } ], "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.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }