Pular para conteúdo

Curvas de Destilação e Especificações Secundárias

Neste tutorial você vai fracionar um destilado de destilação direta em nafta, querosene, diesel e um gasóleo leve, conferir cada produto contra o pool para onde ele vai com a utilidade Distillation Curves e depois deixar a coluna encontrar as vazões de retirada lateral que colocam os pontos finais do querosene e do diesel onde você quer.

O que você vai aprender

  • Como caracterizar um corte de petróleo a partir da curva PEV com os seus próprios pontos de corte
  • Como a utilidade Distillation Curves informa as curvas PEV (TBP), ASTM D86, D1160, D2887 e EFV de uma corrente, com ponto de fulgor, densidades, viscosidades e índice de cetano
  • Como um ponto da curva vira uma propriedade da corrente que a planilha, um Adjust ou a coluna podem usar
  • Como as especificações secundárias convergem a coluna em qualidades de produto, e como escolher a variável que cada uma move

Pré-requisitos

Visão Geral do Processo

Uma refinaria vende produtos contra especificações escritas sobre as curvas de destilação e um punhado de propriedades: o ponto D86 95 % e a densidade de um diesel, o ponto de fulgor e o ponto de congelamento de um querosene de aviação. Por isso uma torre atmosférica ou de vácuo é operada para atender essas qualidades, e a razão de refluxo e as vazões de retirada são só as alavancas que as movem.

A carga aqui é a parte destilada de um petróleo médio (API perto de 33): tudo o que ferve até 420 °C, já separado do resíduo. A torre divide essa carga em quatro produtos:

Produto Sai da torre como Vai para
Nafta destilado de um condensador total reforma ou pool de gasolina
Querosene retirada lateral líquida querosene de aviação (Jet A-1)
Diesel retirada lateral líquida diesel automotivo (EN 590)
Gasóleo leve produto de fundo processamento posterior

O tutorial tem duas partes. Na primeira você resolve a torre com as vazões de retirada de um corte ideal e lê as curvas dos produtos. Na segunda você informa à coluna os pontos D86 95 % que quer para o querosene e para o diesel, e a coluna move as duas vazões de retirada até chegar neles.

graph LR
    F["Distillate Feed<br/>60 kg/s, 250 °C"] --> T["T-101<br/>20 estágios"]
    T --> N["Naphtha"]
    T --> K["Kerosene<br/>estágio 6"]
    T --> D["Diesel<br/>estágio 11"]
    T --> G["Light Gas Oil"]

Parâmetros Principais de Projeto

Parâmetro Valor
Pacote de propriedades Peng-Robinson (PR)
Carga 60 kg/s de destilado de destilação direta, 250 °C, 2 bar
Curva PEV da carga veja o passo 2 (base volume de líquido)
Pseudocomponentes 9, cortados em 80, 120, 160, 200, 240, 280, 320 e 360 °C
Coluna 20 estágios, condensador total, 1,5 bar no topo, 2,0 bar no fundo
Estágio da carga 11
Retiradas laterais querosene no estágio 6, diesel no estágio 11, ambas líquidas
Condensador razão de refluxo 3
Refervedor vazão de gasóleo leve 29,6 mol/s
Vazões de retirada (Parte 1) querosene 83,5 mol/s, diesel 90,3 mol/s
Alvos (Parte 2) querosene D86 95 % = 274 °C, diesel D86 95 % = 374 °C

As vazões da Parte 1 são as de um corte ideal: cada produto leva a vazão molar da carga que ferve dentro da sua faixa (querosene de 175 a 245 °C, diesel de 245 a 360 °C, gasóleo leve acima de 360 °C).

Passo a Passo na GUI Clássica

1. Configuração

File > New Chemical Process Model: deixe os compostos para depois (a caracterização cria os pseudocomponentes), escolha Peng-Robinson (PR) como pacote de propriedades e as unidades que preferir. Os valores abaixo estão em °C, bar, kg/s e mol/s.

2. Caracterize o destilado

Abra Tools > Petroleum Characterization (Distillation Curves).

  • Step 1, Available Curves: Boiling Point já vem marcado; deixe as outras curvas desmarcadas. Tipo de curva True Boiling Point (TBP) (ASTM D2892), base Liquid Volume. Em Bulk Sample Data, informe grau API 41.3.
  • Step 2, Experimental Data: digite a PEV do destilado:
