Coverage for C:\src\imod-python\imod\flow\conductivity.py: 91%

1 from imod.flow.pkgbase import Package

2

3

4 class HorizontalHydraulicConductivity(Package):

5 """

6 Horizontal hydraulic conductivity [L/T] of the aquifers, between TOP and

7 BOT.

8

9 This variable behaves somewhat similar to the horizontal hydraulic

10 conductivity in MODFLOW 2005's "Layer Property Flow" schematization.

11

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)

15

16 Parameters

17 ----------

18 k_horizontal : xr.DataArray

19 Horizontal hydraulic conductivity, dims ``("layer", "y", "x")``.

20 """

21

22 _pkg_id = "khv"

23 _variable_order = ["k_horizontal"]

24

25 def __init__(self, k_horizontal=None):

26 super().__init__()

27 self.dataset["k_horizontal"] = k_horizontal

28

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 )

34

35

36 class VerticalHydraulicConductivity(Package):

37 """

38 Vertical hydraulic conductivity [L/T] for aquitards (between BOT and TOP).

39

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.

44

45 Parameters

46 ----------

47 k_vertical : xr.DataArray

48 Vertical hydraulic conductivity, dims ``("layer", "y", "x")``.

49 """

50

51 _pkg_id = "kvv"

52 _variable_order = ["k_vertical"]

53

54 def __init__(self, k_vertical=None):

55 super().__init__()

56 self.dataset["k_vertical"] = k_vertical

57

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 )

63

64

65 class VerticalAnisotropy(Package):

66 """

67 Vertical anisotropy for aquifers [-], defined as the horizontal hydraulic

68 conductivity over the vertical hydraulic conductivity.

69

70 Use this package in combination with HorizontalHydraulicConductivity to

71 specify the vertical hydraulic conductivity.

72

73 Parameters

74 ----------

75 vertical_anisotropy : xr.DataArray

76 Vertical anisotropy factor (Kv/Kh), dims ``("layer", "y", "x")``.

77 """

78

79 _pkg_id = "kva"

80 _variable_order = ["vertical_anisotropy"]

81

82 def __init__(self, vertical_anisotropy):

83 super().__init__()

84 self.dataset["vertical_anisotropy"] = vertical_anisotropy

85

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 )

91

92

93 class Transmissivity(Package):

94 """

95 Transmissivity [L2/T] of the aquifers, between TOP and BOT.

96

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.

100

101 Parameters

102 ----------

103 transmissivity : xr.DataArray

104 Transmissivity, dims ``("layer", "y", "x")``.

105 """

106

107 _pkg_id = "kdw"

108 _variable_order = ["transmissivity"]

109

110 def __init__(self, transmissivity=None):

111 super().__init__()

112 self.dataset["transmissivity"] = transmissivity

113

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 )

119

120

121 class VerticalResistance(Package):

122 """

123 Vertical resistance [T] for aquitards (Between BOT and TOP).

124

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.

131

132 Parameters

133 ----------

134 Resistance : xr.DataArray

135 Resistance, dims ``("layer", "y", "x")``.

136

137 """

138

139 _pkg_id = "vcw"

140 _variable_order = ["resistance"]

141

142 def __init__(self, resistance=None):

143 super().__init__()

144 self.dataset["resistance"] = resistance