化工原理逐板计算法求解理论塔板数

导入所需模块
import numpy as np
import pandas as pd
import sympy
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

最末尾有个result字典,其中的参数均为全局变量

# 设计型计算,需要5个参数parameter = (xF,xD,xW,R,q)
parameter = [0.2,0.95,0.1, 2,0]
alpha = 4
qF = 100
xF,xD,xW,R,q = parameter 

这部分是用来计算R,如果已知R则在上面parameter中输入即可

# 补充部分,求R_min 饱和蒸汽进料
R_min = 1/(alpha - 1)*(alpha*xD/xF - (1-xD)/1-xF) - 1
R = R_min * 1.5
parameter = [xF,xD,xW,R,q]
print('R:{}'.format(R))
# q线方程
def yq(x):
    y = q/(q-1)*x -1/(q-1)*xF
    return y
# 平衡线方程
def yp(x):
    y = alpha*x / (1+(alpha-1)*x)
    return y
def xp(y):
    x = y/(alpha - (alpha -1)*y)
    return x
# 精馏段操作方程
def yj(x):
    y = R/(R+1)*x + xD/(R+1)
    return y
# 提馏段操作方程
#   需要先求解qD和qW,为此,使用sympy求解
A = sympy.Matrix([[1,1],[xD,xW]])
b = sympy.Matrix([qF,xF*qF])
qD,qW = A.solve(b)
qL = R*qD
#   提馏段操作方程
def yt(x):
    y = (qL + q*qF)/(qL + q*qF -qW)*x - qW/(qL + q*qF -qW)*xW
    return y

# 准备数据,q线,平衡线,精馏操作线,提馏操作线
x = np.linspace(0,1,50)
yq1 = yq(x)
yp1 = yp(x)
yj1 = yj(x)
yt1 = yt(x)

# 确定Q点
xq = ((R+1)*xF + (q-1)*xD)/(R+q)
yq = (xF*R + q*xD)/(R+q)

# 逐板计算,求解每个塔板的平衡情况
yn = [xD]
xn = []

while xp(yn[-1])>xW:
    xn.append(xp(yn[-1]))
    if xn[-1]>xq:
        yn.append(yj(xn[-1]))
    else:
        yn.append(yt(xn[-1]))
else:
    xn.append(xp(yn[-1]))
    print('N_T = {}'.format(len(xn)))


# 输出塔板上的平衡点,经过四舍五入的结果
yn_r = [round(i,3) for i in yn]
xn_r = [round(i,3) for i in xn]

print('塔板上的平衡点,经过四舍五入的结果:')
print('yn_r={}'.format(yn_r))
print('xn_r={}'.format(xn_r))

# 图解法计算理论塔板数的图示数据
xnt = [xD]
ynt = [xD]
for n,i in enumerate(xn):
        xnt.append(i)
        ynt.append(yn[n])
        xnt.append(i)
        if i >= xq:
            ynt.append(yj(i))
        else:
            ynt.append(yt(i))
# 画图
#   基础设置
fig,ax = plt.subplots(1,1,figsize = (9,9))
ax.set_xlim(0,1)
ax.set_ylim(0,1)

#   画图
ax.plot(x,x,ls=':',label='对角线') #画线
ax.plot(x,yq1,label='q线')
ax.plot(x,yp1,label='平衡线')
ax.plot(x,yj1,label='精馏操作线')
ax.plot(x,yt1,label='提馏操作线')
ax.plot(xn,yn,label='塔板操作平衡点',ls=':',marker='+',markersize=10)
ax.plot(xnt,ynt,label='图解法—理论塔板',ls=':')

ax.plot(xD,xD,marker='.',markersize=10) #画点
ax.plot(xW,xW,marker='.',markersize=10)
ax.plot(xq,yq,marker='.',markersize=10)

ax.annotate('W点',xy=(xW,xW),xytext=(xW+0.06,xW),arrowprops=dict(arrowstyle='->'))#画点的注释
ax.annotate('D点',xy=(xD,xD),xytext=(xD,xD-0.06),arrowprops=dict(arrowstyle='->'))

ax.legend()

fig.savefig('逐板计算法求理论塔板数.png',dpi=100,facecolor='#ffffff')

最后运行的结果

result参数

# 参数与结果
result = {
    'xF':xF,
    'xD':xD,
    'xW':xW,
    'q':q,
    'R':R,
    'qF':qF,
    'qD':qD,
    'qW':qW
}
print(result)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值