% vol 0 7,1 14,3 28,6 42,9 57,1 71,4 85,7 100
T (°C) 36 75 110 160 210 262 312 362 420
  • Step 3, Data Plot: confira se a curva sobe sem saltos.
  • Step 4, Configure Pseudocomponents: escolha Define cut temperatures e informe 80, 120, 160, 200, 240, 280, 320 e 360, um por linha (Enter depois de cada um), na unidade de temperatura do fluxograma. O primeiro e o último pontos da curva ficam fora da lista. São os pontos de corte do script Python, então os pseudocomponentes dos dois caminhos cobrem as mesmas faixas.
  • Step 5, View Cuts: nove cortes.
  • Step 6, Methods and Correlations: massa molar Riazi (1986), temperatura e pressão críticas Riazi-Daubert (1985), fator acêntrico Lee-Kesler (1976), viscosidade Abbott (1971).
  • Step 7, Results: dê à corrente o nome Distillate Feed e clique Finalize.

O assistente adiciona os pseudocomponentes à simulação e coloca no fluxograma uma corrente com a composição deles.

Step 7 do assistente de curvas de destilação com os nove pseudocomponentes

O grau API define as densidades

O assistente estima a densidade relativa de cada corte e depois escala todas para que a mistura tenha o grau API informado. As densidades que a utilidade mostra mais adiante vêm dessas densidades relativas, então vale a pena acertar o grau API da carga.

3. Especifique a carga

Abra Distillate Feed e informe Temperature 250 °C, Pressure 2 bar e Mass Flow 60 kg/s. Mantenha a composição escrita pelo assistente.

4. Adicione a coluna

Adicione quatro correntes materiais chamadas Naphtha, Kerosene, Diesel e Light Gas Oil, e depois uma Distillation Column chamada T-101. No editor da coluna:

Aba General: Number of Stages 20, Condenser/Top Pressure 1.5 bar, Column Pressure Drop 0.5 bar, Steady-State Column Solver Wang-Henke (Bubble Point), Maximum Number of Iterations 200, Convergence Tolerance 0.001.

Aba Connections:

  • Feeds: Distillate Feed.
  • Products: Naphtha como destilado e Light Gas Oil como produto de fundo.
  • Side Draws: Kerosene e Diesel.
  • Duties: crie as correntes de energia do condensador e do refervedor.
  • Stream-Stage Associations: carga no estágio 11, querosene no estágio 6, diesel no estágio 11.
  • Side Draw Specs: as duas retiradas líquidas, querosene 83.5 mol/s, diesel 90.3 mol/s. A grade mostra as vazões na unidade de vazão molar do fluxograma: 300,8 e 325,2 kmol/h nas unidades padrão.

Stream-Stage Associations e Side Draw Specs da coluna

Aba Specifications:

  • Condenser: Condenser Type Total; especificação Reflux Ratio, 3.
  • Reboiler: especificação Product Molar Flow Rate, 29.6 mol/s.

Por que essas especificações

Com um condensador total e duas retiradas laterais a coluna tem quatro graus de liberdade. Aqui eles ficam com a razão de refluxo, a vazão de fundo e as duas vazões de retirada. A vazão de nafta sai do balanço global.

5. Resolva

Clique Solve. A coluna converge em poucos segundos, com carga térmica do condensador perto de 24 MW e do refervedor perto de 16 MW.

Fluxograma resolvido com a carga, a T-101 e os quatro produtos

6. Anexe a utilidade Distillation Curves a cada produto

Abra Kerosene, clique no botão Attach Utility (a estrela ao lado do nome do objeto) e escolha Attach Utility > Distillation Curves. A mesma utilidade também está em Utilities > Distillation Curves: na janela que abre, selecione Material Streams, Distillation Curves e a corrente Kerosene. A janela da utilidade abre com as entradas à esquerda e os resultados à direita:

  • Use the liquid phase only: desligado. Os produtos já são líquidos.
  • TBP basis: Liquid volume.
  • Percents distilled: a lista padrão (0, 5, 10, 30, 50, 70, 90, 95 e 100) basta aqui.
  • D1160 pressure e EFV pressure: os valores padrão.
  • EFV: Riazi-Daubert correlation (from D86). A outra opção, Flash with the property package, é mais rigorosa e mais lenta.

