📜  石油分馏(1)

📅  最后修改于: 2023-12-03 15:41:02.065000             🧑  作者: Mango

石油分馏

石油分馏是一种通过加热和蒸馏来将石油中的不同化学物质分离的过程。这些化学物质的沸点不同,使得它们可以以不同的速率从沸炉的底部蒸发和冷凝回收。在石油分馏的过程中,石油中的化学物质根据其沸点的高低被分成了不同的“馏分”,包括乙烷、石脑油、汽油、柴油、航空煤油、柴机油等。

过程

石油分馏过程通常分为以下几个步骤:

  1. 将原油加热至400-500℃,并将其蒸发。在这个温度下,原油中的大部分分子都变成了气体状态。
  2. 气体进入塔形容器,被冷凝成液体。这个容器被称为分馏塔,通常很高,足以容纳各种沸点不同的化学物质升高的蒸汽。
  3. 液体从塔的顶部开始流动,从温度最低的部分开始冷凝。液体随着高温区域向下移动,并在不同的高度处冷却和凝结成不同的液体馏分。
  4. 每个馏分从塔中的不同位置收集,并加工成不同的石油产品。
  5. 未被收集的底部液体流回沸炉重新蒸发。
应用

石油分馏是炼油工业的重要一环,在汽车、飞机、船只等交通工具的运行中发挥着关键作用。馏分的不同用途也有所不同,汽油用于车辆发动机,煤油则用于航空发动机。

代码实现

在 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 中实现对石油分馏的模拟,并输出各个馏分的份额。