📅  最后修改于: 2023-12-03 15:41:02.065000             🧑  作者: Mango
石油分馏是一种通过加热和蒸馏来将石油中的不同化学物质分离的过程。这些化学物质的沸点不同,使得它们可以以不同的速率从沸炉的底部蒸发和冷凝回收。在石油分馏的过程中,石油中的化学物质根据其沸点的高低被分成了不同的“馏分”,包括乙烷、石脑油、汽油、柴油、航空煤油、柴机油等。
石油分馏过程通常分为以下几个步骤:
石油分馏是炼油工业的重要一环,在汽车、飞机、船只等交通工具的运行中发挥着关键作用。馏分的不同用途也有所不同,汽油用于车辆发动机,煤油则用于航空发动机。
在 Python 中,我们可以使用 NumPy 库来实现对石油分馏的模拟。具体实现方式可以参考以下代码片段:
import numpy as np
# 定义馏分的沸点
boiling_points = np.array([
20, 30, 40, 60, 80, 100, 120, 140, 160, 180,
200, 220, 240, 260, 280, 300, 320, 340, 360, 380,
400, 420, 440, 460, 480, 500, 520, 540, 560, 580,
600, 620, 640, 660, 680, 700, 720, 740, 760, 780,
800, 820, 840, 860, 880, 900, 920, 940, 960, 980,
1000, 1020, 1040, 1060, 1080, 1100, 1120, 1140, 1160, 1180,
1200, 1220, 1240, 1260, 1280, 1300, 1320, 1340, 1360, 1380,
1400, 1420, 1440, 1460, 1480, 1500, 1520, 1540, 1560, 1580,
1600, 1620, 1640, 1660, 1680, 1700, 1720, 1740, 1760, 1780,
1800, 1820, 1840, 1860, 1880, 1900, 1920, 1940, 1960, 1980, 2000
])
# 定义馏分的开始量
feed = np.array([
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
])
# 定义分馏塔的高度
n = 100
# 定义分馏塔的板数
trays = 25
# 定义每个馏分的馏出率
distillate_rate = np.array([
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0.1, 0.15, 0.2, 0.25, 0.3,
0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8,
0.85, 0.9, 0.95, 0.98, 0.99, 0.995, 0.9975, 0.9985, 0.999, 0.9995,
0.99975, 0.9999, 0.99995, 0.99999, 0.999995, 0.999999, 0.9999999, 0.99999999, 0.999999999, 0.9999999999,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
])
# 定义石油分馏的模拟
def simulate():
bottoms = feed
distillate = np.zeros(shape=(len(boiling_points)))
for i in range(n):
vapors = bottoms * distillate_rate
# 将管道中每一段长度化为1
flows = np.zeros(shape=(len(vapors)))
for j in range(len(vapors)):
flows[j] = vapors[j] / trays
# 计算下一层的流体
bottoms = np.zeros(shape=(len(flows)))
for j in range(len(flows)):
if j == 0:
bottoms[j] = flows[j+1]
elif j == len(flows)-1:
distillate[j] = flows[j]
bottoms[j] = feed[j] - flows[j]
else:
bottoms[j] = flows[j+1] + (1-distillate_rate[j])*flows[j]
distillate[j] += distillate_rate[j]*flows[j]
return distillate
# 输出结果
distillate = simulate()
for i in range(len(boiling_points)):
print("{:.1f}℃: {:.2f}%".format(boiling_points[i], distillate[i]*100))
从以上代码片段中可以看出,在 Python 中实现石油分馏需要借助 NumPy 库,同时需要定义一些重要的参数,如馏分的沸点、分馏塔的高度、分馏塔的板数等。通过对以上变量进行描述,我们可以在 Python 中实现对石油分馏的模拟,并输出各个馏分的份额。