Clique Calculate. A aba Chart traça juntas as curvas TBP, D86, D1160, D2887 e EFV; a aba Table lista as curvas ponto a ponto; a grade de propriedades abaixo lista as propriedades do produto. Copy data copia as tabelas para a área de transferência, prontas para uma planilha.

Utilidade Distillation Curves do querosene

Repita para os outros três produtos. Depois, o mesmo botão Attach Utility lista as utilidades anexadas à corrente e as reabre.

De onde vêm as curvas

A utilidade monta a curva PEV a partir dos compostos da corrente: cada pseudocomponente ocupa a sua parcela do volume de líquido padrão e ferve no seu ponto de ebulição normal no meio dessa parcela. As curvas D86, D2887 e D1160 saem da PEV pelos procedimentos do API Technical Data Book. Uma retirada lateral leva pequenas quantidades dos cortes mais leves e mais pesados, que aparecem como caudas nas pontas da sua curva PEV; a conversão para D86 suaviza essas caudas, como faz o ensaio de laboratório.

7. Confira os produtos contra os seus pools

Com as quatro utilidades no lugar, compare o querosene com o Jet A-1 e o diesel com a EN 590:

Produto Propriedade Valor Limite Resultado
Querosene ponto de fulgor (vaso fechado) 50,5 °C no mínimo 38 °C atende
Querosene D86 10 % 176,4 °C no máximo 205 °C atende
Querosene ponto final D86 300,0 °C no máximo 300 °C no limite
Querosene densidade a 15 °C 807,2 kg/m³ 775 a 840 kg/m³ atende
Querosene ponto de congelamento −44,7 °C no máximo −47 °C não atende
Diesel ponto de fulgor 99,8 °C acima de 55 °C atende
Diesel D86 95 % 378,0 °C no máximo 360 °C não atende
Diesel densidade a 15 °C 855,9 kg/m³ 820 a 845 kg/m³ não atende
Diesel índice de cetano calculado (ASTM D4737) 52,4 no mínimo 46 atende

Os valores são os do script Python. Os cortes do assistente estimam a densidade relativa com uma correlação diferente da do script, então espere números a poucos graus e poucos kg/m³ destes.

O diesel está pesado demais para a EN 590. Um corte mais leve baixa o seu ponto D86 95 % e a sua densidade, e é isso que a Parte 2 faz.

8. Use um ponto da curva como propriedade da corrente

Todo resultado de uma utilidade anexada é também uma propriedade da sua corrente, com o nome da utilidade e da linha da tabela, por exemplo DistillationCurves1: D86 95% ou DistillationCurves1: Flash Point (Closed Cup). Você pode lê-la na planilha, colocá-la na tabela de propriedades de uma corrente, variá-la numa análise de sensibilidade ou deixar um Adjust alcançar um valor dela movendo uma vazão de retirada.

Um Adjust trata de uma qualidade por vez e resolve o fluxograma inteiro a cada passo. Quando a qualidade é de um produto da coluna e a alavanca é da mesma coluna, uma especificação secundária faz o trabalho dentro da própria coluna.

9. Adicione as especificações secundárias

Abra T-101, vá em Specifications e selecione a aba Secondary. Clique Add duas vezes e preencha as duas linhas:

Campo Linha 1 Linha 2
Active marcado marcado
Name Kerosene D86 95% Diesel D86 95%
Product Kerosene Diesel
Property D86 95% D86 95%
Target 274 °C 374 °C
Tolerance 0.2 °C 0.2 °C
Variable Side draw rate: Kerosene Side draw rate: Diesel
Min 42 mol/s 45 mol/s
Max 125 mol/s 135 mol/s

Os limites mantêm cada retirada entre metade e uma vez e meia o seu valor de partida.

Aba Secondary com as duas especificações

Resolva de novo. A coluna agora roda dentro de um laço externo: mede como os dois pontos finais respondem às duas vazões de retirada, dá passos de Newton nas vazões e resolve a coluna inteira a cada passo. A coluna Calculated da grade mostra onde cada propriedade terminou, e o log do fluxograma mostra um aviso quando um alvo não é atingido.

Aba Secondary depois da solução, com os pontos finais calculados

10. Compare as duas soluções

