iMOD Python has multiple features to help you define the topsystem of the groundwater system. With “topsystem” we mean all forcings which act on the top of the groundwater system. These are usually either meteorological (precipitation & evapotranspiration) or hydrological (rivers, ditches, lakes, sea) in nature. In MODFLOW 6 these are usually simulated with the DRN, RIV, GHB, and RCH package. This data is usually provided as planar grids (x, y) without any vertical dimension. This user guide will show you how to allocate these forcings across model layers to grid cells and how to distribute conductances for Robin-like boundary conditions (RIV, DRN, GHB) over model layers. We will demonstrate this with the RIV package, as this package supports all options for allocating cells and distributing conductances. A subset of options are available for the DRN, GHB, and RCH packages.
Example data#Let’s load the data first. We have a layer model containing a basic hydrogeological schemitization of our model, so the tops and bottoms of model layers, the hydraulic conductivity (k), and which cells are active (idomain=1) or vertical passthrough (idomain=-1).
import imod layer_model = imod.data.hondsrug_layermodel_topsystem() layer_model
<xarray.Dataset> Size: 64MB Dimensions: (layer: 20, y: 200, x: 500) Coordinates: * layer (layer) int64 160B 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 * x (x) float64 4kB 2.375e+05 2.375e+05 2.376e+05 ... 2.5e+05 2.5e+05 * y (y) float64 2kB 5.64e+05 5.64e+05 5.639e+05 ... 5.59e+05 5.59e+05 dx float64 8B 25.0 dy float64 8B -25.0 Data variables: k (layer, y, x) float64 16MB nan nan nan nan ... 15.39 15.38 15.44 idomain (layer, y, x) float64 16MB -1.0 -1.0 -1.0 -1.0 ... 1.0 1.0 1.0 1.0 top (layer, y, x) float64 16MB 6.329 6.329 6.329 ... -16.92 -16.92 bottom (layer, y, x) float64 16MB 6.329 6.329 6.329 ... -19.68 -19.68
layer
(layer)
int64
1 2 3 4 5 6 7 ... 15 16 17 18 19 20
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
x
(x)
float64
2.375e+05 2.375e+05 ... 2.5e+05
array([237512.5, 237537.5, 237562.5, ..., 249937.5, 249962.5, 249987.5], shape=(500,))
y
(y)
float64
5.64e+05 5.64e+05 ... 5.59e+05
array([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, 563737.5, 563712.5, 563687.5, 563662.5, 563637.5, 563612.5, 563587.5, 563562.5, 563537.5, 563512.5, 563487.5, 563462.5, 563437.5, 563412.5, 563387.5, 563362.5, 563337.5, 563312.5, 563287.5, 563262.5, 563237.5, 563212.5, 563187.5, 563162.5, 563137.5, 563112.5, 563087.5, 563062.5, 563037.5, 563012.5, 562987.5, 562962.5, 562937.5, 562912.5, 562887.5, 562862.5, 562837.5, 562812.5, 562787.5, 562762.5, 562737.5, 562712.5, 562687.5, 562662.5, 562637.5, 562612.5, 562587.5, 562562.5, 562537.5, 562512.5, 562487.5, 562462.5, 562437.5, 562412.5, 562387.5, 562362.5, 562337.5, 562312.5, 562287.5, 562262.5, 562237.5, 562212.5, 562187.5, 562162.5, 562137.5, 562112.5, 562087.5, 562062.5, 562037.5, 562012.5, 561987.5, 561962.5, 561937.5, 561912.5, 561887.5, 561862.5, 561837.5, 561812.5, 561787.5, 561762.5, 561737.5, 561712.5, 561687.5, 561662.5, 561637.5, 561612.5, 561587.5, 561562.5, 561537.5, 561512.5, 561487.5, 561462.5, 561437.5, 561412.5, 561387.5, 561362.5, 561337.5, 561312.5, 561287.5, 561262.5, 561237.5, 561212.5, 561187.5, 561162.5, 561137.5, 561112.5, 561087.5, 561062.5, 561037.5, 561012.5, 560987.5, 560962.5, 560937.5, 560912.5, 560887.5, 560862.5, 560837.5, 560812.5, 560787.5, 560762.5, 560737.5, 560712.5, 560687.5, 560662.5, 560637.5, 560612.5, 560587.5, 560562.5, 560537.5, 560512.5, 560487.5, 560462.5, 560437.5, 560412.5, 560387.5, 560362.5, 560337.5, 560312.5, 560287.5, 560262.5, 560237.5, 560212.5, 560187.5, 560162.5, 560137.5, 560112.5, 560087.5, 560062.5, 560037.5, 560012.5, 559987.5, 559962.5, 559937.5, 559912.5, 559887.5, 559862.5, 559837.5, 559812.5, 559787.5, 559762.5, 559737.5, 559712.5, 559687.5, 559662.5, 559637.5, 559612.5, 559587.5, 559562.5, 559537.5, 559512.5, 559487.5, 559462.5, 559437.5, 559412.5, 559387.5, 559362.5, 559337.5, 559312.5, 559287.5, 559262.5, 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5])
dx
()
float64
25.0
dy
()
float64
-25.0
k
(layer, y, x)
float64
nan nan nan ... 15.39 15.38 15.44
array([[[ nan, nan, nan, ..., 2.09063745, 1.92048049, 1.27883947], [ nan, nan, nan, ..., 2.26992607, 2.14511347, 1.35537922], [ nan, nan, nan, ..., 2.41958737, 2.35661888, 1.53761673], ..., [ 6.95569086, 6.9874959 , 7.00762653, ..., nan, nan, nan], [ 6.76307201, 6.81238127, 6.84568357, ..., nan, nan, nan], [ 6.41486168, 6.47761154, 6.52335644, ..., nan, nan, nan]], [[ nan, nan, nan, ..., 2.09063745, 1.92048049, 1.27883947], [ nan, nan, nan, ..., 2.26992607, 2.14511347, 1.35537922], [ nan, nan, nan, ..., 2.41958737, 2.35661888, 1.53761673], ... [ 3.23147655, 3.21656537, 3.20356822, ..., 15.054636 , 14.99483585, 15.02609539], [ 3.25598717, 3.24192309, 3.22996807, ..., 15.28957748, 15.25116062, 15.30180931], [ 3.28274798, 3.2713542 , 3.26131344, ..., 15.3915987 , 15.37846184, 15.43572426]], [[ 3.34453869, 3.36107755, 3.4030385 , ..., 100. , 100. , 100. ], [ 3.33302832, 3.34805989, 3.38137436, ..., 100. , 100. , 100. ], [ 3.29513741, 3.30980277, 3.33594632, ..., 100. , 100. , 100. ], ..., [ 3.23147655, 3.21656537, 3.20356822, ..., 15.054636 , 14.99483585, 15.02609539], [ 3.25598717, 3.24192309, 3.22996807, ..., 15.28957748, 15.25116062, 15.30180931], [ 3.28274798, 3.2713542 , 3.26131344, ..., 15.3915987 , 15.37846184, 15.43572426]]], shape=(20, 200, 500))
idomain
(layer, y, x)
float64
-1.0 -1.0 -1.0 -1.0 ... 1.0 1.0 1.0
array([[[-1., -1., -1., ..., 1., 1., 1.], [-1., -1., -1., ..., 1., 1., 1.], [-1., -1., -1., ..., 1., 1., 1.], ..., [ 1., 1., 1., ..., -1., -1., -1.], [ 1., 1., 1., ..., -1., -1., -1.], [ 1., 1., 1., ..., -1., -1., -1.]], [[-1., -1., -1., ..., 1., 1., 1.], [-1., -1., -1., ..., 1., 1., 1.], [-1., -1., -1., ..., 1., 1., 1.], ..., [ 1., 1., 1., ..., -1., -1., -1.], [ 1., 1., 1., ..., -1., -1., -1.], [ 1., 1., 1., ..., -1., -1., -1.]], [[-1., -1., -1., ..., 1., 1., 1.], [-1., -1., -1., ..., 1., 1., 1.], [-1., -1., -1., ..., 1., 1., 1.], ..., ... ..., [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.]], [[ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], ..., [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.]], [[ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], ..., [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.]]], shape=(20, 200, 500))
top
(layer, y, x)
float64
6.329 6.329 6.329 ... -16.92 -16.92
array([[[ 6.3288002 , 6.3288002 , 6.3288002 , ..., 2.51160002, 2.51160002, 2.51160002], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 2.51160002, 2.51160002, 2.51160002], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 2.51160002, 2.51160002, 2.51160002], ..., [ 9.42520046, 9.42520046, 9.42520046, ..., 3.19840002, 3.19840002, 3.19840002], [ 9.42520046, 9.42520046, 9.42520046, ..., 3.19840002, 3.19840002, 3.19840002], [ 9.42520046, 9.42520046, 9.42520046, ..., 3.19840002, 3.19840002, 3.19840002]], [[ 6.3288002 , 6.3288002 , 6.3288002 , ..., 1.53750002, 1.53750002, 1.53750002], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 1.53750002, 1.53750002, 1.53750002], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 1.53750002, 1.53750002, 1.53750002], ... [ -2.15040016, -2.15040016, -2.15040016, ..., -14.15840006, -14.15840006, -14.15840006], [ -2.15040016, -2.15040016, -2.15040016, ..., -14.15840006, -14.15840006, -14.15840006], [ -2.15040016, -2.15040016, -2.15040016, ..., -14.15840006, -14.15840006, -14.15840006]], [[ -1.20539975, -1.20539975, -1.20539975, ..., -24.86359978, -24.86359978, -24.86359978], [ -1.20539975, -1.20539975, -1.20539975, ..., -24.86359978, -24.86359978, -24.86359978], [ -1.20539975, -1.20539975, -1.20539975, ..., -24.86359978, -24.86359978, -24.86359978], ..., [ -7.14000034, -7.14000034, -7.14000034, ..., -16.91759992, -16.91759992, -16.91759992], [ -7.14000034, -7.14000034, -7.14000034, ..., -16.91759992, -16.91759992, -16.91759992], [ -7.14000034, -7.14000034, -7.14000034, ..., -16.91759992, -16.91759992, -16.91759992]]], shape=(20, 200, 500))
bottom
(layer, y, x)
float64
6.329 6.329 6.329 ... -19.68 -19.68
array([[[ 6.3288002 , 6.3288002 , 6.3288002 , ..., 1.53750002, 1.53750002, 1.53750002], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 1.53750002, 1.53750002, 1.53750002], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 1.53750002, 1.53750002, 1.53750002], ..., [ 9.09970045, 9.09970045, 9.09970045, ..., 3.19840002, 3.19840002, 3.19840002], [ 9.09970045, 9.09970045, 9.09970045, ..., 3.19840002, 3.19840002, 3.19840002], [ 9.09970045, 9.09970045, 9.09970045, ..., 3.19840002, 3.19840002, 3.19840002]], [[ 6.3288002 , 6.3288002 , 6.3288002 , ..., 0.56340003, 0.56340003, 0.56340003], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 0.56340003, 0.56340003, 0.56340003], [ 6.3288002 , 6.3288002 , 6.3288002 , ..., 0.56340003, 0.56340003, 0.56340003], ... [ -7.14000034, -7.14000034, -7.14000034, ..., -16.91759992, -16.91759992, -16.91759992], [ -7.14000034, -7.14000034, -7.14000034, ..., -16.91759992, -16.91759992, -16.91759992], [ -7.14000034, -7.14000034, -7.14000034, ..., -16.91759992, -16.91759992, -16.91759992]], [[ -3.52719975, -3.52719975, -3.52719975, ..., -24.90279961, -24.90279961, -24.90279961], [ -3.52719975, -3.52719975, -3.52719975, ..., -24.90279961, -24.90279961, -24.90279961], [ -3.52719975, -3.52719975, -3.52719975, ..., -24.90279961, -24.90279961, -24.90279961], ..., [-12.12960052, -12.12960052, -12.12960052, ..., -19.67679977, -19.67679977, -19.67679977], [-12.12960052, -12.12960052, -12.12960052, ..., -19.67679977, -19.67679977, -19.67679977], [-12.12960052, -12.12960052, -12.12960052, ..., -19.67679977, -19.67679977, -19.67679977]]], shape=(20, 200, 500))
PandasIndex
PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], dtype='int64', name='layer'))
PandasIndex
PandasIndex(Index([237512.5, 237537.5, 237562.5, 237587.5, 237612.5, 237637.5, 237662.5, 237687.5, 237712.5, 237737.5, ... 249762.5, 249787.5, 249812.5, 249837.5, 249862.5, 249887.5, 249912.5, 249937.5, 249962.5, 249987.5], dtype='float64', name='x', length=500))
PandasIndex
PandasIndex(Index([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, ... 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5], dtype='float64', name='y', length=200))
Furthermore we have planar grid of river, containing a river stage, bed elevation and conductance.
planar_river = imod.data.hondsrug_planar_river() planar_river
<xarray.Dataset> Size: 1MB Dimensions: (x: 500, y: 200) Coordinates: * x (x) float64 4kB 2.375e+05 2.375e+05 ... 2.5e+05 2.5e+05 * y (y) float64 2kB 5.64e+05 5.64e+05 ... 5.59e+05 5.59e+05 dx float64 8B ... dy float64 8B ... layer int32 4B 1 Data variables: stage (y, x) float32 400kB nan nan nan 5.014 ... nan nan nan nan bottom (y, x) float32 400kB nan nan nan 3.7 3.7 ... nan nan nan nan conductance (y, x) float32 400kB nan nan nan 8.21 6.02 ... nan nan nan nan
x
(x)
float64
2.375e+05 2.375e+05 ... 2.5e+05
array([237512.5, 237537.5, 237562.5, ..., 249937.5, 249962.5, 249987.5], shape=(500,))
y
(y)
float64
5.64e+05 5.64e+05 ... 5.59e+05
array([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, 563737.5, 563712.5, 563687.5, 563662.5, 563637.5, 563612.5, 563587.5, 563562.5, 563537.5, 563512.5, 563487.5, 563462.5, 563437.5, 563412.5, 563387.5, 563362.5, 563337.5, 563312.5, 563287.5, 563262.5, 563237.5, 563212.5, 563187.5, 563162.5, 563137.5, 563112.5, 563087.5, 563062.5, 563037.5, 563012.5, 562987.5, 562962.5, 562937.5, 562912.5, 562887.5, 562862.5, 562837.5, 562812.5, 562787.5, 562762.5, 562737.5, 562712.5, 562687.5, 562662.5, 562637.5, 562612.5, 562587.5, 562562.5, 562537.5, 562512.5, 562487.5, 562462.5, 562437.5, 562412.5, 562387.5, 562362.5, 562337.5, 562312.5, 562287.5, 562262.5, 562237.5, 562212.5, 562187.5, 562162.5, 562137.5, 562112.5, 562087.5, 562062.5, 562037.5, 562012.5, 561987.5, 561962.5, 561937.5, 561912.5, 561887.5, 561862.5, 561837.5, 561812.5, 561787.5, 561762.5, 561737.5, 561712.5, 561687.5, 561662.5, 561637.5, 561612.5, 561587.5, 561562.5, 561537.5, 561512.5, 561487.5, 561462.5, 561437.5, 561412.5, 561387.5, 561362.5, 561337.5, 561312.5, 561287.5, 561262.5, 561237.5, 561212.5, 561187.5, 561162.5, 561137.5, 561112.5, 561087.5, 561062.5, 561037.5, 561012.5, 560987.5, 560962.5, 560937.5, 560912.5, 560887.5, 560862.5, 560837.5, 560812.5, 560787.5, 560762.5, 560737.5, 560712.5, 560687.5, 560662.5, 560637.5, 560612.5, 560587.5, 560562.5, 560537.5, 560512.5, 560487.5, 560462.5, 560437.5, 560412.5, 560387.5, 560362.5, 560337.5, 560312.5, 560287.5, 560262.5, 560237.5, 560212.5, 560187.5, 560162.5, 560137.5, 560112.5, 560087.5, 560062.5, 560037.5, 560012.5, 559987.5, 559962.5, 559937.5, 559912.5, 559887.5, 559862.5, 559837.5, 559812.5, 559787.5, 559762.5, 559737.5, 559712.5, 559687.5, 559662.5, 559637.5, 559612.5, 559587.5, 559562.5, 559537.5, 559512.5, 559487.5, 559462.5, 559437.5, 559412.5, 559387.5, 559362.5, 559337.5, 559312.5, 559287.5, 559262.5, 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5])
dx
()
float64
...
[1 values with dtype=float64]
dy
()
float64
...
[1 values with dtype=float64]
layer
()
int32
1
stage
(y, x)
float32
nan nan nan 5.014 ... nan nan nan
array([[ nan, nan, nan, ..., 1.9508 , 1.9358001, 1.9258001], [ nan, 5.3744 , 5.2444 , ..., nan, 1.9258001, 1.9258001], [5.5094004, 5.4394 , nan, ..., nan, 1.7708 , 1.6558001], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, 8.3776 , ..., nan, nan, nan]], shape=(200, 500), dtype=float32)
bottom
(y, x)
float32
nan nan nan 3.7 ... nan nan nan nan
array([[ nan, nan, nan, ..., 1.39, 1.36, 1.34], [ nan, 4.42, 4.16, ..., nan, 1.34, 1.34], [4.69, 4.55, nan, ..., nan, 1.03, 0.51], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, 7.33, ..., nan, nan, nan]], shape=(200, 500), dtype=float32)
conductance
(y, x)
float32
nan nan nan 8.21 ... nan nan nan
array([[ nan, nan, nan, ..., 29.86, 2.71, 29.86], [ nan, 21.66, 22.56, ..., nan, 4.52, 26.24], [22.56, 0.9 , nan, ..., nan, 0.9 , 11.67], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, 15.46, ..., nan, nan, nan]], shape=(200, 500), dtype=float32)
PandasIndex
PandasIndex(Index([237512.5, 237537.5, 237562.5, 237587.5, 237612.5, 237637.5, 237662.5, 237687.5, 237712.5, 237737.5, ... 249762.5, 249787.5, 249812.5, 249837.5, 249862.5, 249887.5, 249912.5, 249937.5, 249962.5, 249987.5], dtype='float64', name='x', length=500))
PandasIndex
PandasIndex(Index([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, ... 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5], dtype='float64', name='y', length=200))
Let’s plot the top elevation of the model on a map. You can see we have a ridge roughly the centre of the model, sided by two low-lying areas.
import numpy as np imod.visualize.plot_map( layer_model["top"].sel(layer=1), "viridis", np.linspace(1, 20, 11) )
(<Figure size 640x480 with 2 Axes>, <Axes: >)
Let’s plot the river stages on a map. You can see most rivers are located in the low-lying areas.
imod.visualize.plot_map(planar_river["stage"], "viridis", np.linspace(-1, 19, 9))
(<Figure size 640x480 with 2 Axes>, <Axes: >)Allocate river cells#
Let’s allocate river cells across model layers to cells.
from imod.prepare import ALLOCATION_OPTION, allocate_riv_cells riv_allocated, _ = allocate_riv_cells( allocation_option=ALLOCATION_OPTION.at_elevation, active=layer_model["idomain"] == 1, top=layer_model["top"], bottom=layer_model["bottom"], stage=planar_river["stage"], bottom_elevation=planar_river["bottom"], )
Let’s take a look at what we just produced. Since we are dealing with information with depth, it is simplest to make a crosssection plot. For that, we first have to select a crosssection.
import geopandas as gpd from shapely.geometry import LineString geometry = LineString([[238725, 561800], [241050, 560350]]) # Define overlay overlays = [ {"gdf": gpd.GeoDataFrame(geometry=[geometry]), "edgecolor": "black", "linewidth": 3} ] # Plot imod.visualize.plot_map( planar_river["stage"], "viridis", np.linspace(-1, 19, 9), overlays )
(<Figure size 640x480 with 2 Axes>, <Axes: >)
Select a cross section. The plot also requires top and bottom information which we will add first as coordinates before selecting.
riv_allocated.coords["top"] = layer_model["top"] riv_allocated.coords["bottom"] = layer_model["bottom"] xsection_allocated = imod.select.cross_section_linestring(riv_allocated, geometry) xsection_allocated
<xarray.DataArray (layer: 20, s: 150)> Size: 24kB array([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], shape=(20, 150)) Coordinates: x (s) float64 1kB 2.387e+05 2.388e+05 2.388e+05 ... 2.41e+05 2.41e+05 y (s) float64 1kB 5.618e+05 5.618e+05 ... 5.604e+05 5.604e+05 dx (s) float64 1kB 25.0 15.09 9.914 25.0 ... 25.0 9.914 15.09 25.0 dy (s) float64 1kB -15.59 -9.409 -6.183 ... -6.183 -9.409 -15.59 * layer (layer) int64 160B 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 top (layer, s) float64 24kB 5.76 5.76 5.76 5.76 ... 2.875 2.875 2.875 bottom (layer, s) float64 24kB 5.76 5.76 5.76 5.76 ... 1.679 1.679 1.679 * s (s) float64 1kB 14.73 38.35 53.08 ... 2.687e+03 2.702e+03 2.725e+03 ds (s) float64 1kB 29.46 17.78 11.68 29.46 ... 29.46 11.68 17.78 29.46
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
array([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], shape=(20, 150))
x
(s)
float64
2.387e+05 2.388e+05 ... 2.41e+05
array([238737.5, 238762.5, 238762.5, 238787.5, 238812.5, 238812.5, 238837.5, 238837.5, 238862.5, 238887.5, 238887.5, 238912.5, 238937.5, 238937.5, 238962.5, 238962.5, 238987.5, 239012.5, 239012.5, 239037.5, 239037.5, 239062.5, 239087.5, 239087.5, 239112.5, 239137.5, 239137.5, 239162.5, 239162.5, 239187.5, 239212.5, 239212.5, 239237.5, 239237.5, 239262.5, 239287.5, 239287.5, 239312.5, 239337.5, 239337.5, 239362.5, 239362.5, 239387.5, 239412.5, 239412.5, 239437.5, 239437.5, 239462.5, 239487.5, 239487.5, 239512.5, 239537.5, 239537.5, 239562.5, 239562.5, 239587.5, 239612.5, 239612.5, 239637.5, 239637.5, 239662.5, 239687.5, 239687.5, 239712.5, 239737.5, 239737.5, 239762.5, 239762.5, 239787.5, 239812.5, 239812.5, 239837.5, 239837.5, 239862.5, 239887.5, 239887.5, 239912.5, 239937.5, 239937.5, 239962.5, 239962.5, 239987.5, 240012.5, 240012.5, 240037.5, 240037.5, 240062.5, 240087.5, 240087.5, 240112.5, 240137.5, 240137.5, 240162.5, 240162.5, 240187.5, 240212.5, 240212.5, 240237.5, 240237.5, 240262.5, 240287.5, 240287.5, 240312.5, 240337.5, 240337.5, 240362.5, 240362.5, 240387.5, 240412.5, 240412.5, 240437.5, 240437.5, 240462.5, 240487.5, 240487.5, 240512.5, 240537.5, 240537.5, 240562.5, 240562.5, 240587.5, 240612.5, 240612.5, 240637.5, 240637.5, 240662.5, 240687.5, 240687.5, 240712.5, 240737.5, 240737.5, 240762.5, 240762.5, 240787.5, 240812.5, 240812.5, 240837.5, 240837.5, 240862.5, 240887.5, 240887.5, 240912.5, 240937.5, 240937.5, 240962.5, 240962.5, 240987.5, 241012.5, 241012.5, 241037.5])
y
(s)
float64
5.618e+05 5.618e+05 ... 5.604e+05
array([561787.5, 561787.5, 561762.5, 561762.5, 561762.5, 561737.5, 561737.5, 561712.5, 561712.5, 561712.5, 561687.5, 561687.5, 561687.5, 561662.5, 561662.5, 561637.5, 561637.5, 561637.5, 561612.5, 561612.5, 561587.5, 561587.5, 561587.5, 561562.5, 561562.5, 561562.5, 561537.5, 561537.5, 561512.5, 561512.5, 561512.5, 561487.5, 561487.5, 561462.5, 561462.5, 561462.5, 561437.5, 561437.5, 561437.5, 561412.5, 561412.5, 561387.5, 561387.5, 561387.5, 561362.5, 561362.5, 561337.5, 561337.5, 561337.5, 561312.5, 561312.5, 561312.5, 561287.5, 561287.5, 561262.5, 561262.5, 561262.5, 561237.5, 561237.5, 561212.5, 561212.5, 561212.5, 561187.5, 561187.5, 561187.5, 561162.5, 561162.5, 561137.5, 561137.5, 561137.5, 561112.5, 561112.5, 561087.5, 561087.5, 561087.5, 561062.5, 561062.5, 561062.5, 561037.5, 561037.5, 561012.5, 561012.5, 561012.5, 560987.5, 560987.5, 560962.5, 560962.5, 560962.5, 560937.5, 560937.5, 560937.5, 560912.5, 560912.5, 560887.5, 560887.5, 560887.5, 560862.5, 560862.5, 560837.5, 560837.5, 560837.5, 560812.5, 560812.5, 560812.5, 560787.5, 560787.5, 560762.5, 560762.5, 560762.5, 560737.5, 560737.5, 560712.5, 560712.5, 560712.5, 560687.5, 560687.5, 560687.5, 560662.5, 560662.5, 560637.5, 560637.5, 560637.5, 560612.5, 560612.5, 560587.5, 560587.5, 560587.5, 560562.5, 560562.5, 560562.5, 560537.5, 560537.5, 560512.5, 560512.5, 560512.5, 560487.5, 560487.5, 560462.5, 560462.5, 560462.5, 560437.5, 560437.5, 560437.5, 560412.5, 560412.5, 560387.5, 560387.5, 560387.5, 560362.5, 560362.5])
dx
(s)
float64
25.0 15.09 9.914 ... 15.09 25.0
array([25. , 15.0862069 , 9.9137931 , 25. , 5.17241379, 19.82758621, 20.25862069, 4.74137931, 25. , 10.34482759, 14.65517241, 25. , 0.43103448, 24.56896552, 15.51724138, 9.48275862, 25. , 5.60344828, 19.39655172, 20.68965517, 4.31034483, 25. , 10.77586207, 14.22413793, 25. , 0.86206897, 24.13793103, 15.94827586, 9.05172414, 25. , 6.03448276, 18.96551724, 21.12068966, 3.87931034, 25. , 11.20689655, 13.79310345, 25. , 1.29310345, 23.70689655, 16.37931034, 8.62068966, 25. , 6.46551724, 18.53448276, 21.55172414, 3.44827586, 25. , 11.63793103, 13.36206897, 25. , 1.72413793, 23.27586207, 16.81034483, 8.18965517, 25. , 6.89655172, 18.10344828, 21.98275862, 3.01724138, 25. , 12.06896552, 12.93103448, 25. , 2.15517241, 22.84482759, 17.24137931, 7.75862069, 25. , 7.32758621, 17.67241379, 22.4137931 , 2.5862069 , 25. , 12.5 , 12.5 , 25. , 2.5862069 , 22.4137931 , 17.67241379, 7.32758621, 25. , 7.75862069, 17.24137931, 22.84482759, 2.15517241, 25. , 12.93103448, 12.06896552, 25. , 3.01724138, 21.98275862, 18.10344828, 6.89655172, 25. , 8.18965517, 16.81034483, 23.27586207, 1.72413793, 25. , 13.36206897, 11.63793103, 25. , 3.44827586, 21.55172414, 18.53448276, 6.46551724, 25. , 8.62068966, 16.37931034, 23.70689655, 1.29310345, 25. , 13.79310345, 11.20689655, 25. , 3.87931034, 21.12068966, 18.96551724, 6.03448276, 25. , 9.05172414, 15.94827586, 24.13793103, 0.86206897, 25. , 14.22413793, 10.77586207, 25. , 4.31034483, 20.68965517, 19.39655172, 5.60344828, 25. , 9.48275862, 15.51724138, 24.56896552, 0.43103448, 25. , 14.65517241, 10.34482759, 25. , 4.74137931, 20.25862069, 19.82758621, 5.17241379, 25. , 9.9137931 , 15.0862069 , 25. ])
dy
(s)
float64
-15.59 -9.409 ... -9.409 -15.59
array([-15.59139785, -9.40860215, -6.1827957 , -15.59139785, -3.22580645, -12.3655914 , -12.6344086 , -2.95698925, -15.59139785, -6.4516129 , -9.13978495, -15.59139785, -0.2688172 , -15.32258065, -9.67741935, -5.91397849, -15.59139785, -3.49462366, -12.09677419, -12.90322581, -2.68817204, -15.59139785, -6.72043011, -8.87096774, -15.59139785, -0.53763441, -15.05376344, -9.94623656, -5.64516129, -15.59139785, -3.76344086, -11.82795699, -13.17204301, -2.41935484, -15.59139785, -6.98924731, -8.60215054, -15.59139785, -0.80645161, -14.78494624, -10.21505376, -5.37634409, -15.59139785, -4.03225806, -11.55913978, -13.44086022, -2.15053763, -15.59139785, -7.25806452, -8.33333333, -15.59139785, -1.07526882, -14.51612903, -10.48387097, -5.10752688, -15.59139785, -4.30107527, -11.29032258, -13.70967742, -1.88172043, -15.59139785, -7.52688172, -8.06451613, -15.59139785, -1.34408602, -14.24731183, -10.75268817, -4.83870968, -15.59139785, -4.56989247, -11.02150538, -13.97849462, -1.61290323, -15.59139785, -7.79569892, -7.79569892, -15.59139785, -1.61290323, -13.97849462, -11.02150538, -4.56989247, -15.59139785, -4.83870968, -10.75268817, -14.24731183, -1.34408602, -15.59139785, -8.06451613, -7.52688172, -15.59139785, -1.88172043, -13.70967742, -11.29032258, -4.30107527, -15.59139785, -5.10752688, -10.48387097, -14.51612903, -1.07526882, -15.59139785, -8.33333333, -7.25806452, -15.59139785, -2.15053763, -13.44086022, -11.55913978, -4.03225806, -15.59139785, -5.37634409, -10.21505376, -14.78494624, -0.80645161, -15.59139785, -8.60215054, -6.98924731, -15.59139785, -2.41935484, -13.17204301, -11.82795699, -3.76344086, -15.59139785, -5.64516129, -9.94623656, -15.05376344, -0.53763441, -15.59139785, -8.87096774, -6.72043011, -15.59139785, -2.68817204, -12.90322581, -12.09677419, -3.49462366, -15.59139785, -5.91397849, -9.67741935, -15.32258065, -0.2688172 , -15.59139785, -9.13978495, -6.4516129 , -15.59139785, -2.95698925, -12.6344086 , -12.3655914 , -3.22580645, -15.59139785, -6.1827957 , -9.40860215, -15.59139785])
layer
(layer)
int64
1 2 3 4 5 6 7 ... 15 16 17 18 19 20
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
top
(layer, s)
float64
5.76 5.76 5.76 ... 2.875 2.875
array([[5.76000023, 5.76000023, 5.76000023, ..., 8.83600044, 8.83600044, 8.83600044], [5.76000023, 5.76000023, 5.76000023, ..., 8.83600044, 8.83600044, 8.83600044], [5.76000023, 5.76000023, 5.76000023, ..., 8.83600044, 8.83600044, 8.83600044], ..., [4.5450002 , 4.5450002 , 4.5450002 , ..., 5.2677002 , 5.2677002 , 5.2677002 ], [3.33000016, 3.33000016, 3.33000016, ..., 4.07140017, 4.07140017, 4.07140017], [2.11500013, 2.11500013, 2.11500013, ..., 2.87510014, 2.87510014, 2.87510014]], shape=(20, 150))
bottom
(layer, s)
float64
5.76 5.76 5.76 ... 1.679 1.679
array([[5.76000023, 5.76000023, 5.76000023, ..., 8.83600044, 8.83600044, 8.83600044], [5.76000023, 5.76000023, 5.76000023, ..., 8.83600044, 8.83600044, 8.83600044], [5.76000023, 5.76000023, 5.76000023, ..., 8.83600044, 8.83600044, 8.83600044], ..., [3.33000016, 3.33000016, 3.33000016, ..., 4.07140017, 4.07140017, 4.07140017], [2.11500013, 2.11500013, 2.11500013, ..., 2.87510014, 2.87510014, 2.87510014], [0.9000001 , 0.9000001 , 0.9000001 , ..., 1.67880011, 1.67880011, 1.67880011]], shape=(20, 150))
s
(s)
float64
14.73 38.35 ... 2.702e+03 2.725e+03
array([ 14.731698, 38.353213, 53.084911, 73.658489, 91.438125, 106.169822, 129.791338, 144.523036, 162.048676, 182.876249, 197.607947, 220.975468, 235.96116 , 250.692858, 274.314374, 289.046072, 309.365655, 327.399285, 342.130983, 365.752498, 380.484196, 397.755842, 418.83741 , 433.569108, 456.682634, 471.922321, 486.654019, 510.275534, 525.007232, 545.072821, 563.360446, 578.092143, 601.713659, 616.445357, 633.463008, 654.79857 , 669.530268, 692.389799, 707.883481, 722.615179, 746.236695, 760.968393, 780.779986, 799.321606, 814.053304, 837.674819, 852.406517, 869.170174, 890.759731, 905.491429, 928.096965, 943.844642, 958.57634 , 982.197855, 996.929553, 1016.487152, 1035.282767, 1050.014464, 1073.63598 , 1088.367678, 1104.877339, 1126.720891, 1141.452589, 1163.804131, 1179.805802, 1194.5375 , 1218.159016, 1232.890714, 1252.194318, 1271.243927, 1285.975625, 1309.59714 , 1324.328838, 1340.584505, 1362.682052, 1377.41375 , 1399.511296, 1415.766963, 1430.498661, 1454.120176, 1468.851874, 1487.901483, 1507.205088, 1521.936785, 1545.558301, 1560.289999, 1576.291671, 1598.643212, 1613.37491 , 1635.218462, 1651.728123, 1666.459821, 1690.081337, 1704.813035, 1723.608649, 1743.166248, 1757.897946, 1781.519461, 1796.251159, 1811.998836, 1834.604373, 1849.336071, 1870.925628, 1887.689284, 1902.420982, 1926.042497, 1940.774195, 1959.315815, 1979.127409, 1993.859106, 2017.480622, 2032.21232 , 2047.706002, 2070.565533, 2085.297231, 2106.632793, 2123.650444, 2138.382142, 2162.003658, 2176.735356, 2195.022981, 2215.088569, 2229.820267, 2253.441782, 2268.17348 , 2283.413168, 2306.526694, 2321.258392, 2342.339959, 2359.611605, 2374.343303, 2397.964818, 2412.696516, 2430.730146, 2451.04973 , 2465.781427, 2489.402943, 2504.134641, 2519.120333, 2542.487854, 2557.219552, 2578.047125, 2595.572765, 2610.304463, 2633.925979, 2648.657677, 2666.437312, 2687.01089 , 2701.742588, 2725.364103])
ds
(s)
float64
29.46 17.78 11.68 ... 17.78 29.46
array([29.46339571, 17.77963534, 11.68376037, 29.46339571, 6.09587498, 23.36752074, 23.87551032, 5.58788539, 29.46339571, 12.19174995, 17.27164576, 29.46339571, 0.50798958, 28.95540613, 18.28762492, 11.17577079, 29.46339571, 6.60386456, 22.85953116, 24.3834999 , 5.07989581, 29.46339571, 12.69973953, 16.76365618, 29.46339571, 1.01597916, 28.44741655, 18.79561451, 10.66778121, 29.46339571, 7.11185414, 22.35154157, 24.89148948, 4.57190623, 29.46339571, 13.20772911, 16.2556666 , 29.46339571, 1.52396874, 27.93942697, 19.30360409, 10.15979162, 29.46339571, 7.61984372, 21.84355199, 25.39947906, 4.06391665, 29.46339571, 13.71571869, 15.74767702, 29.46339571, 2.03195833, 27.43143739, 19.81159367, 9.65180204, 29.46339571, 8.1278333 , 21.33556241, 25.90746864, 3.55592707, 29.46339571, 14.22370827, 15.23968744, 29.46339571, 2.53994791, 26.92344781, 20.31958325, 9.14381246, 29.46339571, 8.63582288, 20.82757283, 26.41545822, 3.04793749, 29.46339571, 14.73169786, 14.73169786, 29.46339571, 3.04793749, 26.41545822, 20.82757283, 8.63582288, 29.46339571, 9.14381246, 20.31958325, 26.92344781, 2.53994791, 29.46339571, 15.23968744, 14.22370827, 29.46339571, 3.55592707, 25.90746864, 21.33556241, 8.1278333 , 29.46339571, 9.65180204, 19.81159367, 27.43143739, 2.03195832, 29.46339571, 15.74767702, 13.71571869, 29.46339571, 4.06391665, 25.39947906, 21.84355199, 7.61984372, 29.46339571, 10.15979162, 19.30360409, 27.93942697, 1.52396874, 29.46339571, 16.2556666 , 13.20772911, 29.46339571, 4.57190623, 24.89148948, 22.35154157, 7.11185414, 29.46339571, 10.66778121, 18.79561451, 28.44741655, 1.01597916, 29.46339571, 16.76365618, 12.69973953, 29.46339571, 5.07989581, 24.3834999 , 22.85953116, 6.60386456, 29.46339571, 11.17577079, 18.28762492, 28.95540613, 0.50798958, 29.46339571, 17.27164576, 12.19174995, 29.46339571, 5.58788539, 23.87551032, 23.36752074, 6.09587497, 29.46339571, 11.68376037, 17.77963534, 29.46339571])
PandasIndex
PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], dtype='int64', name='layer'))
PandasIndex
PandasIndex(Index([14.731697856155446, 38.35321338409926, 53.084911240260034, 73.65848928078788, 91.43812462444505, 106.16982248058866, 129.79133800852065, 144.52303586468673, 162.04867641771818, 182.8762492488771, ... 2557.2195519960724, 2578.0471248271865, 2595.5727653802364, 2610.3044632363935, 2633.9259787643396, 2648.6576766205017, 2666.437311964137, 2687.0108900045784, 2701.7425878607337, 2725.364103388758], dtype='float64', name='s', length=150))
Now that we have selected our data we can plot it.
imod.visualize.cross_section(xsection_allocated, "viridis", [0, 1])
(<Figure size 640x480 with 2 Axes>, <Axes: >)
Let’s plot the locations of our river stages and bottom elevations.
import matplotlib.pyplot as plt stage_line = imod.select.cross_section_linestring(planar_river["stage"], geometry) stage_bottom = imod.select.cross_section_linestring(planar_river["bottom"], geometry) fig, ax = plt.subplots() imod.visualize.cross_section(xsection_allocated, "viridis", [0, 1], fig=fig, ax=ax) x_line = stage_line["s"] + stage_line["ds"] / 2 ax.scatter(x_line, stage_line.values, marker=7, c="k") ax.scatter(x_line, stage_bottom.values, marker=6, c="k")
<matplotlib.collections.PathCollection object at 0x0000016F37D04980>
The above plot might look a bit off. Let’s plot the layer numbers, so that we can identify where model layers are located.
import xarray as xr layer_grid = layer_model.layer * xr.ones_like(layer_model["top"]) layer_grid.coords["top"] = layer_model["top"] layer_grid.coords["bottom"] = layer_model["bottom"] xsection_layer_nr = imod.select.cross_section_linestring(layer_grid, geometry) imod.visualize.cross_section(xsection_layer_nr, "tab20", np.arange(21)) ax.scatter(x_line, stage_line.values, marker=7, c="k") ax.scatter(x_line, stage_bottom.values, marker=6, c="k")
<matplotlib.collections.PathCollection object at 0x0000016F40112450>Overview allocation options#
There are multiple options available to allocate rivers. For a full description of all options, see the documentation of imod.prepare.ALLOCATION_OPTION()
. We can print all possible options as follows:
for option in ALLOCATION_OPTION: print(option.name)
stage_to_riv_bot first_active_to_elevation stage_to_riv_bot_drn_above at_elevation at_first_active
Let’s make plots for each option to visualize the effect of each choice.
# Create grid for plots fig, axes = plt.subplots(3, 2, sharex=True, sharey=True, figsize=(11, 11)) axes = np.ravel(axes) # The top left plot shows the elevation of the river bottom (upward triangle) # and river stage (downward triangle). ax = axes[0] imod.visualize.cross_section( xsection_layer_nr, "tab20", np.arange(21), kwargs_colorbar={"plot_colorbar": False}, fig=fig, ax=ax, ) ax.scatter(x_line, stage_line.values, marker=7, c="k") ax.scatter(x_line, stage_bottom.values, marker=6, c="k") ax.set_title("stage and bottom elevation") # Loop over allocation options, and plot the allocated cells as a polygon, # using the "aquitard" feature of the cross_section plot. for i, option in enumerate(ALLOCATION_OPTION, start=1): riv_allocated, _ = allocate_riv_cells( allocation_option=option, active=layer_model["idomain"] == 1, top=layer_model["top"], bottom=layer_model["bottom"], stage=planar_river["stage"], bottom_elevation=planar_river["bottom"], ) riv_allocated.coords["top"] = layer_model["top"] riv_allocated.coords["bottom"] = layer_model["bottom"] xsection_allocated = imod.select.cross_section_linestring(riv_allocated, geometry) ax = axes[i] if (i % 2) == 0: kwargs_colorbar = {"plot_colorbar": False} else: kwargs_colorbar = {"plot_colorbar": True} kwargs_aquitards = {"edgecolor": "k", "facecolor": "grey"} imod.visualize.cross_section( xsection_layer_nr, "tab20", np.arange(21), aquitards=xsection_allocated, kwargs_aquitards=kwargs_aquitards, kwargs_colorbar=kwargs_colorbar, fig=fig, ax=ax, ) ax.set_title(f"option: {option.name}") # Enforce tight layout to remove whitespace inbetween plots. plt.tight_layout()
You can see the chosen option matters quite a lot. at_elevation
allocates cells in the model layer containing the river bottom elevation. at_first_active
allocates only at the first active model layer. first_active_to_elevation
allocates cells from first active model layer to the model layer containing the river bottom elevation. stage_to_riv_bot
allocates cells from the model layer containing river stage up until the model layer containing bottom elevation. Finally stage_to_riv_bot_drn_above
allocates river cells from the model layer containing river stage to the model layer containing the river bottom elevation and allocates drain cells from the first active model layer to the model layer containing the river stage elevation. The allocated drain cells are not shown in the plot.
Next, we’ll take a look at distributing conductances, as there are multiple ways to distribute conductances over layers. For example, it is possible to distribute conductances equally across layers, weighted by layer thickness, or by transmissivity.
from imod.prepare import DISTRIBUTING_OPTION, distribute_riv_conductance
Here’s a map of how the conductances are distributed in our dataset.
imod.visualize.plot_map( planar_river["conductance"], "magma", np.logspace(-2, 3, 11), overlays )
(<Figure size 640x480 with 2 Axes>, <Axes: >)
First compute the allocated river cells for stage to river bottom elevation again. This time we’ll use the stage_to_riv_bot
option.
riv_allocated, _ = allocate_riv_cells( allocation_option=ALLOCATION_OPTION.stage_to_riv_bot, active=layer_model["idomain"] == 1, top=layer_model["top"], bottom=layer_model["bottom"], stage=planar_river["stage"], bottom_elevation=planar_river["bottom"], ) riv_allocated
<xarray.DataArray (layer: 20, y: 200, x: 500)> Size: 2MB array([[[False, False, False, ..., True, True, True], [False, False, False, ..., False, True, True], [False, False, False, ..., False, True, True], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., True, True, True], [False, False, False, ..., False, True, True], [False, False, False, ..., False, True, True], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, True], ..., ... [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]]], shape=(20, 200, 500)) Coordinates: * x (x) float64 4kB 2.375e+05 2.375e+05 2.376e+05 ... 2.5e+05 2.5e+05 * y (y) float64 2kB 5.64e+05 5.64e+05 5.639e+05 ... 5.59e+05 5.59e+05 dx float64 8B 25.0 dy float64 8B -25.0 * layer (layer) int64 160B 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20
False False False False False False ... False False False False False
array([[[False, False, False, ..., True, True, True], [False, False, False, ..., False, True, True], [False, False, False, ..., False, True, True], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., True, True, True], [False, False, False, ..., False, True, True], [False, False, False, ..., False, True, True], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, True], ..., ... [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]], [[False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False], [False, False, False, ..., False, False, False]]], shape=(20, 200, 500))
x
(x)
float64
2.375e+05 2.375e+05 ... 2.5e+05
array([237512.5, 237537.5, 237562.5, ..., 249937.5, 249962.5, 249987.5], shape=(500,))
y
(y)
float64
5.64e+05 5.64e+05 ... 5.59e+05
array([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, 563737.5, 563712.5, 563687.5, 563662.5, 563637.5, 563612.5, 563587.5, 563562.5, 563537.5, 563512.5, 563487.5, 563462.5, 563437.5, 563412.5, 563387.5, 563362.5, 563337.5, 563312.5, 563287.5, 563262.5, 563237.5, 563212.5, 563187.5, 563162.5, 563137.5, 563112.5, 563087.5, 563062.5, 563037.5, 563012.5, 562987.5, 562962.5, 562937.5, 562912.5, 562887.5, 562862.5, 562837.5, 562812.5, 562787.5, 562762.5, 562737.5, 562712.5, 562687.5, 562662.5, 562637.5, 562612.5, 562587.5, 562562.5, 562537.5, 562512.5, 562487.5, 562462.5, 562437.5, 562412.5, 562387.5, 562362.5, 562337.5, 562312.5, 562287.5, 562262.5, 562237.5, 562212.5, 562187.5, 562162.5, 562137.5, 562112.5, 562087.5, 562062.5, 562037.5, 562012.5, 561987.5, 561962.5, 561937.5, 561912.5, 561887.5, 561862.5, 561837.5, 561812.5, 561787.5, 561762.5, 561737.5, 561712.5, 561687.5, 561662.5, 561637.5, 561612.5, 561587.5, 561562.5, 561537.5, 561512.5, 561487.5, 561462.5, 561437.5, 561412.5, 561387.5, 561362.5, 561337.5, 561312.5, 561287.5, 561262.5, 561237.5, 561212.5, 561187.5, 561162.5, 561137.5, 561112.5, 561087.5, 561062.5, 561037.5, 561012.5, 560987.5, 560962.5, 560937.5, 560912.5, 560887.5, 560862.5, 560837.5, 560812.5, 560787.5, 560762.5, 560737.5, 560712.5, 560687.5, 560662.5, 560637.5, 560612.5, 560587.5, 560562.5, 560537.5, 560512.5, 560487.5, 560462.5, 560437.5, 560412.5, 560387.5, 560362.5, 560337.5, 560312.5, 560287.5, 560262.5, 560237.5, 560212.5, 560187.5, 560162.5, 560137.5, 560112.5, 560087.5, 560062.5, 560037.5, 560012.5, 559987.5, 559962.5, 559937.5, 559912.5, 559887.5, 559862.5, 559837.5, 559812.5, 559787.5, 559762.5, 559737.5, 559712.5, 559687.5, 559662.5, 559637.5, 559612.5, 559587.5, 559562.5, 559537.5, 559512.5, 559487.5, 559462.5, 559437.5, 559412.5, 559387.5, 559362.5, 559337.5, 559312.5, 559287.5, 559262.5, 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5])
dx
()
float64
25.0
dy
()
float64
-25.0
layer
(layer)
int64
1 2 3 4 5 6 7 ... 15 16 17 18 19 20
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
PandasIndex
PandasIndex(Index([237512.5, 237537.5, 237562.5, 237587.5, 237612.5, 237637.5, 237662.5, 237687.5, 237712.5, 237737.5, ... 249762.5, 249787.5, 249812.5, 249837.5, 249862.5, 249887.5, 249912.5, 249937.5, 249962.5, 249987.5], dtype='float64', name='x', length=500))
PandasIndex
PandasIndex(Index([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, ... 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5], dtype='float64', name='y', length=200))
PandasIndex
PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], dtype='int64', name='layer'))
Distribute river conductance over model layers. There are multiple options available, which are fully described in imod.prepare.DISTRIBUTING_OPTION()
. We can print all possible options as follows:
for option in DISTRIBUTING_OPTION: print(option.name)
by_corrected_transmissivity by_corrected_thickness equally by_crosscut_thickness by_layer_thickness by_crosscut_transmissivity by_conductivity by_layer_transmissivity
To reduce duplicate code, we are going to store all input data in this dictionary which we can provide further as keyword arguments.
distributing_data = { "allocated": riv_allocated, "conductance": planar_river["conductance"], "top": layer_model["top"], "bottom": layer_model["bottom"], "k": layer_model["k"], "stage": planar_river["stage"], "bottom_elevation": planar_river["bottom"], }
Let’s keep things simple first and distribute conductances across layers equally.
riv_conductance = distribute_riv_conductance( distributing_option=DISTRIBUTING_OPTION.by_layer_thickness, **distributing_data ) riv_conductance.coords["top"] = layer_model["top"] riv_conductance.coords["bottom"] = layer_model["bottom"]
Lets repeat the earlier process to produce a nice cross-section plot.
# Select the conductance over the cross section again. xsection_distributed = imod.select.cross_section_linestring(riv_conductance, geometry) fig, ax = plt.subplots() # Plot grey background of active cells is_active = ~np.isnan(xsection_distributed.coords["top"]) imod.visualize.cross_section( is_active, "Greys", [0, 1, 2, 3], kwargs_colorbar={"plot_colorbar": False}, fig=fig, ax=ax, ) # Plot conductances imod.visualize.cross_section( xsection_distributed, "magma", np.logspace(-2, 3, 11), fig=fig, ax=ax )
(<Figure size 640x480 with 2 Axes>, <Axes: >)
Let’s compare the results of all possible options visually. On the top left we’ll plot the hydraulic conductivity, as we haven’t looked at that yet. The other plots show the effects of different settings. Again, distributing options are described in more detail in imod.prepare.DISTRIBUTING_OPTION()
fig, axes = plt.subplots(3, 3, figsize=[13, 11], sharex=True, sharey=True) axes = np.ravel(axes) k = distributing_data["k"].copy() k.coords["top"] = layer_model["top"] k.coords["bottom"] = layer_model["bottom"] xsection_k = imod.select.cross_section_linestring(k, geometry) ax = axes[0] imod.visualize.cross_section( xsection_k, "magma", np.logspace(-2, 3, 11), kwargs_colorbar={"plot_colorbar": False}, fig=fig, ax=ax, ) ax.scatter(x_line, stage_line.values, marker=7, c="k") ax.scatter(x_line, stage_bottom.values, marker=6, c="k") ax.set_title("hydraulic conductivity") for i, option in enumerate(DISTRIBUTING_OPTION, start=1): ax = axes[i] riv_conductance = distribute_riv_conductance( distributing_option=option, **distributing_data ) riv_conductance.coords["top"] = layer_model["top"] riv_conductance.coords["bottom"] = layer_model["bottom"] xsection_distributed = imod.select.cross_section_linestring( riv_conductance, geometry ) if (i % 3) == 2: kwargs_colorbar = {"plot_colorbar": True} else: kwargs_colorbar = {"plot_colorbar": False} # Plot grey background of active cells is_active = ~np.isnan(xsection_distributed.coords["top"]) imod.visualize.cross_section( is_active, "Greys", [0, 1, 2, 3], kwargs_colorbar={"plot_colorbar": False}, fig=fig, ax=ax, ) # Plot conductances imod.visualize.cross_section( xsection_distributed, "magma", np.logspace(-2, 3, 11), kwargs_colorbar=kwargs_colorbar, fig=fig, ax=ax, ) ax.set_title(f"option: {option.name}") plt.tight_layout()
You can see quite some wildly varying conductances with depth. First, the most simple algorithm equally
keeps conductance constant with depth. Second, correcting by_conductivity
(hydraulic) decreases the conductance in the deepest layer where rivers occur in the centre of the plot, as conductivity is lower over there. Correcting by_layer_thickness
, however, increases conductance in this deep layer, as this is a thicker layer. These differences even out when we correct by_layer_transmissivity
(k * thickness). The by_crosscut_thickness
algorithm accounts for how far the river bottom penetrates a layer. You can see this reduces conductance in the deep layer compared to distributing by_layer_thickness
. by_crosscut_transmissivity
uses the crosscut thickness instead of the layer thickness and therefore shows a lower conductance in the deeper layer compared to by_layer_transmissivity
. Finally by_corrected_transmissivity
and by_corrected_thickness
also correct for the displacement of the midpoint over the length where crosscut transmissivity is computed over ([layer top - river bottom]/2
) compared to the model cell centre. This further reduces the conductance in the deeper layer.
The data created can now be used to create a MODFLOW 6 package. To construct 3D grids from planar grids for the stages, we can utilize xarrays broadcasting:
from imod.typing.grid import enforce_dim_order riv_stage = planar_river["stage"].where(riv_allocated) # Use this function to enforce the right dimension order for iMOD Python. riv_stage = enforce_dim_order(riv_stage) riv_stage
<xarray.DataArray 'stage' (layer: 20, y: 200, x: 500)> Size: 8MB array([[[ nan, nan, nan, ..., 1.9508 , 1.9358001, 1.9258001], [ nan, nan, nan, ..., nan, 1.9258001, 1.9258001], [ nan, nan, nan, ..., nan, 1.7708 , 1.6558001], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., 1.9508 , 1.9358001, 1.9258001], [ nan, nan, nan, ..., nan, 1.9258001, 1.9258001], [ nan, nan, nan, ..., nan, 1.7708 , 1.6558001], ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], shape=(20, 200, 500), dtype=float32) Coordinates: * x (x) float64 4kB 2.375e+05 2.375e+05 2.376e+05 ... 2.5e+05 2.5e+05 * y (y) float64 2kB 5.64e+05 5.64e+05 5.639e+05 ... 5.59e+05 5.59e+05 dx float64 8B 25.0 dy float64 8B -25.0 * layer (layer) int64 160B 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20
nan nan nan nan nan nan nan nan ... nan nan nan nan nan nan nan nan
array([[[ nan, nan, nan, ..., 1.9508 , 1.9358001, 1.9258001], [ nan, nan, nan, ..., nan, 1.9258001, 1.9258001], [ nan, nan, nan, ..., nan, 1.7708 , 1.6558001], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., 1.9508 , 1.9358001, 1.9258001], [ nan, nan, nan, ..., nan, 1.9258001, 1.9258001], [ nan, nan, nan, ..., nan, 1.7708 , 1.6558001], ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], shape=(20, 200, 500), dtype=float32)
x
(x)
float64
2.375e+05 2.375e+05 ... 2.5e+05
array([237512.5, 237537.5, 237562.5, ..., 249937.5, 249962.5, 249987.5], shape=(500,))
y
(y)
float64
5.64e+05 5.64e+05 ... 5.59e+05
array([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, 563737.5, 563712.5, 563687.5, 563662.5, 563637.5, 563612.5, 563587.5, 563562.5, 563537.5, 563512.5, 563487.5, 563462.5, 563437.5, 563412.5, 563387.5, 563362.5, 563337.5, 563312.5, 563287.5, 563262.5, 563237.5, 563212.5, 563187.5, 563162.5, 563137.5, 563112.5, 563087.5, 563062.5, 563037.5, 563012.5, 562987.5, 562962.5, 562937.5, 562912.5, 562887.5, 562862.5, 562837.5, 562812.5, 562787.5, 562762.5, 562737.5, 562712.5, 562687.5, 562662.5, 562637.5, 562612.5, 562587.5, 562562.5, 562537.5, 562512.5, 562487.5, 562462.5, 562437.5, 562412.5, 562387.5, 562362.5, 562337.5, 562312.5, 562287.5, 562262.5, 562237.5, 562212.5, 562187.5, 562162.5, 562137.5, 562112.5, 562087.5, 562062.5, 562037.5, 562012.5, 561987.5, 561962.5, 561937.5, 561912.5, 561887.5, 561862.5, 561837.5, 561812.5, 561787.5, 561762.5, 561737.5, 561712.5, 561687.5, 561662.5, 561637.5, 561612.5, 561587.5, 561562.5, 561537.5, 561512.5, 561487.5, 561462.5, 561437.5, 561412.5, 561387.5, 561362.5, 561337.5, 561312.5, 561287.5, 561262.5, 561237.5, 561212.5, 561187.5, 561162.5, 561137.5, 561112.5, 561087.5, 561062.5, 561037.5, 561012.5, 560987.5, 560962.5, 560937.5, 560912.5, 560887.5, 560862.5, 560837.5, 560812.5, 560787.5, 560762.5, 560737.5, 560712.5, 560687.5, 560662.5, 560637.5, 560612.5, 560587.5, 560562.5, 560537.5, 560512.5, 560487.5, 560462.5, 560437.5, 560412.5, 560387.5, 560362.5, 560337.5, 560312.5, 560287.5, 560262.5, 560237.5, 560212.5, 560187.5, 560162.5, 560137.5, 560112.5, 560087.5, 560062.5, 560037.5, 560012.5, 559987.5, 559962.5, 559937.5, 559912.5, 559887.5, 559862.5, 559837.5, 559812.5, 559787.5, 559762.5, 559737.5, 559712.5, 559687.5, 559662.5, 559637.5, 559612.5, 559587.5, 559562.5, 559537.5, 559512.5, 559487.5, 559462.5, 559437.5, 559412.5, 559387.5, 559362.5, 559337.5, 559312.5, 559287.5, 559262.5, 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5])
dx
()
float64
25.0
dy
()
float64
-25.0
layer
(layer)
int64
1 2 3 4 5 6 7 ... 15 16 17 18 19 20
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
PandasIndex
PandasIndex(Index([237512.5, 237537.5, 237562.5, 237587.5, 237612.5, 237637.5, 237662.5, 237687.5, 237712.5, 237737.5, ... 249762.5, 249787.5, 249812.5, 249837.5, 249862.5, 249887.5, 249912.5, 249937.5, 249962.5, 249987.5], dtype='float64', name='x', length=500))
PandasIndex
PandasIndex(Index([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, ... 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5], dtype='float64', name='y', length=200))
PandasIndex
PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], dtype='int64', name='layer'))
We can do the same for the river bottom and construct a river package. Note that we use the previously distributed conductance which we assigned to the variable riv_conducance
.
riv_bottom = planar_river["bottom"].where(riv_allocated) riv_bottom = enforce_dim_order(riv_bottom) # Remove coordinates that were added for cross-section plots previously riv_conductance = riv_conductance.drop_vars(["bottom", "top"]) riv = imod.mf6.River( stage=riv_stage, conductance=riv_conductance, bottom_elevation=riv_bottom ) riv
River
<xarray.Dataset> Size: 32MB Dimensions: (x: 500, y: 200, layer: 20) Coordinates: * x (x) float64 4kB 2.375e+05 2.375e+05 ... 2.5e+05 2.5e+05 * y (y) float64 2kB 5.64e+05 5.64e+05 ... 5.59e+05 5.59e+05 dx float64 8B 25.0 dy float64 8B -25.0 * layer (layer) int64 160B 1 2 3 4 5 6 7 ... 14 15 16 17 18 19 20 Data variables: stage (layer, y, x) float32 8MB nan nan nan nan ... nan nan nan conductance (layer, y, x) float64 16MB nan nan nan nan ... nan nan nan bottom_elevation (layer, y, x) float32 8MB nan nan nan nan ... nan nan nan print_input bool 1B False print_flows bool 1B False save_flows bool 1B False observations object 8B None repeat_stress object 8B None
x
(x)
float64
2.375e+05 2.375e+05 ... 2.5e+05
array([237512.5, 237537.5, 237562.5, ..., 249937.5, 249962.5, 249987.5], shape=(500,))
y
(y)
float64
5.64e+05 5.64e+05 ... 5.59e+05
array([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, 563737.5, 563712.5, 563687.5, 563662.5, 563637.5, 563612.5, 563587.5, 563562.5, 563537.5, 563512.5, 563487.5, 563462.5, 563437.5, 563412.5, 563387.5, 563362.5, 563337.5, 563312.5, 563287.5, 563262.5, 563237.5, 563212.5, 563187.5, 563162.5, 563137.5, 563112.5, 563087.5, 563062.5, 563037.5, 563012.5, 562987.5, 562962.5, 562937.5, 562912.5, 562887.5, 562862.5, 562837.5, 562812.5, 562787.5, 562762.5, 562737.5, 562712.5, 562687.5, 562662.5, 562637.5, 562612.5, 562587.5, 562562.5, 562537.5, 562512.5, 562487.5, 562462.5, 562437.5, 562412.5, 562387.5, 562362.5, 562337.5, 562312.5, 562287.5, 562262.5, 562237.5, 562212.5, 562187.5, 562162.5, 562137.5, 562112.5, 562087.5, 562062.5, 562037.5, 562012.5, 561987.5, 561962.5, 561937.5, 561912.5, 561887.5, 561862.5, 561837.5, 561812.5, 561787.5, 561762.5, 561737.5, 561712.5, 561687.5, 561662.5, 561637.5, 561612.5, 561587.5, 561562.5, 561537.5, 561512.5, 561487.5, 561462.5, 561437.5, 561412.5, 561387.5, 561362.5, 561337.5, 561312.5, 561287.5, 561262.5, 561237.5, 561212.5, 561187.5, 561162.5, 561137.5, 561112.5, 561087.5, 561062.5, 561037.5, 561012.5, 560987.5, 560962.5, 560937.5, 560912.5, 560887.5, 560862.5, 560837.5, 560812.5, 560787.5, 560762.5, 560737.5, 560712.5, 560687.5, 560662.5, 560637.5, 560612.5, 560587.5, 560562.5, 560537.5, 560512.5, 560487.5, 560462.5, 560437.5, 560412.5, 560387.5, 560362.5, 560337.5, 560312.5, 560287.5, 560262.5, 560237.5, 560212.5, 560187.5, 560162.5, 560137.5, 560112.5, 560087.5, 560062.5, 560037.5, 560012.5, 559987.5, 559962.5, 559937.5, 559912.5, 559887.5, 559862.5, 559837.5, 559812.5, 559787.5, 559762.5, 559737.5, 559712.5, 559687.5, 559662.5, 559637.5, 559612.5, 559587.5, 559562.5, 559537.5, 559512.5, 559487.5, 559462.5, 559437.5, 559412.5, 559387.5, 559362.5, 559337.5, 559312.5, 559287.5, 559262.5, 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5])
dx
()
float64
25.0
dy
()
float64
-25.0
layer
(layer)
int64
1 2 3 4 5 6 7 ... 15 16 17 18 19 20
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
stage
(layer, y, x)
float32
nan nan nan nan ... nan nan nan nan
array([[[ nan, nan, nan, ..., 1.9508 , 1.9358001, 1.9258001], [ nan, nan, nan, ..., nan, 1.9258001, 1.9258001], [ nan, nan, nan, ..., nan, 1.7708 , 1.6558001], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., 1.9508 , 1.9358001, 1.9258001], [ nan, nan, nan, ..., nan, 1.9258001, 1.9258001], [ nan, nan, nan, ..., nan, 1.7708 , 1.6558001], ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], shape=(20, 200, 500), dtype=float32)
conductance
(layer, y, x)
float64
nan nan nan nan ... nan nan nan nan
array([[[ nan, nan, nan, ..., 14.93000031, 1.35500002, 14.93000031], [ nan, nan, nan, ..., nan, 2.25999999, 13.11999989], [ nan, nan, nan, ..., nan, 0.44999999, 3.89000003], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., 14.93000031, 1.35500002, 14.93000031], [ nan, nan, nan, ..., nan, 2.25999999, 13.11999989], [ nan, nan, nan, ..., nan, 0.44999999, 3.89000003], ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], shape=(20, 200, 500))
bottom_elevation
(layer, y, x)
float32
nan nan nan nan ... nan nan nan nan
array([[[ nan, nan, nan, ..., 1.39, 1.36, 1.34], [ nan, nan, nan, ..., nan, 1.34, 1.34], [ nan, nan, nan, ..., nan, 1.03, 0.51], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., 1.39, 1.36, 1.34], [ nan, nan, nan, ..., nan, 1.34, 1.34], [ nan, nan, nan, ..., nan, 1.03, 0.51], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, 0.51], ..., ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], shape=(20, 200, 500), dtype=float32)
print_input
()
bool
False
print_flows
()
bool
False
save_flows
()
bool
False
observations
()
object
None
array(None, dtype=object)
repeat_stress
()
object
None
array(None, dtype=object)
PandasIndex
PandasIndex(Index([237512.5, 237537.5, 237562.5, 237587.5, 237612.5, 237637.5, 237662.5, 237687.5, 237712.5, 237737.5, ... 249762.5, 249787.5, 249812.5, 249837.5, 249862.5, 249887.5, 249912.5, 249937.5, 249962.5, 249987.5], dtype='float64', name='x', length=500))
PandasIndex
PandasIndex(Index([563987.5, 563962.5, 563937.5, 563912.5, 563887.5, 563862.5, 563837.5, 563812.5, 563787.5, 563762.5, ... 559237.5, 559212.5, 559187.5, 559162.5, 559137.5, 559112.5, 559087.5, 559062.5, 559037.5, 559012.5], dtype='float64', name='y', length=200))
PandasIndex
PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], dtype='int64', name='layer'))
Total running time of the script: (0 minutes 10.566 seconds)
Gallery generated by Sphinx-Gallery
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4