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

被折叠的 条评论
为什么被折叠?



