|
|
@@ -95,7 +95,7 @@ class ResistanceDecreaseModel(torch.nn.Module):
|
|
|
"""初始化膜阻力下降模型(无需训练参数)"""
|
|
|
super().__init__()
|
|
|
|
|
|
- def forward(self, p, R0, R_end, L_h_start, L_h_next_start, t_bw_s):
|
|
|
+ def forward(self, p, R0, R_end, L_h_next_start, t_bw_s):
|
|
|
"""
|
|
|
前向传播:计算物理反洗能够去除的膜阻力
|
|
|
|
|
|
@@ -115,31 +115,20 @@ class ResistanceDecreaseModel(torch.nn.Module):
|
|
|
|
|
|
计算步骤:
|
|
|
1. 基于长期污染模型计算本周期的不可逆污染增量
|
|
|
- 2. 计算可逆污染量 = 总增长 - 不可逆增量
|
|
|
+ 2. 计算可逆污染量 = 当前总污染 - 不可逆污染
|
|
|
3. 应用时间因子(反洗时长的影响)
|
|
|
4. 返回实际去除的阻力(不超过可逆污染量)
|
|
|
"""
|
|
|
# ========== 步骤1:计算不可逆污染累积 ==========
|
|
|
# 使用幂律模型描述长期不可逆污染的累积
|
|
|
# R_irr(t) = R0 + slope × t^power
|
|
|
-
|
|
|
- # 本小周期开始时的理论膜阻力(包含之前累积的不可逆污染)
|
|
|
- R_start = R0 + p.slope * (L_h_start ** p.power)
|
|
|
+
|
|
|
|
|
|
# 下一小周期开始时的理论膜阻力
|
|
|
R_next_start = R0 + p.slope * (L_h_next_start ** p.power)
|
|
|
-
|
|
|
- # 本周期新增的不可逆污染(反洗后会残留)
|
|
|
- # 这部分污染无法通过物理反洗去除
|
|
|
- irreversible_R = max(R_next_start - R_start, 0.0)
|
|
|
-
|
|
|
- # ========== 步骤2:计算可逆污染量 ==========
|
|
|
- # 本周期过滤阶段总的膜阻力增长
|
|
|
- total_increase = max(R_end - R_start, 0.0)
|
|
|
-
|
|
|
- # 可逆污染 = 总增长 - 不可逆污染
|
|
|
+
|
|
|
# 这部分污染可以通过物理反洗去除
|
|
|
- reversible_R = max(total_increase - irreversible_R, 0.0)
|
|
|
+ reversible_R = max(R_end - R_next_start, 0.0)
|
|
|
|
|
|
# ========== 步骤3:计算反洗时间效率因子 ==========
|
|
|
# 使用指数衰减模型:time_gain = 1 - exp(-t_bw / τ)
|
|
|
@@ -147,6 +136,10 @@ class ResistanceDecreaseModel(torch.nn.Module):
|
|
|
# - 反洗时间 t_bw = 0 时,time_gain = 0(无去除效果)
|
|
|
# - 反洗时间 t_bw → ∞ 时,time_gain → 1(达到最大效率)
|
|
|
# - 反洗时间 t_bw = τ 时,time_gain ≈ 0.632(去除63.2%)
|
|
|
+ # τ参考计算: 以60s去除效率高于95%的要求推算得τ取20s
|
|
|
+ # 该取值下:
|
|
|
+ # - 反洗时间 t_bw = 40s 时,time_gain ≈ 0.865(去除86.5%)
|
|
|
+ # - 反洗时间 t_bw = 60s 时,time_gain ≈ 0.950(去除95.0%)
|
|
|
time_gain = 1.0 - np.exp(- (t_bw_s / p.tau_bw_s))
|
|
|
|
|
|
# ========== 步骤4:计算实际去除的膜阻力 ==========
|