Grandeza Corte ideal (Parte 1) Especificações secundárias (Parte 2)
Retirada de querosene 83,5 mol/s 74,2 mol/s
Retirada de diesel 90,3 mol/s 81,9 mol/s
Nafta 16,0 kg/s, D86 95 % 186,4 °C 18,5 kg/s, D86 95 % 198,1 °C
Querosene 13,7 kg/s, D86 95 % 269,7 °C 12,7 kg/s, D86 95 % 273,9 °C
Diesel 21,1 kg/s, D86 95 % 378,0 °C 19,5 kg/s, D86 95 % 374,1 °C
Gasóleo leve 9,2 kg/s 9,3 kg/s
Ponto de fulgor do querosene 50,5 °C 58,0 °C
Densidade do diesel a 15 °C 855,9 kg/m³ 857,9 kg/m³
Índice de cetano do diesel 52,4 53,2

Retiradas menores empurram as suas frações leves para cima na coluna. A nafta cresce e fica mais pesada, o querosene perde a frente da curva (o ponto de fulgor sobe 7,5 °C) e ganha no final, e o diesel cede parte do seu final pesado ao gasóleo leve. A densidade do diesel quase não se move: com este petróleo, ela só entra na EN 590 com um corte de diesel mais leve ou com outro petróleo.

Escolhendo Especificações e Variáveis

Uma variável por especificação: cada especificação secundária move uma variável livre da coluna: o valor da especificação do condensador, o valor da especificação do refervedor ou a vazão de uma retirada lateral. Duas especificações não podem dividir a mesma variável, e uma coluna com duas retiradas laterais tem no máximo quatro.

Junte cada propriedade com a alavanca que a move: o ponto D86 95 % de uma retirada lateral responde mais à sua própria vazão, já que uma retirada maior alcança mais fundo o líquido pesado. Ligar o ponto final do diesel à retirada de querosene trabalharia contra uma resposta fraca e instável.

Deixe uma vazão livre no balanço: a massa da carga sai pelos quatro produtos. Com a vazão de fundo e as duas retiradas fixas, o destilado também fica fixo, e mover uma retirada muda outro produto na mesma quantidade. Aqui o condensador é especificado pela razão de refluxo, então a nafta absorve as mudanças das duas retiradas.

Cuidado com respostas não monótonas: uma propriedade pode passar por um mínimo quando a sua variável cresce (nesta torre, o ponto final do diesel contra a vazão de fundo tem um mínimo perto de 375 °C). Um alvo do outro lado de um mínimo assim não tem solução, e o laço para no ponto mais próximo que encontra, com um aviso. Parta de vazões perto da resposta e dê limites que mantenham a variável de um lado só.

Resultados e Validação

Resultados esperados

Com as retiradas do corte ideal a coluna converge com carga térmica do condensador perto de 24 MW e do refervedor perto de 16 MW. Com as especificações secundárias o laço externo leva 2 iterações e 6 soluções da coluna, o ponto D86 95 % do querosene chega a 273,9 °C e o do diesel a 374,1 °C, e as duas especificações aparecem como atendidas.

Os números acima vêm do script Python, que monta os pseudocomponentes a partir dos mesmos pontos de corte. O mesmo fluxograma roda como teste do repositório do DWSIM e está publicado na biblioteca de casos do DWSIM (crude-distillation/straight-run-distillate-curves e straight-run-distillate-secondary-specs).

Automatizando Este Tutorial

Arquivos neste repositório

import math
import os
import sys

import pythonnet
pythonnet.load("netfx")              # DWSIM is a .NET Framework application
import clr  # noqa: E402

DWSIM_BIN = os.environ.get("DWSIM_BIN")
if not DWSIM_BIN:
    raise SystemExit("Set DWSIM_BIN to the DWSIM installation folder before running.")
for sub in ("", "unitops", "ppacks", "extenders"):
    sys.path.append(os.path.join(DWSIM_BIN, sub))
clr.AddReference("DWSIM.Automation")
clr.AddReference("DWSIM.Automation.FluentAPI")
clr.AddReference("DWSIM.Thermodynamics")
clr.AddReference("DWSIM.UnitOperations")

