Coverage for C:\src\imod-python\imod\flow\conductivity.py: 91%
43 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-08 13:27 +0200
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-08 13:27 +0200
1from imod.flow.pkgbase import Package
4class HorizontalHydraulicConductivity(Package):
5 """
6 Horizontal hydraulic conductivity [L/T] of the aquifers, between TOP and
7 BOT.
9 This variable behaves somewhat similar to the horizontal hydraulic
10 conductivity in MODFLOW 2005's "Layer Property Flow" schematization.
12 Note however that this does not hold for the vertical hydraulic
13 conductivity: iMODFLOW uses the vertical hydraulic conductivity to specify
14 the hydraulic conductivity of aquitards (between BOT and TOP)
16 Parameters
17 ----------
18 k_horizontal : xr.DataArray
19 Horizontal hydraulic conductivity, dims ``("layer", "y", "x")``.
20 """
22 _pkg_id = "khv"
23 _variable_order = ["k_horizontal"]
25 def __init__(self, k_horizontal=None):
26 super().__init__()
27 self.dataset["k_horizontal"] = k_horizontal
29 def _pkgcheck(self, active_cells=None):
30 vars_to_check = ["k_horizontal"]
31 self._check_if_nan_in_active_cells(
32 active_cells=active_cells, vars_to_check=vars_to_check
33 )
36class VerticalHydraulicConductivity(Package):
37 """
38 Vertical hydraulic conductivity [L/T] for aquitards (between BOT and TOP).
40 Note that this is different from MODFLOW 2005's "Layer Property Flow"
41 schematization. To specify the vertical hydraulic conductivity for
42 aquifers, use VerticalAnisotropy in combination with
43 HorizontalHydraulicConductivity.
45 Parameters
46 ----------
47 k_vertical : xr.DataArray
48 Vertical hydraulic conductivity, dims ``("layer", "y", "x")``.
49 """
51 _pkg_id = "kvv"
52 _variable_order = ["k_vertical"]
54 def __init__(self, k_vertical=None):
55 super().__init__()
56 self.dataset["k_vertical"] = k_vertical
58 def _pkgcheck(self, active_cells=None):
59 vars_to_check = ["k_vertical"]
60 self._check_if_nan_in_active_cells(
61 active_cells=active_cells, vars_to_check=vars_to_check
62 )
65class VerticalAnisotropy(Package):
66 """
67 Vertical anisotropy for aquifers [-], defined as the horizontal hydraulic
68 conductivity over the vertical hydraulic conductivity.
70 Use this package in combination with HorizontalHydraulicConductivity to
71 specify the vertical hydraulic conductivity.
73 Parameters
74 ----------
75 vertical_anisotropy : xr.DataArray
76 Vertical anisotropy factor (Kv/Kh), dims ``("layer", "y", "x")``.
77 """
79 _pkg_id = "kva"
80 _variable_order = ["vertical_anisotropy"]
82 def __init__(self, vertical_anisotropy):
83 super().__init__()
84 self.dataset["vertical_anisotropy"] = vertical_anisotropy
86 def _pkgcheck(self, active_cells=None):
87 vars_to_check = ["vertical_anisotropy"]
88 self._check_if_nan_in_active_cells(
89 active_cells=active_cells, vars_to_check=vars_to_check
90 )
93class Transmissivity(Package):
94 """
95 Transmissivity [L2/T] of the aquifers, between TOP and BOT.
97 This variable behaves similar to the transmissivity in MODFLOW 2005's "Block
98 Centred Flow (BCF)" schematization. Note that values are trimmed internally
99 to be minimal 0 m2/day by iMODFLOW.
101 Parameters
102 ----------
103 transmissivity : xr.DataArray
104 Transmissivity, dims ``("layer", "y", "x")``.
105 """
107 _pkg_id = "kdw"
108 _variable_order = ["transmissivity"]
110 def __init__(self, transmissivity=None):
111 super().__init__()
112 self.dataset["transmissivity"] = transmissivity
114 def _pkgcheck(self, active_cells=None):
115 vars_to_check = ["transmissivity"]
116 self._check_if_nan_in_active_cells(
117 active_cells=active_cells, vars_to_check=vars_to_check
118 )
121class VerticalResistance(Package):
122 """
123 Vertical resistance [T] for aquitards (Between BOT and TOP).
125 This variable is the inverse of the "VCONT" variable in MODFLOW 2005's
126 "Block Centred Flow (BCF)" schematization. Note that values are trimmed
127 internally for minimal 0.001 days by iMODFLOW. Also not that iMODFLOW's
128 internal scaling cannot deal with value nonzero nodata values, therefore,
129 for scaling, it is important to assign a 0 as the nodata value for
130 VerticalResistance.
132 Parameters
133 ----------
134 Resistance : xr.DataArray
135 Resistance, dims ``("layer", "y", "x")``.
137 """
139 _pkg_id = "vcw"
140 _variable_order = ["resistance"]
142 def __init__(self, resistance=None):
143 super().__init__()
144 self.dataset["resistance"] = resistance