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

1from imod.flow.pkgbase import Package 

2 

3 

4class 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 

36class 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 

65class 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 

93class 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 

121class 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