from System import Array, Double  # noqa: E402
from DWSIM.Automation.FluentAPI import CompoundExtensions, Flowsheet, PropertyPackages, Q  # noqa: E402
from DWSIM.Thermodynamics.Utilities.PetroleumCharacterization.Methods import PropertyMethods  # noqa: E402
from DWSIM.Thermodynamics.Utilities.PetroleumProperties import (  # noqa: E402
    DistillationCurves, DistillationCurvesUtility, EFVCalculationMethod)
from DWSIM.UnitOperations.UnitOperations.Auxiliary.SepOps import ColumnSecondarySpec  # noqa: E402

# Crude TBP (vol % distilled, C) and the cut points of the distillate's pseudocomponents (C)
CRUDE_VOL = [0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 100]
CRUDE_TBP = [36, 75, 110, 160, 210, 262, 312, 362, 420, 490, 580, 650, 760]
CUTS = [36, 80, 120, 160, 200, 240, 280, 320, 360, 420]
WATSON_K = 11.8


def vol_at(t_c):
    """Volume percent of the crude distilled at t_c (linear between the TBP points)."""
    for i in range(1, len(CRUDE_TBP)):
        if t_c <= CRUDE_TBP[i]:
            return CRUDE_VOL[i - 1] + (CRUDE_VOL[i] - CRUDE_VOL[i - 1]) * \
                (t_c - CRUDE_TBP[i - 1]) / (CRUDE_TBP[i] - CRUDE_TBP[i - 1])
    return 100.0


# --- 1. Pseudocomponents and property package -------------------------------------------------
fs = Flowsheet.Create("DistillateFractionation")
cuts = []                                    # (name, NBP in C, volume share, SG)
x_vol = Array[Double](CRUDE_VOL)
y_tbp = Array[Double](CRUDE_TBP)
for lo, hi in zip(CUTS[:-1], CUTS[1:]):
    share = vol_at(hi) - vol_at(lo)
    # the cut boils at the TBP of the middle of its volume; SG from a constant Watson K
    tb_c = DistillationCurves.InterpolateMonotone(x_vol, y_tbp, (vol_at(hi) + vol_at(lo)) / 2)
    tb = tb_c + 273.15
    sg = (1.8 * tb) ** (1.0 / 3.0) / WATSON_K
    name = f"NBP {tb_c:.0f}C"
    fs = CompoundExtensions.WithPseudoComponent(fs, name, Q.Kelvin(tb), sg, PropertyMethods.MW_Riazi(tb, sg))
    cuts.append((name, tb_c, share, sg))
fs = fs.WithPropertyPackage(PropertyPackages.PengRobinson)

# --- 2. Feed: 60 kg/s of distillate at 250 C and 2 bar ------------------------------------------
mass_total = sum(share * sg for _, _, share, sg in cuts)
feed = fs.AddMaterialStream("Distillate Feed").At(Q.Kelvin(250.0 + 273.15), Q.Pascal(200000.0))
for name, _, share, sg in cuts:
    feed.SetCompoundMassFlow(name, 60.0 * share * sg / mass_total)

# --- 3. Column: 20 stages, total condenser, two liquid side draws ------------------------------
naphtha = fs.AddMaterialStream("Naphtha")
kerosene = fs.AddMaterialStream("Kerosene")
diesel = fs.AddMaterialStream("Diesel")
gasoil = fs.AddMaterialStream("Light Gas Oil")
qc = fs.AddEnergyStream("Condenser Duty")
qr = fs.AddEnergyStream("Reboiler Duty")

# stage numbers count from 0 at the condenser: 10 is the eleventh stage of the column editor
tower = (fs.AddDistillationColumn("T-101")
         .WithNumberOfStages(20)
         .WithFeed(feed, 10)
         .WithDistillate(naphtha)
         .WithBottoms(gasoil)
         .WithSideDraw(kerosene, 5, Q.MolPerSecond(60.0))
         .WithSideDraw(diesel, 10, Q.MolPerSecond(60.0))
         .WithCondenserDuty(qc)
         .WithReboilerDuty(qr)
         .WithTopPressure(Q.Pascal(150000.0))
         .WithColumnPressureDrop(Q.Pascal(50000.0))
         .WithCondenserSpec("Reflux Ratio", 3.0)
         .WithSolvingMethod("Wang-Henke (Bubble Point)"))
col = tower.Object
col.MaxIterations = 200
col.ExternalLoopTolerance = 1e-3
col.InternalLoopTolerance = 1e-3

