{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple Water balance calculation" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "def water_balance(avg_hs, avg_rp, avg_dis, area, cell, ofstorage, label_discharge=\"dis_0\"):\n", " \"\"\"All output units are in mm\"\"\"\n", " P = avg_hs[\"pre_0\"]\n", " AET = avg_hs[\"aet_0\"]\n", " R = avg_hs[\"rch_0\"] \n", " OF = avg_hs[\"run_0\"]\n", " Qgw = avg_hs[\"gdh_0\"]*1000.0\n", " TL = avg_hs[\"tls_0\"]*1000/np.power(cell,2)\n", " Peff = avg_hs[\"pre_0\"] - avg_hs[\"inf_0\"]\n", " Qgw = avg_hs[\"gdh_0\"]*1000.\n", " Q = avg_dis[label_discharge]*1000/area \n", " factor = avg_hs[\"tls_0\"]/avg_rp[\"tls_0\"]\n", " AER = avg_rp[\"aet_0\"]*factor\n", " Rfch = avg_rp[\"fch_0\"]*factor\n", " Rdch = avg_hs[\"rch_0\"] - Rfch\n", " ofstorage = ofstorage*factor*1000/np.power(cell,2)\n", " Qbc = avg_hs[\"chb_0\"]*1000.\n", " EGW = avg_hs[\"egw_0\"]\n", " MBuz = avg_hs[\"inf_0\"] - avg_hs[\"aet_0\"] - Rdch\n", " MB = (avg_hs[\"pre_0\"] - avg_hs[\"aet_0\"] - avg_hs[\"egw_0\"]\n", " - Q - AER - ofstorage - avg_hs[\"twsc_0\"] - Qbc)\n", " \n", " # store fluxes in a dictionary\n", " fluxes = {\"P\": [P, 100.0],\n", " \"AET\": [AET, AET*100./P], \"AER\": [AER, AER*100./P], \"EGW\": [EGW, EGW*100./P],\n", " \"R\": [R, R*100./P], \"Rfch\": [Rfch, Rfch*100./P], \"Rdch\": [Rdch, Rdch*100./P],\n", " \"Q\": [Q, Q*100./P], \"Qgw\": [Qgw, Qgw*100./P],\n", " \"Peff\": [Peff, Peff*100./P],\n", " \"OF\": [OF, OF*100./P], \"TL\": [TL, TL*100./P], \n", " \"TSWS\":[ofstorage, ofstorage*100./P],\n", " \"TWSA\":[avg_hs[\"twsc_0\"],avg_hs[\"twsc_0\"]*100./P],\n", " \"Qbc\": [Qbc, Qbc*100./P],\n", " \"MB\": [MB, MB*100./P],\n", " \"MBuz\": [MBuz, MBuz*100./P]}\n", " return pd.DataFrame.from_dict(fluxes)\n", "\n", "def calculate_water_balance_from_csv(fhillslope, friparian, fdischarge, area, cell, label_discharge=\"dis_0\"):\n", " avg_hs = pd.read_csv(fhillslope).sum()\n", " avg_rp = pd.read_csv(friparian).sum()\n", " avg_dis = pd.read_csv(fdischarge).sum()\n", " avg_rp_mean = pd.read_csv(friparian).mean()\n", " ofstorage = avg_rp_mean[\"ssz_0\"]\n", " return water_balance(avg_hs, avg_rp, avg_dis, area, cell, ofstorage, label_discharge)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Tilted-V basin test" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "folder = \"/home/andresqm/Documents/GitHub/DRYPv2.0.1/tests/tilted_v/output/\"\n", "fname_avg_hs = folder + \"test_avg.csv\"\n", "fname_avg_rp = folder + \"test_RZ_avg.csv\"\n", "fname_avg_dis = folder + \"test_p_dis.csv\"\n", "cell_size = 1000 # m\n", "basin_area = (cell_size**2)*7*10 # m2" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_7306/1726732392.py:40: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.\n", " avg_rp_mean = pd.read_csv(friparian).mean()\n" ] }, { "data": { "text/html": [ "
| \n", " | P | \n", "AET | \n", "AER | \n", "EGW | \n", "R | \n", "Rfch | \n", "Rdch | \n", "Q | \n", "Qgw | \n", "Peff | \n", "OF | \n", "TL | \n", "TSWS | \n", "TWSA | \n", "Qbc | \n", "MB | \n", "MBuz | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "1499.75 | \n", "815.386134 | \n", "0.000154 | \n", "63.667404 | \n", "548.820619 | \n", "0.0 | \n", "548.820619 | \n", "278.084841 | \n", "199.511999 | \n", "0.0 | \n", "278.084841 | \n", "6.774715e-19 | \n", "0.0 | \n", "341.828427 | \n", "0.0 | \n", "0.783041 | \n", "135.543247 | \n", "
| 1 | \n", "100.00 | \n", "54.368137 | \n", "0.000010 | \n", "4.245201 | \n", "36.594140 | \n", "0.0 | \n", "36.594140 | \n", "18.542080 | \n", "13.303017 | \n", "0.0 | \n", "18.542080 | \n", "4.517229e-20 | \n", "0.0 | \n", "22.792361 | \n", "0.0 | \n", "0.052211 | \n", "9.037723 | \n", "