🎉 init(init):初始化仓库

This commit is contained in:
张鑫
2025-12-23 08:38:08 +08:00
parent 36226cc9fe
commit 066fe58f89
34 changed files with 3402 additions and 2 deletions

133
irrgiation/soil_Ke.py Normal file
View File

@@ -0,0 +1,133 @@
# 计算土壤蒸发系数
def calculate_ke(h, u2, rh_min, k_cb, DE_i_1,REW,fw,theta_fc,theta_wp):
"""
计算土壤蒸发系数 ke
参数:
h: 株高(m)
u2: 2米高处风速(m/s)
rh_min: 最小相对湿度(%)
k_cb: 基础作物系数
DE_i_1: 前一天从土壤表层蒸发的累积深度(mm)
TEW: 总可蒸发水量(mm)
REW: 易蒸发水量(mm)
few: 裸露湿润的土壤的比值
返回:
ke: 土壤蒸发系数
"""
K_cmin = 0.175
Z_e=0.12
kc_max = calculate_kc_max(h, u2, rh_min, k_cb)
fc = calculate_fc(k_cb, K_cmin, kc_max, h)
few = calculate_fev(fc, fw)
TEW = calculate_tew(theta_fc, theta_wp, Z_e)
kr = calculate_Kr(DE_i_1, TEW, REW)
term1 = kr * (kc_max - k_cb)
term2 = few * k_cb
return min(term1, term2),few
# 每日土壤蒸发量累积量
#土壤蒸发有效部分
def calculate_fev(fc, fw):
fev = min(1 - fc, fw)
return fev
#计算作物覆盖率fc
def calculate_fc(Kcb, Kcmin, Kcmax, h):
#Kcb作物基础系数Kcmin无地表覆盖的干燥土壤最小 值(约为 0.150.20Kcmax紧随湿润过程的土壤最大 值
fc = ((Kcb- Kcmin) / (Kcmax - Kcmin)) ** (1 + 0.5 * h)
return fc
# 计算蒸发减少系数
def calculate_Kr(DE_i_1, TEW, REW):
if DE_i_1 <= REW:
Kr = 1
else:
print("dd")
Kr = (TEW - DE_i_1) / (TEW - REW)
return Kr
#计算Kcmax
def calculate_kc_max(h: float, u2: float, rh_min: float, k_cb: float) -> float:
"""
计算作物系数上限 kc_max
参数:
h: 株高(m)
u2: 2米高处风速(m/s)
rh_min: 最小相对湿度(%)
k_cb: 基础作物系数
返回:
kc_max: 作物系数上限
"""
term1 = 1.2 + (0.04 * (u2 - 2) - 0.004 * (rh_min - 45)) * (h / 3) ** 0.3
term2 = k_cb + 0.5
return max(term1, term2)
#计算TEW
def calculate_tew(theta_fc: float, theta_wp: float, Z_e: float) -> float:
"""
计算总可蒸发水量 TEW
参数:
theta_fc: 田间持水量(m³/m³)
theta_wp: 萎蔫系数(m³/m³)
Z_e: 土壤蒸发层深度(cm)
返回:
TEW: 总可蒸发水量(mm)
"""
return 1000 * (theta_fc - theta_wp) * Z_e
# 计算深层渗漏损失
def calculate_DP_ei(P_i, RO_i, I_i, D_e_prev, f_w):
if (P_i - RO_i) + I_i / f_w - D_e_prev >= 0:
return (P_i - RO_i) + I_i / f_w - D_e_prev
else:
return 0
# 计算每日土壤蒸发量累积量
def calculate_D_ei(D_e_prev, P_i, I_i, E_i, f_w, f_ew):
RO_i=0
T_ew_i=0
DP_ei = calculate_DP_ei(P_i, RO_i, I_i, D_e_prev, f_w)
D_ei = D_e_prev - (P_i - RO_i) - I_i / f_w + E_i / f_ew + T_ew_i + DP_ei
return D_ei
# 示例计算
if __name__ == "__main__":
# # 示例参数
# h = 0.07 # 株高(m)
# u2 = 3.0 # 2米高处风速(m/s)
# rh_min = 20.0 # 最小相对湿度(%)
# k_cb = 0.4 # 基础作物系数
# K_s = 0.6 # 土壤导水率
# K_cmin = 0.175
#
# fw = 0.35 # 土壤表层被灌溉浸湿的部分
# DE_i = 6.24 # 前一天从土壤表层蒸发的累积深度(mm)
# DE_i_1 = 2.965 # 前一天从土壤表层蒸发的累积深度(mm)
# theta_fc = 0.2884 # 田间持水量(m³/m³)
# theta_wp = 0.1086 # 萎蔫系数(m³/m³)
# Z_e = 0.1 # 土壤蒸发层深度(m)
#
# # # # 计算 TEW
# # TEW = calculate_tew(theta_fc, theta_wp, Z_e)
# REW = 5.178 # 假设REW为TEW的40%
# # #
# # # # 计算各参数
# # kc_max = calculate_kc_max(h, u2, rh_min, k_cb)
# # fc = calculate_fc(k_cb, K_cmin, kc_max, h)
# # few= calculate_fev(fc, fw)
# # kr = calculate_Kr(DE_i_1,DE_i, TEW, REW)
# ke=calculate_ke(h, u2, rh_min, k_cb, DE_i_1,DE_i,REW)
# # 输出结果
#
# print(f"土壤蒸发系数 Ke: {ke:.4f}")
# 假设初始参数
TEW = 1000 # 总可蒸发水量单位mm
D_e_start = TEW # 模拟开始时的初始D_e
D_e_prev = 0 # 模拟第一天的D_e假设充分灌溉后为0
# 假设一些每日数据,实际应用中需替换为真实数据
P_i = 10 # 第i天的降雨量单位mm
RO_i = 0 # 第i天的降雨形成地表径流量这里假定为0单位mm
I_i = 19 # 第i天渗入土壤的灌溉量单位mm
k_e = 0.14 # 土壤蒸发系数
ET_o = 8.188 # 参考作物蒸散量单位mm
E_i = k_e * ET_o # 第i天的蒸发量
T_ew_i = 0 # 第i天湿润裸露表层土壤的蒸腾量这里假定为0单位mm
f_w = 0.8 # 经灌溉湿润的土壤面积比值
f_ew = 0.6 # 裸露湿润土壤面积比值
D_ei = calculate_D_ei(D_e_prev, P_i, RO_i, I_i, f_w, f_ew)
print(f"第i天末土壤完全湿润后的累积蒸发消耗量为: {D_ei} mm")