# Solve the feed, then give the bottoms and the two draws the feed's molar flow of an ideal cut:
# light gas oil above 360 C, kerosene from 175 to 245 C, diesel from 245 to 360 C.
fs.TrySolve()
feed_flows = {c.Name: c.MolarFlow for c in feed.Object.Phases[0].Compounds.Values}


def cut_flow(lo, hi):
    return sum(feed_flows[name] for name, tb_c, _, _ in cuts if lo <= tb_c < hi)


def side_draw(stream):
    return [s for s in col.MaterialStreams.Values if s.StreamID == stream.Object.Name][0]


col.SetReboilerSpec("Product_Molar_Flow_Rate", cut_flow(360, 2000), "mol/s")
side_draw(kerosene).FlowRate.Value = cut_flow(175, 245)
side_draw(diesel).FlowRate.Value = cut_flow(245, 360)
print(f"Ideal-cut rates: light gas oil {cut_flow(360, 2000):.1f}, kerosene {cut_flow(175, 245):.1f}, "
      f"diesel {cut_flow(245, 360):.1f} mol/s")
fs.Solve()
print(f"Condenser duty {qc.EnergyFlowKW / 1000:.1f} MW, reboiler duty {qr.EnergyFlowKW / 1000:.1f} MW")

# --- 4. A Distillation Curves utility on each product --------------------------------------------
products = [naphtha, kerosene, diesel, gasoil]
utilities = []
for i, p in enumerate(products):
    util = DistillationCurvesUtility()
    util.ID = i + 1
    util.Name = "DistillationCurves1"
    util.AttachedTo = p.Object
    # EFV from the Riazi-Daubert correlation: the flash method is slower and not needed here
    util.SetPropertyValue(DistillationCurvesUtility.KeyEFVMethod, int(EFVCalculationMethod.Correlation))
    p.Object.AttachedUtilities.Add(util)
    utilities.append(util)


def value_c(util, prop):
    """A temperature result of a utility, in C (NaN when the utility has no result)."""
    if util.LastResults is None:
        return math.nan
    return DistillationCurvesUtility.GetValueSI(util.LastResults, prop) - 273.15


def report(title):
    print(f"\n{title}")
    print(f"{'Product':<14}{'kg/s':>7}{'D86 10%':>9}{'D86 50%':>9}{'D86 95%':>9}{'D86 FBP':>9}"
          f"{'Flash':>8}{'d15':>8}{'CCI':>7}{'Freeze':>8}")
    for p, util in zip(products, utilities):
        util.Update()
        pr = util.LastResults.Properties
        print(f"{p.Object.GraphicObject.Tag:<14}{p.MassFlowKgPerSecond:7.2f}"
              f"{value_c(util, 'D86 10%'):9.1f}{value_c(util, 'D86 50%'):9.1f}"
              f"{value_c(util, 'D86 95%'):9.1f}{value_c(util, 'D86 100%'):9.1f}"
              f"{pr.FlashPointClosedCup - 273.15:8.1f}{pr.Density15C:8.1f}"
              f"{pr.CetaneIndexD4737:7.1f}{pr.FreezingPoint - 273.15:8.1f}")


report("Products with the draws at the ideal cut (C, kg/m3)")

# --- 5. Secondary specifications: kerosene and diesel D86 95 % points --------------------------
k0 = side_draw(kerosene).FlowRate.Value
d0 = side_draw(diesel).FlowRate.Value
specs = []
for product, target_c, draw0 in ((kerosene, 274.0, k0), (diesel, 374.0, d0)):
    spec = ColumnSecondarySpec()
    spec.Name = product.Object.GraphicObject.Tag + " D86 95%"
    spec.ProductStreamID = product.Object.Name
    spec.PropertyName = "D86 95%"
    spec.TargetValue = target_c + 273.15                      # SI: K
    spec.Tolerance = 0.2                                      # K
    spec.ManipulatedVariable = ColumnSecondarySpec.ManipulatedVariableType.SideDrawRate
    spec.ManipulatedStreamID = product.Object.Name            # each draw moves its own end point
    spec.MinValue = 0.5 * draw0                               # mol/s
    spec.MaxValue = 1.5 * draw0
    col.SecondarySpecs.Add(spec)
    specs.append(spec)

fs.Solve()

