阶梯式质量衡算

本文介绍了阶梯式质量衡算方法在计算速率常数、去除率、吸附模型和动力学模型中的应用。通过举例说明,强调了在小降解体系或低降解速率情况下,取样对计算结果的影响,并提供了代码实现来修正这种误差。通过对吸光度数据的分析,展示了未经矫正的系统可能存在的误差比例。

阶梯式质量衡算,用于高效计算速率常数、去除率、吸附模型、动力学模型等

例如,采用50ml降解体系,共降解3小时,每隔半小时取样4ml用于紫外可见吸光度测试,一共出6个吸光度数据。随着降解时间延长,目标降解物在某特定波长下的吸光度逐渐降低。这里采用吸光度曲线Ct=k×At,Ct为时间 t 时的质量浓度mg/L,At为时间 t 时的吸光度。当降解时间达到3h时,实验结束,此时取样不影响实验体系,因此影响降解体系的取样次数为5次,取样体积达到20ml。因此,若要得到实际降解率,不能直接采用(c0-ct)/c0来计算,而应根据测得的吸光度进行质量衡算。阶梯式质量衡算的设计思路包括以下两个要点:

① 有效供给降解体系的总质量m = 总质量 - 5次取样的总取出质量
② 则时间点 t 时的去除率 = 0到 t 时的降解去除率质量 / m

其中,总质量用初始吸光度A0计算,等于k×A0,k为从标准曲线拟合而来的吸光系数

新建文件,命名为“LSVC_for_k_and_remo_rate”,为还原实际质量去除率
代码实现如下:

# 吸光系数 k = 16.57527
# *传递tuple,**传递dict
# LSVC_for_k_and_remo_rate 用于计算速率常数和去除率的小体积矫正算法


def foo(*x, interval_min=30): 
	"""根据吸光度数据计算输出Vt,用于一级速率常数计算"""
    r = []  # 存放每t min的平均反应速率(已乘以-1)
    c = []  # 存放每t min首尾浓度的平均数
    for k in range(1, len(x)):
        r.append(round((x[k] - x[k-1]) * 16.57527/interval_min*(-1), 5))  # 计算每t min的平均反应速率(已乘以-1)
        c.append(round((x[k] + x[k-1]) * 16.57527/2, 5))  # 计算每t min首尾浓度的平均数

    print('y-Vt')
    for k in r:
        print(k)
    print('')
    print('x-Ct')
    for k in c:
        print(k)
    print('')


def foo_0(*x, take_out=4, interval_min=30, init_volu=50):
	"""根据吸光度数据计算输出每一阶段的去除率"""
    foo(*x, interval_min=interval_min)

    total_take = 0
    for k in range(1, len(x) - 1):
        total_take += take_out * x[k] * 16.57527 / 1000 # 计算总取出质量(用于吸光度测试)
    left = init_volu * x[0] * 16.57527 / 1000 - total_take # 计算总供降解质量(=总质量-总取出质量)

	# 如初始体积记为V1=50ml,30min后取样4ml,变为V2=46ml,再过30min后再取样4ml,变为V3=42ml...
	# volume即存储每一阶段体系的体积,[V1,V2,V3...]
    volume = []  
    for i in range(len(x)-1):
        v = init_volu - take_out*i
        volume.append(v)

	# 如 0~30min内,体系体积50ml,随着降解进行,吸光度由0min时刻的A0减小为30min时刻的A1,
	# 此时0~30min内,因催化降解致浓度变化量为:△C1=(A0-A1)×k
    # 类似的,30~60min内,体系体积46ml,吸光度由30min时的A1减小为60min时的A2
    # 0~30min内,因催化降致浓度变化量为:△C2=(A1-A2)×k...
    # meta_c即存储每个阶段的催化降解致浓度变化量,[△C1,△C2,△C3...]
    meta_c = [] 
    for k in range(1, len(x)):
        c = (x[k-1] - x[k]) * 16.57527/1000
        meta_c.append(c)

	# 结合 volume 列表与 meta_c 列表,
	# V1×△C1=△m1,△m1即为第一阶段(0~30min)的(催化降解致)去除质量
	# remo即存储每一阶段的(催化降解致)去除质量,[△m1,△m2,△m3...]
    remo = []
    for i in range(len(volume)):
        remo_v = volume[i] * meta_c[i]
        remo.append(remo_v)

	# acc_remo存储时间累积降解质量[△m1,△m1+△m2,△m1+△m2+△m3...]
	# 其中元素分别对应着0~30min,0~60min,0~90min...的时间累积降解质量
    acc_remo = []
    for i in range(len(remo)):
        acc = 0
        for j in remo[0:i+1]:
            acc += j
        acc_remo.append(acc)

	# t时刻的去除率 = 时间累积降解质量 / 总供降解质量
    remo_rete = [v / left for v in acc_remo]
    corr_time = [interval_min * i for i in range(1, len(x))]

    print('y-removal_rate')
    for v in remo_rete:
        print(v)
    print('')
    print('x-corresponding_time')
    for v in corr_time:
        print(v)
    print('')
    print(left, total_take)  # 这里输出总共降解质量、总取出质量,方便进行后续的热力学、动力学模型计算

运行实例:

新建一个文件,输入下面两行代码:

from MyExperiment.LSVC_for_k_and_remo_rate import foo_0

foo_0(1.230, 0.640, 0.438, 0.282, 0.175, 0.107, 0.068)

运行结果:

y-Vt
0.32598
0.11161
0.08619
0.05912
0.03757
0.02155

x-Ct
15.49788
8.93407
5.9671
3.78745
2.33711
1.45034

y-removal_rate
0.537027597757227
0.7061821888880797
0.8254569285662273
0.8994757154299861
0.9415641156338744
0.9628631762906865

x-corresponding_time
30
60
90
120
150
180

0.9105127316400001 0.10886637335999999

对于大降解体系,以及高催化降解速率的体系,供测试的取液造成的误差很小,没有矫正的必要。但对于小降解体系,取样造成的误差不能忽略,尤其是在降解速率较慢的情况下,取样会减少总供给目标污染物质量,而负载催化剂含量不变,对体系降解速率可能会产生“加速”作用。

举例说明:
如吸光度组:1.223 0.728 0.555 0.427 0.33 0.246 0.183,作ln(c0/ct)~t 图,拟合得到速率常数为0.00915,算法矫正的体系拟合速率常数为0.00841,经计算(0.00915-0.00841)/ 0.00841≈0.08799,即未经矫正的系统相对于实际系统存在最高达到8.799%的误差。

转载请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值