From 8149e0601c1a020bcdc26645c4bc7aa02f3f2fa7 Mon Sep 17 00:00:00 2001 From: Bart Schilperoort Date: Wed, 13 Mar 2024 14:41:35 +0100 Subject: [PATCH 01/33] Implement groundwater coupling changes in BMI --- PyStemmusScope/bmi/implementation.py | 74 ++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/PyStemmusScope/bmi/implementation.py b/PyStemmusScope/bmi/implementation.py index 03e36782..1b903c8e 100644 --- a/PyStemmusScope/bmi/implementation.py +++ b/PyStemmusScope/bmi/implementation.py @@ -1,5 +1,6 @@ """BMI wrapper for the STEMMUS_SCOPE model.""" import os +from dataclasses import dataclass from pathlib import Path from typing import Literal from typing import Protocol @@ -11,28 +12,47 @@ from PyStemmusScope.config_io import read_config -MODEL_INPUT_VARNAMES: tuple[str, ...] = ("soil_temperature",) +@dataclass +class BmiVariable: + """Holds all info to inform the BMI implementation.""" + + name: str + dtype: str + input: bool + output: bool + units: str + grid: int + + +VARIABLES: tuple[BmiVariable, ...] = ( + # name dtype input ouput units grid + # Soil vars: + BmiVariable("soil_temperature", "float64", True, True, "degC", 1), + BmiVariable("soil_moisture", "float64", True, True, "m3 m-3", 1), + # atmospheric vars: + BmiVariable("respiration", "float64", False, True, "?", 0), + # groundwater vars: + BmiVariable("groundwater_coupling_enabled", "bool", True, True, "-", 0), + BmiVariable("groundwater_head_bottom_layer", "float64", True, True, "m", 0), + BmiVariable("groundwater_bottom_layer_index", "int64", False, True, "-", 0), + BmiVariable("groundwater_soil_layer_thickness", "float64", False, True, "?", 0), +) -MODEL_OUTPUT_VARNAMES: tuple[str, ...] = ( - "soil_temperature", - "respiration", +MODEL_INPUT_VARNAMES: tuple[str, ...] = tuple( + var.name for var in VARIABLES if var.input ) -MODEL_VARNAMES: tuple[str, ...] = tuple( - set(MODEL_INPUT_VARNAMES + MODEL_OUTPUT_VARNAMES) +MODEL_OUTPUT_VARNAMES: tuple[str, ...] = tuple( + var.name for var in VARIABLES if var.output ) -VARNAME_UNITS: dict[str, str] = {"respiration": "unknown", "soil_temperature": "degC"} +MODEL_VARNAMES: tuple[str, ...] = tuple(var.name for var in VARIABLES) + +VARNAME_UNITS: dict[str, str] = {var.name: var.units for var in VARIABLES} -VARNAME_DTYPE: dict[str, str] = { - "respiration": "float64", - "soil_temperature": "float64", -} +VARNAME_DTYPE: dict[str, str] = {var.name: var.dtype for var in VARIABLES} -VARNAME_GRID: dict[str, int] = { - "respiration": 0, - "soil_temperature": 1, -} +VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} NO_STATE_MSG = ( "The model state is not available. Please run `.update()` before requesting " @@ -59,7 +79,7 @@ def load_state(config: dict) -> h5py.File: return h5py.File(matfile, mode="a") -def get_variable(state: h5py.File, varname: str) -> np.ndarray: +def get_variable(state: h5py.File, varname: str) -> np.ndarray: # noqa: PLR0911 """Get a variable from the model state. Args: @@ -70,6 +90,18 @@ def get_variable(state: h5py.File, varname: str) -> np.ndarray: return state["fluxes"]["Resp"][0] elif varname == "soil_temperature": return state["TT"][0, :-1] + elif varname == "soil_moisture": + return state["SoilVariables"]["Theta_U"][0] + + # groundwater coupling variables: + elif varname == "groundwater_coupling_enabled": + return state["GroundwaterSettings"]["GroundwaterCoupling"][0].astype(bool) + elif varname == "groundwater_head_bottom_layer": + return state["GroundwaterSettings"]["headBotmLayer"][0] + elif varname == "groundwater_bottom_layer_index": + return state["GroundwaterSettings"]["indexBotmLayer"][0] + elif varname == "groundwater_soil_layer_thickness": + return state["GroundwaterSettings"]["soilLayerThickness"][0] else: if varname in MODEL_VARNAMES: msg = "Varname is missing in get_variable! Contact devs." @@ -103,6 +135,16 @@ def set_variable( if varname == "soil_temperature": state["TT"][0, :-1] = vals + elif varname == "soil_moisture": + state["SoilVariables"]["Theta_U"][0] = vals + # groundwater coupling variables: + elif varname == "groundwater_coupling_enabled": + state["GroundwaterSettings"]["GroundwaterCoupling"][0] = vals.astype("float") + elif varname == "groundwater_head_bottom_layer": + state["GroundwaterSettings"]["headBotmLayer"][0] = vals + elif varname == "groundwater_bottom_layer_index": + state["GroundwaterSettings"]["indexBotmLayer"][0] = vals + else: if varname in MODEL_OUTPUT_VARNAMES and varname not in MODEL_INPUT_VARNAMES: msg = "This variable is a model output variable only. You cannot set it." From d17ed45c277b0be4b00215730c8f1d550f00ffea Mon Sep 17 00:00:00 2001 From: Bart Schilperoort Date: Fri, 12 Jul 2024 14:20:33 +0200 Subject: [PATCH 02/33] Implement new groundwater coupling variables --- PyStemmusScope/bmi/implementation.py | 68 ++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/PyStemmusScope/bmi/implementation.py b/PyStemmusScope/bmi/implementation.py index 1b903c8e..cff64e29 100644 --- a/PyStemmusScope/bmi/implementation.py +++ b/PyStemmusScope/bmi/implementation.py @@ -26,16 +26,29 @@ class BmiVariable: VARIABLES: tuple[BmiVariable, ...] = ( # name dtype input ouput units grid - # Soil vars: + # atmospheric vars: + BmiVariable("respiration", "float64", False, True, "cm s-1", 0), + BmiVariable("evaporation_total", "float64", False, True, "cm s-1", 0), + + # soil vars: BmiVariable("soil_temperature", "float64", True, True, "degC", 1), BmiVariable("soil_moisture", "float64", True, True, "m3 m-3", 1), - # atmospheric vars: - BmiVariable("respiration", "float64", False, True, "?", 0), - # groundwater vars: - BmiVariable("groundwater_coupling_enabled", "bool", True, True, "-", 0), - BmiVariable("groundwater_head_bottom_layer", "float64", True, True, "m", 0), - BmiVariable("groundwater_bottom_layer_index", "int64", False, True, "-", 0), - BmiVariable("groundwater_soil_layer_thickness", "float64", False, True, "?", 0), + BmiVariable("soil_root_water_uptake", "float64", False, True, "cm s-1", 0), + + # surface runoff + BmiVariable("surface_runoff_total", "float64", False, True, "cm s-1", 0), + BmiVariable("surface_runoff_hortonian", "float64", False, True, "cm s-1", 0), + BmiVariable("surface_runoff_dunnian", "float64", False, True, "cm s-1", 0), + + # groundwater vars (STEMMUS_SCOPE) + BmiVariable("groundwater_root_water_uptake", "float64", False, True, "cm s-1", 0), + BmiVariable("groundwater_recharge", "float64", False, True, "cm s-1", 0), + + # groundwater (coupling) vars + BmiVariable("groundwater_coupling_enabled", "bool", True, False, "-", 0), + BmiVariable("groundwater_head_bottom_layer", "float64", True, False, "cm", 0), + BmiVariable("groundwater_temperature", "float64", True, False, "degC", 0), + BmiVariable("groundwater_elevation_top_aquifer", "float64", True, False, "cm", 0), ) MODEL_INPUT_VARNAMES: tuple[str, ...] = tuple( @@ -79,29 +92,51 @@ def load_state(config: dict) -> h5py.File: return h5py.File(matfile, mode="a") -def get_variable(state: h5py.File, varname: str) -> np.ndarray: # noqa: PLR0911 +def get_variable(state: h5py.File, varname: str) -> np.ndarray: # noqa: PLR0911 PLR0912 C901 """Get a variable from the model state. Args: state: STEMMUS_SCOPE model state varname: Variable name """ + # atmospheric vars if varname == "respiration": return state["fluxes"]["Resp"][0] + elif varname == "evaporation_total": + return state["EVAP"][0] + + # soil vars elif varname == "soil_temperature": return state["TT"][0, :-1] elif varname == "soil_moisture": return state["SoilVariables"]["Theta_U"][0] + elif varname == "soil_root_water_uptake": + return state["RWUs"][0] + + # surface runoff + elif varname == "surface_runoff_total": + return state["RS"][0] + elif varname == "surface_runoff_dunnian": + return state["ForcingData"]["R_Dunn"][0] + elif varname == "surface_runoff_hortonian": + return state["ForcingData"]["R_Hort"][0] + + # groundwater vars + elif varname == "groundwater_root_water_uptake": + return state["RWUg"][0] + elif varname == "groundwater_recharge": + return state["gwfluxes"]["recharge"][0] # groundwater coupling variables: elif varname == "groundwater_coupling_enabled": return state["GroundwaterSettings"]["GroundwaterCoupling"][0].astype(bool) elif varname == "groundwater_head_bottom_layer": return state["GroundwaterSettings"]["headBotmLayer"][0] - elif varname == "groundwater_bottom_layer_index": - return state["GroundwaterSettings"]["indexBotmLayer"][0] - elif varname == "groundwater_soil_layer_thickness": - return state["GroundwaterSettings"]["soilLayerThickness"][0] + elif varname == "groundwater_temperature": + return state["GroundwaterSettings"]["tempBotm"][0] + elif varname == "groundwater_elevation_top_aquifer": + return state["GroundwaterSettings"]["toplevel"][0] + else: if varname in MODEL_VARNAMES: msg = "Varname is missing in get_variable! Contact devs." @@ -137,13 +172,16 @@ def set_variable( state["TT"][0, :-1] = vals elif varname == "soil_moisture": state["SoilVariables"]["Theta_U"][0] = vals + # groundwater coupling variables: elif varname == "groundwater_coupling_enabled": state["GroundwaterSettings"]["GroundwaterCoupling"][0] = vals.astype("float") elif varname == "groundwater_head_bottom_layer": state["GroundwaterSettings"]["headBotmLayer"][0] = vals - elif varname == "groundwater_bottom_layer_index": - state["GroundwaterSettings"]["indexBotmLayer"][0] = vals + elif varname == "groundwater_temperature": + state["GroundwaterSettings"]["tempBotm"][0] = vals + elif varname == "groundwater_elevation_top_aquifer": + state["GroundwaterSettings"]["toplevel"][0] = vals else: if varname in MODEL_OUTPUT_VARNAMES and varname not in MODEL_INPUT_VARNAMES: From ab814d43704261612863a9a977f01631bb4d267d Mon Sep 17 00:00:00 2001 From: Bart Schilperoort Date: Fri, 12 Jul 2024 16:25:14 +0200 Subject: [PATCH 03/33] Programatically get/set values --- PyStemmusScope/bmi/implementation.py | 131 +++++--------------- PyStemmusScope/bmi/utils.py | 17 +++ PyStemmusScope/bmi/variable_reference.py | 150 +++++++++++++++++++++++ 3 files changed, 199 insertions(+), 99 deletions(-) create mode 100644 PyStemmusScope/bmi/variable_reference.py diff --git a/PyStemmusScope/bmi/implementation.py b/PyStemmusScope/bmi/implementation.py index cff64e29..c64ca575 100644 --- a/PyStemmusScope/bmi/implementation.py +++ b/PyStemmusScope/bmi/implementation.py @@ -1,6 +1,5 @@ """BMI wrapper for the STEMMUS_SCOPE model.""" import os -from dataclasses import dataclass from pathlib import Path from typing import Literal from typing import Protocol @@ -9,48 +8,11 @@ import numpy as np from bmipy.bmi import Bmi from PyStemmusScope.bmi.utils import InapplicableBmiMethods +from PyStemmusScope.bmi.utils import nested_set +from PyStemmusScope.bmi.variable_reference import VARIABLES from PyStemmusScope.config_io import read_config -@dataclass -class BmiVariable: - """Holds all info to inform the BMI implementation.""" - - name: str - dtype: str - input: bool - output: bool - units: str - grid: int - - -VARIABLES: tuple[BmiVariable, ...] = ( - # name dtype input ouput units grid - # atmospheric vars: - BmiVariable("respiration", "float64", False, True, "cm s-1", 0), - BmiVariable("evaporation_total", "float64", False, True, "cm s-1", 0), - - # soil vars: - BmiVariable("soil_temperature", "float64", True, True, "degC", 1), - BmiVariable("soil_moisture", "float64", True, True, "m3 m-3", 1), - BmiVariable("soil_root_water_uptake", "float64", False, True, "cm s-1", 0), - - # surface runoff - BmiVariable("surface_runoff_total", "float64", False, True, "cm s-1", 0), - BmiVariable("surface_runoff_hortonian", "float64", False, True, "cm s-1", 0), - BmiVariable("surface_runoff_dunnian", "float64", False, True, "cm s-1", 0), - - # groundwater vars (STEMMUS_SCOPE) - BmiVariable("groundwater_root_water_uptake", "float64", False, True, "cm s-1", 0), - BmiVariable("groundwater_recharge", "float64", False, True, "cm s-1", 0), - - # groundwater (coupling) vars - BmiVariable("groundwater_coupling_enabled", "bool", True, False, "-", 0), - BmiVariable("groundwater_head_bottom_layer", "float64", True, False, "cm", 0), - BmiVariable("groundwater_temperature", "float64", True, False, "degC", 0), - BmiVariable("groundwater_elevation_top_aquifer", "float64", True, False, "cm", 0), -) - MODEL_INPUT_VARNAMES: tuple[str, ...] = tuple( var.name for var in VARIABLES if var.input ) @@ -67,6 +29,8 @@ class BmiVariable: VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} +VARNAME_LOC: dict[str, list[str]] = {var.name: var.loc for var in VARIABLES} + NO_STATE_MSG = ( "The model state is not available. Please run `.update()` before requesting " "\nthis model info. If you did run .update() before, something seems to have " @@ -92,57 +56,34 @@ def load_state(config: dict) -> h5py.File: return h5py.File(matfile, mode="a") -def get_variable(state: h5py.File, varname: str) -> np.ndarray: # noqa: PLR0911 PLR0912 C901 +def get_variable( + state: h5py.File, varname: str +) -> np.ndarray: # noqa: PLR0911 PLR0912 C901 """Get a variable from the model state. Args: state: STEMMUS_SCOPE model state varname: Variable name """ - # atmospheric vars - if varname == "respiration": - return state["fluxes"]["Resp"][0] - elif varname == "evaporation_total": - return state["EVAP"][0] + if varname not in MODEL_VARNAMES: + msg = "Unknown variable name" + raise ValueError(msg) - # soil vars + # deviating implemetation: elif varname == "soil_temperature": return state["TT"][0, :-1] - elif varname == "soil_moisture": - return state["SoilVariables"]["Theta_U"][0] - elif varname == "soil_root_water_uptake": - return state["RWUs"][0] - - # surface runoff - elif varname == "surface_runoff_total": - return state["RS"][0] - elif varname == "surface_runoff_dunnian": - return state["ForcingData"]["R_Dunn"][0] - elif varname == "surface_runoff_hortonian": - return state["ForcingData"]["R_Hort"][0] - - # groundwater vars - elif varname == "groundwater_root_water_uptake": - return state["RWUg"][0] - elif varname == "groundwater_recharge": - return state["gwfluxes"]["recharge"][0] - - # groundwater coupling variables: - elif varname == "groundwater_coupling_enabled": - return state["GroundwaterSettings"]["GroundwaterCoupling"][0].astype(bool) - elif varname == "groundwater_head_bottom_layer": - return state["GroundwaterSettings"]["headBotmLayer"][0] - elif varname == "groundwater_temperature": - return state["GroundwaterSettings"]["tempBotm"][0] - elif varname == "groundwater_elevation_top_aquifer": - return state["GroundwaterSettings"]["toplevel"][0] - else: - if varname in MODEL_VARNAMES: - msg = "Varname is missing in get_variable! Contact devs." - else: - msg = "Unknown variable name" - raise ValueError(msg) + # default implementation: + _s = state + for _loc in VARNAME_LOC[varname]: + _s = _s.get(_loc) + + if VARNAME_GRID[varname] == 0: + return _s[0].astype(VARNAME_DTYPE[varname]) + + # something's gone wrong: + msg = "Varname is missing in get_variable! Contact devs." + raise ValueError(msg) def set_variable( @@ -168,29 +109,21 @@ def set_variable( else: vals = value + if varname in MODEL_OUTPUT_VARNAMES and varname not in MODEL_INPUT_VARNAMES: + msg = "This variable is a model output variable only. You cannot set it." + raise ValueError(msg) + elif varname not in MODEL_INPUT_VARNAMES: + msg = "Uknown variable name" + raise ValueError(msg) + + # deviating implementations: if varname == "soil_temperature": state["TT"][0, :-1] = vals - elif varname == "soil_moisture": - state["SoilVariables"]["Theta_U"][0] = vals - - # groundwater coupling variables: elif varname == "groundwater_coupling_enabled": state["GroundwaterSettings"]["GroundwaterCoupling"][0] = vals.astype("float") - elif varname == "groundwater_head_bottom_layer": - state["GroundwaterSettings"]["headBotmLayer"][0] = vals - elif varname == "groundwater_temperature": - state["GroundwaterSettings"]["tempBotm"][0] = vals - elif varname == "groundwater_elevation_top_aquifer": - state["GroundwaterSettings"]["toplevel"][0] = vals - + # default: else: - if varname in MODEL_OUTPUT_VARNAMES and varname not in MODEL_INPUT_VARNAMES: - msg = "This variable is a model output variable only. You cannot set it." - elif varname in MODEL_VARNAMES: - msg = "Varname is missing in set_variable! Contact devs." - else: - msg = "Uknown variable name" - raise ValueError(msg) + nested_set(state, VARNAME_LOC[varname] + [0], vals) return state diff --git a/PyStemmusScope/bmi/utils.py b/PyStemmusScope/bmi/utils.py index 6586708a..7fde7867 100644 --- a/PyStemmusScope/bmi/utils.py +++ b/PyStemmusScope/bmi/utils.py @@ -1,4 +1,6 @@ """Utilities for the STEMMUS_SCOPE Basic Model Interface.""" +from typing import Any +from typing import Union import numpy as np @@ -64,3 +66,18 @@ def get_grid_nodes_per_face( ) -> np.ndarray: """Get the number of nodes for each face.""" raise NotImplementedError(INAPPLICABLE_GRID_METHOD_MSG) + + +def nested_set(dic: dict, keys: Union[list, tuple], value: Any) -> None: + """Set a value in a nested dictionary programatically. + + E.g.: dict[keys[0]][keys[1]] = value + + Args: + dic: Dictionary to be modified. + keys: Iterable of keys that are used to find the right value. + value: The new value. + """ + for key in keys[:-1]: + dic = dic.setdefault(key, {}) + dic[keys[-1]] = value diff --git a/PyStemmusScope/bmi/variable_reference.py b/PyStemmusScope/bmi/variable_reference.py new file mode 100644 index 00000000..123050c2 --- /dev/null +++ b/PyStemmusScope/bmi/variable_reference.py @@ -0,0 +1,150 @@ +"""Variable reference to inform the BMI implementation.""" +from dataclasses import dataclass + + +@dataclass +class BmiVariable: + """Holds all info to inform the BMI implementation.""" + + name: str + dtype: str + input: bool + output: bool + units: str + grid: int + loc: list[str] + + +VARIABLES: tuple[BmiVariable, ...] = ( + # atmospheric vars: + BmiVariable( + name="respiration", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["fluxes", "Resp"], + ), + BmiVariable( + name="evaporation_total", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["EVAP"], + ), + # soil vars: + BmiVariable( + name="soil_temperature", + dtype="float64", + input=True, + output=True, + units="degC", + grid=1, + loc=["TT"], + ), + BmiVariable( + name="soil_moisture", + dtype="float64", + input=True, + output=True, + units="m3 m-3", + grid=1, + loc=["SoilVariables", "Theta_U"], + ), + BmiVariable( + name="soil_root_water_uptake", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["RWUs"], + ), + # surface runoff + BmiVariable( + name="surface_runoff_total", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["RS"], + ), + BmiVariable( + name="surface_runoff_hortonian", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["ForcingData", "R_Dunn"], + ), + BmiVariable( + name="surface_runoff_dunnian", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["ForcingData", "R_Hort"], + ), + # groundwater vars (STEMMUS_SCOPE) + BmiVariable( + name="groundwater_root_water_uptake", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["RWUg"], + ), + BmiVariable( + name="groundwater_recharge", + dtype="float64", + input=False, + output=True, + units="cm s-1", + grid=0, + loc=["gwfluxes", "recharge"], + ), + # groundwater (coupling) vars + BmiVariable( + name="groundwater_coupling_enabled", + dtype="bool", + input=True, + output=False, + units="-", + grid=0, + loc=["GroundwaterSettings", "GroundwaterCoupling"], + ), + BmiVariable( + name="groundwater_head_bottom_layer", + dtype="float64", + input=True, + output=False, + units="cm", + grid=0, + loc=["GroundwaterSettings", "headBotmLayer"], + ), + BmiVariable( + name="groundwater_temperature", + dtype="float64", + input=True, + output=False, + units="degC", + grid=0, + loc=["GroundwaterSettings", "tempBotm"], + ), + BmiVariable( + name="groundwater_elevation_top_aquifer", + dtype="float64", + input=True, + output=False, + units="cm", + grid=0, + loc=["GroundwaterSettings", "toplevel"], + ), +) From 70ecfeb3313399152f47fae43be3cd3ad89a0e3a Mon Sep 17 00:00:00 2001 From: Bart Schilperoort Date: Fri, 12 Jul 2024 17:00:22 +0200 Subject: [PATCH 04/33] Remove outdated test --- tests/test_bmi_docker.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/test_bmi_docker.py b/tests/test_bmi_docker.py index 82641aa8..a6b10e78 100644 --- a/tests/test_bmi_docker.py +++ b/tests/test_bmi_docker.py @@ -1,7 +1,6 @@ import platform from distutils.dir_util import copy_tree from pathlib import Path -from unittest.mock import patch import docker import docker.errors import numpy as np @@ -271,12 +270,6 @@ def test_get_wrong_value(self, updated_model): with pytest.raises(ValueError, match="Unknown variable"): updated_model.get_value("nonsense_variable", dest) - def test_dev_error_variables(self, updated_model): - dest = np.zeros(1) - with patch("PyStemmusScope.bmi.implementation.MODEL_VARNAMES", ("NONSENSE",)): - with pytest.raises(ValueError, match="Contact devs"): - updated_model.get_value("NONSENSE", dest) - def test_set_value(self, updated_model): gridsize = updated_model.get_grid_size( updated_model.get_var_grid("soil_temperature") From 18bfe6d5da4b847ec09428a77bc6c4c50ac05fe0 Mon Sep 17 00:00:00 2001 From: Bart Schilperoort Date: Fri, 12 Jul 2024 17:01:06 +0200 Subject: [PATCH 05/33] Pin dependencies to working versions --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 353f673a..999ded2e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,8 +52,8 @@ classifiers = [ dependencies = [ "h5py", "hdf5storage", - "netcdf4>=1.6.5", - "numpy", + "netcdf4==1.6.4", # 1.7.1 conflicts with h5py github.com/Unidata/netcdf4-python/issues/1343 + "numpy<2", # hdf5storage does not support numpy 2 (yet) "pandas<2", "xarray", "rioxarray", # required for interacting with .tiff files @@ -89,6 +89,7 @@ docs = [ [tool.hatch.envs.default] features = ["dev", "docker"] +installer = "uv" [tool.hatch.envs.default.scripts] lint = [ From c0a75a2f7c08f634126bbdc63e59c7682a73ee57 Mon Sep 17 00:00:00 2001 From: Bart Schilperoort Date: Mon, 15 Jul 2024 13:58:39 +0200 Subject: [PATCH 06/33] Fix issues related to variables containing all timesteps --- PyStemmusScope/bmi/docker_process.py | 2 +- PyStemmusScope/bmi/implementation.py | 14 +++++----- PyStemmusScope/bmi/variable_reference.py | 34 +++++++++++++----------- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/PyStemmusScope/bmi/docker_process.py b/PyStemmusScope/bmi/docker_process.py index 06362673..7e0cc220 100644 --- a/PyStemmusScope/bmi/docker_process.py +++ b/PyStemmusScope/bmi/docker_process.py @@ -83,7 +83,7 @@ class StemmusScopeDocker: """Communicate with a STEMMUS_SCOPE Docker container.""" # Default image, can be overridden with config: - compatible_tags = ("1.5.0",) + compatible_tags = ("1.6.0",) _process_ready_phrase = b"Select BMI mode:" _process_finalized_phrase = b"Finished clean up." diff --git a/PyStemmusScope/bmi/implementation.py b/PyStemmusScope/bmi/implementation.py index c64ca575..17af3bb2 100644 --- a/PyStemmusScope/bmi/implementation.py +++ b/PyStemmusScope/bmi/implementation.py @@ -9,7 +9,7 @@ from bmipy.bmi import Bmi from PyStemmusScope.bmi.utils import InapplicableBmiMethods from PyStemmusScope.bmi.utils import nested_set -from PyStemmusScope.bmi.variable_reference import VARIABLES +from PyStemmusScope.bmi.variable_reference import VARIABLES, BmiVariable from PyStemmusScope.config_io import read_config @@ -21,6 +21,8 @@ var.name for var in VARIABLES if var.output ) +MODEL_VARS: dict[str, BmiVariable] = {var.name: var for var in VARIABLES} + MODEL_VARNAMES: tuple[str, ...] = tuple(var.name for var in VARIABLES) VARNAME_UNITS: dict[str, str] = {var.name: var.units for var in VARIABLES} @@ -29,7 +31,7 @@ VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} -VARNAME_LOC: dict[str, list[str]] = {var.name: var.loc for var in VARIABLES} +VARNAME_LOC: dict[str, list[str]] = {var.name: var.keys for var in VARIABLES} NO_STATE_MSG = ( "The model state is not available. Please run `.update()` before requesting " @@ -78,13 +80,11 @@ def get_variable( for _loc in VARNAME_LOC[varname]: _s = _s.get(_loc) - if VARNAME_GRID[varname] == 0: + if MODEL_VARS[varname].all_timesteps: + return _s[0].astype(VARNAME_DTYPE[varname])[[int(state["KT"][0])]] + else: return _s[0].astype(VARNAME_DTYPE[varname]) - # something's gone wrong: - msg = "Varname is missing in get_variable! Contact devs." - raise ValueError(msg) - def set_variable( state: h5py.File, diff --git a/PyStemmusScope/bmi/variable_reference.py b/PyStemmusScope/bmi/variable_reference.py index 123050c2..fc7ed14d 100644 --- a/PyStemmusScope/bmi/variable_reference.py +++ b/PyStemmusScope/bmi/variable_reference.py @@ -12,7 +12,8 @@ class BmiVariable: output: bool units: str grid: int - loc: list[str] + keys: list[str] + all_timesteps: bool = False VARIABLES: tuple[BmiVariable, ...] = ( @@ -24,7 +25,7 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["fluxes", "Resp"], + keys=["fluxes", "Resp"], ), BmiVariable( name="evaporation_total", @@ -33,7 +34,8 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["EVAP"], + keys=["EVAP"], + all_timesteps=True, ), # soil vars: BmiVariable( @@ -43,7 +45,7 @@ class BmiVariable: output=True, units="degC", grid=1, - loc=["TT"], + keys=["TT"], ), BmiVariable( name="soil_moisture", @@ -52,7 +54,7 @@ class BmiVariable: output=True, units="m3 m-3", grid=1, - loc=["SoilVariables", "Theta_U"], + keys=["SoilVariables", "Theta_U"], ), BmiVariable( name="soil_root_water_uptake", @@ -61,7 +63,7 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["RWUs"], + keys=["RWUs"], ), # surface runoff BmiVariable( @@ -71,7 +73,7 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["RS"], + keys=["RS"], ), BmiVariable( name="surface_runoff_hortonian", @@ -80,7 +82,8 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["ForcingData", "R_Dunn"], + keys=["ForcingData", "R_Dunn"], + all_timesteps=True, ), BmiVariable( name="surface_runoff_dunnian", @@ -89,7 +92,8 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["ForcingData", "R_Hort"], + keys=["ForcingData", "R_Hort"], + all_timesteps=True, ), # groundwater vars (STEMMUS_SCOPE) BmiVariable( @@ -99,7 +103,7 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["RWUg"], + keys=["RWUg"], ), BmiVariable( name="groundwater_recharge", @@ -108,7 +112,7 @@ class BmiVariable: output=True, units="cm s-1", grid=0, - loc=["gwfluxes", "recharge"], + keys=["gwfluxes", "recharge"], ), # groundwater (coupling) vars BmiVariable( @@ -118,7 +122,7 @@ class BmiVariable: output=False, units="-", grid=0, - loc=["GroundwaterSettings", "GroundwaterCoupling"], + keys=["GroundwaterSettings", "GroundwaterCoupling"], ), BmiVariable( name="groundwater_head_bottom_layer", @@ -127,7 +131,7 @@ class BmiVariable: output=False, units="cm", grid=0, - loc=["GroundwaterSettings", "headBotmLayer"], + keys=["GroundwaterSettings", "headBotmLayer"], ), BmiVariable( name="groundwater_temperature", @@ -136,7 +140,7 @@ class BmiVariable: output=False, units="degC", grid=0, - loc=["GroundwaterSettings", "tempBotm"], + keys=["GroundwaterSettings", "tempBotm"], ), BmiVariable( name="groundwater_elevation_top_aquifer", @@ -145,6 +149,6 @@ class BmiVariable: output=False, units="cm", grid=0, - loc=["GroundwaterSettings", "toplevel"], + keys=["GroundwaterSettings", "topLevel"], ), ) From d82af5ecc42a85c32fcf6cc9b7a750fec1ba4cc4 Mon Sep 17 00:00:00 2001 From: Bart Schilperoort Date: Mon, 15 Jul 2024 13:58:54 +0200 Subject: [PATCH 07/33] Add notebook demonstrating the groundwater coupling through BMI --- docs/notebooks/BMI_groundwater_coupling.ipynb | 268 ++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 docs/notebooks/BMI_groundwater_coupling.ipynb diff --git a/docs/notebooks/BMI_groundwater_coupling.ipynb b/docs/notebooks/BMI_groundwater_coupling.ipynb new file mode 100644 index 00000000..0fbd7967 --- /dev/null +++ b/docs/notebooks/BMI_groundwater_coupling.ipynb @@ -0,0 +1,268 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# STEMMUS_SCOPE BMI groundwater coupling\n", + "We have to choose how we want to run the BMI. We can do this either using a local executable file, or with a Docker container.\n", + "\n", + "How to run the model is define in the configuration file.\n", + "If it has an entry \"ExeFilePath\" it will use the local executable. If this is missing, it wil try to use Docker (if docker-py is available). " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "cfg_file = \"/home/bart/tmp/stemmus_scope/config_docker.txt\"\n", + "#cfg_file = \"/home/bart/tmp/stemmus_scope/config_exe.txt\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we are using the local executable file we first have to add the matlab runtime compiler locations to PATH:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "if \"exe.txt\" in cfg_file:\n", + " from PyStemmusScope.config_io import read_config\n", + " import os\n", + " os.environ['LD_LIBRARY_PATH'] = (\n", + " \"/home/bart/matlab_runtime/R2023a/runtime/glnxa64:\"\n", + " \"/home/bart/matlab_runtime/R2023a/bin/glnxa64:\"\n", + " \"/home/bart/matlab_runtime/R2023a/sys/os/glnxa64:\"\n", + " \"/home/bart/matlab_runtime/R2023a/extern/bin/glnxa64:\"\n", + " \"/home/bart/matlab_runtime/R2023a/sys/opengl/lib/glnxa64\"\n", + " )\n", + " os.environ[\"STEMMUS_SCOPE\"] = read_config(cfg_file)[\"ExeFilePath\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can initialize the model with a prepared configuration file:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from PyStemmusScope.bmi.implementation import StemmusScopeBmi\n", + "from cftime import num2pydate\n", + "from rich import print\n", + "import numpy as np\n", + "import xarray as xr\n", + "\n", + "model = StemmusScopeBmi()\n", + "\n", + "model.initialize(cfg_file)\n", + "\n", + "model.update() # STEMMUS_SCOPE needs to be updated by one timestep before the BMI is accessible" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After initialization we can enable the groundwater coupling. You enable this using the following command:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "model.set_value(\"groundwater_coupling_enabled\", np.array([True]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make use of the groundwater coupling routines, a few variables will need to be set:\n", + "- the elevation (above reference, e.g. Mean Sea Level) of the top of the aquifer (in cm)\n", + "- the groundwater head (above reference) in the lowest STEMMUS_SCOPE soil layer (in cm)\n", + "\n", + "The groundwater height (where the hydrostatic pressure is equal to 0.0, will be at a depth of `groundwater_elevation_top_aquifer` - `groundwater_head_bottom_layer` in the STEMMUS_SCOPE model).\n", + "\n", + "Lastly, a groundwater temperature can be defined. However, this is optional." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "model.set_value(\"groundwater_elevation_top_aquifer\", np.array([2000.]))\n", + "model.set_value(\"groundwater_head_bottom_layer\", np.array([2000-250.])) # 250 cm under ground surface\n", + "\n", + "model.set_value(\"groundwater_temperature\", np.array([50.])) # optional. 50 deg C here to get a high contrast" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the model. We define arrays to store the results that we want to inspect, and then step through all model timesteps:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "n_timesteps = int((model.get_end_time() - model.get_current_time())/model.get_time_step())\n", + "n_soil_layers = model.get_grid_size(model.get_var_grid(\"soil_moisture\"))\n", + "\n", + "soil_moisture = np.zeros((n_timesteps, n_soil_layers))\n", + "soil_temperature = np.zeros((n_timesteps, n_soil_layers))\n", + "time = []\n", + "i=0\n", + "\n", + "while model.get_current_time() < model.get_end_time():\n", + " model.get_value(\"soil_moisture\", soil_moisture[i])\n", + " model.get_value(\"soil_temperature\", soil_temperature[i])\n", + "\n", + " # Store the current time as a datetime\n", + " time.append(num2pydate(model.get_current_time(), model.get_time_units()))\n", + "\n", + " i+=1\n", + " model.update()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For easier anaylsis we can put the data into xarray DataArray objects:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "gs = model.get_grid_size(1)\n", + "depths = np.ones(gs)\n", + "model.get_grid_z(1, depths)\n", + "\n", + "da_sm = xr.DataArray(\n", + " data=soil_moisture,\n", + " dims=(\"time\", \"depth\"),\n", + " coords={\"time\": np.array(time), \"depth\": depths},\n", + ")\n", + "\n", + "da_t = xr.DataArray(\n", + " data=soil_temperature,\n", + " dims=(\"time\", \"depth\"),\n", + " coords={\"time\": np.array(time), \"depth\": depths},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can show the results. Note that up to ~2.5 m depth the soil is completely saturated, and that the temperature here equals the groundwater temperature we defined before." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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UnXq1EldunRRq1attH37dqfDBAAAiCgUegAAcIDHuEKyRbI777xTxhi9+eabql27ti699FLl5uZq69at2rx5s2rWrKl7773X6TABAECYIH8KDEO3AABwAKtGSB999JEWLFigM888U2effbZq1KihxYsXq27dupKkSZMmaciQIQ5HCQAAwgX5U2Ci/xECAICw9Mcff3iLOtWrV1fFihXVoEED7/EmTZowdAsAAKCY6NEDAIADQtF1ONK7HteqVUvbt29XSkqKJGno0KGqXr269/gff/yhk046yanwAFgxxukISo4rgl9fnf62hPFT57L4mTXh/n13sJuGv+emNJ838qfA0KMHAAAHeP5/1Qi7WyRr166dsrKyvF9PnTrVp9Dz2WefqU2bNk6EBgAAwhD5U2Do0QMAABzx9ttv+z1++umn67zzziulaAAAAKIDPXoAAHCAk6tGzJo1S6mpqUpISFBaWpq++uqrIs9dsGCBOnbsqKpVq+qkk05Su3bt9OKLL/qcY4zRuHHjVLt2bVWoUEHdunXTzz//HFRsf3XGGWeoVatWttsBAADRgVW3AkOPHgAAHODUGPP58+crIyNDs2fPVlpammbOnKn09HStX79etWrVKnB+9erVdffdd6t58+aKi4vTu+++q0GDBqlWrVpKT0+XJE2bNk2PPPKIXnjhBTVs2FBjx45Venq6fvjhByUkJAQU1++//67PPvtMO3bskMfj8Tk2bNiwYj9OAAAQfZijJzAUegAAKENmzJihIUOGaNCgQZKk2bNn67333tOzzz6rUaNGFTi/S5cuPl/feuuteuGFF/TZZ58pPT1dxhjNnDlTY8aMUe/evSVJc+bMUVJSkt566y1deeWVljE9//zz+ve//624uDidfPLJcv1lUkeXy0WhBwAAoBgYugUAgAOc6Hqcn5+vFStWqFu3bt59MTEx6tatm8+kyEUxxigzM1Pr16/XueeeK0natGmTsrOzfdqsUqWK0tLSAmpTksaOHatx48Zp37592rx5szZt2uTdfvnll2I9RgAAEL0YuhUYevQAAOCAUHY9zs3N9dkfHx+v+Pj4Aufv2rVLbrdbSUlJPvuTkpK0bt26Iu+zb98+1a1bV3l5eYqNjdVjjz2mCy+8UJKUnZ3tbePvbZ44ZuXQoUO68sorFRPD508ASkm4L6NtR5g/NEeXMC/ht5kSf2wl2LydlMSU4ts3Q7cCQ0YFAECES0lJUZUqVbzblClTQtp+5cqVtXr1an399de69957lZGRoaVLl4as/cGDB+u1114LWXsAAABlGT16AABwgJHksfnRnPn/f7du3arExETv/sJ680hSjRo1FBsbq5ycHJ/9OTk5Sk5OLvI+MTExatKkiSSpXbt2+vHHHzVlyhR16dLFe11OTo5q167t02a7du0CehxTpkzRpZdeqoULF6p169YqX768z/EZM2YE1A4AAIhuocyfgjF16lSNHj1at956q2bOnClJOnLkiEaMGKF58+YpLy9P6enpeuyxxwr0di5N9OgBAMABoRxjnpiY6LMVVeiJi4tThw4dlJmZ+WccHo8yMzPVqVOnwGP3eJSXlydJatiwoZKTk33azM3N1fLlywNuc8qUKVq0aJFycnK0du1arVq1yrutXr064LgAAEB0c3KOnq+//lpPPPGE2rRp47N/+PDheuedd/Taa69p2bJl+v3333X55ZeH4uEGjR49AACUIRkZGRowYIA6duyoM844QzNnztTBgwe9q3D1799fdevW9Q7/mjJlijp27KjGjRsrLy9P77//vl588UU9/vjjko6vinXbbbdp8uTJatq0qXd59Tp16qhPnz4BxTR9+nQ9++yzGjhwYEk8ZAAAAFsOHDigq6++Wk899ZQmT57s3b9v3z4988wzmjt3ri644AJJ0nPPPadTTz1VX375pc4880xH4qXQAwCAA5yaTLBfv37auXOnxo0bp+zsbLVr104LFy70di/esmWLz6TIBw8e1H/+8x/99ttvqlChgpo3b66XXnpJ/fr1854zcuRIHTx4UDfccIP27t2rzp07a+HChUpISAgopvj4eJ199tnFfiwAAKBscSp/uvnmm3XJJZeoW7duPoWeFStW6OjRoz6rjzZv3lz169dXVlYWhR4AAMoSJ1eNGDp0qIYOHVrosb9Psjx58mSfhKYwLpdLkyZN0qRJk4KK59Zbb9V///tfPfLII0FdDwAAygYnVi2dN2+eVq5cqa+//rrAsezsbMXFxalq1ao++4uz+mhJoNADAAAc9dVXX+njjz/Wu+++q5YtWxaYjHnBggUORQYAAKJVSkqKz9fjx4/XhAkTfPZt3bpVt956qxYvXhxwT+VwQKEHAAAHONmjJ9xUrVrV8UkLAZQAVwS/RjkcuinJ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euutgJddtzHlEgAACNaJVSPsbtFg9+7d6tq1q0455RRdfPHF2r59uyRp8ODBGjFihMPRAQCAcBGN+dPixYt1+umna/Hixdq3b5/27dunxYsXKy0tTe+++64++eQT7d69W7fffnvAbVLoAQDAASZEWzQYPny4ypcvry1btqhixYre/f369dPChQsdjAwAAISTaMyfbr31Vs2YMUNdu3ZV5cqVVblyZXXt2lUPPPCA7rjjDp199tmaOXOmFi9eHHCbEVHo2bx5swYPHqyGDRuqQoUKaty4scaPH6/8/HynQwMAADZ9+OGHuv/++1WvXj2f/U2bNtWvv/7qUFQAAAAlb+PGjUpMTCywPzExUb/88ouk4znRrl27Am4zIuboWbdunTwej5544gk1adJE3333nYYMGaKDBw/qwQcfdDo8/D9bPeCsrrU4bnVvY1XStLzeou5r0b7f+Kyutbp3Cccui+stn1uL61124nNZtG113DI2v4ct7x9j87Fbxu/33h6Ltv0eVozlYyvZ9q0ee4zFZzH+7u/v3scO5mmr35ZDJxRdh8Ot63GwDh486NOT54Q9e/YoPj7egYhQqixeMEyM1QuK/8NW13tiLdq3OO6Jtbi/n+ut7m0sMnXL661is3jubLdv4/52Y7ebG1rnNyXbvt/jdmO3YD9vtjhuN+/3lz/Zbtve9Va5oe23bTt/E1nEZvk3gZ+2PYfdFheHTjTmTx06dNAdd9yhOXPmqGbNmpKknTt3auTIkTr99NMlST///LNSUlICbjMiCj3du3dX9+7dvV83atRI69ev1+OPP06hBwAQmULRdzjc+h4H6ZxzztGcOXN0zz33SDo++aDH49G0adN0/vnnOxwdAAAIG1GYPz3zzDPq3bu36tWr5y3mbN26VY0aNdLbb78tSTpw4IDGjBkTcJsRUegpzL59+1S9enWnwwAAADZNmzZNXbt21TfffKP8/HyNHDlS33//vfbs2aPPP//c6fAAAABKTLNmzfTDDz/oww8/1E8//eTdd+GFFyom5nhXqz59+hSrzYgs9GzYsEH//e9/LXvz5OXlKS8vz/t1bm5uSYcGAEBgQrHqQ5h1PQ5Wq1at9NNPP+nRRx9V5cqVdeDAAV1++eW6+eabVbt2bafDK3PInwAAYStK86eYmBh1795dXbp0UXx8vFxW8yBYtReiuIIyatQouVwu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oCyItvwpNjZWF110kX788UdVrVpVLVq0CEm7xSr0jB8/XtLxJU/79etHIgYAQLCicNWIYHk8Ht17772aPXu2cnJy9NNPP6lRo0YaO3asUlNTNXjwYKdDDHvkaACAMiEK86dWrVrpl19+UcOGDUPWZlCTMQ8YMEAJCQn65ptv9OKLL+rFF1/UihUrQhYUAAAoOyZPnqznn39e06ZNU1xcnHd/q1at9PTTTzsYWeQhRwMAILJMnjxZt99+u959911t375dubm5PlswgpqMedu2bbryyiv1+eefq2rVqpKkvXv36qyzztK8efNUr169oIIBAABlz5w5c/Tkk0+qa9euuvHGG73727Ztq3Xr1jkYWeQhRwMAILJcfPHFkqRevXr5LKhwYoEFt9td7DaDKvQMHjxYR48e1Y8//qhmzZpJktavX69Bgwbp+uuv18KFC4NpNiyUdwX1lAAAokB5V/HfSIPlUgjGmIckEudt27ZNTZo0KbDf4/Ho6NGjDkQUuaI5RwMAIBrzpyVLloS8zaCqGsuWLdMXX3zhTSAkqVmzZvrvf/+rc845J2TBAQCA6NeiRQt9+umnatCggc/+119/Xe3bt3coqshEjgYAQGQ577zzQt5mUIWelJSUQj9hc7vdqlOnju2gAACIesZ1fLPbRhQYN26cBgwYoG3btsnj8WjBggVav3695syZo3fffdfp8CIKORoAIKpFYf70ySef+D1+7rnnFrvNoAo9DzzwgG655RbNmjVLHTt2lCR98803uvXWW/Xggw8G0yQAAGVLFK4aEazevXvrnXfe0aRJk3TSSSdp3LhxOu200/TOO+/owgsvdDq8iEKOBgCIalGYP3Xp0qXAvr/O1VNqc/QMHDhQhw4dUlpamsqVO97EsWPHVK5cOV133XW67rrrvOfu2bMnmFsAAIAy4NixY7rvvvt03XXXafHixU6HE/HI0QAAiCx//PGHz9dHjx7VqlWrNHbsWN17771BtRlUoWfmzJlB3QwAAPy/KPxEKhjlypXTtGnT1L9/f6dDiQrkaACAqBaF+VOVKlUK7LvwwgsVFxenjIwMrVixothtBlXoGTBgQDCXAQCA/+cyIVg1IswSlWB17dpVy5YtU2pqqtOhRDxyNABANCtL+VNSUpLWr18f1LUxwd5048aNGjNmjK666irt2LFDkvTBBx/o+++/D7ZJAABQ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3W5NmzZNixYtUps2bQrMVThjxoxit0mhBwAAB4RyjHliYmJAExbXqFFDsbGxysnJ8dmfk5MT9Pw6halatapOOeUUbdiwIWRtAgAAROMcPWvXrlX79u0lSd99953Psb9OzFwcFHoAACgj4uLi1KFDB2VmZqpPnz6SJI/Ho8zMTA0dOjRk9zlw4IA2btyoa6+9NmRtAgAARKOSmKswdLP9AACAwJkQbcWUkZGhp556Si+88IJ+/PFH3XTTTTp48KB3Fa7+/fv7TNacn5+v1atXa/Xq1crPz9e2bdu0evVqn946t99+u5YtW6bNmzfriy++0GWXXabY2FhdddVVxQ8QAACgKA7lT6Vhw4YNWrRokQ4fPizp+OqjwaJHDwAADnCq63G/fv20c+dOjRs3TtnZ2WrXrp0WLlzonaB5y5YtPqs+/P77797uxJL04IMP6sEHH9R5552npUuXSpJ+++03XXXVVdq9e7dq1qypzp0768svv1TNmjUDimnTpk06duyYmjZt6rP/559/Vvny5ZWamlr8BwoAAKJONA7d2r17t/75z39qyZIlcrlc+vnnn9WoUSMNHjxY1apV0/Tp04vdJoUeAADKmKFDhxY5VOtE8eaE1NRUy0+U5s2bZyuegQMH6rrrritQ6Fm+fLmefvrpAjEBAABEi+HDh6t8+fLasmWLTj31VO/+fv36KSMjI6hCD0O3AABwQhR3PS6uVatW6eyzzy6w/8wzz9Tq1atLPyAAABCeojB/+vDDD3X//ferXr16PvubNm2qX3/9Nag26dEDAIADorHrcbBcLpf2799fYP++ffvkdrsdiAgAAISjaMyfDh48qIoVKxbYv2fPHsXHxwfVJj16AACAo84991xNmTLFp6jjdrs1ZcoUde7c2cHIAAAAStY555yjOXPmeL92uVzyeDyaNm2azj///KDapEcPAABOCEXX4TD7RCpY999/v84991w1a9ZM55xzjiTp008/VW5urj7++GOHowMAAGEjCvOnadOmqWvXrvrmm2+Un5+vkSNH6vvvv9eePXv0+eefB9UmPXoAAHBCFI4xD1aLFi20Zs0a/fOf/9SOHTu0f/9+9e/fX+vWrVOrVq2cDg8AAISLKMyfWrVqpZ9++kmdO3dW7969dfDgQV1++eVatWqVGjduHFSb9OgBAACOq1Onju677z6nwwAAAChVW7Zs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ZcsWxcT82eH3rLPO0ty5czVmzBjdddddatq0qd566y21atXKe87IkSN18OBB3XDDDdq7d686d+6shQsX0r0apS6SXw8iOXYpsuMndudEcvzEjnDmMqWxBhoAAAAAAABKHHP0AAAAAAAARAkKPQAAAAAAAFGCQg8AAAAAAECUoNADAAAAAAAQJSj0OIQ5sAEAAIqH/AkAAGsUehzgdruVl5fndBhBOXLkiJ555hmtWrXK6VCC4vF45Ha7nQ4jKB6PRx6Px+kwgnL48GE988wz2r9/v9OhFNvRo0f1888/6/Dhw5Ii94+MSP3ZidTnG0DokT85I5JzJ4n8ySnkT86J1OcaoUWhp5TNnDlTXbt21T/+8Q898sgj2rFjh9MhBezRRx9VrVq1NH/+fO3cuVP5+flOh1QsDz30kLp166ZrrrlGr776qvbs2SMpMl7AH3nkEfXq1UtXX321Xn31Ve3bt8/pkAL2wAMPqFKlSnr55ZcVExNZLzkzZsxQ8+bNdcUVV6hz58768ssv5XK5IuJnRpLmzJmjRx99VJIi7rmXjr9e9urVS//5z3+0fPnyiHvNARA65E/OiOTcSSJ/cgr5k3PIneBlUCqWL19u2rdvb5o2bWoef/xxM2DAANO+fXvzwAMPOB1aQF555RXTqlUr88orrzgdSrHt3r3b9OrVyzRp0sQ89dRTpn///ubMM880vXv3djo0S2vWrDGdOnUyp5xyinnwwQdN9+7dTevWrc0999zjdGiWli5daho0aGAaNGhg3njjDafDKZYjR46Y6667zjRp0sS8/fbb5s033zSXXHKJadu2rdOhBeTHH380PXr0MC6Xy5x11lnmiy++MMYY4/F4HI4sMAcOHDCXX365SU1NNWPHjjWnn366adq0qRkzZozToQEoZeRPzojk3MkY8ienkD85h9wJfxdZJcoItWfPHs2dO1dnnXWWVq5cqRtvvFHPP/+8YmJidOTIEUnh28XuRFfdBQsWqEePHrryyiu1bds2zZ07V998841ycnIkhfcnO19//bW2bNmijz/+WNdff71eeOEFDR06VP/73//0xBNPOB1ekfbt26dnn31WjRs31hdffKERI0bogw8+0BlnnKEff/zR2xU2XD388MP6/ffftXHjRl1++eXKycnRDz/8oJ07dzodmqUNGzYoKytLTz75pHr16qU+ffro4osvVp06dXT06FFJ4fs7a4zRBx98oLi4OD399NNyu91asGCBjhw5IpfLFbZx/9UPP/ygtWvXasGCBZo0aZK++uorXXXVVXrllVc0b948p8MDUErIn5wTqbmTRP7kJPIn55A74e8o9JSCSpUq6dprr9WoUaNUqVIlSVJ+fr5q1KihU089VQcOHJDL5XI4yoKMMYqNjVV+fr6WL1+uSy+9VC+//LLatGmjxx57TD179lTPnj116NChsOzWeCJ5Wrt2rYwx3udekmrWrClJGjNmjLKzsx2Jrygn3khcLpeqV6+u//znPzr55JO9b5BNmzbVN998owoVKjgZZqH++iZ4zz33KC4uTnPmzNFdd92lM844Q1dffbXat2+vqVOnOhhl4f7+Br5u3TpVqVLF+/X777+vBg0a6PPPP5cxJmx/Z10uly699FLddtttuu6663TRRRfp888/18KFCyUpLOM+4cTv7N69e7V7927v76kkXX/99erSpYvGjh3rVHgAShn5U+mL1NxJIn9yCvmTs8idUJTweneJEm+88YaeeOIJrV27VocOHVJcXJzatGmjevXqSZKefPJJ1alTRz/88INGjBihiy++2DsO1GknYl+zZo3307IjR46odevWevLJJzVv3jw9//zzeu+99/Taa6/p0KFD6t+/v6Tw+FTqr/Gf+MSmXLlyKl++vLKysrznffbZZ/r3v/+txMREPfDAA5Kcj3/58uWS5B3DnJiYqDvvvFOdOnWSdPxxSFJOTo53X7j4a+wntGzZUjfccIMGDx6slStX6pFHHtF///tfXXXVVXrmmWc0ceJEp8L1UVjsNWrU0MUXX6yuXbvqhhtuULVq1bRp0yZt3bpV11xzjXr37q0//vjDqZB9LFq0SO+8845++eUXbzLbuHFjdenSRZJ00003qXz58nr77be9ibnTP+t/9c477+iNN97Qli1bvJ+A79u3T3Xr1tWPP/7oPS8lJUVXX321YmJiNH36dKfCBVCCyJ+cEcm5k0T+5BTyJ+eQOyEgpTlOLNpt3LjRdOzY0dSrV8+0b9/e1KtXzwwYMKDAeRkZGeaxxx4ze/fuNd99950ZP368qVmzpsnOzi79oP9fYbH379/fGGPMsWPHzI033mhq165tzjrrLJOXl+e9LjMz07hcLrNp0yaHIj+usPivueYaY4wxhw8fNunp6d7HlJqaalJSUsznn39uhg8fbjp37mwOHjzoWOxr1qwxZ511lnG5XObVV181xhx/zk/4+7jgHj16mIcffrjQY6XNKvZdu3aZO+64w3z77bfefQcPHjRjx441jRo1Mrt37y71mE8oLPajR496jx88eNAsW7bMdOvWzYwYMcK43W5z9OhR8+uvvxqXy2Xefvttp0I3xhjz1VdfmdatW5smTZqYFi1amCZNmpipU6f6nHPie/HEE0+Y0047zTzxxBNOhFqodevWmXbt2pl69eqZ5s2bmyZNmpi77rrLGGPMoUOHTP369c2oUaN8fjd37dplBg4caC6//HJz6NAhp0IHEGLkT86I5NzJGPInp5A/OYfcCcVBoSeE7r//fnP22Web/fv3m507d5o33njDVKxY0UyYMMHnzf3vby5vv/22qVu3rvnkk09KO2SvomIfO3asMcaYJUuWmBo1apgWLVr4XLd+/XrToEED89ZbbzkRtldR8Z+YgGzz5s3m2WefNf379zczZszwvgCOGDHCXHTRRY7F/fXXX5tzzz3X9OzZ0/Tq1ct06dLF+2ZZWBKyc+dOU6VKFfPZZ5959+Xk5JRavH/lL3a32+09b9++fQWuffzxx02jRo3Mhg0bSi3evwo09g0bNpg6deqYdevWGWP+TGSaNm1qbr/99tIP/P8tXLjQtG7d2owcOdL88ccfZuPGjeauu+4yHTp0MD/++KP3vBM/Q8eOHTO9e/c2vXv3Nt9//70xxpjvvvvOkdhPuPPOO81FF11k9u3bZ3799Vfz4IMPmooVK3qTqQcffNBUqVLFLFu2zOe6jIwM07lzZydCBlBCyJ+cEam5kzHkT+RPwYn0/IncCcVBoSdEjh07Zk477TRz5513+ux/4oknTEJCglmyZEmBa068iMyYMcOceeaZZv/+/aURagH+Yo+Li/O+WNx5553m5JNPNo8++qj3nPfee8+0bdvW0U/TrOL/63N/4jn3eDzmwIED5uKLLzY33nhjaYbr448//jBDhw4133//vXnttddM27Ztzf3332+M8X3DPGHevHmmcePGxpjjFfrrrrvOtGrVymzbtq1U4zam+LEb8+fzP3LkSHP++eebI0eOlFq8fxVo7GvXrjVt2rQx7733nndfVlaWadmypU+yWJqOHTtmnnrqKTN06FCza9cu73P60UcfmcaNG5sffvihwPnGHE9uTj/9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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "fig, (ax1, ax2) = plt.subplots(ncols=2, sharex=True, sharey=True, figsize=(14,5))\n", + "ax1.set_title(\"Soil Moisture\")\n", + "ax2.set_title(\"Soil Temperature\")\n", + "ax1.set_ylabel(\"depth (m)\")\n", + "ax2.set_ylabel(\"depth (m)\")\n", + "da_sm.plot(y=\"depth\", ax=ax1, cbar_kwargs={'label': \"volumetric moisture content (m3 m-3)\"})\n", + "da_t.plot(y=\"depth\", ax=ax2, cbar_kwargs={'label': \"temperature (deg C)\"})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is important to call `finalize()` on the model when you're done, otherwise the model will stay running in the background:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "model.finalize()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From ded2b50b1ba1b2cad01c22665804a25bc5b92c4d Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Wed, 21 Aug 2024 15:21:04 +0200 Subject: [PATCH 08/33] add MODFLOW coupling example --- docs/notebooks/bmi_MODFLOW_coupling.ipynb | 6839 +++++++++++++++++++++ 1 file changed, 6839 insertions(+) create mode 100644 docs/notebooks/bmi_MODFLOW_coupling.ipynb diff --git a/docs/notebooks/bmi_MODFLOW_coupling.ipynb b/docs/notebooks/bmi_MODFLOW_coupling.ipynb new file mode 100644 index 00000000..5568aeee --- /dev/null +++ b/docs/notebooks/bmi_MODFLOW_coupling.ipynb @@ -0,0 +1,6839 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# STEMMUS_SCOPE & MODFLOW 6 BMI coupling\n", + "\n", + "This Python notebook shows a simple example of BMI coupling between the STEMMUS_SCOPE model and the MODFLOW 6 model. To run this notebook, the following are required:\n", + "- Install the related packages\n", + " - pyStemmusScope package (https://pystemmusscope.readthedocs.io/en/v0.2.0/installation_instructions/).\n", + " - modflowapi Python package (https://github.com/MODFLOW-USGS/modflowapi?tab=readme-ov-file#installation).\n", + "- The executable files of both models. \n", + " - STEMMUS_SCOPE executable file can be retrieved from the link (https://github.com/EcoExtreML/STEMMUS_SCOPE/tree/main. Note: the STEMMUS_SCOPE executable file is Linux based only.\n", + " - MODFLOW 6 executable files can be retrieved from the link (https://github.com/MODFLOW-USGS/modflow6). \n", + "- The input files of both models are already prepared in advance and not part of this notebook. The input data files can be accessed via this link (https://zenodo.org/records/13354850). The link include also a version of the executbale files needed to run the models.\n", + "\n", + "\n", + "Notes\n", + "- Units in STEMMUS_SCOPE are centimetres and seconds. The model runs every 30 mins.\n", + "- Units in MODFLOW 6 are meter and day. The model runs every day.\n", + "- STEMMUS_SCOPE runs per time steps.\n", + "- MODFLOW 6 runs per stress periods and time steps. A stress period is the period of time when the model forcing is fixed. Each stress period can be divided into a number of time steps. In each time step, model variables will be updated (but model forcing is still fixed).\n", + "- This example runs for 10 days. STEMMUS_SCOPE has 480 time steps (length of each time step = 30 mins). MODFLOW 6 has 10 stress periods (length of each period = 1 day and each period has 48 time steps), so in total MODFLOW 6 runs 480 times." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import shutil\n", + "import numpy as np\n", + "import xarray as xr\n", + "from datetime import datetime\n", + "import matplotlib.pyplot as plt\n", + "from PyStemmusScope.config_io import read_config\n", + "from PyStemmusScope.bmi.implementation import StemmusScopeBmi\n", + "from modflowapi import ModflowApi\n", + "from modflowapi.extensions import ApiSimulation\n", + "from cftime import num2pydate\n", + "from rich import print" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "startTime = datetime.now()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Set up the workspace of both models" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "ws = os.path.join('.', 'SSM_examples', 'ex1')\n", + "exe_ws = os.path.join('.', 'SSM_examples', 'executables')\n", + "output_figures_ws = os.path.join(ws, 'output_figures')\n", + "if not os.path.exists(output_figures_ws):\n", + " os.makedirs(output_figures_ws)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1.1. Set up STEMMUS_SCOPE folder and config file" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "stsc_ws = os.path.join(ws, 'stsc_input', 'NL-Loo_2024-08-12-1341')\n", + "stsc_config_file = os.path.join(stsc_ws, \"NL-Loo_2024-08-12-1341_config.txt\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we are using the local executable file we first have to add the Matlab runtime compiler locations to PATH:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
/opt/matlab/MATLAB_Runtime/R2023a/runtime/glnxa64:/opt/matlab/MATLAB_Runtime/R2023a/bin/glnxa64:/opt/matlab/MATLAB_\n",
+       "Runtime/R2023a/sys/os/glnxa64:/opt/matlab/MATLAB_Runtime/R2023a/extern/bin/glnxa64:/opt/matlab/MATLAB_Runtime/R2023\n",
+       "a/sys/opengl/lib/glnxa64\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[35m/opt/matlab/MATLAB_Runtime/R2023a/runtime/\u001b[0m\u001b[95mglnxa64\u001b[0m:\u001b[35m/opt/matlab/MATLAB_Runtime/R2023a/bin/\u001b[0m\u001b[95mglnxa64\u001b[0m:\u001b[35m/opt/matlab/MATLAB_\u001b[0m\n", + "\u001b[35mRuntime/R2023a/sys/os/\u001b[0m\u001b[95mglnxa64\u001b[0m:\u001b[35m/opt/matlab/MATLAB_Runtime/R2023a/extern/bin/\u001b[0m\u001b[95mglnxa64\u001b[0m:\u001b[35m/opt/matlab/MATLAB_Runtime/R2023\u001b[0m\n", + "\u001b[35ma/sys/opengl/lib/\u001b[0m\u001b[95mglnxa64\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Add the matlab runtime compiler locations: \n", + "matlab_version = 'R2023a'\n", + "matlab_path = '/opt/matlab/MATLAB_Runtime/' + matlab_version \n", + " \n", + "os.environ['LD_LIBRARY_PATH'] = ( \n", + " f\"{matlab_path}/runtime/glnxa64:\"\n", + " f\"{matlab_path}/bin/glnxa64:\"\n", + " f\"{matlab_path}/sys/os/glnxa64:\"\n", + " f\"{matlab_path}/extern/bin/glnxa64:\"\n", + " f\"{matlab_path}/sys/opengl/lib/glnxa64\")\n", + "print(os.environ['LD_LIBRARY_PATH'])\n", + "os.environ[\"STEMMUS_SCOPE\"] = read_config(stsc_config_file)[\"ExeFilePath\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1.2. Set up MODFLOW 6 workspace and dll/so file" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "modflow_base_ws = os.path.join(ws, 'mf6_model_base')\n", + "modflow_ws = os.path.join(ws, 'mf6_model')\n", + "\n", + "if os.path.exists(modflow_ws):\n", + " shutil.rmtree(modflow_ws)\n", + "shutil.copytree(modflow_base_ws, modflow_ws)\n", + "\n", + "if sys.platform == \"win32\": # for Windows\n", + " dll = \"libmf6.dll\"\n", + "else:\n", + " dll = \"libmf6.so\" # for Linux\n", + "mf6_dll = os.path.join(exe_ws, dll)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Load and initialize models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.1. Initialize the STEMMUS_SCOPE model " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "stsc = StemmusScopeBmi()\n", + "stsc.initialize(stsc_config_file)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Note: STEMMUS_SCOPE needs to be updated by one timestep before the BMI is accessible" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "stsc.update()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Define arrays to store the needed STEMMUS_SCOPE variables" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "n_timesteps = int((stsc.get_end_time() - stsc.get_current_time())/stsc.get_time_step())\n", + "n_soil_layers = stsc.get_grid_size(stsc.get_var_grid(\"soil_moisture\"))\n", + "\n", + "soil_moisture = np.zeros((n_timesteps, n_soil_layers))\n", + "soil_temperature = np.zeros((n_timesteps, n_soil_layers))\n", + "gw_recharge = np.zeros(1)\n", + "gw_recharge_nstp = np.array([])\n", + "stsc_time = []\n", + "i = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.2. Initialize the MODFLOW 6 model and get other settings" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "mf6 = ModflowApi(mf6_dll, working_directory = modflow_ws)\n", + "mf6_config_file = os.path.join(modflow_ws, 'mfsim.nam')\n", + "mf6.initialize(mf6_config_file)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Load the MODFLOW 6 simulation and models" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('gwf', 'gwe')" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sim = ApiSimulation.load(mf6)\n", + "gwf_name = sim.model_names[0] # groundwater flow model \n", + "gwe_name = sim.model_names[1] # groundwater energy (heat) model\n", + "gwf_name, gwe_name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Get number of stress periods (days) and time steps of MODFLOW" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(10, 48)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nper, nstp = sim.nper, sim.nstp\n", + "nper, nstp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Get pointers of MODFLOW API data" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "top_tag = mf6.get_var_address(\"TOP\", gwf_name.upper(), \"DIS\") # tag of land surface (top) elevation\n", + "gwhead_tag = mf6.get_var_address(\"X\", gwf_name) # tag of groundwater heads\n", + "gwtemp_tag = mf6.get_var_address(\"X\", gwe_name) # tag of groundwater temperature\n", + "rch_tag = mf6.get_var_address(\"RECHARGE\", gwf_name.upper(), \"RCH_0\") # tag of groundwater recharge" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Get Initial head and temperature of MODFLOW" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2350.0, 10.0, 2600.0)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "top_elev = mf6.get_value(top_tag)[0] * 100 # multiply by 100 to convert from m to cm\n", + "gwhead_init = mf6.get_value(gwhead_tag)[0] * 100 # multiply by 100 to convert from m to cm\n", + "gwtemp_init = mf6.get_value(gwtemp_tag)[0]\n", + "\n", + "gwhead_init, gwtemp_init, top_elev" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Update MODFLOW 6 by one time step to match with the time step of STEMMUS_SCOPE" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "mf6.update()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Start STEMMUS_SCOPE & MODFLOW coupling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Enable groundwater coupling option in STEMMUS_SCOPE" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "stsc.set_value(\"groundwater_coupling_enabled\", np.array([True]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Set the MODFLOW 6 initial variables [Land surface elevation, groundwater initial head, and groundwater initial temperature (optional)] in STEMMUS_SCOPE" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "stsc.set_value(\"groundwater_elevation_top_aquifer\", top_elev)\n", + "stsc.set_value(\"groundwater_head_bottom_layer\", gwhead_init)\n", + "stsc.set_value(\"groundwater_temperature\", gwtemp_init) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Iterate through the time steps of both models and exchange variables.\n", + "\n", + "For every time step of STEMMUS_SCOPE:\n", + "- MODFLOW 6 gives groundwater head and groundwater temperature to STEMMUS_SCOPE\n", + "\n", + "For every stress period of MODFLOW 6 (which has 48 time steps of MODFLOW 6):\n", + "- STEMMUS_SCOPE gives groundwater recharge to MODFLOW 6 (recharge_stress_period = sum of 48 recharge_time_step)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 1, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m1\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 2, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m2\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 3, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m3\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 4, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m4\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 5, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m5\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 6, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m6\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 7, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m7\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 8, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m8\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 9, time step 48\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m9\u001b[0m, time step \u001b[1;36m48\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 1\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m1\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 2\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m2\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 3\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m3\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 4\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m4\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 5\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m5\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 6\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m6\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 7\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m7\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 8\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m8\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 9\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m9\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 10\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 11\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m11\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 12\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m12\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 13\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m13\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 14\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m14\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 15\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m15\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 16\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m16\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 17\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m17\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 18\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m18\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 19\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 20\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m20\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 21\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m21\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 22\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m22\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 23\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m23\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 24\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m24\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 25\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m25\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 26\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m26\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 27\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m27\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 28\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m28\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 29\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m29\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 30\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m30\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 31\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m31\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 32\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m32\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 33\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m33\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 34\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m34\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 35\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m35\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 36\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m36\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 37\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m37\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 38\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m38\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 39\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m39\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 40\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m40\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 41\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m41\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 42\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m42\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 43\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m43\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 44\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m44\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 45\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m45\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 46\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m46\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Updating MODFLOW Stress period 10, time step 47\n",
+       "
\n" + ], + "text/plain": [ + "Updating MODFLOW Stress period \u001b[1;36m10\u001b[0m, time step \u001b[1;36m47\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "while mf6.get_current_time() < mf6.get_end_time():\n", + " while stsc.get_current_time() < stsc.get_end_time(): \n", + " \n", + " # Get STEMMUS_SCOPE variables (soil moisture, soil temperature, groundwater recharge) \n", + " stsc.get_value(\"soil_moisture\", soil_moisture[i])\n", + " stsc.get_value(\"soil_temperature\", soil_temperature[i])\n", + " stsc.get_value(\"groundwater_recharge\", gw_recharge)\n", + " gw_recharge_nstp = np.append(gw_recharge_nstp, gw_recharge)\n", + "\n", + " # Store the current time as a datetime\n", + " stsc_time.append(num2pydate(stsc.get_current_time(), stsc.get_time_units()))\n", + " i+= 1\n", + "\n", + " # Get MODFLOW 6 variables (groundwater head, groundwater temperature)\n", + " gwhead = mf6.get_value(gwhead_tag)[0] * 100\n", + " gwtemp = mf6.get_value(gwtemp_tag)[0]\n", + "\n", + " # Set STEMMUS_SCOPE variables (groundwater head, groundwater temperature)\n", + " stsc.set_value(\"groundwater_head_bottom_layer\", gwhead)\n", + " stsc.set_value(\"groundwater_temperature\", gwtemp)\n", + " \n", + " # Set MODFLOW 6 variables (groundwater recharge)\n", + " kstp, kper = sim.kstp, sim.kper \n", + " if kstp == nstp - 1:\n", + " # groundwater recharge per stress period = sum of groundwater recharge per time step \n", + " gw_recharge_nper = np.array([-1 * np.sum(gw_recharge_nstp) / 100]) # multiply by -1 due to different signs of both models\n", + " mf6.set_value(rch_tag, gw_recharge_nper)\n", + " gw_recharge_nstp = np.array([]) \n", + " \n", + " # Track the simulation time of MODFLOW 6 \n", + " print('Updating MODFLOW Stress period ' + str(kper + 1) + ', time step ' + str(kstp + 1))\n", + " # print(kper + 1, kstp + 1, gwhead, gwtemp)\n", + " \n", + " # Update models\n", + " stsc.update()\n", + " mf6.update()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Finalize models" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " mf6.finalize()\n", + " stsc.finalize()\n", + "except:\n", + " raise RuntimeError" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Export results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Analyze the STEMMUS_SCOPE variables (put the data into xarray DataArray objects)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "gs = stsc.get_grid_size(1)\n", + "depths = np.ones(gs)\n", + "stsc.get_grid_z(1, depths)\n", + "\n", + "da_sm = xr.DataArray(\n", + " data=soil_moisture,\n", + " dims=(\"time\", \"depth\"),\n", + " coords={\"time\": np.array(stsc_time), \"depth\": depths},)\n", + "\n", + "da_t = xr.DataArray(\n", + " data=soil_temperature,\n", + " dims=(\"time\", \"depth\"),\n", + " coords={\"time\": np.array(stsc_time), \"depth\": depths},)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Show the STEMMUS_SCOPE soil moisture and soil temperature results" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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n/6EQw45JLIJxwUXXFC2TBqTCCGEkHrREVczMWQyGezYsQMA8Nxzz2Hq1KkAgF69enkeS4QQQgghUtmPamV0NH7+85+jR48eeP311/H6668HzgkhaEwihBBCSNvjyCOPxMyZM3HEEUfg1VdfxcMPPwwA+Oc//4k999yzztoRQgghhLRtVqxYUXOZzJlECCGE1AMm4Pa47bbbkEql8Oijj+KOO+7AoEGDAAC///3vMXny5DprRwghhJBWg7J3c6vm0V7WT5WQzWaxdOlS5PP5qmXRM4kQQgipA8yZ5LPXXnvhySefjJTfeuutddCGEEIIIa0VCQVZpTWo2vZtkR07duD888/HfffdB8D2/h4+fDjOP/98DBo0CJdddlnZMtuMZ9KXv/xl7LXXXmhsbMSAAQPwjW98Ax999FG91SKEEEJIBei5kLZs2VLwQQghhBBCKmfWrFn429/+hsWLF6OxsdErnzhxopdeoFzajGfS5z//eVx++eUYMGAAVq9ejUsuuQRf/epX8fLLL9dbNUIIIaR8Ovh2JD179sSaNWvQt29f9OjRA0KISB2lFIQQsCyrDhoSQgghpLXhhapVKaOj8cQTT+Dhhx/GYYcdFlhz7b///li+fHlFMtuMMemiiy7yng8ZMgSXXXYZpkyZglwuh3Q6HdumpaUFLS0t3jF/3SSEENJa6Ohhbn/4wx/Qq1cvAMDzzz9fZ22IDtdPhBBCWivcza0y1q9fj759+0bKt2/fHvuDXim0GWOSzoYNG/CLX/wChx9+eKIhCQDmzZuHa6+9djdqRgghhJBSOProo2Ofk/rD9RMhhBDSvhg7dix+97vf4fzzzwcAz4B01113Yfz48RXJbFPGpO9973u47bbbsGPHDhx22GGxyTp1Zs2ahZkzZ3rHW7ZsweDBg3e1moQQQkhxOniYW5hNmzbh5z//Od59910Attv1WWedhe7du9dZs44H10+EEEJaKwxzq4zvf//7OP744/HOO+8gn8/jRz/6Ed555x28/PLLeOGFFyqSWdcE3JdddhmEEAUf7733nlf/u9/9Lv7617/imWeegWmamDp1KlSBO6GhoQFNTU2BByGEENIqUDV6tANee+017L333rj11luxYcMGbNiwAbfccgv23ntvvPHGG/VWr8PB9RMhhJDWirubW7WPjsaRRx6JN998E/l8HgceeCCeeeYZ9O3bF0uWLMEhhxxSkcy6eiZdfPHFOPPMMwvWGT58uPe8d+/e6N27Nz7zmc9gv/32w+DBg/HnP/+5YrcsQgghhNSfiy66CF/+8pdx5513IpWylyb5fB7nnHMOvvOd7+CPf/xjnTUkhBBCCGnb7L333rjzzjtrJq+uxqQ+ffqgT58+FbWVUgJAIEEkIYQQ0lbo6Am4dV577bWAIQkAUqkULr30UowdO7aOmhFCCCGkNcEwt8qxLAu/+tWvvJQCo0aNwkknnRRYf5VDm8iZ9Morr+Avf/kLjjzySPTs2RPLly/HVVddhb333pteSYQQQtomzJnk0dTUhJUrV2LfffcNlK9atQrdunWrk1aEEEIIaW1IpSCrtAZV274t8vbbb+PLX/4y1q5di5EjRwIAbrzxRvTp0we//e1vccABB5Qts645k0qlc+fOePzxxzFhwgSMHDkSZ599NkaPHo0XXngBDQ0N9VaPEEIIIVVw2mmn4eyzz8bDDz+MVatWYdWqVXjooYdwzjnn4Gtf+1q91SOEEEIIadOcc8452H///fHhhx/ijTfewBtvvIFVq1Zh9OjR+OY3v1mRzDbhmXTggQfiD3/4Q73VIIQQQmoHPZM8fvjDH0IIgalTpyKfzwMA0uk0zjvvPNxwww111o4QQgghrQVL2o9qZXQ03nzzTbz22mvo2bOnV9azZ09cf/31OPTQQyuS2SaMSYQQQkh7gzmTfDKZDH70ox9h3rx5WL58OQA7SWTnzp3rrBkhhBBCWhMMc6uMz3zmM1i3bh3233//QPnHH3+MESNGVCSTxiRCCCGEtAo6d+6MAw88sN5qEEIIIYS0K+bNm4cLLrgA11xzDQ477DAAwJ///GfMmTMHN954I7Zs2eLVbWpqKkkmjUmEEEJIPWCYm0dzczN+8pOf4Pnnn8fHH3/s7djq8sYbb9RJM0IIIYS0JqRSsOiZVDZf+tKXAAD/+Z//CSEEAEA583DiiSd6x0IIWJZVkkwak/5/e3cep3O9/3/8eQ1mZBlbzBiNhohEyDK2Q0Vn5JSEEk7odKhOUugUhaJCJWk7R/Ur2pNv+6YktBAlpDKiMFnGkuwxM9f1+v3hzFXDYGaua+bzvmYe99vtczvmuj6fzzzmomve5319FgAAPODlaW6PP/64HnjgAaWnp6tp06Z69NFH1bp161zX/f777zVu3DgtW7ZMGzdu1EMPPaSbb745xzp33XWXxo8fn+OxBg0aKDU1NU8911xzjT766CP17t1brVu3Dg5yAAAA/ixgoU8GBQppLmnDhg26++679cknnyg9PV0JCQn6+9//rjvuuEPR0dHH3e68887TwoULczx27bXXavr06WFrmz9/ftj2lY3JJAAASpBZs2ZpxIgRmj59upKTkzVt2jSlpKRozZo1qlGjxjHrHzx4UHXr1tXll1+u4cOHH3e/Z599tj7++OPg16VL532I8e677+r9999X+/bt8/fDAAAAOCI1NVWBQEBPPPGE6tWrp++++06DBw/WgQMHNGXKlBNuO3jwYE2YMCH4dbivG9mpU6ew7k9iMgkAAG+E8TS3P5/nLkkxMTGKiYnJdZOpU6dq8ODBuvrqqyVJ06dP13vvvadnnnlGo0aNOmb9Vq1aBe/ykdvz2UqXLq34+PiC/BSqVauWKlasWKBtAQBAyRHOu7nlZ/yUF127dlXXrl2DX9etW1dr1qzRf//735NOJpUrV67A46i8OnTokL799ttcLynQvXv3fO8vKlxhAAAgHyxMi6TExERVqlQpuEyaNCnXb5mRkaFly5apS5cuwceioqLUpUsXLV68OKQfZ+3atUpISFDdunXVv39/paWl5XnbBx98ULfddps2btwYUgMAACjesu/mFuoi5X38FIo9e/aoatWqJ13vxRdf1KmnnqrGjRtr9OjROnjwYFg75syZo9q1a6tNmzbq3r27evToEVwuu+yyAu2TI5MAAIhwv/zyS447bxzvU7WdO3fK7/crLi4ux+NxcXF5vr5RbpKTkzVz5kw1aNBAW7du1fjx4/WXv/xF3333XZ6OOGrZsqUOHTqkunXrqly5cipTpkyO53ft2lXgNgAAgNzkdfxUUOvWrdOjjz560qOS+vXrp9NPP10JCQn69ttvddttt2nNmjV6/fXXw9Zy44036vLLL9e4ceOOGQcWFJNJAAB4wPe/JdR9SEdu4ZrX27gWhosuuij453POOUfJyck6/fTT9eqrr+qaa6456fZ9+/bV5s2bNXHiRMXFxXEBbgAAkCt/GO7mlr19XsdPo0aN0n333XfCdVavXq2GDRsGv968ebO6du2qyy+/XIMHDz7htkOGDAn+uUmTJqpZs6Y6d+6sn376SWecccZJ+/Ji27ZtGjFiRNgmkiQmkwAA8EYYr5mU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AQAA4DiYTAIAwAPhuIB2cbkA91133aXLL79clStX9joFAAA4LBx3Y+NubuHBZBIAAF4wheGaSWEp8dzgwYO9TgAAABEgEJB8IU4GBQJhiinhuGYSAAAAAAAA8owjkwAA8AJ3cwMAAMgXs9AvoM0FuMODySQAALwQkOQLwz4AAABKCAscWULdB0LHaW4AAAAAAADIM45MAgDAA9zNDQAAIH8CAQvDBbgZP4UDRyYBAOCF7GsmhboUwOOPP66kpCSVLVtWycnJWrp06QnXnz17tho2bKiyZcuqSZMmev/993M8P2jQIPl8vhxL165dC9QGAABwPBawsCyFYcGCBceMh7KXr7766rjbnXfeecesf9111xVKYzgxmQQAQAkya9YsjRgxQnfeeae++eYbNW3aVCkpKdq+fXuu6y9atEh9+/bVNddco+XLl6tHjx7q0aOHvvvuuxzrde3aVVu3bg0uL7/8clH8OAAAAE5o165djrHQ1q1b9c9//lN16tRRy5YtT7jt4MGDc2x3//33F1F1wXGaGwAAXgjj3dz27t2b4+GYmBjFxMTkusnUqVM1ePBgXX311ZKk6dOn67333tMzzzyjUaNGHbP+ww8/rK5du+rf//63JOnuu+/W3Llz9dhjj2n69Ok5vmd8fHxoPw8AAMAJhOPIouzt8zN+yovo6OgcY6HMzEy99dZbuvHGG+XznfiuK+XKlYu4cRRHJgEA4IUwnuaWmJioSpUqBZdJkybl+i0zMjK0bNkydenSJfhYVFSUunTposWLF+e6zeLFi3OsL0kpKSnHrL9gwQLVqFFDDRo00PXXX69ff/01lFcHAADgGAGzsCxS3sdPBfX222/r119/DX6AdyIvvviiTj31VDVu3FijR4/WwYMHw9pSGDgyCQCACPfLL78oNjY2+PXxPlXbuXOn/H6/4uLicjweFxen1NTUXLdJT0/Pdf309PTg1127dlXPnj1Vp04d/fTTT7r99tt10UUXafHixSpVqlRBfywAAIBCk9fxU0E9/fTTSklJ0WmnnXbC9fr166fTTz9dCQkJ+vbbb3XbbbdpzZo1ev3118PaE25MJgEA4IWApBMf8Zy3fUiKjY3NMRgqaldeeWXwz02aNNE555yjM844QwsWLFDnzp096wIAAMVLOE9zy+v4adSoUbrvvvtOuM7q1avVsGHD4NebNm3Shx9+qFdfffWk+x8yZEjwz02aNFHNmjXVuXNn/fTTTzrjjDNOur1XmEwCAMADPjP5QrxmUn63P/XUU1WqVClt27Ytx+Pbtm077nn68fHx+VpfkurWratTTz1V69atYzIJAACEjVkYJpPyOX4aOXKkBg0adMJ16tatm+PrGTNmqFq1aurevXt+85ScnCxJWrduHZNJAADAe9HR0WrRooXmzZunHj16SJICgYDmzZunoUOH5rpN27ZtNW/ePN18883Bx+bOnau2bdse9/ts2rRJv/76q2rWrBnOfAAAgCJXvXp1Va9ePc/rm5lmzJihAQMGqEyZMvn+fitWrJAk58dRXIAbAAAvhPEC3PkxYsQIPfXUU3r22We1evVqXX/99Tpw4EDw4pADBgzQ6NGjg+vfdNNNmjNnjh588EGlpqbqrrvu0tdffx2cfNq/f7/+/e9/68svv9SGDRs0b948XXrppapXr55SUlLC81oBAADoyClqgRCXUI9sOplPPvlE69ev1z//+c9jntu8ebMaNmyopUuXSpJ++ukn3X333Vq2bJk2bNigt99+WwMGDFDHjh11zjnnFGpnqDgyCQAALwRM8oU4mCnAYKhPnz7asWOHxo0bp/T0dDVr1kxz5swJXmQ7LS1NUVF/fNbUrl07vfTSSxozZoxuv/121a9fX2+++aYaN24sSSpVqpS+/fZbPfvss9q9e7cSEhL017/+VXfffXfYL2QJAABKNjPL92lque2jMD399NNq165djmsoZcvMzNSaNWuCd2uLjo7Wxx9/rGnTpunAgQNKTExUr169NGbMmEJtDAefFfYr6ZC9e/eqUqVKWp9aUxUrclAWACCnffsCqtNwq/bs2VNoF7TO/l3U5YybVbpUaJMtWf7D+vinaYXaC2T/m71aiYrmoHYAwFEyFNAM/VIk46c61zyvqOhyIe0rkHFQ65++ivFTiDgyCQAALxTwNLVj9gEAAFBChPNubggNk0kAAHgiDJNJYjAEAABKjkDACnSa/zH7QMg4VhkAAAAAAAB5xpFJAAB4gdPcAAAA8sUCflnAH/I+EDomkwAA8ELAFPJpahymDQAAShAmk9zBaW4AAAAAAADIM45MAgDACxY4soS6DwAAgBLCAoEwHJnE+CkcmEwCAMALXDMJAAAgX8zvl/lDnEwKcXscwWluAAAAAAAAyDOOTAIAwAtcgBsA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mZSQkKBffvlFFStWlM/n8zonh7179yoxMVG//PJLoR1qV1Aut0n0hcLlNsntPpfbJLf7XG4zM+3bt69QDxcuW7as1q9fr4yMjLDsz8yO+Z3Gbd0RToyfCsblNsntPpfbJLf7XG6T3O5zuU1yu6+4j59GjRql++6774T7W716tRo2bBiWtkhRoiaToqKidNppp3mdcUKxsbHOvTlkc7lNoi8ULrdJbve53Ca53edqW2F9ovZnZcuWVdmyZQv9+xzt1FNPValSpbRtW84jdLdt26b4+Phct4mPjz/h+tn/u23bNtWsWTPHOs2aNQtjPbzC+Ck0LrdJbve53Ca53edym+R2n8ttkrt9xXn8NHLkSA0aNOiE69StWzdP+4qPjz/mLrrZ46wTjcWOvlFKVlaWdu3addxtigJXUQQAoISIjo5WixYtNG/evOBjgUBA8+bNU9u2bXPdpm3btjnWl6S5c+cG169Tp47i4+NzrLN3714tWbLkuPsEAACIFNWrV1fDhg1PuOR24ezctG3bVqtWrcoxOTR37lzFxsaqUaNGx91m9+7dWrZsWfCxTz75RIFAQMnJyaH9cCFgMgkAgBJkxIgReuqpp/Tss89q9erVuv7663XgwAFdffXVkqQBAwbkuED3TTfdpDlz5ujBBx9Uamqq7rrrLn399dcaOnSoJMnn8+nmm2/WPffco7ffflurVq3SgAEDlJCQoB49enjxIwIAAHgiLS1NK1asUFpamvx+v1asWKEVK1Zo//79kqS//vWvatSoka666iqtXLlSH374ocaMGaMbbrgheJrd0qVL1bBhQ23efORahWeddZa6du2qwYMHa+nSpfriiy80dOhQXXnllZ7dyU0qYae5uSwmJkZ33nmnk9e5cLlNoi8ULrdJbve53Ca53edyW0nQp08f7dixQ+PGjVN6erqaNWumOXPmBC/+mJaWpqioPz5rateunV566SWNGTNGt99+u+rXr68333xTjRs3Dq5z66236sCBAxoyZIh2796tDh06aM6cOZ4cio6SxeX3E5fbJLf7XG6T3O5zuU1yu8/lNsn9Phwxbtw4Pfvss8Gvs+/ONn/+fJ133nkqVaqU3n33XV1//fVq27atypcvr4EDB2rChAnBbQ4ePKg1a9YoMzMz+NiLL76ooUOHqnPnzoqKilKvXr30yCOPFN0PlgufFcn9+wAAAAAAAFAccJobAAAAAAAA8ozJJAAAAAAAAOQZk0kAAAAAAADIMyaTAAAAAAAAkGdMJgEAAAAAACDPmExCxHD1xoNZWVleJxzXjh075Pf7vc44rpUrV2rv3r1eZwAAUGwxfso/xk8AcHJMJhWynTt3atGiRfr555+9TsnV9u3b9dJLL+mLL77Qb7/95nVODrt27VLfvn01Y8YMSe4NhrZs2aLWrVtr3LhxXqccY+vWrerZs6eGDRumVatWeZ1zjM2bN+uKK65Q8+bN9fzzz3udk0N6erruvfdezZgxQ4sXL5bk1r+9bdu26e2339bKlSudG4inp6fr2Wef1WeffRYc5Lr02gGIHC6Pn1weO0mMn0LB+KngGD8VHOMnRComkwrR6NGjddZZZ+nmm29W48aN9dBDD+nXX3/1Oito1KhRqlevnp544gl17dpVw4YN04YNG7zOCnrhhRc0a9YsPfbYY9q1a5eioqIUCAS8zpIkDR8+XElJSYqPj9fQoUO9zpH0xy+d2bNnq0mTJvL7/Ro6dKji4uJyPO+1ESNGqHbt2vr9999VpUoVVaxY0eukoPHjx6tevXr69NNPNWXKFF1++eX66quv5PP5nHj9xo0bp7p16+rhhx9Wx44d9a9//Us//PCDJHn+38bkyZOVlJSkJ598Ul27dlW/fv20cuVKZ147AJHD5fGT62MnifFTfjF+Ch3jp4Jj/ISIZgi7zZs3W+/eva1ly5a2YMEC27hxo40dO9YaNWpkb7/9ttd5tmnTJktJSbHWrVvbwoUL7fDhw/bcc89Z48aN7Z133vE6L6h379522WWXWZcuXeyWW24xMzO/3+9p08aNGy0hIcHq1q1rS5Ys8bTleHr06GH33HNP8OsDBw54WPOHDz74wGJjY61Zs2a2cOFCMzP761//an369PG47Ij333/fmjdvbh988IGZma1atcrOO+88u+OOOzwuO+Lll1+21q1b27x58ywrK8vefPNN++tf/2qtWrXyOs02bNhgjRs3thdeeMHMzN577z27+OKL7cwzz7RDhw55XAcgUrg8foqUsZMZ46eCYvxUMIyfCo7xEyIdRyaFif1p5nj16tXy+Xx65JFH1KlTJ9WuXVsTJkzQgQMHtG3btmPWL+q+jIwMdevWTU8//bQ6duyo6Oho9erVSz6fT2eeeWaRdh3dJv1xDn21atV05ZVXqkOHDnrnnXe0bNkyRUVFefralSpVSrVq1VLr1q3VunVrffPNN7r11ls1depUffzxxzp06JBnbZL05ZdfatWqVRo2bJiWL1+unj17qmfPnrruuuu0YMGCXLcpqr709HQ98cQTWr58uTp27KiMjAwlJSVp3759npz3n92W/b/vv/++JKlr166SpMaNGysqKkrdunU7Zhsv+t544w0lJCToggsuUKlSpXTppZeqdevW+vrrrzVt2rQi7/uzjz76SNu2bdPll18uSerWrZumTZumvXv36vbbb/ekCUBkcHn85PLY6eg+ifFTQdskxk8FaWP8FDrGT4h0TCaFwaFDh7R///7g102aNNHQoUPVtm1bSUcOnzQz1apVK3gopc/n86yvVq1auuqqq9S4cWNJ0u7du3XllVfq8OHDmjx5st54440ie1M9us3MVLp0aUnSN998o6SkJPXq1Uunn366/vvf/yorK0urVq3yrC8hIUETJkzQrFmzlJKSossuu0ypqamaOXOm+vfvr+HDh3vWJkkVK1bUb7/9po8++kg33HCDkpKS1LFjR61du1YXX3yx1q9fX2T/9o7uGzBggK688kpJkt/vV3R0tOLi4rR27VrFxsYW6S/yP7f5fD4FAgHVq1dPO3bs0Ny5c7Vp0yb16dNHX3/9te68805df/31+u233zx57Xw+n/bv36+srCwlJSUpIyMjuF6ZMmV01llnady4cdq3b1+R9GX/Pfn9/uCfTzvtNPn9fu3YsUPSkfe8M844Q/fee68ef/xxbdy4sdC7AEQel8dPLo+dcutj/FTwNonxU0HaGD/lD+MnFEuFcbhTSTJu3Dg766yzrF27dnb77bfb5s2bczyffVhxenq6xcbG2qJFizzt27JlS47n09LSLDY21jp37mwzZ860K664ws466yy77bbbiqytffv2OdoCgYBt27bN2rVrZzt27DAzs//+979Wo0YN8/l8NnHixCI59PN4f7d79uyxa6+91lq2bGlLly61gwcPmpnZww8/bE2bNrX//Oc/RdZ29Gu3fPlyu/DCC61169bWv39/y8jIMDOzgwcPWnJysvXu3dvMCv9w96Nfu61bt5rZkb/bP//v/PnzrUKFCrZ69epC7cmtLfu1y/57XbNmjV111VV20UUXWXR0tF1wwQU2d+5cmzZtmp199tnWvXv3HO1F1bdp0yYzM7vzzjutWbNmNmbMGNuxY4eNHTvWqlWrZi+88IKdfvrpdv/99xdql5nZlClT7B//+Efw6+zXYsGCBdamTRubOnVqjvX37dtnjRo1shtvvNHMvD/NAoA7XB4/uTx2+nMf46eCtzF+Kngb46f8Y/yE4orJpBAMHTrU6tWrZ7Nnz7YRI0ZY06ZNrVWrVrZ3797gOtlvFu+8847Vr1+/SM9/PV7fvn37cqy3fPnyHF+PHTvWmjdvbnv27CnytuzXLiMjw9q3b2+7d++2Dz74wOLi4iw2NtYaNmxohw8fNrPC/aWUW1/Lli1t//79Zmb2448/2uLFi83v9wff4H/99VdLSUmxoUOHWlZWVpG3HTp0yLKysqxfv37m8/nsgQceMDMLtsyePdtOPfVU27lzZ6G1najv6H93ZmYff/yxJSUl2dy5cwu16WRt2X+vZmZvvPGGde7c2Xbt2hV8bMGCBRYTE2NpaWlF3teiRQvLzMy0jIwMu+WWW6x+/fp26qmn2plnnmnz5883M7POnTvb3XffXWhd33//vV1yySVWvnx5i4uLs9mzZ5uZBQfbmZmZ1rt3b7vkkkvsu+++M7M//vu8/fbbrXPnzsH/0wAALo+fXB47naiP8VPB2xg/FbyN8dOJMX5CccdkUgEEAgHbsWOHNWvWzJ544ong42vXrrVq1arZ8OHDgxfty35DGD9+vPXr1y+47ueff26vvfaa531Hb2dm1rdvX+vUqZMdPHgw7AOOk7XdfPPNdujQIVu6dKnVrFnTmjZtahUqVLB7773Xnn76aWvRokXwE4TCmKXPS9/vv/9+zHbZLQ0aNLAhQ4aEvSsvbdmfXnz66acWHx9v7du3z7H9vffea23atLHdu3cXykAyP//usl+v33//3cqXL28vvfRSjseLuu3mm28ODsQnTpxoKSkpObZ/6qmnrE6dOvbjjz960nfjjTcGX5vNmzfbN998k2P7xMREmzRpUqG0mR35+bt3726zZs2yAQMGWIcOHYL/pyR7QPTuu+9aq1atghd7zXbFFVfYxRdfHPw5AZRcLo+fXB475aWP8VPB2xg/FbyN8dOJMX5CccdkUgGlp6dbVFRU8E0pMzPTzMyef/55i46ODt5tIVu7du3s6aeftk2bNtlFF11kpUqVspkzZzrTl23ZsmV23nnn2dNPP+1JW5kyZeyzzz4zM7Nzzz3XBgwYYGvXrjUzs507d9rAgQOtVatWOT4JKcq+E712H3/8sbVq1cq++OILT9r+/NpNnjzZatSoYSNGjLDU1FRbt26dXXjhhTZq1KhCaztZ39GvXSAQsP3791tKSopde+21hdqVn7YxY8ZYp06d7I033rDMzExbu3atXXjhhXb11VcX6mHGBf1393//93/WqlUr+/nnn8PelD142bt3r3366admduSTx6ZNmwYHX3/+FPnuu++2+vXr2x133GEbN260H374wZKTk+2hhx4KexuAyOTy+MnlsdPJ+hg/FbyN8VN42hg//YHxE0oKJpMK6LfffrPk5OTgpxl/njFu0aKF9e3bN/j1mjVrrEqVKsFziS+99NJCP1Q2r32BQMBSU1Pt008/tZtuusliY2Pt2muvLdRDKk/Udu6559oVV1xhZmY7duw45pfP6tWrcz3ct6j6jn7tfvjhB1uwYIENGzbMqlSpYsOHDw9+0uBFW/Zrt3PnTnvuueesatWq1rhxY4uNjbU+ffo489r9+Rdos2bNrH///oV+CkNeX7uVK1da7969rUyZMpaSkmKxsbHWt2/fHKdfeNGX/cm83++33377zd5++20bOnSoVahQwUaPHm1ZWVlF8snVzp07bcSIEda4cWPbsGGDmVnwU7Zdu3bZM888YxUrVrQmTZpYhQoVrE+fPs7cXhmA91weP7k8djpZH+On0NoYPxW8jfFT3jB+QnHEZFIBHT582G699VZr06aNrVq1KviYmdmrr75qp5xySvC8+ffff998Pp+1b9/eFi9e7Fzf//3f/9mll15q559/vi1ZssSptmxFeXhnfvpefvllu/DCC61Dhw725ZdfOtG2e/fu4Ppbtmyxr776yn744YdCb8trX/Zrl/3J0SuvvGLffvutE23Zr93WrVvtrbfesscee+yY62J42Zf92u3cuTP4CWBR/LvL9ucLRnbo0OG4n4hu3LjRPv/88+D5/wCQzeXxk8tjp/z2ZWP8lPc2xk8Fb2P8dGKMn1BcRXl9NzkXZWVlSVLwNrS5PRcdHa2uXbsqKipKjz/+ePAx6cjtRWvUqKEff/xRkpScnKwPP/xQn3/+udq0aeNc38UXX6ypU6fqk08+UevWrZ1oW7duXY5tw3XLznC/dj169NDjjz+uzz77TMnJyU60/fTTT8HtatasqZYtW+qss84KqS2cfdl/t9m3MO7Tp4+aNGniRNvatWslSfHx8erevbtuuOEGNWvWLKS2wuirVq2abrvtNi1YsKBI/t1l8/v9kqR27drp4osv1oIFC/T5559Lkr788svgrW5r166t9u3b6+yzzw6pDUBkcXn85PLYKZx9jJ8K3sb4qeBtjJ9yfy4b4ycUV0wmHeWmm27S3/72N0lSVNQfL0/2f+SlS5dWIBDQo48+qvPPP1+XXnqp5s+fr2eeeSa47saNG1W1alU1btxYklS1alVdeOGFzvbFxMSobt26TrU1atQo5J7C7Mt+7cqWLav69es71eb6axfuvsL4e3W178+DiwoVKhRJm5npoYceyvF1mTJl9Le//U1nn322Ro8erW7duqldu3ZKTU0NuQlAZHJ5/OTy2Cncfa6PARg/udPH+Klw2xg/oUQouoOg3PbDDz9Yt27drHbt2ubz+eyFF14ws2PvjvDUU09ZXFyctWrVyvbs2WNbt261sWPHms/ns8suu8yGDBliFStWtHvuucf8fn/YDi92uc/lNtf7XG5zvc/lNtf78tvWpk0b27x5c47n0tPTrX379ubz+axnz562cePGkLsARJ7i9F7H74nI6XO5zfU+l9tc72P8BOTEZNL/vPbaa3bNNdfYJ598YjfffLPFx8cfcyHAd955x5o3b27/7//9vxwXwDMze+655+zWW2+1nj172rx580pUn8ttrve53OZ6n8ttrveF2rZy5UqrX7++1atXzz7//POwtgGILMX5va4k/55wvc/lNtf7XG5zvY/xE5BTiZ1MOnoGeefOncGL7K1fv94SEhKCtwH98xvB0bdULaxbXbrc53Kb630ut7ne53Kb633hast28OBBe+utt8LeCcB9JeG9riT+nnC9z+U21/tcbnO9j/ETcGIlcjJp/PjxNmjQIJswYUKut5jNysqyRx991MqUKRM89LCw3kAjrc/lNtf7XG5zvc/lNtf7wt1WlHcGAuCWkvReR587fS63ud7ncpvrfYyfgJMrUZNJaWlpdu6551qTJk3shhtusPj4eGvZsqXNnj3bzHL+R75jxw5r2bKl9ejRgz7H21zvc7nN9T6X21zvc7kNQGRx+f3E5Tb6im+b630ut7ne53Ib4JoSNZk0c+ZMa9asme3evdvMjhyC2L17d+vQoYOtWLHCzMwyMzOD67/zzjvm8/ls4cKFZmb24Ycf2po1a0pkn8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ1wTdTJ7/dWfGzYsEFlypRR+fLlJUnly5fXyJEjFRMTo/vuu0/SH7dulKTOnTurT58+GjhwoNq0aaMePXpo9+7dJbLP5TbX+1xuc73P5TbX+1xuAxBZXH4/cbmNvuLb5nqfy22u97ncBrimRE0mHTp0SKVLl9b27duDj3Xs2FEXXXSRVq9erY8//liSgm8Omzdv1q+//qqNGzeqSZMm2rZtm1q3bl0i+1xuc73P5TbX+1xuc73P5TYAkcXl9xOX2+grvm2u97nc5nqfy22Acwr3wCc3ZF8MbfXq1ebz+eyNN97I8fyKFSssOTnZJk+eHHwsNTXVWrVqZWeffbZ99913JbbP5TbX+1xuc73P5TbX+1xuAxBZXH4/cbmNvuLb5nqfy22u97ncBriq2Ewmbd++3X777bfgG8Gfb8/45/NaL7/8cmvevLnt2LEjx/bJycl24403Br/eu3dv8LzY4t7ncpvrfS63ud7ncpvrfS63AYgsLr+fuNxGX/Ftc73P5TbX+1xuAyJRxJ/mlpmZqeuuu04dO3ZUt27d9I9//EN+v1+lSpVSZmampCPntWZkZGjdunWaMmWKUlNT9dBDD2nPnj2SpKysLMXExKhKlSrB/VasWFFNmzYt1n0ut7ne53Kb630ut7ne53IbgMji8vuJy2308XfLaxd5fS63ARHN69msUKxdu9aaNm1q5513nn3yySd2991325lnnmkTJ07Msd7DDz9s5cqVs/vuu8/MzJ588kmrV6+epaSk2FtvvWXDhw+3mjVr2tKlS0tMn8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ2IdBE9mfTII49Y+/btbd++fWZmdvjwYbvwwgvtP//5T/DrIUOGWI0aNez5558PHtJoduQ2jt26dbO2bdtay5Yt7csvvyxRfS63ud7ncpvrfS63ud7nchuAyOLy+4nLbfQV3zbX+1xuc73P5TYg0kXkZFL2f+Tjxo2zM844I/h4WlqatWzZ0p599llbvXq1mZmtWbPG9uzZc8y22dLT00tUn8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ0oLiJmMumJJ56wF1980X788cfgY6+//rolJCRYSkqK9e/f38qUKWPt27e35s2bW3x8vD399NNmZhYIBEp0n8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ0ojpyfTJozZ45Vr17dmjVrZqeffrrVr1/fpkyZYmZHZo2/+eYbe/75561+/fo2e/ZsMzP77bffbOLEiVa1atUcV+YvaX0ut7ne53Kb630ut7ne53IbgMji8vuJy230Fd821/tcbnO9z+U2oDhzfjKpd+/eNmTIEDMz+/HHH+2BBx4wn89n77zzTvAQxIcffthat25tZn/MKi9cuNDKly9vX3zxRYntc7nN9T6X21zvc7nN9T6X2wBEFpffT1xuo6/4trne53Kb630utwHFmZOTSdn/gf/8889WuXJlmzNnTo7n+/XrZ2eddZatW7fOzMzuu+8+u/jii3Oc6zpx4kTr2LGjHThwoET1udzmep/Lba73udzmep/LbQAii8vvJy630Vd821zvc7nN9T6X24CSIkoOWbt2rcxMPp9PklSzZk1FR0crLS1NkpSRkSFJ+s9//qONGzfqtddekyTFx8dr27Zt6t27t1577TVdc801euihh9SvXz+VK1euRPS53OZ6n8ttrve53OZ6n8ttACKLy+8nLrfRV3zbXO9zuc31PpfbgBKnqGevcjNr1ixLSkqyBg0aWOvWrYMXQtu/f78NGDDAUlJS7PDhw2ZmlpGRYWZmo0ePttq1awf38cILL1jHjh2tQ4cO1q1bN0tNTS0RfS63ud7ncpvrfS63ud7nchuAyOLy+4nLbfQV3zbX+1xuc73P5TagpPJ8Mumjjz6ypKQke/zxx23OnDk2YsQIK126tD355JNmZjZz5kxr3ry5PfHEE2ZmwQukffXVV1a9enVbsmRJcF+ZmZlhv3Wjy30ut7ne53Kb630ut7ne53IbgMji8vuJy230Fd821/tcbnO9z+U2oCTzbDIp+zzX8ePHW4sWLYIzyGZm//rXv6x58+b24Ycf2t69e61///7Wrl07W79+fXCdWbNmWUJCgv38888lrs/lNtf7XG5zvc/lNtf7XG4DEFlcfj9xuY2+4tvmep/Lba73udwGwMNrJmWf5/rDDz/ojDPOUJkyZZSZmSlJuueee1S+fHm98MILKlWqlG644QZFRUXpyiuv1KJFi5SWlqb3339fLVq0UHx8fInrc7nN9T6X21zvc7nN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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, (ax1, ax2) = plt.subplots(ncols=2, sharex=True, sharey=True, figsize=(14,5))\n", + "ax1.set_title(\"Soil Moisture\")\n", + "ax2.set_title(\"Soil Temperature\")\n", + "ax1.set_ylabel(\"depth (m)\")\n", + "ax2.set_ylabel(\"depth (m)\")\n", + "da_sm.plot(y=\"depth\", ax=ax1, cbar_kwargs={'label': \"volumetric moisture content (m3 m-3)\"})\n", + "da_t.plot(y=\"depth\", ax=ax2, cbar_kwargs={'label': \"temperature (deg C)\"})\n", + "fig.savefig(os.path.join(output_figures_ws, 'soil_variables.png'), dpi = 600, bbox_inches = 'tight')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
the script took 0:05:38.029818 to run\n",
+       "
\n" + ], + "text/plain": [ + "the script took \u001b[1;92m0:05:38\u001b[0m.\u001b[1;36m029818\u001b[0m to run\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print ('the script took', datetime.now() - startTime, 'to run')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 61f353b3a37c75b551be7e655960456b55c3ff43 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Wed, 21 Aug 2024 15:36:50 +0200 Subject: [PATCH 09/33] add soil layers setting path --- PyStemmusScope/config_io.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index 33bd7944..4f690d46 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -124,9 +124,9 @@ def _copy_data(input_dir: Path, config: dict) -> None: str(config[folder]), str(input_dir / folder), dirs_exist_ok=True ) - # copy input_data.xlsx + # copy input_data.xlsx and input_soilLayThick.csv shutil.copy(str(config["input_data"]), str(input_dir)) - + shutil.copy(str(input_dir / input_soilLayThick.csv]), str(input_dir)) def _update_config_file( input_dir: Path, From 747cc4ca2ca6e3a1ad9625463c81873084eaf707 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Wed, 21 Aug 2024 16:43:47 +0200 Subject: [PATCH 10/33] add soil layers setting path --- PyStemmusScope/config_io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index 4f690d46..beceeb47 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -126,7 +126,7 @@ def _copy_data(input_dir: Path, config: dict) -> None: # copy input_data.xlsx and input_soilLayThick.csv shutil.copy(str(config["input_data"]), str(input_dir)) - shutil.copy(str(input_dir / input_soilLayThick.csv]), str(input_dir)) + shutil.copy(str(input_dir / "input_soilLayThick.csv"]), str(input_dir)) def _update_config_file( input_dir: Path, From 09872fe89d051a9540dfa13103f13b7aca47dc61 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Wed, 21 Aug 2024 16:45:36 +0200 Subject: [PATCH 11/33] add soil layers setting path --- PyStemmusScope/config_io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index beceeb47..54418460 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -126,7 +126,7 @@ def _copy_data(input_dir: Path, config: dict) -> None: # copy input_data.xlsx and input_soilLayThick.csv shutil.copy(str(config["input_data"]), str(input_dir)) - shutil.copy(str(input_dir / "input_soilLayThick.csv"]), str(input_dir)) + shutil.copy(str(input_dir / "input_soilLayThick.csv"), str(input_dir)) def _update_config_file( input_dir: Path, From 2600de74ff069833efbea24eea80c5c7c89ea605 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Wed, 21 Aug 2024 17:29:52 +0200 Subject: [PATCH 12/33] add soil layers setting path --- PyStemmusScope/config_io.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index 54418460..81abccca 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -126,7 +126,9 @@ def _copy_data(input_dir: Path, config: dict) -> None: # copy input_data.xlsx and input_soilLayThick.csv shutil.copy(str(config["input_data"]), str(input_dir)) - shutil.copy(str(input_dir / "input_soilLayThick.csv"), str(input_dir)) + soilLay_file = Path(str(config["input_data"]).replace("input_data.xlsx", "input_soilLayThick.csv")) + if soilLay_file.exists(): + shutil.copy(soilLay_file, str(input_dir)) def _update_config_file( input_dir: Path, From c8e595597166cb566b29a885079ddd1ea6bbaec0 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Fri, 23 Aug 2024 14:18:27 +0200 Subject: [PATCH 13/33] Update comment in line 127 Co-authored-by: SarahAlidoost <55081872+SarahAlidoost@users.noreply.github.com> --- PyStemmusScope/config_io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index 81abccca..f7b6f095 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -124,7 +124,7 @@ def _copy_data(input_dir: Path, config: dict) -> None: str(config[folder]), str(input_dir / folder), dirs_exist_ok=True ) - # copy input_data.xlsx and input_soilLayThick.csv + # copy input_data.xlsx shutil.copy(str(config["input_data"]), str(input_dir)) soilLay_file = Path(str(config["input_data"]).replace("input_data.xlsx", "input_soilLayThick.csv")) if soilLay_file.exists(): From ed456c35c2176435e8a75603e430f361c4abbf56 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Fri, 23 Aug 2024 15:01:31 +0200 Subject: [PATCH 14/33] Add a key for optional soil thickness layer csv file Co-authored-by: SarahAlidoost <55081872+SarahAlidoost@users.noreply.github.com> --- PyStemmusScope/config_io.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index f7b6f095..88c96c45 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -126,9 +126,16 @@ def _copy_data(input_dir: Path, config: dict) -> None: # copy input_data.xlsx shutil.copy(str(config["input_data"]), str(input_dir)) - soilLay_file = Path(str(config["input_data"]).replace("input_data.xlsx", "input_soilLayThick.csv")) - if soilLay_file.exists(): - shutil.copy(soilLay_file, str(input_dir)) + # copy soil_layers_thickness, this is optional + if "soil_layers_thickness" in config: + if Path(config["soil_layers_thickness"]).is_file(): + shutil.copy(str(config["soil_layers_thickness"]), str(input_dir)) + else: + raise FileNotFoundError( + "The key `soil_layers_thickness` is provided in the config file, " + f"but file {config['soil_layers_thickness']} not found. " + "Remove the key from the config file or provide the file." + ) def _update_config_file( input_dir: Path, From 3302d547de337143bbe45683e97e3f6032bc0f24 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Fri, 23 Aug 2024 15:09:43 +0200 Subject: [PATCH 15/33] add key for soil layer thickness csv file --- PyStemmusScope/config_io.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index 81abccca..88c96c45 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -124,11 +124,18 @@ def _copy_data(input_dir: Path, config: dict) -> None: str(config[folder]), str(input_dir / folder), dirs_exist_ok=True ) - # copy input_data.xlsx and input_soilLayThick.csv + # copy input_data.xlsx shutil.copy(str(config["input_data"]), str(input_dir)) - soilLay_file = Path(str(config["input_data"]).replace("input_data.xlsx", "input_soilLayThick.csv")) - if soilLay_file.exists(): - shutil.copy(soilLay_file, str(input_dir)) + # copy soil_layers_thickness, this is optional + if "soil_layers_thickness" in config: + if Path(config["soil_layers_thickness"]).is_file(): + shutil.copy(str(config["soil_layers_thickness"]), str(input_dir)) + else: + raise FileNotFoundError( + "The key `soil_layers_thickness` is provided in the config file, " + f"but file {config['soil_layers_thickness']} not found. " + "Remove the key from the config file or provide the file." + ) def _update_config_file( input_dir: Path, From e8424ae0dfea12862ec5980417eb329e697c565b Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Sun, 25 Aug 2024 13:44:38 +0200 Subject: [PATCH 16/33] add example comment in mkdocs.yml --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index b17d44a1..a31e3fb9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,6 +14,7 @@ nav: - "BMI instructions": bmi.md - "BMI demonstration": notebooks/BMI_demo.ipynb - "grpc4bmi demonstration": notebooks/grpc4bmi_demo.ipynb + - "example: coupling modflow and stemmus_scope": notebooks/bmi_MODFLOW_coupling.ipynb - Contributing guide: CONTRIBUTING.md - API reference: reference.md From 0128240d0ae3bfdfd48b66ba741a5541ccbd8b12 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Sun, 25 Aug 2024 14:23:58 +0200 Subject: [PATCH 17/33] adjust BMI_MODFLOW notebook --- docs/notebooks/bmi_MODFLOW_coupling.ipynb | 187 ++++++++++------------ 1 file changed, 88 insertions(+), 99 deletions(-) diff --git a/docs/notebooks/bmi_MODFLOW_coupling.ipynb b/docs/notebooks/bmi_MODFLOW_coupling.ipynb index 5568aeee..7660594f 100644 --- a/docs/notebooks/bmi_MODFLOW_coupling.ipynb +++ b/docs/notebooks/bmi_MODFLOW_coupling.ipynb @@ -6,14 +6,16 @@ "source": [ "# STEMMUS_SCOPE & MODFLOW 6 BMI coupling\n", "\n", - "This Python notebook shows a simple example of BMI coupling between the STEMMUS_SCOPE model and the MODFLOW 6 model. To run this notebook, the following are required:\n", - "- Install the related packages\n", - " - pyStemmusScope package (https://pystemmusscope.readthedocs.io/en/v0.2.0/installation_instructions/).\n", + "This Python notebook shows a simple example of BMI coupling between the STEMMUS_SCOPE model and the MODFLOW 6 model. The example is prepared for one of the PLUMBER2 dataset (https://researchdata.edu.au/plumber2-forcing-evaluation-surface-models/1656048): the LooBos site, the Netherlands (NL-Loo). To run this notebook, the following are required:\n", + "- Install the related packages:\n", + " - pyStemmusScope package (https://pystemmusscope.readthedocs.io/en/latest/).\n", " - modflowapi Python package (https://github.com/MODFLOW-USGS/modflowapi?tab=readme-ov-file#installation).\n", "- The executable files of both models. \n", - " - STEMMUS_SCOPE executable file can be retrieved from the link (https://github.com/EcoExtreML/STEMMUS_SCOPE/tree/main. Note: the STEMMUS_SCOPE executable file is Linux based only.\n", - " - MODFLOW 6 executable files can be retrieved from the link (https://github.com/MODFLOW-USGS/modflow6). \n", - "- The input files of both models are already prepared in advance and not part of this notebook. The input data files can be accessed via this link (https://zenodo.org/records/13354850). The link include also a version of the executbale files needed to run the models.\n", + " - STEMMUS_SCOPE executable file can be retrieved from the link (https://github.com/EcoExtreML/STEMMUS_SCOPE/blob/main/run_model_on_snellius/exe/STEMMUS_SCOPE). Note: the STEMMUS_SCOPE executable file is Linux-based only.\n", + " - MODFLOW 6 executable files can be retrieved from the link (https://github.com/MODFLOW-USGS/modflow6/releases). Note: This notebook is based on MODFLOW 6.5.0 (Linux version). \n", + "- The input files of both models are already prepared in advance and are not part of this notebook. The input data files can be accessed via this link (https://zenodo.org/records/13354850). The link also includes a version of the executable files needed to run the models. Download, unzip and copy the folders to your own working directory (root directory, see below the cell under the header: *1. Set up the root directory*).\n", + " \n", + "In case the user wants to test the notebook on another site, preparing input files for both models is required. Preparing input files for STEMMUS_SCOPE can be done through the PyStemmusScope Python package (https://pystemmusscope.readthedocs.io/en/latest/notebooks/run_model_on_different_infra/). Preparing input files for MODFLOW 6 can be done through the FloPy Python package (https://flopy.readthedocs.io/en/stable/tutorials.html#modflow-6).\n", "\n", "\n", "Notes\n", @@ -26,7 +28,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ @@ -47,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 48, "metadata": {}, "outputs": [], "source": [ @@ -58,20 +60,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1. Set up the workspace of both models" + "### 1. Set up the root directory" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ - "ws = os.path.join('.', 'SSM_examples', 'ex1')\n", - "exe_ws = os.path.join('.', 'SSM_examples', 'executables')\n", - "output_figures_ws = os.path.join(ws, 'output_figures')\n", - "if not os.path.exists(output_figures_ws):\n", - " os.makedirs(output_figures_ws)" + "root = os.path.join('.', 'SSM_examples', 'ex1') # the root path where all folders are stored into\n", + "executables_workspace = os.path.join('.', 'SSM_examples', 'executables')\n", + "output_figures_workspace = os.path.join(root, 'output_figures')\n", + "if not os.path.exists(output_figures_workspace):\n", + " os.makedirs(output_figures_workspace)" ] }, { @@ -83,12 +85,12 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 50, "metadata": {}, "outputs": [], "source": [ - "stsc_ws = os.path.join(ws, 'stsc_input', 'NL-Loo_2024-08-12-1341')\n", - "stsc_config_file = os.path.join(stsc_ws, \"NL-Loo_2024-08-12-1341_config.txt\")" + "stemmus_scope_workspace = os.path.join(root, 'stsc_input', 'NL-Loo_2024-08-12-1341')\n", + "stemmus_scope_config_file = os.path.join(stemmus_scope_workspace, \"NL-Loo_2024-08-12-1341_config.txt\")" ] }, { @@ -100,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -133,7 +135,7 @@ " f\"{matlab_path}/extern/bin/glnxa64:\"\n", " f\"{matlab_path}/sys/opengl/lib/glnxa64\")\n", "print(os.environ['LD_LIBRARY_PATH'])\n", - "os.environ[\"STEMMUS_SCOPE\"] = read_config(stsc_config_file)[\"ExeFilePath\"]" + "os.environ[\"STEMMUS_SCOPE\"] = read_config(stemmus_scope_config_file)[\"ExeFilePath\"]" ] }, { @@ -145,22 +147,12 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ - "modflow_base_ws = os.path.join(ws, 'mf6_model_base')\n", - "modflow_ws = os.path.join(ws, 'mf6_model')\n", - "\n", - "if os.path.exists(modflow_ws):\n", - " shutil.rmtree(modflow_ws)\n", - "shutil.copytree(modflow_base_ws, modflow_ws)\n", - "\n", - "if sys.platform == \"win32\": # for Windows\n", - " dll = \"libmf6.dll\"\n", - "else:\n", - " dll = \"libmf6.so\" # for Linux\n", - "mf6_dll = os.path.join(exe_ws, dll)" + "modflow_workspace = os.path.join(root, 'mf6_model_base')\n", + "modflow_exe_file = os.path.join(executables_workspace, \"libmf6.so\") # for window -> \"libmf6.dll\"" ] }, { @@ -179,12 +171,12 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ - "stsc = StemmusScopeBmi()\n", - "stsc.initialize(stsc_config_file)" + "stemmus_scope = StemmusScopeBmi()\n", + "stemmus_scope.initialize(stemmus_scope_config_file)" ] }, { @@ -196,11 +188,11 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ - "stsc.update()" + "stemmus_scope.update()" ] }, { @@ -212,18 +204,18 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 55, "metadata": {}, "outputs": [], "source": [ - "n_timesteps = int((stsc.get_end_time() - stsc.get_current_time())/stsc.get_time_step())\n", - "n_soil_layers = stsc.get_grid_size(stsc.get_var_grid(\"soil_moisture\"))\n", + "n_timesteps = int((stemmus_scope.get_end_time() - stemmus_scope.get_current_time())/stemmus_scope.get_time_step())\n", + "n_soil_layers = stemmus_scope.get_grid_size(stemmus_scope.get_var_grid(\"soil_moisture\"))\n", "\n", "soil_moisture = np.zeros((n_timesteps, n_soil_layers))\n", "soil_temperature = np.zeros((n_timesteps, n_soil_layers))\n", "gw_recharge = np.zeros(1)\n", "gw_recharge_nstp = np.array([])\n", - "stsc_time = []\n", + "stemmus_scope_time = []\n", "i = 0" ] }, @@ -236,13 +228,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 56, "metadata": {}, "outputs": [], "source": [ - "mf6 = ModflowApi(mf6_dll, working_directory = modflow_ws)\n", - "mf6_config_file = os.path.join(modflow_ws, 'mfsim.nam')\n", - "mf6.initialize(mf6_config_file)" + "modflow = ModflowApi(modflow_exe_file, working_directory = modflow_workspace)\n", + "modflow_config_file = os.path.join(modflow_workspace, 'mfsim.nam')\n", + "modflow.initialize(modflow_config_file)" ] }, { @@ -254,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -263,13 +255,13 @@ "('gwf', 'gwe')" ] }, - "execution_count": 11, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "sim = ApiSimulation.load(mf6)\n", + "sim = ApiSimulation.load(modflow)\n", "gwf_name = sim.model_names[0] # groundwater flow model \n", "gwe_name = sim.model_names[1] # groundwater energy (heat) model\n", "gwf_name, gwe_name" @@ -284,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -293,7 +285,7 @@ "(10, 48)" ] }, - "execution_count": 12, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -312,14 +304,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 59, "metadata": {}, "outputs": [], "source": [ - "top_tag = mf6.get_var_address(\"TOP\", gwf_name.upper(), \"DIS\") # tag of land surface (top) elevation\n", - "gwhead_tag = mf6.get_var_address(\"X\", gwf_name) # tag of groundwater heads\n", - "gwtemp_tag = mf6.get_var_address(\"X\", gwe_name) # tag of groundwater temperature\n", - "rch_tag = mf6.get_var_address(\"RECHARGE\", gwf_name.upper(), \"RCH_0\") # tag of groundwater recharge" + "top_tag = modflow.get_var_address(\"TOP\", gwf_name.upper(), \"DIS\") # tag of land surface (top) elevation\n", + "gwhead_tag = modflow.get_var_address(\"X\", gwf_name) # tag of groundwater heads\n", + "gwtemp_tag = modflow.get_var_address(\"X\", gwe_name) # tag of groundwater temperature\n", + "rch_tag = modflow.get_var_address(\"RECHARGE\", gwf_name.upper(), \"RCH_0\") # tag of groundwater recharge" ] }, { @@ -331,7 +323,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -340,15 +332,15 @@ "(2350.0, 10.0, 2600.0)" ] }, - "execution_count": 14, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "top_elev = mf6.get_value(top_tag)[0] * 100 # multiply by 100 to convert from m to cm\n", - "gwhead_init = mf6.get_value(gwhead_tag)[0] * 100 # multiply by 100 to convert from m to cm\n", - "gwtemp_init = mf6.get_value(gwtemp_tag)[0]\n", + "top_elev = modflow.get_value(top_tag)[0] * 100 # multiply by 100 to convert from m to cm\n", + "gwhead_init = modflow.get_value(gwhead_tag)[0] * 100 # multiply by 100 to convert from m to cm\n", + "gwtemp_init = modflow.get_value(gwtemp_tag)[0]\n", "\n", "gwhead_init, gwtemp_init, top_elev" ] @@ -362,11 +354,11 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 61, "metadata": {}, "outputs": [], "source": [ - "mf6.update()" + "modflow.update()" ] }, { @@ -385,11 +377,11 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ - "stsc.set_value(\"groundwater_coupling_enabled\", np.array([True]))" + "stemmus_scope.set_value(\"groundwater_coupling_enabled\", np.array([True]))" ] }, { @@ -401,13 +393,13 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 63, "metadata": {}, "outputs": [], "source": [ - "stsc.set_value(\"groundwater_elevation_top_aquifer\", top_elev)\n", - "stsc.set_value(\"groundwater_head_bottom_layer\", gwhead_init)\n", - "stsc.set_value(\"groundwater_temperature\", gwtemp_init) " + "stemmus_scope.set_value(\"groundwater_elevation_top_aquifer\", top_elev)\n", + "stemmus_scope.set_value(\"groundwater_head_bottom_layer\", gwhead_init)\n", + "stemmus_scope.set_value(\"groundwater_temperature\", gwtemp_init) " ] }, { @@ -425,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -6657,33 +6649,33 @@ } ], "source": [ - "while mf6.get_current_time() < mf6.get_end_time():\n", - " while stsc.get_current_time() < stsc.get_end_time(): \n", + "while modflow.get_current_time() < modflow.get_end_time():\n", + " while stemmus_scope.get_current_time() < stemmus_scope.get_end_time(): \n", " \n", " # Get STEMMUS_SCOPE variables (soil moisture, soil temperature, groundwater recharge) \n", - " stsc.get_value(\"soil_moisture\", soil_moisture[i])\n", - " stsc.get_value(\"soil_temperature\", soil_temperature[i])\n", - " stsc.get_value(\"groundwater_recharge\", gw_recharge)\n", + " stemmus_scope.get_value(\"soil_moisture\", soil_moisture[i])\n", + " stemmus_scope.get_value(\"soil_temperature\", soil_temperature[i])\n", + " stemmus_scope.get_value(\"groundwater_recharge\", gw_recharge)\n", " gw_recharge_nstp = np.append(gw_recharge_nstp, gw_recharge)\n", "\n", " # Store the current time as a datetime\n", - " stsc_time.append(num2pydate(stsc.get_current_time(), stsc.get_time_units()))\n", + " stemmus_scope_time.append(num2pydate(stemmus_scope.get_current_time(), stemmus_scope.get_time_units()))\n", " i+= 1\n", "\n", " # Get MODFLOW 6 variables (groundwater head, groundwater temperature)\n", - " gwhead = mf6.get_value(gwhead_tag)[0] * 100\n", - " gwtemp = mf6.get_value(gwtemp_tag)[0]\n", + " gwhead = modflow.get_value(gwhead_tag)[0] * 100\n", + " gwtemp = modflow.get_value(gwtemp_tag)[0]\n", "\n", " # Set STEMMUS_SCOPE variables (groundwater head, groundwater temperature)\n", - " stsc.set_value(\"groundwater_head_bottom_layer\", gwhead)\n", - " stsc.set_value(\"groundwater_temperature\", gwtemp)\n", + " stemmus_scope.set_value(\"groundwater_head_bottom_layer\", gwhead)\n", + " stemmus_scope.set_value(\"groundwater_temperature\", gwtemp)\n", " \n", " # Set MODFLOW 6 variables (groundwater recharge)\n", " kstp, kper = sim.kstp, sim.kper \n", " if kstp == nstp - 1:\n", " # groundwater recharge per stress period = sum of groundwater recharge per time step \n", " gw_recharge_nper = np.array([-1 * np.sum(gw_recharge_nstp) / 100]) # multiply by -1 due to different signs of both models\n", - " mf6.set_value(rch_tag, gw_recharge_nper)\n", + " modflow.set_value(rch_tag, gw_recharge_nper)\n", " gw_recharge_nstp = np.array([]) \n", " \n", " # Track the simulation time of MODFLOW 6 \n", @@ -6691,8 +6683,8 @@ " # print(kper + 1, kstp + 1, gwhead, gwtemp)\n", " \n", " # Update models\n", - " stsc.update()\n", - " mf6.update()" + " stemmus_scope.update()\n", + " modflow.update()" ] }, { @@ -6704,15 +6696,12 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 65, "metadata": {}, "outputs": [], "source": [ - "try:\n", - " mf6.finalize()\n", - " stsc.finalize()\n", - "except:\n", - " raise RuntimeError" + "modflow.finalize()\n", + "stemmus_scope.finalize()" ] }, { @@ -6731,23 +6720,23 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 66, "metadata": {}, "outputs": [], "source": [ - "gs = stsc.get_grid_size(1)\n", + "gs = stemmus_scope.get_grid_size(1)\n", "depths = np.ones(gs)\n", - "stsc.get_grid_z(1, depths)\n", + "stemmus_scope.get_grid_z(1, depths)\n", "\n", "da_sm = xr.DataArray(\n", " data=soil_moisture,\n", " dims=(\"time\", \"depth\"),\n", - " coords={\"time\": np.array(stsc_time), \"depth\": depths},)\n", + " coords={\"time\": np.array(stemmus_scope_time), \"depth\": depths},)\n", "\n", "da_t = xr.DataArray(\n", " data=soil_temperature,\n", " dims=(\"time\", \"depth\"),\n", - " coords={\"time\": np.array(stsc_time), \"depth\": depths},)" + " coords={\"time\": np.array(stemmus_scope_time), \"depth\": depths},)" ] }, { @@ -6759,7 +6748,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -6781,22 +6770,22 @@ "ax2.set_ylabel(\"depth (m)\")\n", "da_sm.plot(y=\"depth\", ax=ax1, cbar_kwargs={'label': \"volumetric moisture content (m3 m-3)\"})\n", "da_t.plot(y=\"depth\", ax=ax2, cbar_kwargs={'label': \"temperature (deg C)\"})\n", - "fig.savefig(os.path.join(output_figures_ws, 'soil_variables.png'), dpi = 600, bbox_inches = 'tight')" + "fig.savefig(os.path.join(output_figures_workspace, 'soil_variables.png'), dpi = 600, bbox_inches = 'tight')" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
the script took 0:05:38.029818 to run\n",
+       "
the script took 0:05:39.729457 to run\n",
        "
\n" ], "text/plain": [ - "the script took \u001b[1;92m0:05:38\u001b[0m.\u001b[1;36m029818\u001b[0m to run\n" + "the script took \u001b[1;92m0:05:39\u001b[0m.\u001b[1;36m729457\u001b[0m to run\n" ] }, "metadata": {}, From fe58c21fe58970068dbbea2b417bb0dd0118da20 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Sun, 25 Aug 2024 14:32:25 +0200 Subject: [PATCH 18/33] adjust BMI_MODFLOW notebook --- docs/notebooks/bmi_MODFLOW_coupling.ipynb | 56 +++++++++++------------ 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/notebooks/bmi_MODFLOW_coupling.ipynb b/docs/notebooks/bmi_MODFLOW_coupling.ipynb index 7660594f..c44540e0 100644 --- a/docs/notebooks/bmi_MODFLOW_coupling.ipynb +++ b/docs/notebooks/bmi_MODFLOW_coupling.ipynb @@ -28,7 +28,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -147,7 +147,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -171,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -188,7 +188,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -204,7 +204,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -228,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -246,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -255,7 +255,7 @@ "('gwf', 'gwe')" ] }, - "execution_count": 57, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -276,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -285,7 +285,7 @@ "(10, 48)" ] }, - "execution_count": 58, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -304,7 +304,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -323,7 +323,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -332,7 +332,7 @@ "(2350.0, 10.0, 2600.0)" ] }, - "execution_count": 60, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -354,7 +354,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -377,7 +377,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -393,7 +393,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -417,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -6696,7 +6696,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -6720,7 +6720,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -6748,12 +6748,12 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 21, "metadata": {}, "outputs": [ { "data": { - "image/png": "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n/6EQw45JLIJxwUXXFC2TBqTCCGEkHrREVczMWQyGezYsQMA8Nxzz2Hq1KkAgF69enkeS4QQQgghUtmPamV0NH7+85+jR48eeP311/H6668HzgkhaEwihBBCSNvjyCOPxMyZM3HEEUfg1VdfxcMPPwwA+Oc//4k999yzztoRQgghhLRtVqxYUXOZzJlECCGE1AMm4Pa47bbbkEql8Oijj+KOO+7AoEGDAAC///3vMXny5DprRwghhJBWg7J3c6vm0V7WT5WQzWaxdOlS5PP5qmXRM4kQQgipA8yZ5LPXXnvhySefjJTfeuutddCGEEIIIa0VCQVZpTWo2vZtkR07duD888/HfffdB8D2/h4+fDjOP/98DBo0CJdddlnZMtuMZ9KXv/xl7LXXXmhsbMSAAQPwjW98Ax999FG91SKEEEJIBei5kLZs2VLwQQghhBBCKmfWrFn429/+hsWLF6OxsdErnzhxopdeoFzajGfS5z//eVx++eUYMGAAVq9ejUsuuQRf/epX8fLLL9dbNUIIIaR8Ovh2JD179sSaNWvQt29f9OjRA0KISB2lFIQQsCyrDhoSQgghpLXhhapVKaOj8cQTT+Dhhx/GYYcdFlhz7b///li+fHlFMtuMMemiiy7yng8ZMgSXXXYZpkyZglwuh3Q6HdumpaUFLS0t3jF/3SSEENJa6Ohhbn/4wx/Qq1cvAMDzzz9fZ22IDtdPhBBCWivcza0y1q9fj759+0bKt2/fHvuDXim0GWOSzoYNG/CLX/wChx9+eKIhCQDmzZuHa6+9djdqRgghhJBSOProo2Ofk/rD9RMhhBDSvhg7dix+97vf4fzzzwcAz4B01113Yfz48RXJbFPGpO9973u47bbbsGPHDhx22GGxyTp1Zs2ahZkzZ3rHW7ZsweDBg3e1moQQQkhxOniYW5hNmzbh5z//Od59910Attv1WWedhe7du9dZs44H10+EEEJaKwxzq4zvf//7OP744/HOO+8gn8/jRz/6Ed555x28/PLLeOGFFyqSWdcE3JdddhmEEAUf7733nlf/u9/9Lv7617/imWeegWmamDp1KlSBO6GhoQFNTU2BByGEENIqUDV6tANee+017L333rj11luxYcMGbNiwAbfccgv23ntvvPHGG/VWr8PB9RMhhJDWirubW7WPjsaRRx6JN998E/l8HgceeCCeeeYZ9O3bF0uWLMEhhxxSkcy6eiZdfPHFOPPMMwvWGT58uPe8d+/e6N27Nz7zmc9gv/32w+DBg/HnP/+5YrcsQgghhNSfiy66CF/+8pdx5513IpWylyb5fB7nnHMOvvOd7+CPf/xjnTUkhBBCCGnb7L333rjzzjtrJq+uxqQ+ffqgT58+FbWVUgJAIEEkIYQQ0lbo6Am4dV577bWAIQkAUqkULr30UowdO7aOmhFCCCGkNcEwt8qxLAu/+tWvvJQCo0aNwkknnRRYf5VDm8iZ9Morr+Avf/kLjjzySPTs2RPLly/HVVddhb333pteSYQQQtomzJnk0dTUhJUrV2LfffcNlK9atQrdunWrk1aEEEIIaW1IpSCrtAZV274t8vbbb+PLX/4y1q5di5EjRwIAbrzxRvTp0we//e1vccABB5Qts645k0qlc+fOePzxxzFhwgSMHDkSZ599NkaPHo0XXngBDQ0N9VaPEEIIIVVw2mmn4eyzz8bDDz+MVatWYdWqVXjooYdwzjnn4Gtf+1q91SOEEEIIadOcc8452H///fHhhx/ijTfewBtvvIFVq1Zh9OjR+OY3v1mRzDbhmXTggQfiD3/4Q73VIIQQQmoHPZM8fvjDH0IIgalTpyKfzwMA0uk0zjvvPNxwww111o4QQgghrQVL2o9qZXQ03nzzTbz22mvo2bOnV9azZ09cf/31OPTQQyuS2SaMSYQQQkh7gzmTfDKZDH70ox9h3rx5WL58OQA7SWTnzp3rrBkhhBBCWhMMc6uMz3zmM1i3bh3233//QPnHH3+MESNGVCSTxiRCCCGEtAo6d+6MAw88sN5qEEIIIYS0K+bNm4cLLrgA11xzDQ477DAAwJ///GfMmTMHN954I7Zs2eLVbWpqKkkmjUmEEEJIPWCYm0dzczN+8pOf4Pnnn8fHH3/s7djq8sYbb9RJM0IIIYS0JqRSsOiZVDZf+tKXAAD/+Z//CSEEAEA583DiiSd6x0IIWJZVkkwak/5/e3cep3O9/3/8eQ1mZBlbzBiNhohEyDK2Q0Vn5JSEEk7odKhOUugUhaJCJWk7R/Ur2pNv+6YktBAlpDKiMFnGkuwxM9f1+v3hzFXDYGaua+bzvmYe99vtczvmuj6fzzzmomve5319FgAAPODlaW6PP/64HnjgAaWnp6tp06Z69NFH1bp161zX/f777zVu3DgtW7ZMGzdu1EMPPaSbb745xzp33XWXxo8fn+OxBg0aKDU1NU8911xzjT766CP17t1brVu3Dg5yAAAA/ixgoU8GBQppLmnDhg26++679cknnyg9PV0JCQn6+9//rjvuuEPR0dHH3e68887TwoULczx27bXXavr06WFrmz9/ftj2lY3JJAAASpBZs2ZpxIgRmj59upKTkzVt2jSlpKRozZo1qlGjxjHrHzx4UHXr1tXll1+u4cOHH3e/Z599tj7++OPg16VL532I8e677+r9999X+/bt8/fDAAAAOCI1NVWBQEBPPPGE6tWrp++++06DBw/WgQMHNGXKlBNuO3jwYE2YMCH4dbivG9mpU6ew7k9iMgkAAG+E8TS3P5/nLkkxMTGKiYnJdZOpU6dq8ODBuvrqqyVJ06dP13vvvadnnnlGo0aNOmb9Vq1aBe/ykdvz2UqXLq34+PiC/BSqVauWKlasWKBtAQBAyRHOu7nlZ/yUF127dlXXrl2DX9etW1dr1qzRf//735NOJpUrV67A46i8OnTokL799ttcLynQvXv3fO8vKlxhAAAgHyxMi6TExERVqlQpuEyaNCnXb5mRkaFly5apS5cuwceioqLUpUsXLV68OKQfZ+3atUpISFDdunXVv39/paWl5XnbBx98ULfddps2btwYUgMAACjesu/mFuoi5X38FIo9e/aoatWqJ13vxRdf1KmnnqrGjRtr9OjROnjwYFg75syZo9q1a6tNmzbq3r27evToEVwuu+yyAu2TI5MAAIhwv/zyS447bxzvU7WdO3fK7/crLi4ux+NxcXF5vr5RbpKTkzVz5kw1aNBAW7du1fjx4/WXv/xF3333XZ6OOGrZsqUOHTqkunXrqly5cipTpkyO53ft2lXgNgAAgNzkdfxUUOvWrdOjjz560qOS+vXrp9NPP10JCQn69ttvddttt2nNmjV6/fXXw9Zy44036vLLL9e4ceOOGQcWFJNJAAB4wPe/JdR9SEdu4ZrX27gWhosuuij453POOUfJyck6/fTT9eqrr+qaa6456fZ9+/bV5s2bNXHiRMXFxXEBbgAAkCt/GO7mlr19XsdPo0aN0n333XfCdVavXq2GDRsGv968ebO6du2qyy+/XIMHDz7htkOGDAn+uUmTJqpZs6Y6d+6sn376SWecccZJ+/Ji27ZtGjFiRNgmkiQmkwAA8EYYr5mU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AQAA4DiYTAIAwAPhuIB2cbkA91133aXLL79clStX9joFAAA4LBx3Y+NubuHBZBIAAF4wheGaSWEp8dzgwYO9TgAAABEgEJB8IU4GBQJhiinhuGYSAAAAAAAA8owjkwAA8AJ3cwMAAMgXs9AvoM0FuMODySQAALwQkOQLwz4AAABKCAscWULdB0LHaW4AAAAAAADIM45MAgDAA9zNDQAAIH8CAQvDBbgZP4UDRyYBAOCF7GsmhboUwOOPP66kpCSVLVtWycnJWrp06QnXnz17tho2bKiyZcuqSZMmev/993M8P2jQIPl8vhxL165dC9QGAABwPBawsCyFYcGCBceMh7KXr7766rjbnXfeecesf9111xVKYzgxmQQAQAkya9YsjRgxQnfeeae++eYbNW3aVCkpKdq+fXuu6y9atEh9+/bVNddco+XLl6tHjx7q0aOHvvvuuxzrde3aVVu3bg0uL7/8clH8OAAAAE5o165djrHQ1q1b9c9//lN16tRRy5YtT7jt4MGDc2x3//33F1F1wXGaGwAAXgjj3dz27t2b4+GYmBjFxMTkusnUqVM1ePBgXX311ZKk6dOn67333tMzzzyjUaNGHbP+ww8/rK5du+rf//63JOnuu+/W3Llz9dhjj2n69Ok5vmd8fHxoPw8AAMAJhOPIouzt8zN+yovo6OgcY6HMzEy99dZbuvHGG+XznfiuK+XKlYu4cRRHJgEA4IUwnuaWmJioSpUqBZdJkybl+i0zMjK0bNkydenSJfhYVFSUunTposWLF+e6zeLFi3OsL0kpKSnHrL9gwQLVqFFDDRo00PXXX69ff/01lFcHAADgGAGzsCxS3sdPBfX222/r119/DX6AdyIvvviiTj31VDVu3FijR4/WwYMHw9pSGDgyCQCACPfLL78oNjY2+PXxPlXbuXOn/H6/4uLicjweFxen1NTUXLdJT0/Pdf309PTg1127dlXPnj1Vp04d/fTTT7r99tt10UUXafHixSpVqlRBfywAAIBCk9fxU0E9/fTTSklJ0WmnnXbC9fr166fTTz9dCQkJ+vbbb3XbbbdpzZo1ev3118PaE25MJgEA4IWApBMf8Zy3fUiKjY3NMRgqaldeeWXwz02aNNE555yjM844QwsWLFDnzp096wIAAMVLOE9zy+v4adSoUbrvvvtOuM7q1avVsGHD4NebNm3Shx9+qFdfffWk+x8yZEjwz02aNFHNmjXVuXNn/fTTTzrjjDNOur1XmEwCAMADPjP5QrxmUn63P/XUU1WqVClt27Ytx+Pbtm077nn68fHx+VpfkurWratTTz1V69atYzIJAACEjVkYJpPyOX4aOXKkBg0adMJ16tatm+PrGTNmqFq1aurevXt+85ScnCxJWrduHZNJAADAe9HR0WrRooXmzZunHj16SJICgYDmzZunoUOH5rpN27ZtNW/ePN18883Bx+bOnau2bdse9/ts2rRJv/76q2rWrBnOfAAAgCJXvXp1Va9ePc/rm5lmzJihAQMGqEyZMvn+fitWrJAk58dRXIAbAAAvhPEC3PkxYsQIPfXUU3r22We1evVqXX/99Tpw4EDw4pADBgzQ6NGjg+vfdNNNmjNnjh588EGlpqbqrrvu0tdffx2cfNq/f7/+/e9/68svv9SGDRs0b948XXrppapXr55SUlLC81oBAADoyClqgRCXUI9sOplPPvlE69ev1z//+c9jntu8ebMaNmyopUuXSpJ++ukn3X333Vq2bJk2bNigt99+WwMGDFDHjh11zjnnFGpnqDgyCQAALwRM8oU4mCnAYKhPnz7asWOHxo0bp/T0dDVr1kxz5swJXmQ7LS1NUVF/fNbUrl07vfTSSxozZoxuv/121a9fX2+++aYaN24sSSpVqpS+/fZbPfvss9q9e7cSEhL017/+VXfffXfYL2QJAABKNjPL92lque2jMD399NNq165djmsoZcvMzNSaNWuCd2uLjo7Wxx9/rGnTpunAgQNKTExUr169NGbMmEJtDAefFfYr6ZC9e/eqUqVKWp9aUxUrclAWACCnffsCqtNwq/bs2VNoF7TO/l3U5YybVbpUaJMtWf7D+vinaYXaC2T/m71aiYrmoHYAwFEyFNAM/VIk46c61zyvqOhyIe0rkHFQ65++ivFTiDgyCQAALxTwNLVj9gEAAFBChPNubggNk0kAAHgiDJNJYjAEAABKjkDACnSa/zH7QMg4VhkAAAAAAAB5xpFJAAB4gdPcAAAA8sUCflnAH/I+EDomkwAA8ELAFPJpahymDQAAShAmk9zBaW4AAAAAAADIM45MAgDACxY4soS6DwAAgBLCAoEwHJnE+CkcmEwCAMALXDMJAAAgX8zvl/lDnEwKcXscwWluAAAAAAAAyDOOTAIAwAtcgBsA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mZSQkKBffvlFFStWlM/n8zonh7179yoxMVG//PJLoR1qV1Aut0n0hcLlNsntPpfbJLf7XG4zM+3bt69QDxcuW7as1q9fr4yMjLDsz8yO+Z3Gbd0RToyfCsblNsntPpfbJLf7XG6T3O5zuU1yu6+4j59GjRql++6774T7W716tRo2bBiWtkhRoiaToqKidNppp3mdcUKxsbHOvTlkc7lNoi8ULrdJbve53Ca53edqW2F9ovZnZcuWVdmyZQv9+xzt1FNPValSpbRtW84jdLdt26b4+Phct4mPjz/h+tn/u23bNtWsWTPHOs2aNQtjPbzC+Ck0LrdJbve53Ca53edym+R2n8ttkrt9xXn8NHLkSA0aNOiE69StWzdP+4qPjz/mLrrZ46wTjcWOvlFKVlaWdu3addxtigJXUQQAoISIjo5WixYtNG/evOBjgUBA8+bNU9u2bXPdpm3btjnWl6S5c+cG169Tp47i4+NzrLN3714tWbLkuPsEAACIFNWrV1fDhg1PuOR24ezctG3bVqtWrcoxOTR37lzFxsaqUaNGx91m9+7dWrZsWfCxTz75RIFAQMnJyaH9cCFgMgkAgBJkxIgReuqpp/Tss89q9erVuv7663XgwAFdffXVkqQBAwbkuED3TTfdpDlz5ujBBx9Uamqq7rrrLn399dcaOnSoJMnn8+nmm2/WPffco7ffflurVq3SgAEDlJCQoB49enjxIwIAAHgiLS1NK1asUFpamvx+v1asWKEVK1Zo//79kqS//vWvatSoka666iqtXLlSH374ocaMGaMbbrgheJrd0qVL1bBhQ23efORahWeddZa6du2qwYMHa+nSpfriiy80dOhQXXnllZ7dyU0qYae5uSwmJkZ33nmnk9e5cLlNoi8ULrdJbve53Ca53edyW0nQp08f7dixQ+PGjVN6erqaNWumOXPmBC/+mJaWpqioPz5rateunV566SWNGTNGt99+u+rXr68333xTjRs3Dq5z66236sCBAxoyZIh2796tDh06aM6cOZ4cio6SxeX3E5fbJLf7XG6T3O5zuU1yu8/lNsn9Phwxbtw4Pfvss8Gvs+/ONn/+fJ133nkqVaqU3n33XV1//fVq27atypcvr4EDB2rChAnBbQ4ePKg1a9YoMzMz+NiLL76ooUOHqnPnzoqKilKvXr30yCOPFN0PlgufFcn9+wAAAAAAAFAccJobAAAAAAAA8ozJJAAAAAAAAOQZk0kAAAAAAADIMyaTAAAAAAAAkGdMJgEAAAAAACDPmExCxHD1xoNZWVleJxzXjh075Pf7vc44rpUrV2rv3r1eZwAAUGwxfso/xk8AcHJMJhWynTt3atGiRfr555+9TsnV9u3b9dJLL+mLL77Qb7/95nVODrt27VLfvn01Y8YMSe4NhrZs2aLWrVtr3LhxXqccY+vWrerZs6eGDRumVatWeZ1zjM2bN+uKK65Q8+bN9fzzz3udk0N6erruvfdezZgxQ4sXL5bk1r+9bdu26e2339bKlSudG4inp6fr2Wef1WeffRYc5Lr02gGIHC6Pn1weO0mMn0LB+KngGD8VHOMnRComkwrR6NGjddZZZ+nmm29W48aN9dBDD+nXX3/1Oito1KhRqlevnp544gl17dpVw4YN04YNG7zOCnrhhRc0a9YsPfbYY9q1a5eioqIUCAS8zpIkDR8+XElJSYqPj9fQoUO9zpH0xy+d2bNnq0mTJvL7/Ro6dKji4uJyPO+1ESNGqHbt2vr9999VpUoVVaxY0eukoPHjx6tevXr69NNPNWXKFF1++eX66quv5PP5nHj9xo0bp7p16+rhhx9Wx44d9a9//Us//PCDJHn+38bkyZOVlJSkJ598Ul27dlW/fv20cuVKZ147AJHD5fGT62MnifFTfjF+Ch3jp4Jj/ISIZgi7zZs3W+/eva1ly5a2YMEC27hxo40dO9YaNWpkb7/9ttd5tmnTJktJSbHWrVvbwoUL7fDhw/bcc89Z48aN7Z133vE6L6h379522WWXWZcuXeyWW24xMzO/3+9p08aNGy0hIcHq1q1rS5Ys8bTleHr06GH33HNP8OsDBw54WPOHDz74wGJjY61Zs2a2cOFCMzP761//an369PG47Ij333/fmjdvbh988IGZma1atcrOO+88u+OOOzwuO+Lll1+21q1b27x58ywrK8vefPNN++tf/2qtWrXyOs02bNhgjRs3thdeeMHMzN577z27+OKL7cwzz7RDhw55XAcgUrg8foqUsZMZ46eCYvxUMIyfCo7xEyIdRyaFif1p5nj16tXy+Xx65JFH1KlTJ9WuXVsTJkzQgQMHtG3btmPWL+q+jIwMdevWTU8//bQ6duyo6Oho9erVSz6fT2eeeWaRdh3dJv1xDn21atV05ZVXqkOHDnrnnXe0bNkyRUVFefralSpVSrVq1VLr1q3VunVrffPNN7r11ls1depUffzxxzp06JBnbZL05ZdfatWqVRo2bJiWL1+unj17qmfPnrruuuu0YMGCXLcpqr709HQ98cQTWr58uTp27KiMjAwlJSVp3759npz3n92W/b/vv/++JKlr166SpMaNGysqKkrdunU7Zhsv+t544w0lJCToggsuUKlSpXTppZeqdevW+vrrrzVt2rQi7/uzjz76SNu2bdPll18uSerWrZumTZumvXv36vbbb/ekCUBkcHn85PLY6eg+ifFTQdskxk8FaWP8FDrGT4h0TCaFwaFDh7R///7g102aNNHQoUPVtm1bSUcOnzQz1apVK3gopc/n86yvVq1auuqqq9S4cWNJ0u7du3XllVfq8OHDmjx5st54440ie1M9us3MVLp0aUnSN998o6SkJPXq1Uunn366/vvf/yorK0urVq3yrC8hIUETJkzQrFmzlJKSossuu0ypqamaOXOm+vfvr+HDh3vWJkkVK1bUb7/9po8++kg33HCDkpKS1LFjR61du1YXX3yx1q9fX2T/9o7uGzBggK688kpJkt/vV3R0tOLi4rR27VrFxsYW6S/yP7f5fD4FAgHVq1dPO3bs0Ny5c7Vp0yb16dNHX3/9te68805df/31+u233zx57Xw+n/bv36+srCwlJSUpIyMjuF6ZMmV01llnady4cdq3b1+R9GX/Pfn9/uCfTzvtNPn9fu3YsUPSkfe8M844Q/fee68ef/xxbdy4sdC7AEQel8dPLo+dcutj/FTwNonxU0HaGD/lD+MnFEuFcbhTSTJu3Dg766yzrF27dnb77bfb5s2bczyffVhxenq6xcbG2qJFizzt27JlS47n09LSLDY21jp37mwzZ860K664ws466yy77bbbiqytffv2OdoCgYBt27bN2rVrZzt27DAzs//+979Wo0YN8/l8NnHixCI59PN4f7d79uyxa6+91lq2bGlLly61gwcPmpnZww8/bE2bNrX//Oc/RdZ29Gu3fPlyu/DCC61169bWv39/y8jIMDOzgwcPWnJysvXu3dvMCv9w96Nfu61bt5rZkb/bP//v/PnzrUKFCrZ69epC7cmtLfu1y/57XbNmjV111VV20UUXWXR0tF1wwQU2d+5cmzZtmp199tnWvXv3HO1F1bdp0yYzM7vzzjutWbNmNmbMGNuxY4eNHTvWqlWrZi+88IKdfvrpdv/99xdql5nZlClT7B//+Efw6+zXYsGCBdamTRubOnVqjvX37dtnjRo1shtvvNHMvD/NAoA7XB4/uTx2+nMf46eCtzF+Kngb46f8Y/yE4orJpBAMHTrU6tWrZ7Nnz7YRI0ZY06ZNrVWrVrZ3797gOtlvFu+8847Vr1+/SM9/PV7fvn37cqy3fPnyHF+PHTvWmjdvbnv27CnytuzXLiMjw9q3b2+7d++2Dz74wOLi4iw2NtYaNmxohw8fNrPC/aWUW1/Lli1t//79Zmb2448/2uLFi83v9wff4H/99VdLSUmxoUOHWlZWVpG3HTp0yLKysqxfv37m8/nsgQceMDMLtsyePdtOPfVU27lzZ6G1najv6H93ZmYff/yxJSUl2dy5cwu16WRt2X+vZmZvvPGGde7c2Xbt2hV8bMGCBRYTE2NpaWlF3teiRQvLzMy0jIwMu+WWW6x+/fp26qmn2plnnmnz5883M7POnTvb3XffXWhd33//vV1yySVWvnx5i4uLs9mzZ5uZBQfbmZmZ1rt3b7vkkkvsu+++M7M//vu8/fbbrXPnzsH/0wAALo+fXB47naiP8VPB2xg/FbyN8dOJMX5CccdkUgEEAgHbsWOHNWvWzJ544ong42vXrrVq1arZ8OHDgxfty35DGD9+vPXr1y+47ueff26vvfaa531Hb2dm1rdvX+vUqZMdPHgw7AOOk7XdfPPNdujQIVu6dKnVrFnTmjZtahUqVLB7773Xnn76aWvRokXwE4TCmKXPS9/vv/9+zHbZLQ0aNLAhQ4aEvSsvbdmfXnz66acWHx9v7du3z7H9vffea23atLHdu3cXykAyP//usl+v33//3cqXL28vvfRSjseLuu3mm28ODsQnTpxoKSkpObZ/6qmnrE6dOvbjjz960nfjjTcGX5vNmzfbN998k2P7xMREmzRpUqG0mR35+bt3726zZs2yAQMGWIcOHYL/pyR7QPTuu+9aq1atghd7zXbFFVfYxRdfHPw5AZRcLo+fXB475aWP8VPB2xg/FbyN8dOJMX5CccdkUgGlp6dbVFRU8E0pMzPTzMyef/55i46ODt5tIVu7du3s6aeftk2bNtlFF11kpUqVspkzZzrTl23ZsmV23nnn2dNPP+1JW5kyZeyzzz4zM7Nzzz3XBgwYYGvXrjUzs507d9rAgQOtVatWOT4JKcq+E712H3/8sbVq1cq++OILT9r+/NpNnjzZatSoYSNGjLDU1FRbt26dXXjhhTZq1KhCaztZ39GvXSAQsP3791tKSopde+21hdqVn7YxY8ZYp06d7I033rDMzExbu3atXXjhhXb11VcX6mHGBf1393//93/WqlUr+/nnn8PelD142bt3r3366admduSTx6ZNmwYHX3/+FPnuu++2+vXr2x133GEbN260H374wZKTk+2hhx4KexuAyOTy+MnlsdPJ+hg/FbyN8VN42hg//YHxE0oKJpMK6LfffrPk5OTgpxl/njFu0aKF9e3bN/j1mjVrrEqVKsFziS+99NJCP1Q2r32BQMBSU1Pt008/tZtuusliY2Pt2muvLdRDKk/Udu6559oVV1xhZmY7duw45pfP6tWrcz3ct6j6jn7tfvjhB1uwYIENGzbMqlSpYsOHDw9+0uBFW/Zrt3PnTnvuueesatWq1rhxY4uNjbU+ffo489r9+Rdos2bNrH///oV+CkNeX7uVK1da7969rUyZMpaSkmKxsbHWt2/fHKdfeNGX/cm83++33377zd5++20bOnSoVahQwUaPHm1ZWVlF8snVzp07bcSIEda4cWPbsGGDmVnwU7Zdu3bZM888YxUrVrQmTZpYhQoVrE+fPs7cXhmA91weP7k8djpZH+On0NoYPxW8jfFT3jB+QnHEZFIBHT582G699VZr06aNrVq1KviYmdmrr75qp5xySvC8+ffff998Pp+1b9/eFi9e7Fzf//3f/9mll15q559/vi1ZssSptmxFeXhnfvpefvllu/DCC61Dhw725ZdfOtG2e/fu4Ppbtmyxr776yn744YdCb8trX/Zrl/3J0SuvvGLffvutE23Zr93WrVvtrbfesscee+yY62J42Zf92u3cuTP4CWBR/LvL9ucLRnbo0OG4n4hu3LjRPv/88+D5/wCQzeXxk8tjp/z2ZWP8lPc2xk8Fb2P8dGKMn1BcRXl9NzkXZWVlSVLwNrS5PRcdHa2uXbsqKipKjz/+ePAx6cjtRWvUqKEff/xRkpScnKwPP/xQn3/+udq0aeNc38UXX6ypU6fqk08+UevWrZ1oW7duXY5tw3XLznC/dj169NDjjz+uzz77TMnJyU60/fTTT8HtatasqZYtW+qss84KqS2cfdl/t9m3MO7Tp4+aNGniRNvatWslSfHx8erevbtuuOEGNWvWLKS2wuirVq2abrvtNi1YsKBI/t1l8/v9kqR27drp4osv1oIFC/T5559Lkr788svgrW5r166t9u3b6+yzzw6pDUBkcXn85PLYKZx9jJ8K3sb4qeBtjJ9yfy4b4ycUV0wmHeWmm27S3/72N0lSVNQfL0/2f+SlS5dWIBDQo48+qvPPP1+XXnqp5s+fr2eeeSa47saNG1W1alU1btxYklS1alVdeOGFzvbFxMSobt26TrU1atQo5J7C7Mt+7cqWLav69es71eb6axfuvsL4e3W178+DiwoVKhRJm5npoYceyvF1mTJl9Le//U1nn322Ro8erW7duqldu3ZKTU0NuQlAZHJ5/OTy2Cncfa6PARg/udPH+Klw2xg/oUQouoOg3PbDDz9Yt27drHbt2ubz+eyFF14ws2PvjvDUU09ZXFyctWrVyvbs2WNbt261sWPHms/ns8suu8yGDBliFStWtHvuucf8fn/YDi92uc/lNtf7XG5zvc/lNtf78tvWpk0b27x5c47n0tPTrX379ubz+axnz562cePGkLsARJ7i9F7H74nI6XO5zfU+l9tc72P8BOTEZNL/vPbaa3bNNdfYJ598YjfffLPFx8cfcyHAd955x5o3b27/7//9vxwXwDMze+655+zWW2+1nj172rx580pUn8ttrve53OZ6n8ttrveF2rZy5UqrX7++1atXzz7//POwtgGILMX5va4k/55wvc/lNtf7XG5zvY/xE5BTiZ1MOnoGeefOncGL7K1fv94SEhKCtwH98xvB0bdULaxbXbrc53Kb630ut7ne53Kb633hast28OBBe+utt8LeCcB9JeG9riT+nnC9z+U21/tcbnO9j/ETcGIlcjJp/PjxNmjQIJswYUKut5jNysqyRx991MqUKRM89LCw3kAjrc/lNtf7XG5zvc/lNtf7wt1WlHcGAuCWkvReR587fS63ud7ncpvrfYyfgJMrUZNJaWlpdu6551qTJk3shhtusPj4eGvZsqXNnj3bzHL+R75jxw5r2bKl9ejRgz7H21zvc7nN9T6X21zvc7kNQGRx+f3E5Tb6im+b630ut7ne53Ib4JoSNZk0c+ZMa9asme3evdvMjhyC2L17d+vQoYOtWLHCzMwyMzOD67/zzjvm8/ls4cKFZmb24Ycf2po1a0pkn8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ1wTdTJ7/dWfGzYsEFlypRR+fLlJUnly5fXyJEjFRMTo/vuu0/SH7dulKTOnTurT58+GjhwoNq0aaMePXpo9+7dJbLP5TbX+1xuc73P5TbX+1xuAxBZXH4/cbmNvuLb5nqfy22u97ncBrimRE0mHTp0SKVLl9b27duDj3Xs2FEXXXSRVq9erY8//liSgm8Omzdv1q+//qqNGzeqSZMm2rZtm1q3bl0i+1xuc73P5TbX+1xuc73P5TYAkcXl9xOX2+grvm2u97nc5nqfy22Acwr3wCc3ZF8MbfXq1ebz+eyNN97I8fyKFSssOTnZJk+eHHwsNTXVWrVqZWeffbZ99913JbbP5TbX+1xuc73P5TbX+1xuAxBZXH4/cbmNvuLb5nqfy22u97ncBriq2Ewmbd++3X777bfgG8Gfb8/45/NaL7/8cmvevLnt2LEjx/bJycl24403Br/eu3dv8LzY4t7ncpvrfS63ud7ncpvrfS63AYgsLr+fuNxGX/Ftc73P5TbX+1xuAyJRxJ/mlpmZqeuuu04dO3ZUt27d9I9//EN+v1+lSpVSZmampCPntWZkZGjdunWaMmWKUlNT9dBDD2nPnj2SpKysLMXExKhKlSrB/VasWFFNmzYt1n0ut7ne53Kb630ut7ne53IbgMji8vuJy2308XfLaxd5fS63ARHN69msUKxdu9aaNm1q5513nn3yySd2991325lnnmkTJ07Msd7DDz9s5cqVs/vuu8/MzJ588kmrV6+epaSk2FtvvWXDhw+3mjVr2tKlS0tMn8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ2IdBE9mfTII49Y+/btbd++fWZmdvjwYbvwwgvtP//5T/DrIUOGWI0aNez5558PHtJoduQ2jt26dbO2bdtay5Yt7csvvyxRfS63ud7ncpvrfS63ud7nchuAyOLy+4nLbfQV3zbX+1xuc73P5TYg0kXkZFL2f+Tjxo2zM844I/h4WlqatWzZ0p599llbvXq1mZmtWbPG9uzZc8y22dLT00tUn8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ0oLiJmMumJJ56wF1980X788cfgY6+//rolJCRYSkqK9e/f38qUKWPt27e35s2bW3x8vD399NNmZhYIBEp0n8ttrve53OZ6n8ttrve53AYgsrj8fuJyG33Ft831PpfbXO9zuQ0ojpyfTJozZ45Vr17dmjVrZqeffrrVr1/fpkyZYmZHZo2/+eYbe/75561+/fo2e/ZsMzP77bffbOLEiVa1atUcV+YvaX0ut7ne53Kb630ut7ne53IbgMji8vuJy230Fd821/tcbnO9z+U2oDhzfjKpd+/eNmTIEDMz+/HHH+2BBx4wn89n77zzTvAQxIcffthat25tZn/MKi9cuNDKly9vX3zxRYntc7nN9T6X21zvc7nN9T6X2wBEFpffT1xuo6/4trne53Kb630utwHFmZOTSdn/gf/8889WuXJlmzNnTo7n+/XrZ2eddZatW7fOzMzuu+8+u/jii3Oc6zpx4kTr2LGjHThwoET1udzmep/Lba73udzmep/LbQAii8vvJy630Vd821zvc7nN9T6X24CSIkoOWbt2rcxMPp9PklSzZk1FR0crLS1NkpSRkSFJ+s9//qONGzfqtddekyTFx8dr27Zt6t27t1577TVdc801euihh9SvXz+VK1euRPS53OZ6n8ttrve53OZ6n8ttACKLy+8nLrfRV3zbXO9zuc31PpfbgBKnqGevcjNr1ixLSkqyBg0aWOvWrYMXQtu/f78NGDDAUlJS7PDhw2ZmlpGRYWZmo0ePttq1awf38cILL1jHjh2tQ4cO1q1bN0tNTS0RfS63ud7ncpvrfS63ud7nchuAyOLy+4nLbfQV3zbX+1xuc73P5TagpPJ8Mumjjz6ypKQke/zxx23OnDk2YsQIK126tD355JNmZjZz5kxr3ry5PfHEE2ZmwQukffXVV1a9enVbsmRJcF+ZmZlhv3Wjy30ut7ne53Kb630ut7ne53IbgMji8vuJy230Fd821/tcbnO9z+U2oCTzbDIp+zzX8ePHW4sWLYIzyGZm//rXv6x58+b24Ycf2t69e61///7Wrl07W79+fXCdWbNmWUJCgv38888lrs/lNtf7XG5zvc/lNtf7XG4DEFlcfj9xuY2+4tvmep/Lba73udwGwMNrJmWf5/rDDz/ojDPOUJkyZZSZmSlJuueee1S+fHm98MILKlWqlG644QZFRUXpyiuv1KJFi5SWlqb3339fLVq0UHx8fInrc7nN9T6X21zvc7nN9T6X2wBEFpffT1xuo6/4trne53Kb630utwFQ0V0z6aOPPrIbb7zRHnrooRyHGj755JNWsWJFy8rKMrM/znF98sknrV69evb555+bmVlqaqq1aNHCGjRoYHFxcda8efOwnufqcp/Lba73udzmep/Lba73udwGILK4/H7icht9xbfN9T6X21zvc7kNwLEKfTJpy5YtdvHFF1uNGjWsf//+1qRJE6tUqVLwDWLNmjVWq1YtGzt2rJlZ8MJpZmbx8fE2derU4Nf79u2z9evX25dfflki+lxuc73P5TbX+1xuc73P5TYAkcXl9xOX2+grvm2u97nc5nqfy20Ajq9QJ5MOHDhgAwcOtD59+uQ4V7V169Y2aNAgMzPbu3ev3XPPPXbKKadYWlqamf1xfmynTp3sn//8Z3C77MdLQp/Lba73udzmep/Lba73udwGILK4/H7icht9xbfN9T6X21zvc7kNwIkV6jWTypUrp5iYGA0aNEh16tRRVlaWJKlbt25avXq1zEwVK1ZUv379dO655+qKK67Qxo0b5fP5lJaWpu3bt6tHjx7B/WWfN1sS+lxuc73P5TbX+1xuc73P5TYAkcXl9xOX2+grvm2u97nc5nqfy20ATqKwZ6v+fNV9v99vZmb9+vWzwYMH51hv06ZNVq9ePUtKSrLevXtbQkKCXXDBBYV+60aX+1xuc73P5TbX+1xuc73P5TYAkcXl9xOX2+grvm2u97nc5nqfy20Ajs9nZlbUE1gdOnTQ4MGDNXDgQAUCAUlSVFSU1q1bp2XLlmnJkiVq2rSpBg4cWNRpzve53OZ6n8ttrve53OZ6n8ttACKLy+8nLrfRV3zbXO9zuc31PpfbAPxPUc9e/fTTTxYXF2dff/118LE/X0TNay73udxm5nafy21mbve53Gbmdp/LbQAii8vvJy63mdEXCpfbzNzuc7nNzO0+l9sA/KFQr5l01KSVJOnzzz9XhQoV1KJFC0nS+PHjddNNN2n79u1FlZIrl/tcbpPc7nO5TXK7z+U2ye0+l9sARBaX309cbpPoK65tktt9LrdJbve53AbgWKWL6htlXwxt6dKl6tWrl+bOnashQ4bo4MGDev7551WjRo2iSom4PpfbXO9zuc31PpfbXO9zuQ1AZHH5/cTlNvqKb5vrfS63ud7nchuAXBTlYVC///671atXz3w+n8XExNjkyZOL8tuflMt9LreZud3ncpuZ230ut5m53edyG4DI4vL7icttZvSFwuU2M7f7XG4zc7vP5TYAORX5BbgvvPBC1a9fX1OnTlXZsmWL8lvnict9LrdJbve53Ca53edym+R2n8ttACKLy+8nLrdJ9IXC5TbJ7T6X2yS3+1xuA/CHIp9M8vv9KlWqVFF+y3xxuc/lNsntPpfbJLf7XG6T3O5zuQ1AZHH5/cTlNom+ULjcJrnd53Kb5Hafy20A/lDkk0kAAAAAAACIXEV2NzcAAAAAAABEPiaTAAAAAAAAkGdMJgEAAAAAACDPmEwCAAAAAABAnjGZBAAAAAAAgDxjMgkAAAAAAAB5xmQSUEwtWLBAPp9Pu3fv9joFAAAgIjB+AoC88ZmZeR0BIHTnnXeemjVrpmnTpkmSMjIytGvXLsXFxcnn83kbBwAA4CDGTwBQMKW9DgBQOKKjoxUfH+91BgAAQMRg/AQAecNpbkAxMGjQIC1cuFAPP/ywfD6ffD6fZs6cmeMw7ZkzZ6py5cp699131aBBA5UrV069e/fWwYMH9eyzzyopKUlVqlTRsGHD5Pf7g/s+fPiwbrnlFtWqVUvly5dXcnKyFixY4M0PCgAAECaMnwCg4DgyCSgGHn74Yf34449q3LixJkyYIEn6/vvvj1nv4MGDeuSRR/TKK69o37596tmzpy677DJVrlxZ77//vn7++Wf16tVL7du3V58+fSRJQ4cO1Q8//KBXXnlFCQkJeuONN9S1a1etWrVK9evXL9KfEwAAIFwYPwFAwTGZBBQDlSpVUnR0tMqVKxc8NDs1NfWY9TIzM/Xf//5XZ5xxhiSpd+/eev7557Vt2zZVqFBBjRo10vnnn6/58+erT58+SktL04wZM5SWlqaEhARJ0i233KI5c+ZoxowZmjhxYtH9kAAAAGHE+AkACo7JJKAEKVeuXHAgJElxcXFKSkpShQoVcjy2fft2SdKqVavk9/t15pln5tjP4cOHVa1ataKJBgAA8BDjJwA4FpNJQAlSpkyZHF/7fL5cHwsEApKk/fv3q1SpUlq2bJlKlSqVY70/D6AAAACKK8ZPAHAsJpOAYiI6OjrHhR/DoXnz5vL7/dq+fbv+8pe/hHXfAAAAXmP8BAAFw93cgGIiKSlJS5Ys0YYNG7Rz587gp2OhOPPMM9W/f38NGDBAr7/+utavX6+lS5dq0qRJeu+998JQDQAA4B3GTwBQMEwmAcXELbfcolKlSqlRo0aqXr260tLSwrLfGTNmaMCAARo5cqQaNGigHj166KuvvlLt2rXDsn8AAACvMH4CgILxmZl5HQEAAAAAAIDIwJFJAAAAAAAAyDMmkwAAAAAAAJBnTCYBAAAAAAAgz5hMAgAAAAAAQJ4xmQQAAAAAAIA8YzIJAAAAAAAAecZkEgAAAAAAAPKMySQAAAAAAADkGZNJAAAAAAAAyDMmkwAAAAAAAJBnTCYBAAAAAAAgz/4/0fASRDBF0nEAAAAASUVORK5CYII=", + "image/png": "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5Rg5ciSGDRuGT37yk1i4cCF23HHHsmRec801OOKII/Dss88im83iggsuwN///nds2LABf/zjH8uSQeoH758IIYT0WBrgUVROFdbly5cHtr/3ve/he9/7XkXz1IKUEjNnzsThhx+OpqYmCFHbPWavTGa9cuVK3HDDDfjKV75StN+iRYsC5e4qickjhBBCtida1+cFlF/e9b333oNt2xg1alSgfdSoUb4bdSm+9a1vYcyYMZg+fbrfNnPmTNx1111oa2vD1VdfjccffxxHH3007HLydwDYd9998Y9//AMf/ehHcdxxx6GjowOf+9zn8Je//AW77bZbWTJI/eD9EyGEkJ6KkLIur76EUgoLFizA2LFjMWjQIKxatQoAcOmll+LWW2+tSmZDPYouvPBCXH311UX7vPLKK9hzzz397TVr1mDmzJk44YQTcOaZZxYde9FFF2Hu3Ln+dnt7O292CCGE9DmqKe9aDVdddRXuueceLF++HM3NzX77SSed5L//8Ic/jP322w+77bYbli9fjiOOOKKk3NWrV2PcuHG4+OKLY/ftsssu9TkAUha8fyKEEEJ6DwsXLsSdd96Ja665JmAj2XfffbF48WKcccYZFctsqKHo3HPP9WP6kpg4caL//t///jc+8YlP4JBDDsHNN99cUn6S6z0hhBDSaOpZ9cwr61qK4cOHw7IsrFu3LtC+bt26kvmFvvvd7+Kqq67Co48+iv32269o34kTJ2L48OFYuXJlWYaiCRMm4J133okk037//fcxYcKEsj2TSH3g/RMhhJAei6hD6JmocXwP46677sLNN9+MI444Al/96lf99v333x+vvvpqVTIbaigaMWKEX76tFGvWrMEnPvEJTJkyBbfffnsgURQhhBDS69DCzzFUk4wKyGQymDJlCtra2vykhkoptLW1Yc6cOYnjrrnmGlx55ZV45JFHcOCBB5ac5+2338b777+PnXbaqSy9tNaxsfRbtmwJeC4RQgghpJ8jBCBqtAXUmL+np7FmzRpMmjQp0q6UQi6Xq0pmr0hmvWbNGhx++OHYdddd8d3vfhfr16/391VbYQUAdApIDe2CnbWg887FppUAtPO/kAoQ7nuhoSEgU7b/BFdIDaQBbQcvNCGdpBFaO7JkS96d0JHVvmkAZEoBQkNaXo4JBa0FhDteKwGhhTOoJQ/YAo4ygABgZy0ISyPf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MWKEDh06FNaWrGKiCAAAL3g0UTR58mQNGDBAN954o+rUqaOnn35a0dHReuGFF056/NSpU9WpUyf961//0gUXXKAHHnhAF154oZ588skMx0VFRWX4TVjp0qWz9WMBAAA4lYBZWDZJio+PV8mSJYPbhAkTwtr6/PPPKykpSeeee+5pj+vdu7defvllzZs3TyNGjNCMGTN0ww03hLUlq1ijCACAPG7fvn0ZPo6KilJUVFSm444ePaqlS5dqxIgRwX0RERHq2LGjFixYcNJzL1iwQEOGDMmwLykpSe+8806GfcnJyapQoYJKly6tiy++WA8++KDKli2bze8IAAAgZ23dujXDLV4nGztJ0vDhw/XQQw+d9lw//PCDzj///ODHP//8sz755BO9/vrrZ+y4+eabg3+uX7++KlasqA4dOmjDhg2qXr36GV+fE5goAgDACwFJp79d/ezOoeO/ETvRqFGjNHr06EyH79q1S36/X7GxsRn2x8bGas2aNSf9EikpKSc9PiUlJfhxp06d1K1bN1WtWlUbNmzQPffco8suu0wLFixQoUKFsvGNAQAAZBbOxaxjYmLOai2goUOHql+/fqc9plq1ahk+njZtmsqWLasuXbpkuS8xMVGStH79eiaKAAAoSMLxePv015/tb8RyynXXXRf8c/369dWgQQNVr15dycnJ6tChQ662AACA/MssDBNFWRx/lS9fXuXLl8/S+adNm6Y+ffqoSJEiWc3TihUrJEkVK1bM8mvDhTWKAADI49J/I5a+nWqiqFy5cipUqJBSU1Mz7E9NTVVcXNxJXxMXF5el46Xjv1UrV66c1q9fn8XvBAAAIG/7/PPPtXHjRt10002ZPrdt2zadf/75wSfObtiwQQ888ICWLl2qTZs26b333lOfPn3Utm1bNWjQILfTg5goAgDACx4sZh0ZGakmTZpo7ty5wX2BQEBz585Vy5YtT/qali1bZjhekj799NNTHi8dvy//119/9fQ3YQAAIP+xgCkQ4hbqFUln8vzzz6tVq1YZ1ixKd+zYMa1duzb4VLPIyEh99tlnuvTSS3X++edr6NCh6t69u95///0cbTwTbj0DAMALAZN8IQ5UsjHQGTJkiPr27aumTZuqefPmmjJlig4ePBh8dGufPn1UuXLl4JM/7rjjDrVr106PPvqoLr/8cs2cOVNLlizRs88+K0k6cOCAxowZo+7duysuLk4bNmzQsGHDVKNGDSUlJYX2/QEAAJzAzLJ869jJzpGTXn311VN+LiEhIcPXj4+P1/z583O0JzuYKAIAoADp2bOndu7cqfvvv18pKSlq1KiRZs+eHVywesuWLYqI+POC41atWunVV1/Vfffdp3vuuUc1a9bUO++8o3r16kmSChUqpG+//VYvvvii9uzZo0qVKunSSy/VAw88kOtrJQEAACB0TBQBAOCFbNw6dtJzZMPAgQM1cODAk34uOTk5075rrrlG11xzzUmPP+ecc/TJJ59kqwMAACArwvnUM5waE0UAAHgiDBNFYqADAAAKjkDAsnXrfaZz4LRYzBoAAAAAAACSuKIIAABveHjrGQAAQF5kAb8s4A/5HDg9JooAAPBCwBTyrWNcOg0AAAoQJopyB7eeAQAAAAAAQBJXFAEA4A0LHN9CPQcAAEABYYFAGK4oYvx0JkwUAQDgBdYoAgAAyBLz+2X+ECeKQnx9QcCtZwAAAAAAAJDEFUUAAHiDxawBAACyxCwMi1kbVxSdCRNFAAB4gVvPAAAAsoSnnuUObj0DAAAAAACAJK4oAgDAG6YwXFEUlhIAAIA8gSuKcgcTRQAAeIFbzwAAALKEiaLcwa1nAAAAAAAAkMQVRQAAeCMQkBQIwzkAAAAKBgsEwnBFEeOnM2GiCAAAL3DrGQAAQJYEAn4pxImiALeenRG3ngEAAAAAAEASVxQBAOANrigCAADIEhazzh1MFAEA4IWAKeTn2weYKAIAAAUHE0W5g1vPAAAAAAAAIIkrigAA8IRZQGahPXUj1NcDAADkKX6/LCLEK4L8XFF0JkwUAQDgBbPQbx1jjSIAAFCAmIX+1DMzJorOhFvPAAAAAAAAIIkrigAA8IaFYTFrrigCAAAFiAUCoV9RFODW/TNhoggAAC8EApIvxIEKaxQBAIACxAJhuPWMp56dEbeeAQAAAAAAQBJXFAEA4A1uPQMAAMiS47eehfjUWG49OyOuKAIAAAAAAICkPDRRlJCQIJ/Pl2GbOHGi11kAAGSLBQJh2QAAAAoKC/jDsuH08tStZ2PHjtWAAQOCH5coUcLDGgAAQsCtZwAAAFnCYta5I09NFJUoUUJxcXFeZwAAAAAAAORLeebWM0maOHGiypYtq8aNG+uRRx5RWlraaY8/cuSI9u3bl2EDAMAJAQvPBoQZ4ycAgKsCAX9YNpxenrmiaNCgQbrwwgtVpkwZff311xoxYoS2b9+uyZMnn/I1EyZM0JgxY3KxEgCAs2QmKcQ1hrj1DDmA8RMAwFXmD0i+EG8987PG45l4ekXR8OHDMy1Q/ddtzZo1kqQhQ4aoffv2atCggW699VY9+uijeuKJJ3TkyJFTnn/EiBHau3dvcNu6dWtufWsAAAB5EuMnAAAKNk+vKBo6dKj69et32mOqVat20v2JiYlKS0vTpk2bVLt27ZMeExUVpaioqFAzAQAIOwuYzBfaFUHGFUXIAYyfAACuMgvDYtbGrWdn4ulEUfny5VW+fPlsvXbFihWKiIhQhQoVwlwFAEAusIBCv/WMS6cBAEDBYQF/6LeesUbRGeWJxawXLFigKVOmaOXKlfrpp5/0yiuvaPDgwbrhhhtUunRpr/MAAMhTnnrqKSUkJKho0aJKTEzU4sWLT3v8G2+8ofPPP19FixZV/fr19dFHH2X4vJnp/vvvV8WKFXXOOeeoY8eOWrduXU5+CwAAAMgheWKiKCoqSjNnzlS7du1Ut25djRs3ToMHD9azzz7rdRoAANliAQvLllWzZs3SkCFDNGrUKC1btkwNGzZUUlKSduzYcdLjv/76a/Xq1Uv9+/fX8uXL1bVrV3Xt2lXfffdd8JiHH35Yjz/+uJ5++mktWrRIxYoVU1JSkg4fPpztnw8AAMBfWcAflg2n57MCtMDBvn37VLJkSS35PlbFS+SJOTIAQC46sD+gpnVTtXfvXsXExOTI10j/b1F7XaXCviIhnSvNjilZ72apNzExUc2aNdOTTz4pSQoEAoqPj9ftt9+u4cOHZzq+Z8+eOnjwoD744IPgvhYtWqhRo0Z6+umnZWaqVKmShg4dqrvuukuStHfvXsXGxmr69Om67rrrQvoe4b30f2dvVLwi88bvGAEAueioApqmrbkyfipc/3r5CkWGdC7zH1XaqldytDev83SNotyWPid24ABrOgAAMkv/70Nu/A4lTcekEL9Mmo5JOj54OtGpFiM+evSoli5dqhEjRgT3RUREqGPHjlqwYMFJv8aCBQs0ZMiQDPuSkpL0zjvvSJI2btyolJQUdezYMfj5kiVLKjExUQsWLGCiKB9I//twNNQ1tQAA+VL6fx9y5RoU/7FQh0+S/1g4SvK1AjVRtH//fklS+8SdHpcAAFy2f/9+lSxZMkfOHRkZqbi4OH2Z8tGZDz4LxYsXV3x8fIZ9o0aN0ujRozMdu2vXLvn9fsXGxmbYHxsbqzVr1pz0/CkpKSc9PiUlJfj59H2nOgZ5W/r46RVt87gEAOCy3Bg/pax+PSzni4uLU2RkaFcm5WcFaqKoUqVK2rp1q0qUKCGfz+d1Tgb79u1TfHy8tm7d6tzlby63SfSFwuU2ye0+l9skt/tcbjMz7d+/X5UqVcqxr1G0aFFt3LhRR48eDcv5zCzTf9N4tDnCifFT9rjcJrnd53Kb5Hafy22S230ut0lu9+XF8VNkZKSKFi0alnPlRwVqoigiIkLnnnuu1xmnFRMT49xf/HQut0n0hcLlNsntPpfbJLf7XG3Lqd+Enaho0aKeDE7KlSunQoUKKTU1NcP+1NRUxcXFnfQ1cXFxpz0+/X9TU1NVsWLFDMc0atQojPXwCuOn0LjcJrnd53Kb5Hafy22S230ut0nu9uXn8VNBxIqEAAAUEJGRkWrSpInmzp0b3BcIBDR37ly1bNnypK9p2bJlhuMl6dNPPw0eX7VqVcXFxWU4Zt++fVq0aNEpzwkAAAB3FagrigAAKOiGDBmivn37qmnTpmrevLmmTJmigwcP6sYbb5Qk9enTR5UrV9aECRMkSXfccYfatWunRx99VJdffrlmzpypJUuW6Nlnn5Uk+Xw+3XnnnXrwwQdVs2ZNVa1aVSNHjlSlSpXUtWtXr75NAAAAZBMTRY6IiorSqFGjnFxXwuU2ib5QuNwmud3ncpvkdp/LbQVBz549tXPnTt1///1KSUlRo0aNNHv27OBi1Fu2bFFExJ8XHLdq1Uqvvvqq7rvvPt1zzz2qWbOm3nnnHdWrVy94zLBhw3Tw4EHdfPPN2rNnj9q0aaPZs2dzeThynMvvJy63SW73udwmud3ncpvkdp/LbZL7fchffJYrz7ADAAAAAACA61ijCAAAAAAAAJKYKAIAAAAAAMAfmCgCAAAAAACAJCaKAAAAAAAA8AcmipBnuLruelpamtcJp7Rz5075/X6vM05p5cqV2rdvn9cZAADkW4yfso7xE4CCjomiHLZr1y59/fXX+umnn7xOOakdO3bo1Vdf1VdffaXffvvN65wMdu/erV69emnatGmS3Bvo/PLLL2revLnuv/9+r1My2b59u7p166ZBgwZp1apVXudksm3bNl177bVq3LixZsyY4XVOBikpKRo3bpymTZumBQsWSHLr373U1FS99957WrlypXOD7JSUFL344ov64osvggNYl352APIOl8dPLo+dJMZPoWD8lH2Mn7KP8ROcZMgxw4cPt3LlylmzZs3snHPOscmTJ9uuXbu8zgq6++67rUSJEta2bVsrXry43XDDDbZx40avs4KmTp1qPp/PLrzwQvv111/NzMzv93tcddydd95pRYoUsSuvvNK2bdvmdY6ZmQUCATMze/31161s2bLWpUsX+/LLL+2XX37J8HmvDR482CIiIuyKK66wMmXK2Isvvuh1UtDo0aOtWLFidumll1qdOnWscuXKtnjxYjNz4+c3cuRIi46OtosvvthiYmJswIAB9v3335uZ9383JkyYYFFRUdaqVSuLjo62yy+/3FasWGFmbvzsAOQdLo+fXB87mTF+yirGT6Fj/JR9jJ/gKiaKcsC2bdusR48e1rRpU0tOTrbNmzfbyJEjrU6dOvbee+95nWc///yzJSUlWfPmzW3+/Pl25MgRe+mll6xevXr2/vvve50X1KNHD7v66qutY8eOdtddd5mZ92/mmzdvtkqVKlm1atVs0aJFnracSteuXe3BBx8Mfnzw4EEPa/708ccfW0xMjDVq1Mjmz59vZmaXXnqp9ezZ0+Oy4z766CNr3Lixffzxx2ZmtmrVKmvfvr3de++9Hpcd99prr1nz5s1t7ty5lpaWZu+8845deuml1qxZM6/TbNOmTVavXj17+eWXzczsww8/tCuuuMJq1aplhw8f9rgOQF7h8vgpr4ydzBg/ZRfjp+xh/JR9jJ/gMm49CxM74fLAH374QT6fT48//rjatWunKlWqaOzYsTp48KBSU1MzHZ/bfUePHlXnzp31/PPPq23btoqMjFT37t3l8/lUq1atXO36a5v05z3rZcuW1XXXXac2bdro/fff19KlSxUREeHpz65QoUKqXLmymjdvrubNm2vZsmUaNmyYJk+erM8++0yHDx/2rE2SFi5cqFWrVmnQoEFavny5unXrpm7duunWW29VcnLySV+TW30pKSl65plntHz5crVt21ZHjx5VQkKC9u/f78l99ult6f/70UcfSZI6deokSapXr54iIiLUuXPnTK/xou/tt99WpUqVdPHFF6tQoUK66qqr1Lx5cy1ZskRTpkzJ9b4TzZkzR6mpqbrmmmskSZ07d9aUKVO0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7G0A8iaXx08uj53O1Mf4KfttjJ/C08b46U+Mn5AfMFGUTb/99pslJiYGfwtx4kxvkyZNrFevXsGP165da6VLlw7eu3vVVVfl+OWrZ9sXCARszZo19r///c/uuOMOi4mJsVtuuSVHL3M8XduFF15o1157rZmZ7dy5M9N/WH744YeTXoKbW31//dmtXr3akpOTbdCgQVa6dGkbPHhw8DcEXrSl/+x27dplL730kpUpU8bq1atnMTEx1rNnT2d+dif+x7FRo0Z2/fXX5/htBWf7s1u5cqX16NHDihQpYklJSRYTE2O9evXKcEuEF33pv1H3+/3222+/2XvvvWcDBw604sWL24gRIywtLS1XfuO0a9cuGzJkiNWrV882bdpkZhb87dju3bvthRdesBIlSlj9+vWtePHi1rNnT2ceMQzAey6Pn1weO52pj/FTaG2Mn7Lfxvjp7DB+Ql7DRFE2HTlyxIYNG2YtWrSwVatWBfeZmb3++ut2zjnnBO9T/+ijj8zn81nr1q1twYIFzvX997//tauuusouuugiW7RokVNt6XLzksus9L322mt2ySWXWJs2bWzhwoVOtO3Zsyd4/C+//GLffPONrV69OsfbzrYv/WeX/hufmTNn2rfffutEW/rPbvv27fbuu+/ak08+mWkdCi/70n92u3btCv7mLjf+vUt34uKLbdq0OeVvMjdv3mxffvll8H57AEjn8vjJ5bFTVvvSMX46+zbGT9lvY/x0eoyfkBdFeP3UNRelpaVJUvBRrCf7XGRkpDp16qSIiAg99dRTwX3S8UdsVqhQQT/++KMkKTExUZ988om+/PJLtWjRwrm+K664QpMnT9bnn3+u5s2bO9G2fv36DK8N12Mrw/2z69q1q5566il98cUXSkxMdKJtw4YNwddVrFhRTZs21QUXXBBSWzj70v/Zpj/Gt2fPnqpfv74TbevWrZMkxcXFqUuXLrrtttvUqFGjkNpyoq9s2bK6++67lZycnCv/3qXz+/2SpFatWumKK65QcnKyvvzyS0nSwoULg497rVKlilq3bq26deuG1AYgb3F5/OTy2CmcfYyfst/G+Cn7bYyfTv65dIyfkBcxUfQXd9xxhy6//HJJUkTEnz+e9L/AhQsXViAQ0BNPPKGLLrpIV111lebNm6cXXngheOzmzZtVpkwZ1atXT5JUpkwZXXLJJc72RUVFqVq1ak611alTJ+SenOxL/9kVLVpUNWvWdKrN9Z9duPty4p+rq30nDhyKFy+eK21mpsceeyzDx0WKFNHll1+uunXrasSIEercubNatWqlNWvWhNwEIG9yefzk8tgp3H2ujwEYP7nTx/gpZ9sYPyHPy72Ll9y2evVq69y5s1WpUsV8Pp+9/PLLZpb5KQLPPfecxcbGWrNmzWzv3r22fft2GzlypPl8Prv66qvt5ptvthIlStiDDz5ofr8/bJf8utzncpvrfS63ud7ncpvrfVlta9GihW3bti3D51JSUqx169bm8/msW7dutnnz5pC7AOQ9+em9jv9O5J0+l9tc73O5zfU+xk8oSJgo+sObb75p/fv3t88//9zuvPNOi4uLy7So3vvvv2+NGze2//u//8uwmJyZ2UsvvWTDhg2zbt262dy5cwtUn8ttrve53OZ6n8ttrveF2rZy5UqrWbOm1ahRw7788suwtgHIW/Lze11B/u+E630ut7ne53Kb632Mn1CQFNiJor/O/O7atSu4YN3GjRutUqVKwUdhnviX/K+PFc2pxz263Odym+t9Lre53udym+t94WpLd+jQIXv33XfD3gnAfQXhva4g/nfC9T6X21zvc7nN9T7GTyjICuRE0ZgxY6xfv342duzYkz5mNS0tzZ544gkrUqRI8HLAnHpzzGt9Lre53udym+t9Lre53hfuttx8gg4AtxSk9zr63Olzuc31PpfbXO9j/ISCrkBNFG3ZssUuvPBCq1+/vt12220WFxdnTZs2tTfeeMPMMv4F3rlzpzVt2tS6du1Kn+Ntrve53OZ6n8ttrve53AYgb3H5/cTlNvryb5vrfS63ud7nchuQmwrURNH06dOtUaNGtmfPHjM7fllgly5drE2bNrZixQozMzt27Fjw+Pfff998Pp/Nnz/fzMw++eQTW7t2bYHsc7nN9T6X21zvc7nN9T6X2wDkLS6/n7jcRl/+bXO9z+U21/tcbgNyU8SZn4uWf2zatElFihRRsWLFJEnFihXT0KFDFRUVpYceekjSn48vlKQOHTqoZ8+e6tu3r1q0aKGuXbtqz549BbLP5TbX+1xuc73P5TbX+1xuA5C3uPx+4nIbffm3zfU+l9tc73O5DchNBWqi6PDhwypcuLB27NgR3Ne2bVtddtll+uGHH/TZZ59JUvAv/rZt2/Trr79q8+bNql+/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eXLw4/3799vGjRtt4cKFBaLP5TbX+1xuc73P5TbX+1xuA5C3uPx+4nIbffm3zfU+l9tc73O5DSiocnSi6ODBg9a3b1/r2bNnhntDmzdvbv369TMzs3379tmDDz5o55xzjm3ZssXM/rwftV27dnbTTTcFX5e+vyD0udzmep/Lba73udzmep/LbQDyFpffT1xuoy//trne53Kb630utwEFWY6uURQdHa2oqCj169dPVatWVVpamiSpc+fO+uGHH2RmKlGihHr37q0LL7xQ1157rTZv3iyfz6ctW7Zox44d6tq1a/B86fepFoQ+l9tc73O5zfU+l9tc73O5DUDe4vL7ictt9OXfNtf7XG5zvc/lNqBAy+mZqBNXp/f7/WZm1rt3bxswYECG437++WerUaOGJSQkWI8ePaxSpUp28cUX5/jjC13uc7nN9T6X21zvc7nN9T6X2wDkLS6/n7jcRl/+bXO9z+U21/tcbgMKKp+ZWW5PTrVp00YDBgxQ3759FQgEJEkRERFav369li5dqkWLFqlhw4bq27dvbqc53+dym+t9Lre53udym+t9LrcByFtcfj9xuY2+/Nvmep/Lba73udwGFAi5PTO1YcMGi42NtSVLlgT3nbggmddc7nO5zcztPpfbzNzuc7nNzO0+l9sA5C0uv5+43GZGXyhcbjNzu8/lNjO3+1xuAwqKHF2j6C8TUpKkL7/8UsWLF1eTJk0kSWPGjNEdd9yhHTt25FbKSbnc53Kb5Hafy22S230ut0lu97ncBiBvcfn9xOU2ib782ia53edym+R2n8ttQEFTOLe+UPrCYosXL1b37t316aef6uabb9ahQ4c0Y8YMVahQIbdS8lyfy22u97nc5nqfy22u97ncBiBvcfn9xOU2+vJvm+t9Lre53udyG1Dg5OblS7///rvVqFHDfD6fRUVF2cSJE3Pzy5+Ry30ut5m53edym5nbfS63mbnd53IbgLzF5fcTl9vM6AuFy21mbve53Gbmdp/LbUBBkuuLWV9yySWqWbOmJk+erKJFi+bmlz4rLve53Ca53edym+R2n8ttktt9LrcByFtcfj9xuU2iLxQut0lu97ncJrnd53IbUFDk+kSR3+9XoUKFcvNLZonLfS63SW73udwmud3ncpvkdp/LbQDyFpffT1xuk+gLhcttktt9LrdJbve53AYUFLk+UQQAAAAAAAA35dpTzwAAAAAAAOA2JooAAAAAAAAgiYkiAAAAAAAA/IGJIgAAAAAAAEhioggAAAAAAAB/YKIIAAAAAAAAkpgoAgAAAAAAwB+YKALyqeTkZPl8Pu3Zs8frFAAAgDyB8RMASD4zM68jAISuffv2atSokaZMmSJJOnr0qHbv3q3Y2Fj5fD5v4wAAABzE+AkAMivsdQCAnBEZGam4uDivMwAAAPIMxk8AwK1nQL7Qr18/zZ8/X1OnTpXP55PP59P06dMzXDo9ffp0lSpVSh988IFq166t6Oho9ejRQ4cOHdKLL76ohIQElS5dWoMGDZLf7w+e+8iRI7rrrrtUuXJlFStWTImJiUpOTvbmGwUAAAgTxk8AcHJcUQTkA1OnTtWPP/6oevXqaezYsZKk77//PtNxhw4d0uOPP66ZM2dq//796tatm66++mqVKlVKH330kX766Sd1795drVu3Vs+ePSVJAwcO1OrVqzVz5kxVqlRJb7/9tjp16qRVq1apZs2aufp9AgAAhAvjJwA4OSaKgHygZMmSioyMVHR0dPBy6TVr1mQ67tixY/rPf/6j6tWrS5J69OihGTNmKDU1VcWLF1edOnV00UUXad68eerZs6e2bNmiadOmacuWLapUqZIk6a677tLs2bM1bdo0jR8/Pve+SQAAgDBi/AQAJ8dEEVCAREdHBwc5khQbG6uEhAQVL148w74dO3ZIklatWiW/369atWplOM+RI0dUtmzZ3IkGAADwEOMnAAUNE0VAAVKkSJEMH/t8vpPuCwQCkqQDBw6oUKFCWrp0qQoVKpThuBMHRwAAAPkV4ycABQ0TRUA+ERkZmWERxXBo3Lix/H6/duzYob/97W9hPTcAAIDXGD8BQGY89QzIJxISErRo0SJt2rRJu3btCv5WKxS1atXS9ddfrz59+uitt97Sxo0btXjxYk2YMEEffvhhGKoBAAC8w/gJADJjogjIJ+666y4VKlRIderUUfny5bVly5awnHfatGnq06ePhg4dqtq1a6tr16765ptvVKVKlbCcHwAAwCuMnwAgM5+ZmdcRAAAAAAAA8B5XFAEAAAAAAEASE0UAAAAAAAD4AxNFAAAAAAAAkMREEQAAAAAAAP7ARBEAAAAAAAAkMVEEAAAAAACAPzBRBAAAAAAAAElMFAEAAAAAAOAPTBQBAAAAAABAEhNFAAAAAAAA+AMTRQAAAAAAAJAk/X9ZS2UbXGI4CwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -6775,17 +6775,17 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
the script took 0:05:39.729457 to run\n",
+       "
the script took 0:05:45.521026 to run\n",
        "
\n" ], "text/plain": [ - "the script took \u001b[1;92m0:05:39\u001b[0m.\u001b[1;36m729457\u001b[0m to run\n" + "the script took \u001b[1;92m0:05:45\u001b[0m.\u001b[1;36m521026\u001b[0m to run\n" ] }, "metadata": {}, From 5f9d3adc2183537e86f41089fb4e2e60552854e8 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Thu, 29 Aug 2024 12:45:21 +0200 Subject: [PATCH 19/33] adjust BMI_MODFLOW notebook --- docs/notebooks/bmi_MODFLOW_coupling.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/notebooks/bmi_MODFLOW_coupling.ipynb b/docs/notebooks/bmi_MODFLOW_coupling.ipynb index c44540e0..17718a88 100644 --- a/docs/notebooks/bmi_MODFLOW_coupling.ipynb +++ b/docs/notebooks/bmi_MODFLOW_coupling.ipynb @@ -13,7 +13,7 @@ "- The executable files of both models. \n", " - STEMMUS_SCOPE executable file can be retrieved from the link (https://github.com/EcoExtreML/STEMMUS_SCOPE/blob/main/run_model_on_snellius/exe/STEMMUS_SCOPE). Note: the STEMMUS_SCOPE executable file is Linux-based only.\n", " - MODFLOW 6 executable files can be retrieved from the link (https://github.com/MODFLOW-USGS/modflow6/releases). Note: This notebook is based on MODFLOW 6.5.0 (Linux version). \n", - "- The input files of both models are already prepared in advance and are not part of this notebook. The input data files can be accessed via this link (https://zenodo.org/records/13354850). The link also includes a version of the executable files needed to run the models. Download, unzip and copy the folders to your own working directory (root directory, see below the cell under the header: *1. Set up the root directory*).\n", + "- The input files of both models are already prepared in advance and are not part of this notebook. The input data files can be accessed via this link (https://zenodo.org/records/13464164). The link also includes: 1) a version of the executable files needed to run the models. Download, unzip and copy the folders to your own working directory (root directory, see below the cell under the header: *1. Set up the root directory*), and 2) a notebook for creating the MODFLOW model files of this example.\n", " \n", "In case the user wants to test the notebook on another site, preparing input files for both models is required. Preparing input files for STEMMUS_SCOPE can be done through the PyStemmusScope Python package (https://pystemmusscope.readthedocs.io/en/latest/notebooks/run_model_on_different_infra/). Preparing input files for MODFLOW 6 can be done through the FloPy Python package (https://flopy.readthedocs.io/en/stable/tutorials.html#modflow-6).\n", "\n", @@ -89,7 +89,7 @@ "metadata": {}, "outputs": [], "source": [ - "stemmus_scope_workspace = os.path.join(root, 'stsc_input', 'NL-Loo_2024-08-12-1341')\n", + "stemmus_scope_workspace = os.path.join(root, 'input', 'NL-Loo_2024-08-12-1341')\n", "stemmus_scope_config_file = os.path.join(stemmus_scope_workspace, \"NL-Loo_2024-08-12-1341_config.txt\")" ] }, @@ -151,7 +151,7 @@ "metadata": {}, "outputs": [], "source": [ - "modflow_workspace = os.path.join(root, 'mf6_model_base')\n", + "modflow_workspace = os.path.join(root, 'mf6_model')\n", "modflow_exe_file = os.path.join(executables_workspace, \"libmf6.so\") # for window -> \"libmf6.dll\"" ] }, From 9b37acd00dec6b37fff06c2b50e229aeb1a2e5bc Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Thu, 29 Aug 2024 12:48:55 +0200 Subject: [PATCH 20/33] Update bmi_MODFLOW_coupling.ipynb --- docs/notebooks/bmi_MODFLOW_coupling.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/notebooks/bmi_MODFLOW_coupling.ipynb b/docs/notebooks/bmi_MODFLOW_coupling.ipynb index c44540e0..17718a88 100644 --- a/docs/notebooks/bmi_MODFLOW_coupling.ipynb +++ b/docs/notebooks/bmi_MODFLOW_coupling.ipynb @@ -13,7 +13,7 @@ "- The executable files of both models. \n", " - STEMMUS_SCOPE executable file can be retrieved from the link (https://github.com/EcoExtreML/STEMMUS_SCOPE/blob/main/run_model_on_snellius/exe/STEMMUS_SCOPE). Note: the STEMMUS_SCOPE executable file is Linux-based only.\n", " - MODFLOW 6 executable files can be retrieved from the link (https://github.com/MODFLOW-USGS/modflow6/releases). Note: This notebook is based on MODFLOW 6.5.0 (Linux version). \n", - "- The input files of both models are already prepared in advance and are not part of this notebook. The input data files can be accessed via this link (https://zenodo.org/records/13354850). The link also includes a version of the executable files needed to run the models. Download, unzip and copy the folders to your own working directory (root directory, see below the cell under the header: *1. Set up the root directory*).\n", + "- The input files of both models are already prepared in advance and are not part of this notebook. The input data files can be accessed via this link (https://zenodo.org/records/13464164). The link also includes: 1) a version of the executable files needed to run the models. Download, unzip and copy the folders to your own working directory (root directory, see below the cell under the header: *1. Set up the root directory*), and 2) a notebook for creating the MODFLOW model files of this example.\n", " \n", "In case the user wants to test the notebook on another site, preparing input files for both models is required. Preparing input files for STEMMUS_SCOPE can be done through the PyStemmusScope Python package (https://pystemmusscope.readthedocs.io/en/latest/notebooks/run_model_on_different_infra/). Preparing input files for MODFLOW 6 can be done through the FloPy Python package (https://flopy.readthedocs.io/en/stable/tutorials.html#modflow-6).\n", "\n", @@ -89,7 +89,7 @@ "metadata": {}, "outputs": [], "source": [ - "stemmus_scope_workspace = os.path.join(root, 'stsc_input', 'NL-Loo_2024-08-12-1341')\n", + "stemmus_scope_workspace = os.path.join(root, 'input', 'NL-Loo_2024-08-12-1341')\n", "stemmus_scope_config_file = os.path.join(stemmus_scope_workspace, \"NL-Loo_2024-08-12-1341_config.txt\")" ] }, @@ -151,7 +151,7 @@ "metadata": {}, "outputs": [], "source": [ - "modflow_workspace = os.path.join(root, 'mf6_model_base')\n", + "modflow_workspace = os.path.join(root, 'mf6_model')\n", "modflow_exe_file = os.path.join(executables_workspace, \"libmf6.so\") # for window -> \"libmf6.dll\"" ] }, From df6fae241702e9c427b1777fd083b90fcac961b4 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Thu, 19 Sep 2024 10:50:11 +0200 Subject: [PATCH 21/33] add rechargeTemp to BMI variables --- PyStemmusScope/bmi/variable_reference.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/PyStemmusScope/bmi/variable_reference.py b/PyStemmusScope/bmi/variable_reference.py index fc7ed14d..d34f6d42 100644 --- a/PyStemmusScope/bmi/variable_reference.py +++ b/PyStemmusScope/bmi/variable_reference.py @@ -114,6 +114,15 @@ class BmiVariable: grid=0, keys=["gwfluxes", "recharge"], ), + BmiVariable( + name="groundwater_recharge_temperature", + dtype="float64", + input=False, + output=True, + units="degC", + grid=0, + keys=["gwfluxes", "rechargeTemp"], + ), # groundwater (coupling) vars BmiVariable( name="groundwater_coupling_enabled", From a61bb53b00c482c846db56209cf8b11048ac00c0 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:50:13 +0200 Subject: [PATCH 22/33] Delete PyStemmusScope/bmi/variable_reference_BACKUP_2561331.py --- .../bmi/variable_reference_BACKUP_2561331.py | 166 ------------------ 1 file changed, 166 deletions(-) delete mode 100644 PyStemmusScope/bmi/variable_reference_BACKUP_2561331.py diff --git a/PyStemmusScope/bmi/variable_reference_BACKUP_2561331.py b/PyStemmusScope/bmi/variable_reference_BACKUP_2561331.py deleted file mode 100644 index 88f7a604..00000000 --- a/PyStemmusScope/bmi/variable_reference_BACKUP_2561331.py +++ /dev/null @@ -1,166 +0,0 @@ -"""Variable reference to inform the BMI implementation.""" -from dataclasses import dataclass - - -@dataclass -class BmiVariable: - """Holds all info to inform the BMI implementation.""" - - name: str - dtype: str - input: bool - output: bool - units: str - grid: int - keys: list[str] - all_timesteps: bool = False - - -VARIABLES: tuple[BmiVariable, ...] = ( - # atmospheric vars: - BmiVariable( - name="respiration", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["fluxes", "Resp"], - ), - BmiVariable( - name="evaporation_total", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["EVAP"], - all_timesteps=True, - ), - # soil vars: - BmiVariable( - name="soil_temperature", - dtype="float64", - input=True, - output=True, - units="degC", - grid=1, - keys=["TT"], - ), - BmiVariable( - name="soil_moisture", - dtype="float64", - input=True, - output=True, - units="m3 m-3", - grid=1, - keys=["SoilVariables", "Theta_U"], - ), - BmiVariable( - name="soil_root_water_uptake", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RWUs"], - ), - # surface runoff - BmiVariable( - name="surface_runoff_total", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RS"], - ), - BmiVariable( - name="surface_runoff_hortonian", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["ForcingData", "R_Dunn"], - all_timesteps=True, - ), - BmiVariable( - name="surface_runoff_dunnian", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["ForcingData", "R_Hort"], - all_timesteps=True, - ), - # groundwater vars (STEMMUS_SCOPE) - BmiVariable( - name="groundwater_root_water_uptake", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RWUg"], - ), - BmiVariable( - name="groundwater_recharge", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["gwfluxes", "recharge"], - ), -<<<<<<< HEAD - BmiVariable( - name="groundwater_recharge_temperature", - dtype="float64", - input=False, - output=True, - units="degC", - grid=0, - keys=["gwfluxes", "rechargeTemp"], - ), -======= ->>>>>>> main - # groundwater (coupling) vars - BmiVariable( - name="groundwater_coupling_enabled", - dtype="bool", - input=True, - output=False, - units="-", - grid=0, - keys=["GroundwaterSettings", "GroundwaterCoupling"], - ), - BmiVariable( - name="groundwater_head_bottom_layer", - dtype="float64", - input=True, - output=False, - units="cm", - grid=0, - keys=["GroundwaterSettings", "headBotmLayer"], - ), - BmiVariable( - name="groundwater_temperature", - dtype="float64", - input=True, - output=False, - units="degC", - grid=0, - keys=["GroundwaterSettings", "tempBotm"], - ), - BmiVariable( - name="groundwater_elevation_top_aquifer", - dtype="float64", - input=True, - output=False, - units="cm", - grid=0, - keys=["GroundwaterSettings", "topLevel"], - ), -) From 92e655876123dee0fd97a4f4a7b65c07a5f2f584 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:50:21 +0200 Subject: [PATCH 23/33] Delete PyStemmusScope/bmi/variable_reference_BASE_2561331.py --- PyStemmusScope/bmi/variable_reference_BASE_2561331.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 PyStemmusScope/bmi/variable_reference_BASE_2561331.py diff --git a/PyStemmusScope/bmi/variable_reference_BASE_2561331.py b/PyStemmusScope/bmi/variable_reference_BASE_2561331.py deleted file mode 100644 index e69de29b..00000000 From 141d03d261de9adff8000d9a6c3d030b9bf91553 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:50:29 +0200 Subject: [PATCH 24/33] Delete PyStemmusScope/bmi/variable_reference_LOCAL_2561331.py --- .../bmi/variable_reference_LOCAL_2561331.py | 163 ------------------ 1 file changed, 163 deletions(-) delete mode 100644 PyStemmusScope/bmi/variable_reference_LOCAL_2561331.py diff --git a/PyStemmusScope/bmi/variable_reference_LOCAL_2561331.py b/PyStemmusScope/bmi/variable_reference_LOCAL_2561331.py deleted file mode 100644 index d34f6d42..00000000 --- a/PyStemmusScope/bmi/variable_reference_LOCAL_2561331.py +++ /dev/null @@ -1,163 +0,0 @@ -"""Variable reference to inform the BMI implementation.""" -from dataclasses import dataclass - - -@dataclass -class BmiVariable: - """Holds all info to inform the BMI implementation.""" - - name: str - dtype: str - input: bool - output: bool - units: str - grid: int - keys: list[str] - all_timesteps: bool = False - - -VARIABLES: tuple[BmiVariable, ...] = ( - # atmospheric vars: - BmiVariable( - name="respiration", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["fluxes", "Resp"], - ), - BmiVariable( - name="evaporation_total", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["EVAP"], - all_timesteps=True, - ), - # soil vars: - BmiVariable( - name="soil_temperature", - dtype="float64", - input=True, - output=True, - units="degC", - grid=1, - keys=["TT"], - ), - BmiVariable( - name="soil_moisture", - dtype="float64", - input=True, - output=True, - units="m3 m-3", - grid=1, - keys=["SoilVariables", "Theta_U"], - ), - BmiVariable( - name="soil_root_water_uptake", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RWUs"], - ), - # surface runoff - BmiVariable( - name="surface_runoff_total", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RS"], - ), - BmiVariable( - name="surface_runoff_hortonian", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["ForcingData", "R_Dunn"], - all_timesteps=True, - ), - BmiVariable( - name="surface_runoff_dunnian", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["ForcingData", "R_Hort"], - all_timesteps=True, - ), - # groundwater vars (STEMMUS_SCOPE) - BmiVariable( - name="groundwater_root_water_uptake", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RWUg"], - ), - BmiVariable( - name="groundwater_recharge", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["gwfluxes", "recharge"], - ), - BmiVariable( - name="groundwater_recharge_temperature", - dtype="float64", - input=False, - output=True, - units="degC", - grid=0, - keys=["gwfluxes", "rechargeTemp"], - ), - # groundwater (coupling) vars - BmiVariable( - name="groundwater_coupling_enabled", - dtype="bool", - input=True, - output=False, - units="-", - grid=0, - keys=["GroundwaterSettings", "GroundwaterCoupling"], - ), - BmiVariable( - name="groundwater_head_bottom_layer", - dtype="float64", - input=True, - output=False, - units="cm", - grid=0, - keys=["GroundwaterSettings", "headBotmLayer"], - ), - BmiVariable( - name="groundwater_temperature", - dtype="float64", - input=True, - output=False, - units="degC", - grid=0, - keys=["GroundwaterSettings", "tempBotm"], - ), - BmiVariable( - name="groundwater_elevation_top_aquifer", - dtype="float64", - input=True, - output=False, - units="cm", - grid=0, - keys=["GroundwaterSettings", "topLevel"], - ), -) From 79fd36cd9bb20e0c32061a102e84529d2d3c5cf8 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:50:37 +0200 Subject: [PATCH 25/33] Delete PyStemmusScope/bmi/variable_reference_REMOTE_2561331.py --- .../bmi/variable_reference_REMOTE_2561331.py | 154 ------------------ 1 file changed, 154 deletions(-) delete mode 100644 PyStemmusScope/bmi/variable_reference_REMOTE_2561331.py diff --git a/PyStemmusScope/bmi/variable_reference_REMOTE_2561331.py b/PyStemmusScope/bmi/variable_reference_REMOTE_2561331.py deleted file mode 100644 index fc7ed14d..00000000 --- a/PyStemmusScope/bmi/variable_reference_REMOTE_2561331.py +++ /dev/null @@ -1,154 +0,0 @@ -"""Variable reference to inform the BMI implementation.""" -from dataclasses import dataclass - - -@dataclass -class BmiVariable: - """Holds all info to inform the BMI implementation.""" - - name: str - dtype: str - input: bool - output: bool - units: str - grid: int - keys: list[str] - all_timesteps: bool = False - - -VARIABLES: tuple[BmiVariable, ...] = ( - # atmospheric vars: - BmiVariable( - name="respiration", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["fluxes", "Resp"], - ), - BmiVariable( - name="evaporation_total", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["EVAP"], - all_timesteps=True, - ), - # soil vars: - BmiVariable( - name="soil_temperature", - dtype="float64", - input=True, - output=True, - units="degC", - grid=1, - keys=["TT"], - ), - BmiVariable( - name="soil_moisture", - dtype="float64", - input=True, - output=True, - units="m3 m-3", - grid=1, - keys=["SoilVariables", "Theta_U"], - ), - BmiVariable( - name="soil_root_water_uptake", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RWUs"], - ), - # surface runoff - BmiVariable( - name="surface_runoff_total", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RS"], - ), - BmiVariable( - name="surface_runoff_hortonian", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["ForcingData", "R_Dunn"], - all_timesteps=True, - ), - BmiVariable( - name="surface_runoff_dunnian", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["ForcingData", "R_Hort"], - all_timesteps=True, - ), - # groundwater vars (STEMMUS_SCOPE) - BmiVariable( - name="groundwater_root_water_uptake", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["RWUg"], - ), - BmiVariable( - name="groundwater_recharge", - dtype="float64", - input=False, - output=True, - units="cm s-1", - grid=0, - keys=["gwfluxes", "recharge"], - ), - # groundwater (coupling) vars - BmiVariable( - name="groundwater_coupling_enabled", - dtype="bool", - input=True, - output=False, - units="-", - grid=0, - keys=["GroundwaterSettings", "GroundwaterCoupling"], - ), - BmiVariable( - name="groundwater_head_bottom_layer", - dtype="float64", - input=True, - output=False, - units="cm", - grid=0, - keys=["GroundwaterSettings", "headBotmLayer"], - ), - BmiVariable( - name="groundwater_temperature", - dtype="float64", - input=True, - output=False, - units="degC", - grid=0, - keys=["GroundwaterSettings", "tempBotm"], - ), - BmiVariable( - name="groundwater_elevation_top_aquifer", - dtype="float64", - input=True, - output=False, - units="cm", - grid=0, - keys=["GroundwaterSettings", "topLevel"], - ), -) From 3779499eb374f9b40ea1146ab44da0afabf04d65 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:57:37 +0200 Subject: [PATCH 26/33] Delete PyStemmusScope/bmi/implementation.py --- PyStemmusScope/bmi/implementation.py | 570 --------------------------- 1 file changed, 570 deletions(-) delete mode 100644 PyStemmusScope/bmi/implementation.py diff --git a/PyStemmusScope/bmi/implementation.py b/PyStemmusScope/bmi/implementation.py deleted file mode 100644 index 59d9dc18..00000000 --- a/PyStemmusScope/bmi/implementation.py +++ /dev/null @@ -1,570 +0,0 @@ -"""BMI wrapper for the STEMMUS_SCOPE model.""" -import os -from pathlib import Path -from typing import Literal -from typing import Protocol -from typing import Union -import h5py -import numpy as np -from bmipy.bmi import Bmi -from PyStemmusScope.bmi.utils import InapplicableBmiMethods -from PyStemmusScope.bmi.utils import nested_set -<<<<<<< HEAD -from PyStemmusScope.bmi.variable_reference import VARIABLES, BmiVariable -======= -from PyStemmusScope.bmi.variable_reference import VARIABLES -from PyStemmusScope.bmi.variable_reference import BmiVariable ->>>>>>> main -from PyStemmusScope.config_io import read_config - - -MODEL_INPUT_VARNAMES: tuple[str, ...] = tuple( - var.name for var in VARIABLES if var.input -) - -MODEL_OUTPUT_VARNAMES: tuple[str, ...] = tuple( - var.name for var in VARIABLES if var.output -) - -MODEL_VARS: dict[str, BmiVariable] = {var.name: var for var in VARIABLES} - -MODEL_VARNAMES: tuple[str, ...] = tuple(var.name for var in VARIABLES) - -VARNAME_UNITS: dict[str, str] = {var.name: var.units for var in VARIABLES} -<<<<<<< HEAD - -VARNAME_DTYPE: dict[str, str] = {var.name: var.dtype for var in VARIABLES} - -VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} - -======= - -VARNAME_DTYPE: dict[str, str] = {var.name: var.dtype for var in VARIABLES} - -VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} - ->>>>>>> main -VARNAME_LOC: dict[str, list[str]] = {var.name: var.keys for var in VARIABLES} - -NO_STATE_MSG = ( - "The model state is not available. Please run `.update()` before requesting " - "\nthis model info. If you did run .update() before, something seems to have " - "\ngone wrong and you have to restart the model." -) - -NO_CONFIG_MSG = ( - "The model has not been initialized with a configuration file yet. Please first run" - "\n.initialize() before requesting this model info." -) - - -def load_state(config: dict) -> h5py.File: - """Load the STEMMUS_SCOPE model state. - - Args: - config: BMI configuration, containing the path to the output directory. - - Returns: - Model state, as a dict. - """ - matfile = Path(config["OutputPath"]) / "STEMMUS_SCOPE_state.mat" - return h5py.File(matfile, mode="a") - - -def get_variable( - state: h5py.File, varname: str -) -> np.ndarray: # noqa: PLR0911 PLR0912 C901 - """Get a variable from the model state. - - Args: - state: STEMMUS_SCOPE model state - varname: Variable name - """ - if varname not in MODEL_VARNAMES: - msg = "Unknown variable name" - raise ValueError(msg) - - # deviating implemetation: - elif varname == "soil_temperature": - return state["TT"][0, :-1] - - # default implementation: - _s = state - for _loc in VARNAME_LOC[varname]: - _s = _s.get(_loc) - - if MODEL_VARS[varname].all_timesteps: - return _s[0].astype(VARNAME_DTYPE[varname])[[int(state["KT"][0])]] - else: - return _s[0].astype(VARNAME_DTYPE[varname]) - - -def set_variable( - state: h5py.File, - varname: str, - value: np.ndarray, - inds: Union[np.ndarray, None] = None, -) -> dict: - """Set a variable in the model state. - - Args: - state: Model state. - varname: Variable name. - value: New value for the variable. - inds: (Optional) at which indices you want to set the variable values. - - Returns: - Updated model state. - """ - if inds is not None: - vals = get_variable(state, varname) - vals[inds] = value - else: - vals = value - - if varname in MODEL_OUTPUT_VARNAMES and varname not in MODEL_INPUT_VARNAMES: - msg = "This variable is a model output variable only. You cannot set it." - raise ValueError(msg) - elif varname not in MODEL_INPUT_VARNAMES: - msg = "Uknown variable name" - raise ValueError(msg) - - # deviating implementations: - if varname == "soil_temperature": - state["TT"][0, :-1] = vals - elif varname == "groundwater_coupling_enabled": - state["GroundwaterSettings"]["GroundwaterCoupling"][0] = vals.astype("float") - # default: - else: - nested_set(state, VARNAME_LOC[varname] + [0], vals) - return state - - -def get_run_mode(config: dict) -> Literal["exe", "docker"]: - """Get the run mode (docker or EXE) from the config file. - - Args: - config: Config dictionary - - Returns: - Run mode (either "exe" or "docker"). - """ - if "ExeFilePath" in config: - return "exe" - elif "DockerImage" in config: - return "docker" - elif os.getenv("STEMMUS_SCOPE") is not None: - return "exe" - else: - msg = ( - "No valid config found, or the STEMMUS_SCOPE environment variable is " - "not set.\nPlease use the ExeFilePath or DockerImage configuration entry, " - "or set the STEMMUS_SCOPE environment variable." - ) - raise ValueError(msg) - - -def check_writable(file: Path) -> None: - """Check if this process has write access to a file.""" - if not os.access(file, os.W_OK): - msg = ( - f"The file '{file}' already exists, and this process has no" - " write access to it." - ) - raise PermissionError(msg) - - -class StemmusScopeProcess(Protocol): - """Protocol for communicating with the model process.""" - - def __init__(self, cfg_file: str) -> None: - """Initialize the process class (e.g. create the container).""" - ... - - def is_alive(self) -> bool: - """Return if the process is alive.""" - ... - - def initialize(self) -> None: - """Initialize the model and wait for it to be ready.""" - ... - - def update(self) -> None: - """Update the model and wait for it to be ready.""" - ... - - def finalize(self) -> None: - """Finalize the model.""" - ... - - -def start_process(mode: Literal["exe", "docker"], cfg_file: str) -> StemmusScopeProcess: - """Start the right STEMMUS_SCOPE process.""" - if mode == "docker": - try: - from PyStemmusScope.bmi.docker_process import StemmusScopeDocker - - return StemmusScopeDocker(cfg_file=cfg_file) - except ImportError as err: - msg = ( - "The docker python package is not available." - " Please install before continuing." - ) - raise ImportError(msg) from err - elif mode == "exe": - from PyStemmusScope.bmi.local_process import LocalStemmusScope - - return LocalStemmusScope(cfg_file=cfg_file) - else: - msg = "Unknown mode." - raise ValueError(msg) - - -class StemmusScopeBmi(InapplicableBmiMethods, Bmi): - """STEMMUS_SCOPE Basic Model Interface.""" - - config_file: str = "" - config: dict = {} - state: Union[h5py.File, None] = None - state_file: Union[Path, None] = None - - _run_mode: Union[str, None] = None - _process: Union[StemmusScopeProcess, None] = None - - def initialize(self, config_file: str) -> None: - """Perform startup tasks for the model. - - Args: - config_file: Path to the configuration file. - """ - self.config_file = config_file - self.config = read_config(config_file) - - Path(self.config["OutputPath"]).mkdir(parents=True, exist_ok=True) - self.state_file = Path(self.config["OutputPath"]) / "STEMMUS_SCOPE_state.mat" - if self.state_file.exists(): - check_writable(self.state_file) - else: - self.state_file.touch() # Prevent docker messing up file permission. - - self._run_mode = get_run_mode(self.config) - - self._process = start_process(self._run_mode, config_file) - self._process.initialize() - - def update(self) -> None: - """Advance the model state by one time step.""" - if self.state is not None: - self.state = self.state.close() # Close file to allow matlab to write - - if self._process is not None: - self._process.update() - else: - msg = "The STEMMUS_SCOPE process is not running/connected. Can't update!" - raise ValueError(msg) - - self.state = load_state(self.config) - - def update_until(self, time: float) -> None: - """Advance model state until the given time. - - Args: - time: A model time later than the current model time. - """ - while time > self.get_current_time(): - self.update() - - def finalize(self) -> None: - """Finalize the STEMMUS_SCOPE model.""" - if self._process is not None: - self._process.finalize() - else: - msg = "The STEMMUS_SCOPE process is not running/connected. Can't finalize!" - raise ValueError(msg) - - def get_component_name(self) -> str: - """Name of the component. - - Returns: - Name of the component (STEMMUS_SCOPE). - """ - return "STEMMUS_SCOPE" - - ### VARIABLE INFO METHODS ### - def get_input_item_count(self) -> int: - """Get the number of model input variables. - - Returns: - The number of input variables. - """ - return len(MODEL_INPUT_VARNAMES) - - def get_output_item_count(self) -> int: - """Get the number of model output variables. - - Returns: - The number of output variables. - """ - return len(MODEL_OUTPUT_VARNAMES) - - # The types of the following two methods are wrong in python-bmi - # see: https://github.com/csdms/bmi-python/issues/38 - def get_input_var_names(self) -> tuple[str, ...]: # type: ignore - """List of the model's input variables (as CSDMS Standard Names).""" - return MODEL_INPUT_VARNAMES - - def get_output_var_names(self) -> tuple[str, ...]: # type: ignore - """List of the model's output variables (as CSDMS Standard Names).""" - return MODEL_OUTPUT_VARNAMES - - def get_var_grid(self, name: str) -> int: - """Get grid identifier for the given variable.""" - return VARNAME_GRID[name] - - def get_var_type(self, name: str) -> str: - """Get data type of the given variable.""" - return VARNAME_DTYPE[name] - - def get_var_units(self, name: str) -> str: - """Get units of the given variable.""" - return VARNAME_UNITS[name] - - def get_var_itemsize(self, name: str) -> int: - """Get memory use for each array element in bytes.""" - return np.array([], dtype=VARNAME_DTYPE[name]).itemsize - - def get_var_nbytes(self, name: str) -> int: - """Get size, in bytes, of the given variable.""" - return self.get_grid_size(self.get_var_grid(name)) * self.get_var_itemsize(name) - - ### TIME METHODS ### - def get_current_time(self) -> float: - """Get the current time of the model.""" - if self.state is None: - raise ValueError(NO_STATE_MSG) - - return self.get_start_time() + np.sum(self.state["TimeStep"][0]) - - def get_start_time(self) -> float: - """Start time of the model.""" - if len(self.config) == 0: - raise ValueError(NO_CONFIG_MSG) - - return ( - np.datetime64(self.config["StartTime"]) - .astype("datetime64[s]") - .astype("float") - ) - - def get_end_time(self) -> float: - """End time of the model.""" - if len(self.config) == 0: - raise ValueError(NO_CONFIG_MSG) - - return ( - np.datetime64(self.config["EndTime"]) - .astype("datetime64[s]") - .astype("float") - ) - - def get_time_units(self) -> str: - """Time units of the model.""" - return "seconds since 1970-01-01 00:00:00.0 +0000" - - def get_time_step(self) -> float: - """Return the current time step of the model.""" - if self.state is None: - raise ValueError(NO_STATE_MSG) - return float(self.state["TimeStep"][0][0]) - - ### GETTERS AND SETTERS ### - def get_value(self, name: str, dest: np.ndarray) -> np.ndarray: - """Get a copy of values of the given variable. - - Args: - name: input or output variable name, a CSDMS Standard Name. - dest: numpy array into which to place the values. - - Returns: - The same numpy array that was passed as an input buffer. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - dest[:] = get_variable(self.state, name) - return dest - - def get_value_ptr(self, name: str) -> np.ndarray: - """Get a reference to values of the given variable. - - Note: not possible due to the Matlab<>Python coupling. - """ - raise NotImplementedError() - - def get_value_at_indices( - self, name: str, dest: np.ndarray, inds: np.ndarray - ) -> np.ndarray: - """Get values at particular indices. - - Args: - name: Input or output variable name, a CSDMS Standard Name. - dest: numpy array into which to place the values. - inds: The indices into the variable array. - - Returns: - Value of the model variable at the given location. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - dest[:] = get_variable(self.state, name)[inds] - return dest - - def set_value(self, name: str, src: np.ndarray) -> None: - """Specify a new value for a model variable. - - Args: - name: Input or output variable name, a CSDMS Standard Name. - src: The new value for the specified variable. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - if src.size != self.get_grid_size(self.get_var_grid(name)): - msg = f"Size of `src` and variable '{name}' grid size are not equal!" - raise ValueError(msg) - self.state = set_variable(self.state, name, src) - - def set_value_at_indices( - self, name: str, inds: np.ndarray, src: np.ndarray - ) -> None: - """Specify a new value for a model variable at particular indices. - - Parameters - ---------- - name : str - An input or output variable name, a CSDMS Standard Name. - inds : array_like - The indices into the variable array. - src : array_like - The new value for the specified variable. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - if inds.size != src.size: - msg = "Sizes of `inds` and `src` are not equal!" - raise ValueError(msg) - self.state = set_variable(self.state, name, src, inds) - - ### GRID INFO ### - def get_grid_rank(self, grid: int) -> int: - """Get number of dimensions of the computational grid. - - Args: - grid: A grid identifier. - - Returns: - Rank of the grid. - """ - if grid == 0: - return 2 - if grid == 1: - return 3 - msg = f"Invalid grid identifier '{grid}'" - raise ValueError(msg) - - def get_grid_size(self, grid: int) -> int: - """Get the total number of elements in the computational grid. - - Args: - grid: A grid identifier. - - Returns: - Size of the grid. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - - if grid == 0: - return 1 - if grid == 1: - return int(self.state["ModelSettings"]["mN"][0]) - 1 - - msg = f"Invalid grid identifier '{grid}'" - raise ValueError(msg) - - def get_grid_type(self, grid: int) -> str: - """Get the grid type as a string. - - Args: - grid: A grid identifier. - - Returns: - Type of grid as a string. - """ - return "rectilinear" - - def get_grid_x(self, grid: int, x: np.ndarray) -> np.ndarray: - """Get coordinates of grid nodes in the x direction. - - Args: - grid: grid identifier. - x: numpy array to hold the x-coordinates of the grid node columns. - - Returns: - The input numpy array that holds the grid's column x-coordinates. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - x[:] = self.state["SiteProperties"]["longitude"][0] - return x - - def get_grid_y(self, grid: int, y: np.ndarray) -> np.ndarray: - """Get coordinates of grid nodes in the y direction. - - Args: - grid: grid identifier. - y: numpy array to hold the y-coordinates of the grid node columns. - - Returns: - The input numpy array that holds the grid's column y-coordinates. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - y[:] = self.state["SiteProperties"]["latitude"][0] - return y - - def get_grid_z(self, grid: int, z: np.ndarray) -> np.ndarray: - """Get coordinates of grid nodes in the z direction. - - Args: - grid: grid identifier. - z: numpy array to hold the z-coordinates of the grid node columns. - - Returns: - The input numpy array that holds the grid's column z-coordinates. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - if grid == 1: - z[:] = ( - -np.hstack( - ( - self.state["ModelSettings"]["DeltZ_R"][:, 0].cumsum()[::-1], - np.array([0.0]), - ) - ) - / 100 - ) - return z - else: - raise ValueError(f"Grid {grid} has no dimension `z`.") - - def get_grid_shape(self, grid: int, shape: np.ndarray) -> np.ndarray: - """Get dimensions of the computational grid.""" - if grid not in [0, 1]: - msg = f"Unknown grid identifier '{grid}'" - raise ValueError(msg) - - shape[-1] = 1 # Last element is x - shape[-2] = 1 # Semi-last element is y - if grid == 1: - shape[-3] = self.get_grid_size(grid) # First element is z - return shape From d7234e3f69016c014b62e2b1e97a62356b9040f8 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:58:00 +0200 Subject: [PATCH 27/33] Delete PyStemmusScope/bmi/implementation.py.orig --- PyStemmusScope/bmi/implementation.py.orig | 570 ---------------------- 1 file changed, 570 deletions(-) delete mode 100644 PyStemmusScope/bmi/implementation.py.orig diff --git a/PyStemmusScope/bmi/implementation.py.orig b/PyStemmusScope/bmi/implementation.py.orig deleted file mode 100644 index 59d9dc18..00000000 --- a/PyStemmusScope/bmi/implementation.py.orig +++ /dev/null @@ -1,570 +0,0 @@ -"""BMI wrapper for the STEMMUS_SCOPE model.""" -import os -from pathlib import Path -from typing import Literal -from typing import Protocol -from typing import Union -import h5py -import numpy as np -from bmipy.bmi import Bmi -from PyStemmusScope.bmi.utils import InapplicableBmiMethods -from PyStemmusScope.bmi.utils import nested_set -<<<<<<< HEAD -from PyStemmusScope.bmi.variable_reference import VARIABLES, BmiVariable -======= -from PyStemmusScope.bmi.variable_reference import VARIABLES -from PyStemmusScope.bmi.variable_reference import BmiVariable ->>>>>>> main -from PyStemmusScope.config_io import read_config - - -MODEL_INPUT_VARNAMES: tuple[str, ...] = tuple( - var.name for var in VARIABLES if var.input -) - -MODEL_OUTPUT_VARNAMES: tuple[str, ...] = tuple( - var.name for var in VARIABLES if var.output -) - -MODEL_VARS: dict[str, BmiVariable] = {var.name: var for var in VARIABLES} - -MODEL_VARNAMES: tuple[str, ...] = tuple(var.name for var in VARIABLES) - -VARNAME_UNITS: dict[str, str] = {var.name: var.units for var in VARIABLES} -<<<<<<< HEAD - -VARNAME_DTYPE: dict[str, str] = {var.name: var.dtype for var in VARIABLES} - -VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} - -======= - -VARNAME_DTYPE: dict[str, str] = {var.name: var.dtype for var in VARIABLES} - -VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} - ->>>>>>> main -VARNAME_LOC: dict[str, list[str]] = {var.name: var.keys for var in VARIABLES} - -NO_STATE_MSG = ( - "The model state is not available. Please run `.update()` before requesting " - "\nthis model info. If you did run .update() before, something seems to have " - "\ngone wrong and you have to restart the model." -) - -NO_CONFIG_MSG = ( - "The model has not been initialized with a configuration file yet. Please first run" - "\n.initialize() before requesting this model info." -) - - -def load_state(config: dict) -> h5py.File: - """Load the STEMMUS_SCOPE model state. - - Args: - config: BMI configuration, containing the path to the output directory. - - Returns: - Model state, as a dict. - """ - matfile = Path(config["OutputPath"]) / "STEMMUS_SCOPE_state.mat" - return h5py.File(matfile, mode="a") - - -def get_variable( - state: h5py.File, varname: str -) -> np.ndarray: # noqa: PLR0911 PLR0912 C901 - """Get a variable from the model state. - - Args: - state: STEMMUS_SCOPE model state - varname: Variable name - """ - if varname not in MODEL_VARNAMES: - msg = "Unknown variable name" - raise ValueError(msg) - - # deviating implemetation: - elif varname == "soil_temperature": - return state["TT"][0, :-1] - - # default implementation: - _s = state - for _loc in VARNAME_LOC[varname]: - _s = _s.get(_loc) - - if MODEL_VARS[varname].all_timesteps: - return _s[0].astype(VARNAME_DTYPE[varname])[[int(state["KT"][0])]] - else: - return _s[0].astype(VARNAME_DTYPE[varname]) - - -def set_variable( - state: h5py.File, - varname: str, - value: np.ndarray, - inds: Union[np.ndarray, None] = None, -) -> dict: - """Set a variable in the model state. - - Args: - state: Model state. - varname: Variable name. - value: New value for the variable. - inds: (Optional) at which indices you want to set the variable values. - - Returns: - Updated model state. - """ - if inds is not None: - vals = get_variable(state, varname) - vals[inds] = value - else: - vals = value - - if varname in MODEL_OUTPUT_VARNAMES and varname not in MODEL_INPUT_VARNAMES: - msg = "This variable is a model output variable only. You cannot set it." - raise ValueError(msg) - elif varname not in MODEL_INPUT_VARNAMES: - msg = "Uknown variable name" - raise ValueError(msg) - - # deviating implementations: - if varname == "soil_temperature": - state["TT"][0, :-1] = vals - elif varname == "groundwater_coupling_enabled": - state["GroundwaterSettings"]["GroundwaterCoupling"][0] = vals.astype("float") - # default: - else: - nested_set(state, VARNAME_LOC[varname] + [0], vals) - return state - - -def get_run_mode(config: dict) -> Literal["exe", "docker"]: - """Get the run mode (docker or EXE) from the config file. - - Args: - config: Config dictionary - - Returns: - Run mode (either "exe" or "docker"). - """ - if "ExeFilePath" in config: - return "exe" - elif "DockerImage" in config: - return "docker" - elif os.getenv("STEMMUS_SCOPE") is not None: - return "exe" - else: - msg = ( - "No valid config found, or the STEMMUS_SCOPE environment variable is " - "not set.\nPlease use the ExeFilePath or DockerImage configuration entry, " - "or set the STEMMUS_SCOPE environment variable." - ) - raise ValueError(msg) - - -def check_writable(file: Path) -> None: - """Check if this process has write access to a file.""" - if not os.access(file, os.W_OK): - msg = ( - f"The file '{file}' already exists, and this process has no" - " write access to it." - ) - raise PermissionError(msg) - - -class StemmusScopeProcess(Protocol): - """Protocol for communicating with the model process.""" - - def __init__(self, cfg_file: str) -> None: - """Initialize the process class (e.g. create the container).""" - ... - - def is_alive(self) -> bool: - """Return if the process is alive.""" - ... - - def initialize(self) -> None: - """Initialize the model and wait for it to be ready.""" - ... - - def update(self) -> None: - """Update the model and wait for it to be ready.""" - ... - - def finalize(self) -> None: - """Finalize the model.""" - ... - - -def start_process(mode: Literal["exe", "docker"], cfg_file: str) -> StemmusScopeProcess: - """Start the right STEMMUS_SCOPE process.""" - if mode == "docker": - try: - from PyStemmusScope.bmi.docker_process import StemmusScopeDocker - - return StemmusScopeDocker(cfg_file=cfg_file) - except ImportError as err: - msg = ( - "The docker python package is not available." - " Please install before continuing." - ) - raise ImportError(msg) from err - elif mode == "exe": - from PyStemmusScope.bmi.local_process import LocalStemmusScope - - return LocalStemmusScope(cfg_file=cfg_file) - else: - msg = "Unknown mode." - raise ValueError(msg) - - -class StemmusScopeBmi(InapplicableBmiMethods, Bmi): - """STEMMUS_SCOPE Basic Model Interface.""" - - config_file: str = "" - config: dict = {} - state: Union[h5py.File, None] = None - state_file: Union[Path, None] = None - - _run_mode: Union[str, None] = None - _process: Union[StemmusScopeProcess, None] = None - - def initialize(self, config_file: str) -> None: - """Perform startup tasks for the model. - - Args: - config_file: Path to the configuration file. - """ - self.config_file = config_file - self.config = read_config(config_file) - - Path(self.config["OutputPath"]).mkdir(parents=True, exist_ok=True) - self.state_file = Path(self.config["OutputPath"]) / "STEMMUS_SCOPE_state.mat" - if self.state_file.exists(): - check_writable(self.state_file) - else: - self.state_file.touch() # Prevent docker messing up file permission. - - self._run_mode = get_run_mode(self.config) - - self._process = start_process(self._run_mode, config_file) - self._process.initialize() - - def update(self) -> None: - """Advance the model state by one time step.""" - if self.state is not None: - self.state = self.state.close() # Close file to allow matlab to write - - if self._process is not None: - self._process.update() - else: - msg = "The STEMMUS_SCOPE process is not running/connected. Can't update!" - raise ValueError(msg) - - self.state = load_state(self.config) - - def update_until(self, time: float) -> None: - """Advance model state until the given time. - - Args: - time: A model time later than the current model time. - """ - while time > self.get_current_time(): - self.update() - - def finalize(self) -> None: - """Finalize the STEMMUS_SCOPE model.""" - if self._process is not None: - self._process.finalize() - else: - msg = "The STEMMUS_SCOPE process is not running/connected. Can't finalize!" - raise ValueError(msg) - - def get_component_name(self) -> str: - """Name of the component. - - Returns: - Name of the component (STEMMUS_SCOPE). - """ - return "STEMMUS_SCOPE" - - ### VARIABLE INFO METHODS ### - def get_input_item_count(self) -> int: - """Get the number of model input variables. - - Returns: - The number of input variables. - """ - return len(MODEL_INPUT_VARNAMES) - - def get_output_item_count(self) -> int: - """Get the number of model output variables. - - Returns: - The number of output variables. - """ - return len(MODEL_OUTPUT_VARNAMES) - - # The types of the following two methods are wrong in python-bmi - # see: https://github.com/csdms/bmi-python/issues/38 - def get_input_var_names(self) -> tuple[str, ...]: # type: ignore - """List of the model's input variables (as CSDMS Standard Names).""" - return MODEL_INPUT_VARNAMES - - def get_output_var_names(self) -> tuple[str, ...]: # type: ignore - """List of the model's output variables (as CSDMS Standard Names).""" - return MODEL_OUTPUT_VARNAMES - - def get_var_grid(self, name: str) -> int: - """Get grid identifier for the given variable.""" - return VARNAME_GRID[name] - - def get_var_type(self, name: str) -> str: - """Get data type of the given variable.""" - return VARNAME_DTYPE[name] - - def get_var_units(self, name: str) -> str: - """Get units of the given variable.""" - return VARNAME_UNITS[name] - - def get_var_itemsize(self, name: str) -> int: - """Get memory use for each array element in bytes.""" - return np.array([], dtype=VARNAME_DTYPE[name]).itemsize - - def get_var_nbytes(self, name: str) -> int: - """Get size, in bytes, of the given variable.""" - return self.get_grid_size(self.get_var_grid(name)) * self.get_var_itemsize(name) - - ### TIME METHODS ### - def get_current_time(self) -> float: - """Get the current time of the model.""" - if self.state is None: - raise ValueError(NO_STATE_MSG) - - return self.get_start_time() + np.sum(self.state["TimeStep"][0]) - - def get_start_time(self) -> float: - """Start time of the model.""" - if len(self.config) == 0: - raise ValueError(NO_CONFIG_MSG) - - return ( - np.datetime64(self.config["StartTime"]) - .astype("datetime64[s]") - .astype("float") - ) - - def get_end_time(self) -> float: - """End time of the model.""" - if len(self.config) == 0: - raise ValueError(NO_CONFIG_MSG) - - return ( - np.datetime64(self.config["EndTime"]) - .astype("datetime64[s]") - .astype("float") - ) - - def get_time_units(self) -> str: - """Time units of the model.""" - return "seconds since 1970-01-01 00:00:00.0 +0000" - - def get_time_step(self) -> float: - """Return the current time step of the model.""" - if self.state is None: - raise ValueError(NO_STATE_MSG) - return float(self.state["TimeStep"][0][0]) - - ### GETTERS AND SETTERS ### - def get_value(self, name: str, dest: np.ndarray) -> np.ndarray: - """Get a copy of values of the given variable. - - Args: - name: input or output variable name, a CSDMS Standard Name. - dest: numpy array into which to place the values. - - Returns: - The same numpy array that was passed as an input buffer. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - dest[:] = get_variable(self.state, name) - return dest - - def get_value_ptr(self, name: str) -> np.ndarray: - """Get a reference to values of the given variable. - - Note: not possible due to the Matlab<>Python coupling. - """ - raise NotImplementedError() - - def get_value_at_indices( - self, name: str, dest: np.ndarray, inds: np.ndarray - ) -> np.ndarray: - """Get values at particular indices. - - Args: - name: Input or output variable name, a CSDMS Standard Name. - dest: numpy array into which to place the values. - inds: The indices into the variable array. - - Returns: - Value of the model variable at the given location. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - dest[:] = get_variable(self.state, name)[inds] - return dest - - def set_value(self, name: str, src: np.ndarray) -> None: - """Specify a new value for a model variable. - - Args: - name: Input or output variable name, a CSDMS Standard Name. - src: The new value for the specified variable. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - if src.size != self.get_grid_size(self.get_var_grid(name)): - msg = f"Size of `src` and variable '{name}' grid size are not equal!" - raise ValueError(msg) - self.state = set_variable(self.state, name, src) - - def set_value_at_indices( - self, name: str, inds: np.ndarray, src: np.ndarray - ) -> None: - """Specify a new value for a model variable at particular indices. - - Parameters - ---------- - name : str - An input or output variable name, a CSDMS Standard Name. - inds : array_like - The indices into the variable array. - src : array_like - The new value for the specified variable. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - if inds.size != src.size: - msg = "Sizes of `inds` and `src` are not equal!" - raise ValueError(msg) - self.state = set_variable(self.state, name, src, inds) - - ### GRID INFO ### - def get_grid_rank(self, grid: int) -> int: - """Get number of dimensions of the computational grid. - - Args: - grid: A grid identifier. - - Returns: - Rank of the grid. - """ - if grid == 0: - return 2 - if grid == 1: - return 3 - msg = f"Invalid grid identifier '{grid}'" - raise ValueError(msg) - - def get_grid_size(self, grid: int) -> int: - """Get the total number of elements in the computational grid. - - Args: - grid: A grid identifier. - - Returns: - Size of the grid. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - - if grid == 0: - return 1 - if grid == 1: - return int(self.state["ModelSettings"]["mN"][0]) - 1 - - msg = f"Invalid grid identifier '{grid}'" - raise ValueError(msg) - - def get_grid_type(self, grid: int) -> str: - """Get the grid type as a string. - - Args: - grid: A grid identifier. - - Returns: - Type of grid as a string. - """ - return "rectilinear" - - def get_grid_x(self, grid: int, x: np.ndarray) -> np.ndarray: - """Get coordinates of grid nodes in the x direction. - - Args: - grid: grid identifier. - x: numpy array to hold the x-coordinates of the grid node columns. - - Returns: - The input numpy array that holds the grid's column x-coordinates. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - x[:] = self.state["SiteProperties"]["longitude"][0] - return x - - def get_grid_y(self, grid: int, y: np.ndarray) -> np.ndarray: - """Get coordinates of grid nodes in the y direction. - - Args: - grid: grid identifier. - y: numpy array to hold the y-coordinates of the grid node columns. - - Returns: - The input numpy array that holds the grid's column y-coordinates. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - y[:] = self.state["SiteProperties"]["latitude"][0] - return y - - def get_grid_z(self, grid: int, z: np.ndarray) -> np.ndarray: - """Get coordinates of grid nodes in the z direction. - - Args: - grid: grid identifier. - z: numpy array to hold the z-coordinates of the grid node columns. - - Returns: - The input numpy array that holds the grid's column z-coordinates. - """ - if self.state is None: - raise ValueError(NO_STATE_MSG) - if grid == 1: - z[:] = ( - -np.hstack( - ( - self.state["ModelSettings"]["DeltZ_R"][:, 0].cumsum()[::-1], - np.array([0.0]), - ) - ) - / 100 - ) - return z - else: - raise ValueError(f"Grid {grid} has no dimension `z`.") - - def get_grid_shape(self, grid: int, shape: np.ndarray) -> np.ndarray: - """Get dimensions of the computational grid.""" - if grid not in [0, 1]: - msg = f"Unknown grid identifier '{grid}'" - raise ValueError(msg) - - shape[-1] = 1 # Last element is x - shape[-2] = 1 # Semi-last element is y - if grid == 1: - shape[-3] = self.get_grid_size(grid) # First element is z - return shape From 72021b21b7035be383308eb6fa90882446400c61 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:58:36 +0300 Subject: [PATCH 28/33] Add files via upload --- PyStemmusScope/bmi/implementation.py | 558 +++++++++++++++++++++++++++ 1 file changed, 558 insertions(+) create mode 100644 PyStemmusScope/bmi/implementation.py diff --git a/PyStemmusScope/bmi/implementation.py b/PyStemmusScope/bmi/implementation.py new file mode 100644 index 00000000..90e3b33c --- /dev/null +++ b/PyStemmusScope/bmi/implementation.py @@ -0,0 +1,558 @@ +"""BMI wrapper for the STEMMUS_SCOPE model.""" +import os +from pathlib import Path +from typing import Literal +from typing import Protocol +from typing import Union +import h5py +import numpy as np +from bmipy.bmi import Bmi +from PyStemmusScope.bmi.utils import InapplicableBmiMethods +from PyStemmusScope.bmi.utils import nested_set +from PyStemmusScope.bmi.variable_reference import VARIABLES +from PyStemmusScope.bmi.variable_reference import BmiVariable +from PyStemmusScope.config_io import read_config + + +MODEL_INPUT_VARNAMES: tuple[str, ...] = tuple( + var.name for var in VARIABLES if var.input +) + +MODEL_OUTPUT_VARNAMES: tuple[str, ...] = tuple( + var.name for var in VARIABLES if var.output +) + +MODEL_VARS: dict[str, BmiVariable] = {var.name: var for var in VARIABLES} + +MODEL_VARNAMES: tuple[str, ...] = tuple(var.name for var in VARIABLES) + +VARNAME_UNITS: dict[str, str] = {var.name: var.units for var in VARIABLES} + +VARNAME_DTYPE: dict[str, str] = {var.name: var.dtype for var in VARIABLES} + +VARNAME_GRID: dict[str, int] = {var.name: var.grid for var in VARIABLES} + +VARNAME_LOC: dict[str, list[str]] = {var.name: var.keys for var in VARIABLES} + +NO_STATE_MSG = ( + "The model state is not available. Please run `.update()` before requesting " + "\nthis model info. If you did run .update() before, something seems to have " + "\ngone wrong and you have to restart the model." +) + +NO_CONFIG_MSG = ( + "The model has not been initialized with a configuration file yet. Please first run" + "\n.initialize() before requesting this model info." +) + + +def load_state(config: dict) -> h5py.File: + """Load the STEMMUS_SCOPE model state. + + Args: + config: BMI configuration, containing the path to the output directory. + + Returns: + Model state, as a dict. + """ + matfile = Path(config["OutputPath"]) / "STEMMUS_SCOPE_state.mat" + return h5py.File(matfile, mode="a") + + +def get_variable( + state: h5py.File, varname: str +) -> np.ndarray: # noqa: PLR0911 PLR0912 C901 + """Get a variable from the model state. + + Args: + state: STEMMUS_SCOPE model state + varname: Variable name + """ + if varname not in MODEL_VARNAMES: + msg = "Unknown variable name" + raise ValueError(msg) + + # deviating implemetation: + elif varname == "soil_temperature": + return state["TT"][0, :-1] + + # default implementation: + _s = state + for _loc in VARNAME_LOC[varname]: + _s = _s.get(_loc) + + if MODEL_VARS[varname].all_timesteps: + return _s[0].astype(VARNAME_DTYPE[varname])[[int(state["KT"][0])]] + else: + return _s[0].astype(VARNAME_DTYPE[varname]) + + +def set_variable( + state: h5py.File, + varname: str, + value: np.ndarray, + inds: Union[np.ndarray, None] = None, +) -> dict: + """Set a variable in the model state. + + Args: + state: Model state. + varname: Variable name. + value: New value for the variable. + inds: (Optional) at which indices you want to set the variable values. + + Returns: + Updated model state. + """ + if inds is not None: + vals = get_variable(state, varname) + vals[inds] = value + else: + vals = value + + if varname in MODEL_OUTPUT_VARNAMES and varname not in MODEL_INPUT_VARNAMES: + msg = "This variable is a model output variable only. You cannot set it." + raise ValueError(msg) + elif varname not in MODEL_INPUT_VARNAMES: + msg = "Uknown variable name" + raise ValueError(msg) + + # deviating implementations: + if varname == "soil_temperature": + state["TT"][0, :-1] = vals + elif varname == "groundwater_coupling_enabled": + state["GroundwaterSettings"]["GroundwaterCoupling"][0] = vals.astype("float") + # default: + else: + nested_set(state, VARNAME_LOC[varname] + [0], vals) + return state + + +def get_run_mode(config: dict) -> Literal["exe", "docker"]: + """Get the run mode (docker or EXE) from the config file. + + Args: + config: Config dictionary + + Returns: + Run mode (either "exe" or "docker"). + """ + if "ExeFilePath" in config: + return "exe" + elif "DockerImage" in config: + return "docker" + elif os.getenv("STEMMUS_SCOPE") is not None: + return "exe" + else: + msg = ( + "No valid config found, or the STEMMUS_SCOPE environment variable is " + "not set.\nPlease use the ExeFilePath or DockerImage configuration entry, " + "or set the STEMMUS_SCOPE environment variable." + ) + raise ValueError(msg) + + +def check_writable(file: Path) -> None: + """Check if this process has write access to a file.""" + if not os.access(file, os.W_OK): + msg = ( + f"The file '{file}' already exists, and this process has no" + " write access to it." + ) + raise PermissionError(msg) + + +class StemmusScopeProcess(Protocol): + """Protocol for communicating with the model process.""" + + def __init__(self, cfg_file: str) -> None: + """Initialize the process class (e.g. create the container).""" + ... + + def is_alive(self) -> bool: + """Return if the process is alive.""" + ... + + def initialize(self) -> None: + """Initialize the model and wait for it to be ready.""" + ... + + def update(self) -> None: + """Update the model and wait for it to be ready.""" + ... + + def finalize(self) -> None: + """Finalize the model.""" + ... + + +def start_process(mode: Literal["exe", "docker"], cfg_file: str) -> StemmusScopeProcess: + """Start the right STEMMUS_SCOPE process.""" + if mode == "docker": + try: + from PyStemmusScope.bmi.docker_process import StemmusScopeDocker + + return StemmusScopeDocker(cfg_file=cfg_file) + except ImportError as err: + msg = ( + "The docker python package is not available." + " Please install before continuing." + ) + raise ImportError(msg) from err + elif mode == "exe": + from PyStemmusScope.bmi.local_process import LocalStemmusScope + + return LocalStemmusScope(cfg_file=cfg_file) + else: + msg = "Unknown mode." + raise ValueError(msg) + + +class StemmusScopeBmi(InapplicableBmiMethods, Bmi): + """STEMMUS_SCOPE Basic Model Interface.""" + + config_file: str = "" + config: dict = {} + state: Union[h5py.File, None] = None + state_file: Union[Path, None] = None + + _run_mode: Union[str, None] = None + _process: Union[StemmusScopeProcess, None] = None + + def initialize(self, config_file: str) -> None: + """Perform startup tasks for the model. + + Args: + config_file: Path to the configuration file. + """ + self.config_file = config_file + self.config = read_config(config_file) + + Path(self.config["OutputPath"]).mkdir(parents=True, exist_ok=True) + self.state_file = Path(self.config["OutputPath"]) / "STEMMUS_SCOPE_state.mat" + if self.state_file.exists(): + check_writable(self.state_file) + else: + self.state_file.touch() # Prevent docker messing up file permission. + + self._run_mode = get_run_mode(self.config) + + self._process = start_process(self._run_mode, config_file) + self._process.initialize() + + def update(self) -> None: + """Advance the model state by one time step.""" + if self.state is not None: + self.state = self.state.close() # Close file to allow matlab to write + + if self._process is not None: + self._process.update() + else: + msg = "The STEMMUS_SCOPE process is not running/connected. Can't update!" + raise ValueError(msg) + + self.state = load_state(self.config) + + def update_until(self, time: float) -> None: + """Advance model state until the given time. + + Args: + time: A model time later than the current model time. + """ + while time > self.get_current_time(): + self.update() + + def finalize(self) -> None: + """Finalize the STEMMUS_SCOPE model.""" + if self._process is not None: + self._process.finalize() + else: + msg = "The STEMMUS_SCOPE process is not running/connected. Can't finalize!" + raise ValueError(msg) + + def get_component_name(self) -> str: + """Name of the component. + + Returns: + Name of the component (STEMMUS_SCOPE). + """ + return "STEMMUS_SCOPE" + + ### VARIABLE INFO METHODS ### + def get_input_item_count(self) -> int: + """Get the number of model input variables. + + Returns: + The number of input variables. + """ + return len(MODEL_INPUT_VARNAMES) + + def get_output_item_count(self) -> int: + """Get the number of model output variables. + + Returns: + The number of output variables. + """ + return len(MODEL_OUTPUT_VARNAMES) + + # The types of the following two methods are wrong in python-bmi + # see: https://github.com/csdms/bmi-python/issues/38 + def get_input_var_names(self) -> tuple[str, ...]: # type: ignore + """List of the model's input variables (as CSDMS Standard Names).""" + return MODEL_INPUT_VARNAMES + + def get_output_var_names(self) -> tuple[str, ...]: # type: ignore + """List of the model's output variables (as CSDMS Standard Names).""" + return MODEL_OUTPUT_VARNAMES + + def get_var_grid(self, name: str) -> int: + """Get grid identifier for the given variable.""" + return VARNAME_GRID[name] + + def get_var_type(self, name: str) -> str: + """Get data type of the given variable.""" + return VARNAME_DTYPE[name] + + def get_var_units(self, name: str) -> str: + """Get units of the given variable.""" + return VARNAME_UNITS[name] + + def get_var_itemsize(self, name: str) -> int: + """Get memory use for each array element in bytes.""" + return np.array([], dtype=VARNAME_DTYPE[name]).itemsize + + def get_var_nbytes(self, name: str) -> int: + """Get size, in bytes, of the given variable.""" + return self.get_grid_size(self.get_var_grid(name)) * self.get_var_itemsize(name) + + ### TIME METHODS ### + def get_current_time(self) -> float: + """Get the current time of the model.""" + if self.state is None: + raise ValueError(NO_STATE_MSG) + + return self.get_start_time() + np.sum(self.state["TimeStep"][0]) + + def get_start_time(self) -> float: + """Start time of the model.""" + if len(self.config) == 0: + raise ValueError(NO_CONFIG_MSG) + + return ( + np.datetime64(self.config["StartTime"]) + .astype("datetime64[s]") + .astype("float") + ) + + def get_end_time(self) -> float: + """End time of the model.""" + if len(self.config) == 0: + raise ValueError(NO_CONFIG_MSG) + + return ( + np.datetime64(self.config["EndTime"]) + .astype("datetime64[s]") + .astype("float") + ) + + def get_time_units(self) -> str: + """Time units of the model.""" + return "seconds since 1970-01-01 00:00:00.0 +0000" + + def get_time_step(self) -> float: + """Return the current time step of the model.""" + if self.state is None: + raise ValueError(NO_STATE_MSG) + return float(self.state["TimeStep"][0][0]) + + ### GETTERS AND SETTERS ### + def get_value(self, name: str, dest: np.ndarray) -> np.ndarray: + """Get a copy of values of the given variable. + + Args: + name: input or output variable name, a CSDMS Standard Name. + dest: numpy array into which to place the values. + + Returns: + The same numpy array that was passed as an input buffer. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + dest[:] = get_variable(self.state, name) + return dest + + def get_value_ptr(self, name: str) -> np.ndarray: + """Get a reference to values of the given variable. + + Note: not possible due to the Matlab<>Python coupling. + """ + raise NotImplementedError() + + def get_value_at_indices( + self, name: str, dest: np.ndarray, inds: np.ndarray + ) -> np.ndarray: + """Get values at particular indices. + + Args: + name: Input or output variable name, a CSDMS Standard Name. + dest: numpy array into which to place the values. + inds: The indices into the variable array. + + Returns: + Value of the model variable at the given location. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + dest[:] = get_variable(self.state, name)[inds] + return dest + + def set_value(self, name: str, src: np.ndarray) -> None: + """Specify a new value for a model variable. + + Args: + name: Input or output variable name, a CSDMS Standard Name. + src: The new value for the specified variable. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + if src.size != self.get_grid_size(self.get_var_grid(name)): + msg = f"Size of `src` and variable '{name}' grid size are not equal!" + raise ValueError(msg) + self.state = set_variable(self.state, name, src) + + def set_value_at_indices( + self, name: str, inds: np.ndarray, src: np.ndarray + ) -> None: + """Specify a new value for a model variable at particular indices. + + Parameters + ---------- + name : str + An input or output variable name, a CSDMS Standard Name. + inds : array_like + The indices into the variable array. + src : array_like + The new value for the specified variable. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + if inds.size != src.size: + msg = "Sizes of `inds` and `src` are not equal!" + raise ValueError(msg) + self.state = set_variable(self.state, name, src, inds) + + ### GRID INFO ### + def get_grid_rank(self, grid: int) -> int: + """Get number of dimensions of the computational grid. + + Args: + grid: A grid identifier. + + Returns: + Rank of the grid. + """ + if grid == 0: + return 2 + if grid == 1: + return 3 + msg = f"Invalid grid identifier '{grid}'" + raise ValueError(msg) + + def get_grid_size(self, grid: int) -> int: + """Get the total number of elements in the computational grid. + + Args: + grid: A grid identifier. + + Returns: + Size of the grid. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + + if grid == 0: + return 1 + if grid == 1: + return int(self.state["ModelSettings"]["mN"][0]) - 1 + + msg = f"Invalid grid identifier '{grid}'" + raise ValueError(msg) + + def get_grid_type(self, grid: int) -> str: + """Get the grid type as a string. + + Args: + grid: A grid identifier. + + Returns: + Type of grid as a string. + """ + return "rectilinear" + + def get_grid_x(self, grid: int, x: np.ndarray) -> np.ndarray: + """Get coordinates of grid nodes in the x direction. + + Args: + grid: grid identifier. + x: numpy array to hold the x-coordinates of the grid node columns. + + Returns: + The input numpy array that holds the grid's column x-coordinates. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + x[:] = self.state["SiteProperties"]["longitude"][0] + return x + + def get_grid_y(self, grid: int, y: np.ndarray) -> np.ndarray: + """Get coordinates of grid nodes in the y direction. + + Args: + grid: grid identifier. + y: numpy array to hold the y-coordinates of the grid node columns. + + Returns: + The input numpy array that holds the grid's column y-coordinates. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + y[:] = self.state["SiteProperties"]["latitude"][0] + return y + + def get_grid_z(self, grid: int, z: np.ndarray) -> np.ndarray: + """Get coordinates of grid nodes in the z direction. + + Args: + grid: grid identifier. + z: numpy array to hold the z-coordinates of the grid node columns. + + Returns: + The input numpy array that holds the grid's column z-coordinates. + """ + if self.state is None: + raise ValueError(NO_STATE_MSG) + if grid == 1: + z[:] = ( + -np.hstack( + ( + self.state["ModelSettings"]["DeltZ_R"][:, 0].cumsum()[::-1], + np.array([0.0]), + ) + ) + / 100 + ) + return z + else: + raise ValueError(f"Grid {grid} has no dimension `z`.") + + def get_grid_shape(self, grid: int, shape: np.ndarray) -> np.ndarray: + """Get dimensions of the computational grid.""" + if grid not in [0, 1]: + msg = f"Unknown grid identifier '{grid}'" + raise ValueError(msg) + + shape[-1] = 1 # Last element is x + shape[-2] = 1 # Semi-last element is y + if grid == 1: + shape[-3] = self.get_grid_size(grid) # First element is z + return shape From d6ce220e3ffa3f822a769f0afc3e3d7ea5fd1b39 Mon Sep 17 00:00:00 2001 From: Mostafa Daoud Date: Tue, 24 Sep 2024 10:11:09 +0200 Subject: [PATCH 29/33] add IndxRchrg to BMI --- PyStemmusScope/bmi/variable_reference.py | 38 +++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/PyStemmusScope/bmi/variable_reference.py b/PyStemmusScope/bmi/variable_reference.py index 88f7a604..5af0a959 100644 --- a/PyStemmusScope/bmi/variable_reference.py +++ b/PyStemmusScope/bmi/variable_reference.py @@ -114,18 +114,15 @@ class BmiVariable: grid=0, keys=["gwfluxes", "recharge"], ), -<<<<<<< HEAD BmiVariable( - name="groundwater_recharge_temperature", - dtype="float64", + name="groundwater_recharge_index", + dtype="int64", input=False, output=True, - units="degC", + units="-", grid=0, - keys=["gwfluxes", "rechargeTemp"], + keys=["gwfluxes", "indxRchrg"], ), -======= ->>>>>>> main # groundwater (coupling) vars BmiVariable( name="groundwater_coupling_enabled", @@ -163,4 +160,31 @@ class BmiVariable: grid=0, keys=["GroundwaterSettings", "topLevel"], ), + BmiVariable( + name="groundwater_depth", + dtype="float64", + input=True, + output=False, + units="cm", + grid=0, + keys=["GroundwaterSettings", "gw_Dep"], + ), + BmiVariable( + name="groundwater_index_bottom_layer", + dtype="int64", + input=False, + output=True, + units="-", + grid=0, + keys=["GroundwaterSettings", "indxBotmLayer"], + ), + BmiVariable( + name="groundwater_index_bottom_layer_reversed", + dtype="int64", + input=False, + output=True, + units="-", + grid=0, + keys=["GroundwaterSettings", "indxBotmLayer_R"], + ), ) From d9daf9713f56f95b02494206f1eef71a32288fd7 Mon Sep 17 00:00:00 2001 From: Mostafa Gomaa Daoud <54531356+MostafaGomaa93@users.noreply.github.com> Date: Wed, 25 Sep 2024 14:47:42 +0200 Subject: [PATCH 30/33] Update variable_reference.py --- PyStemmusScope/bmi/variable_reference.py | 29 +----------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/PyStemmusScope/bmi/variable_reference.py b/PyStemmusScope/bmi/variable_reference.py index 5af0a959..f931c91e 100644 --- a/PyStemmusScope/bmi/variable_reference.py +++ b/PyStemmusScope/bmi/variable_reference.py @@ -159,32 +159,5 @@ class BmiVariable: units="cm", grid=0, keys=["GroundwaterSettings", "topLevel"], - ), - BmiVariable( - name="groundwater_depth", - dtype="float64", - input=True, - output=False, - units="cm", - grid=0, - keys=["GroundwaterSettings", "gw_Dep"], - ), - BmiVariable( - name="groundwater_index_bottom_layer", - dtype="int64", - input=False, - output=True, - units="-", - grid=0, - keys=["GroundwaterSettings", "indxBotmLayer"], - ), - BmiVariable( - name="groundwater_index_bottom_layer_reversed", - dtype="int64", - input=False, - output=True, - units="-", - grid=0, - keys=["GroundwaterSettings", "indxBotmLayer_R"], - ), + ), ) From 0b467a36218f25cdf1f0c8b04d2e25ecc7316177 Mon Sep 17 00:00:00 2001 From: SarahAlidoost Date: Fri, 27 Sep 2024 16:15:05 +0200 Subject: [PATCH 31/33] update the version of docker image --- Dockerfile | 2 +- PyStemmusScope/bmi/docker_process.py | 2 +- docs/bmi.md | 6 +++--- tests/test_data/config_file_docker.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 58216034..eaf7b8b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ecoextreml/stemmus_scope:1.6.0 +FROM ghcr.io/ecoextreml/stemmus_scope:1.6.1 LABEL maintainer="Bart Schilperoort " LABEL org.opencontainers.image.source = "https://github.com/EcoExtreML/STEMMUS_SCOPE_Processing" diff --git a/PyStemmusScope/bmi/docker_process.py b/PyStemmusScope/bmi/docker_process.py index 7e0cc220..ab65f3e5 100644 --- a/PyStemmusScope/bmi/docker_process.py +++ b/PyStemmusScope/bmi/docker_process.py @@ -83,7 +83,7 @@ class StemmusScopeDocker: """Communicate with a STEMMUS_SCOPE Docker container.""" # Default image, can be overridden with config: - compatible_tags = ("1.6.0",) + compatible_tags = ("1.6.1",) _process_ready_phrase = b"Select BMI mode:" _process_finalized_phrase = b"Finished clean up." diff --git a/docs/bmi.md b/docs/bmi.md index 13243b17..c47ede7a 100644 --- a/docs/bmi.md +++ b/docs/bmi.md @@ -19,10 +19,10 @@ To use the Docker image, use the `DockerImage` setting in the configuration file ```sh WorkDir=/home/username/tmp/stemmus_scope ... -DockerImage=ghcr.io/ecoextreml/stemmus_scope:1.6.0 +DockerImage=ghcr.io/ecoextreml/stemmus_scope:1.6.1 ``` -It is best to add the version tag here too (`:1.6.0`), this way the BMI will warn you if the version might be incompatible. +It is best to add the version tag here too (`:1.6.1`), this way the BMI will warn you if the version might be incompatible. Note that the `docker` package for python is required here. Install this with `pip install PyStemmusScope[docker]`. Additionally, [Docker](https://docs.docker.com/get-docker/) itself has to be installed. @@ -52,7 +52,7 @@ If you need access to other model variables that are not yet available in the BM A [Docker image is available](https://ghcr.io/ecoextreml/stemmus_scope-grpc4bmi) in which the model as well as the Python BMI have been wrapped in a container. The Docker image is created using the Docker file [here](https://github.com/EcoExtreML/STEMMUS_SCOPE_Processing/blob/main/Dockerfile) and allows communication with a STEMMUS_SCOPE BMI through [grpc4bmi](https://grpc4bmi.readthedocs.io/en/latest/). -Doing so avoids the needs to install PyStemmusScope yourself, only Docker/apptainer and a python environment with grpc4bmi are required. Please note you should not specify `DockerImage` or `ExeFilePath` in the config file if you are using the grpc4bmi interface. +Doing so avoids the needs to install PyStemmusScope yourself, only Docker/apptainer and a python environment with grpc4bmi are required. Please note you should not specify `DockerImage` or `ExeFilePath` in the config file if you are using the grpc4bmi interface. A demonstration is available [here](notebooks/grpc4bmi_demo.ipynb) diff --git a/tests/test_data/config_file_docker.txt b/tests/test_data/config_file_docker.txt index df00ba25..5a26ed34 100644 --- a/tests/test_data/config_file_docker.txt +++ b/tests/test_data/config_file_docker.txt @@ -13,4 +13,4 @@ StartTime=1996-01-01T00:00 EndTime=1996-01-01T02:00 InputPath= OutputPath= -DockerImage=ghcr.io/ecoextreml/stemmus_scope:1.6.0 \ No newline at end of file +DockerImage=ghcr.io/ecoextreml/stemmus_scope:1.6.1 From 3aae254c24565490fcef9b470e8644038888c3dd Mon Sep 17 00:00:00 2001 From: SarahAlidoost Date: Fri, 27 Sep 2024 16:25:32 +0200 Subject: [PATCH 32/33] fix black errors --- PyStemmusScope/bmi/variable_reference.py | 4 ++-- PyStemmusScope/config_io.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/PyStemmusScope/bmi/variable_reference.py b/PyStemmusScope/bmi/variable_reference.py index f931c91e..2291c115 100644 --- a/PyStemmusScope/bmi/variable_reference.py +++ b/PyStemmusScope/bmi/variable_reference.py @@ -122,7 +122,7 @@ class BmiVariable: units="-", grid=0, keys=["gwfluxes", "indxRchrg"], - ), + ), # groundwater (coupling) vars BmiVariable( name="groundwater_coupling_enabled", @@ -159,5 +159,5 @@ class BmiVariable: units="cm", grid=0, keys=["GroundwaterSettings", "topLevel"], - ), + ), ) diff --git a/PyStemmusScope/config_io.py b/PyStemmusScope/config_io.py index 88c96c45..6c7bacd1 100644 --- a/PyStemmusScope/config_io.py +++ b/PyStemmusScope/config_io.py @@ -137,6 +137,7 @@ def _copy_data(input_dir: Path, config: dict) -> None: "Remove the key from the config file or provide the file." ) + def _update_config_file( input_dir: Path, output_dir: Path, From e9268cee80b8c8414233b301ede7091d767ca1d7 Mon Sep 17 00:00:00 2001 From: SarahAlidoost Date: Fri, 27 Sep 2024 17:32:27 +0200 Subject: [PATCH 33/33] add tests for soil_layers_thickness in config --- tests/test_config_io.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_config_io.py b/tests/test_config_io.py index c95b0bb5..f45d2e9d 100644 --- a/tests/test_config_io.py +++ b/tests/test_config_io.py @@ -41,3 +41,14 @@ def test_create_io_dir(self): assert Path(input_dir).is_dir() assert Path(output_dir).is_dir() assert Path(config_path).exists() + + def test_without_soil_layers_thickness(self, dummy_config): + dummy_config["soil_layers_thickness"] = "" + with pytest.raises(FileNotFoundError): + config_io.create_io_dir(dummy_config) + + def test_with_soil_layers_thickness(self, dummy_config): + dummy_config["soil_layers_thickness"] = dummy_config["input_data"] + input_dir, _, _ = config_io.create_io_dir(dummy_config) + + assert (Path(input_dir) / "dummy_data.xlsx").exists()