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
- Coluna de Destilação concluído
- DWSIM 10.2.12 ou posterior
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), baseLiquid Volume. Em Bulk Sample Data, informe grau API41.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,320e360, 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íticasRiazi-Daubert (1985), fator acêntricoLee-Kesler (1976), viscosidadeAbbott (1971). - Step 7, Results: dê à corrente o nome
Distillate Feede clique Finalize.
O assistente adiciona os pseudocomponentes à simulação e coloca no fluxograma uma corrente com a composição deles.

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:
Naphthacomo destilado eLight Gas Oilcomo produto de fundo. - Side Draws:
KeroseneeDiesel. - Duties: crie as correntes de energia do condensador e do refervedor.
- Stream-Stage Associations: carga no estágio
11, querosene no estágio6, diesel no estágio11. - Side Draw Specs: as duas retiradas líquidas, querosene
83.5 mol/s, diesel90.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.

Aba Specifications:
- Condenser: Condenser Type
Total; especificaçãoReflux 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.

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.

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.

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.

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
- Script Python:
examples/advanced/09_distillate_curves_secondary_specs.py - Simulação pré-construída:
examples/saved/distillate_fractionation.dwxmz(a coluna da Parte 2, com uma utilidade em cada produto)
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
- 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 %? - 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ê. - 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?
- 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.