print("\nSecondary specifications log:")
for line in col.SecondarySpecsLog:
    print("  " + line)
for spec in specs:
    print(f"{spec.Name}: target {spec.TargetValue - 273.15:.1f} C, calculated {spec.CalculatedValue - 273.15:.1f} C, "
          f"draw {spec.ManipulatedValue:.1f} mol/s, converged {spec.Converged}")
print(f"Kerosene draw {k0:.1f} -> {specs[0].ManipulatedValue:.1f} mol/s, "
      f"diesel draw {d0:.1f} -> {specs[1].ManipulatedValue:.1f} mol/s")

report("Products with the secondary specifications (C, kg/m3)")

O resultado pode variar

Os resultados dependem da qualidade do raciocínio do LLM e da precisão no uso das ferramentas. Sempre confira se a simulação corresponde à sua intenção antes de confiar nos números.

No Assistente do DWSIM, monte a seguinte simulação:

- Pacote de propriedades Peng-Robinson
- Nove pseudocomponentes de petróleo a partir desta curva PEV de um
  destilado de destilação direta (% vol de líquido / °C): 0/36, 7,1/75,
  14,3/110, 28,6/160, 42,9/210, 57,1/262, 71,4/312, 85,7/362, 100/420,
  cortados em 80, 120, 160, 200, 240, 280, 320 e 360 °C, grau API 41,3
- Uma corrente "Distillate Feed" com essa composição, 60 kg/s, 250 °C,
  2 bar
- Uma coluna de destilação "T-101" com 20 estágios, condensador total a
  1,5 bar, perda de carga de 0,5 bar, carga no estágio 11, destilado
  "Naphtha", fundo "Light Gas Oil", retiradas laterais líquidas
  "Kerosene" (estágio 6, 83,5 mol/s) e "Diesel" (estágio 11, 90,3 mol/s),
  razão de refluxo 3 e vazão de fundo de 29,6 mol/s, solver Wang-Henke
  com tolerâncias de 0,001
- Resolva, anexe uma utilidade Distillation Curves a cada produto e
  informe os pontos D86 10, 50 e 95 %, o ponto de fulgor e a densidade a
  15 °C de cada um
- Depois adicione duas especificações secundárias à coluna: D86 95 % do
  querosene em 274 °C movendo a retirada de querosene, D86 95 % do diesel
  em 374 °C movendo a retirada de diesel, tolerância de 0,2 °C cada;
  resolva de novo e informe as novas vazões de retirada e as
  propriedades dos produtos

Exercícios

  1. Troque a especificação do querosene por um ponto de fulgor de 60 °C (Flash Point (Closed Cup)) movido pela retirada de querosene. Quanto querosene você perde, e o que acontece com o seu ponto D86 95 %?
  2. Leve a densidade do diesel a 845 kg/m³ (Density @ 15 C) com a retirada de diesel. Existe uma vazão que faz isso? Veja no log onde o laço parou e explique por quê.
  3. Adicione uma terceira especificação: D86 95 % da nafta em 190 °C, movida pela razão de refluxo (o valor da especificação do condensador). A coluna ainda converge em poucas iterações?
  4. Troque o método EFV da utilidade do diesel para o cálculo de flash e compare a curva EFV com a da correlação. Onde elas mais diferem?

Leitura Complementar

  • API Technical Data Book, Petroleum Refining, 6ª ed. (1997): procedimentos 3A1.1, 3A2.1 e 3A3.1 (conversões entre curvas de destilação) e capítulo 2 (propriedades de produtos)
  • M. R. Riazi. (2005). Characterization and Properties of Petroleum Fractions. ASTM Manual MNL50
  • ASTM D86, Standard Test Method for Distillation of Petroleum Products and Liquid Fuels at Atmospheric Pressure
  • ASTM D4737, Standard Test Method for Calculated Cetane Index by Four Variable Equation
  • R. N. Watkins. (1979). Petroleum Refinery Distillation, 2ª ed. Gulf Publishing
  • Guia do Usuário do DWSIM: a utilidade Distillation Curves e as especificações secundárias da coluna de destilação rigorosa

Próximos Passos

Agora você sabe ler a curva de destilação de um produto e fazer a coluna atingir uma qualidade de produto diretamente. Continue na Trilha de Funcionalidades para explorar TEA, ACV e o Assistente de IA.