# 计算土壤蒸发系数 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")