🌞欢迎来到人工智能的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2025年9月6日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

asm.py

整体结构

asm1equations

carbonaddition

ASM1reactor类:

aerationcontrol.py

asm.py

整体结构

asm1equations

        一个基于ASM1 (Activated Sludge Model No.1) 的常微分方程组求解函数,是活性污泥法废

水处理模拟的核心。它的主要任务是计算反应器中21个关键组分的瞬时浓度变化率,这些变化率由

流入流出、生物反应和曝气过程共同决定。

在正式的学习之前我们先掌握一个概念叫做Kla:

       它描述了在单位体积的液体中,单位时间内的氧气传递速率与液相中氧气浓度亏欠(即饱和浓

度与实际浓度之差)之间的关系

     氧转移系数KLa是一个综合参数,它反映了气液界面上氧气从气相传递到液相的速率。具体来

说,KLa是氧气传质速率与气液界面处氧气浓度差之间的比例关系,其单位为时间负一次方。在数

学表达式中,KLa通常表示为:

在这种情况下,曝气开始的瞬时,水中溶解氧的浓度将以 每小时 70 mg/L 的速率增加。那就是说

kla越大,说明溶解氧的增加效率越高。

影响kla的主要因素是什么啊?

       曝气器的类型:不同的曝气器,如微孔曝气头、射流曝气器或机械搅拌曝气机,产生气泡的方

式和大小不同,会极大地影响氧气传递效率。一般来说,气泡越小,总表面积越大,KLa 越高。

气强度(或供气量):单位时间内向水中通入的空气量越多,产生的气泡数量越多,气液接触面积

就越大,因此 KLa 会随之增大。

反应器操作条件

反应器的操作方式也会影响 KLa

  水深:水越深,气泡在上升过程中停留的时间越长,传递效率越高,因此 KLa 通常会随水深增

加。搅拌强度:在机械曝气系统中,搅拌速率会影响气泡的分散和水体的湍流程度。适当的搅拌可

以增加传质速率,提高 KLa

这个值是我们可以人为控制的吗?

调整搅拌速度: 在机械曝气或搅拌曝气池中,提高搅拌速度能增强水体湍流,使气泡更均匀地分

散,从而提高传质效率和KLa。

控制液位深度: 在一定范围内,增加曝气池的水深会延长气泡在水中停留的时间,使其有更多机

会传递氧气,通常能提高KLa。

 Kla如何计算?

      这种方法基于这样一个事实:当向水中通入气体时,溶解氧(DO)的浓度会从一个较低的初

始值逐渐升高,并最终接近饱和溶解氧浓度。我们可以通过监测这段时间内DO的变化来计算。

如何控制?

手算模拟:

计算反应速率:

# proc1:异养菌好氧生长速率(利用SS,以氧为电子受体)
proc1 = mu_H * (ytemp[SS] / (K_S + ytemp[SS])) * (ytemp[SO] / (K_OH + ytemp[SO])) * ytemp[XBH]

我们上面已经输入和当前容器中各个反应物的浓度,所以这里的话是直接可以算出来的。

各组分转化速率

# 溶解氧(SO):被异养菌好氧生长和自养菌生长消耗
    reac[SO] = -(1.0 - Y_H) / Y_H * proc1 - (4.57 - Y_A) / Y_A * proc3

这里的转换速率的话,也是可以算出来的。


构建微分方程(物质平衡:流入-流出 + 反应项)

假设kla大于0的话:

    if kla >= 0.0:
        dy[SO] = (1.0 / volume) * (y_in[Q] * (y_in[SO] - y[SO])) + reac[SO] + KLa_temp * (SO_sat_temp - y[SO])

这里的物质平衡的话,也是可以算出来的。

carbonaddition

    SS 是一个特殊情况,因为投加的碳源本身就含有SS。因此,其新浓度不仅受到稀释的影

响,还增加了碳源带来的SS量。

ASM1reactor类:

odeint 的作用是数值求解常微分方程组

      常微分方程(Ordinary Differential Equation, ODE)描述的是一个变量关于另一个变量的瞬时

变化率。比如在 ASM1 模型中,我们用 dy/dt 来表示每个组分浓度随时间的变化率。

最简单的例子:匀速直线运动

      假设我们有一个小球,以恒定的速度 v 沿着直线运动。它的位置 x 随时间 t 的变化率(即速

度)是一个常数。

import numpy as np
from scipy.integrate import odeint
def linear_motion(x, t, v):
    """返回位置x随时间t的变化率 (dx/dt)"""
    dxdt = v
    return dxdt
# 定义参数
v = 2.0  # 速度 2.0 m/s
x0 = 0.0  # 初始位置 0.0 m
t = np.linspace(0, 10, 11)  # 时间从0到10秒,共11个点
# 调用 odeint 求解
# func: linear_motion 函数
# y0: 初始位置 x0
# t: 时间数组 t
# args: 额外参数 (v,)
x_solution = odeint(linear_motion, x0, t, args=(v,))
print("时间点 (t):", t)
print("位置 (x):", x_solution.flatten())


aerationcontrol.py

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