🎉 init(init):初始化仓库
This commit is contained in:
133
irrgiation/soil_Ke.py
Normal file
133
irrgiation/soil_Ke.py
Normal 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.15-0.20),Kcmax:紧随湿润过程的土壤最大 值
|
||||
|
||||
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")
|
||||
Reference in New Issue
Block a user