Pular para conteúdo

Reatores e Trocadores em Dinâmica

Neste tutorial você abre três samples dinâmicos distribuídos com o DWSIM na GUI Clássica, um CSTR, um PFR e um trocador casco-tubo, e lê o que a configuração dinâmica deles acrescenta aos objetos de regime permanente: um holdup de reação com nível, um trocador com volumes e condutâncias em cada lado, e a carga térmica como o botão que dirige a corrida. As páginas anteriores montaram tudo do zero; esta é sobre ler um flowsheet que outra pessoa preparou, que é a maior parte do uso de um simulador dinâmico.

O que você vai aprender

  • Quais propriedades dinâmicas um reator e um trocador carregam (volume de holdup, nível, massa térmica de parede, condutância de vazão, reset) e o que cada uma faz com a resposta
  • Como um slider de entrada ligado a uma corrente de energia permite mover uma carga térmica enquanto o integrador roda
  • Como ler o Dynamics Manager de um sample antes de apertar Run: integrador, variáveis monitoradas, eventos e estado inicial

Pré-requisitos

Visão Geral do Processo

Três flowsheets da lista Samples, cada um já preparado para o modo dinâmico:

  1. Dynamic Simulation - CSTR: carbonilação de metanol a ácido acético (CH3OH + CO → CH3COOH, cinética, Arrhenius) num CSTR adiabático de 100 m³ a 28 bar, alimentado com 63 kg/s por uma válvula, com uma corrente de energia de 3000 kW num slider de entrada. Monitorados: conversão de ácido acético e temperatura do reator. Integrador de 1 s, 10 min.
  2. Dynamic Simulation - PFR: hidratação de óxido de etileno a etilenoglicol num PFR adiabático de 1 m³ (1,2 m de comprimento, 20 seções), 1000 kg/h de carga a 55 °C, corrente de energia num slider, gráficos dos perfis de concentração e temperatura. Integrador de 1 s, 10 min.
  3. Dynamic Simulation - Heat Exchanger: 0,008 kg/s de metano a 70 °C e 10 bar resfriados por 0,1 kg/s de água a 25 °C num trocador casco-tubo em rating (46 m², U 223 W/m²K), quatro válvulas Kv, um PID PID-01 mantendo a pressão de saída do gás em 8 atm pela válvula de saída de gás, um conjunto de eventos ES1 que sobe a temperatura de entrada do gás para 110, 140 e 180 °C em 1, 2 e 5 min, e um estado inicial guardado St2. Monitoradas: as temperaturas de saída quente e fria do trocador. Integrador de 1 s, 10 min.

Diagrama de Fluxo do Processo

graph LR
    F["Feed<br/>63 kg/s, 35 bar"] --> V1["V-01<br/>Kv 615"]
    V1 --> R["CSTR-01<br/>100 m³, adiabático"]
    E["e1<br/>3000 kW (slider)"] -.-> R
    R --> V2["V-02<br/>Kv 616"]
    V2 --> P["products"]
graph LR
    GI["GAS IN<br/>70 °C, 10 bar"] --> V2["V-02"] --> HE["HE-012<br/>casco-tubo<br/>46 m²"]
    CI["CW IN<br/>25 °C, 3 bar"] --> V1["V-01"] --> HE
    HE -->|gás| V3["V-03<br/>(PID-01)"] --> GO["GAS OUT<br/>4 bar"]
    HE -->|água| V4["V-04"] --> CO["CW OUT"]

Parâmetros de Projeto

Sample Holdup e dinâmica Botão Monitorado
CSTR Volume 100 m³, altura 1 m, adiabático, inicializar pela entrada, reset do conteúdo carga de e1 (slider IN-009) conversão de ácido acético (%), temperatura do reator (°C)
PFR Volume 1 m³, 20 seções, adiabático, reset do conteúdo carga de Energy (slider IN-009) perfis de concentração e temperatura (gráficos)
Trocador de calor 0,05 m³ por lado, condutância de vazão 0,01 por lado, inicializar pelas entradas, pressão mínima 1 atm temperatura de GAS IN (eventos), sliders nas duas vazões de entrada temperaturas de saída quente e fria (°C), pressões dos dois lados (gauges)

Passo a Passo na GUI Clássica

1. Abrir o sample do CSTR e ler a aba Dynamics

File > Samples, Dynamic Simulation - CSTR. Dê dois cliques em CSTR-01, aba Dynamics. Além dos 100 m³ de volume ele tem uma Height, um Liquid Level (o holdup é um nível, o espaço de vapor acima dele é o resto do volume), uma Operating Pressure, uma Minimum Pressure, Initialize using Inlet Stream e Reset Contents. Um reator em modo dinâmico é um vaso que reage: o nível e a pressão vêm dos balanços de massa e energia do holdup, e a taxa de reação da composição e da temperatura do holdup.

2. Rodar e mover a carga térmica

Integrator Controls, Sch1, Run. A reação é exotérmica e o reator adiabático: em dez minutos a temperatura sobe de 55,9 para 71,0 °C e a conversão do ácido acético se acomoda perto de 1,05 %. Arraste o slider IN-009 (ligado à corrente de energia e1) durante a corrida, ou entre corridas. De 3000 para 6000 kW a temperatura sobe mais 16 K, até 87,0 °C, e a conversão só sobe enquanto a temperatura sobe (1,49 % aos 2 min) e volta a 1,06 % aos 10 min: neste sample a carga térmica mexe muito mais na temperatura do que na conversão. O gráfico CHART1 desenha as duas variáveis monitoradas contra o tempo.

O sample do CSTR com o slider de carga térmica

3. Abrir o sample do PFR

Dynamic Simulation - PFR. Dê dois cliques em PFR-001, aba Dynamics: Reset Contents e Max Sections (20). Um reator tubular em modo dinâmico é uma cadeia de holdups pequenos, um por seção; os perfis de concentração e temperatura ao longo do tubo são o que os dois gráficos desenham. Rode Sch1: a saída fica na temperatura do regime permanente, porque o perfil em repouso é o do regime permanente. Mova o slider de energia: os perfis se deslocam, e a temperatura de saída acompanha numa rampa que dura um tempo de residência (cerca de quatro minutos na vazão de projeto), porque o conteúdo avança uma seção a cada tempo de residência sobre o número de seções e a carga entra repartida pelas seções como calor.

4. Abrir o sample do trocador

Dynamic Simulation - Heat Exchanger. Dê dois cliques em HE-012, aba Dynamics: Volume for Hot Fluid e Volume for Cold Fluid (0,05 m³ cada), Hot Fluid Flow Conductance e Cold Fluid Flow Conductance (0,01 cada), Hot Side Pressure e Cold Side Pressure, Initialize using Inlet Streams. Cada lado do trocador é um holdup com a própria pressão; a condutância é o que transforma a diferença de pressão entre entrada e saída em vazão, o Kv do próprio trocador. Na aba principal o trocador está no modo Shell and Tube Rating com a geometria, então o U de 223 W/m²K é calculado, e a corrida o recalcula conforme as vazões mudam.

Massa térmica de parede

Aquecedores, resfriadores e trocadores carregam mais duas propriedades dinâmicas, Wall Thermal Mass (J/K) e Wall Temperature. Em zero a temperatura de saída segue a carga de imediato; com um valor real (algumas centenas de quilojoules por kelvin para um casco-tubo pequeno) o metal precisa esquentar antes, e a saída atrasa em relação à carga por uma constante de tempo igual à massa da parede sobre o produto de vazão e calor específico. Deixe em zero para ver o processo sem o metal, defina para ver o equipamento.

5. Ler a malha e os eventos

PID-01 mantém a pressão de MSTR-002, a corrente de saída quente, em 8 atm movendo V-03; é de ação reversa com Kp 10, Ki 2 e Kd 2. O conjunto de eventos ES1 põe a temperatura de GAS IN em 110 °C em 1 min, 140 °C em 2 min e 180 °C em 5 min. O schedule Sch1 parte do estado guardado St2.

6. Rodar

Integrator Controls, Sch1, Run: dez minutos a 1 s. As monitoradas HotTemp e ColdTemp são as temperaturas de saída do gás e da água; os gauges PI-01 e PI-02 mostram as pressões dos dois lados. Conforme o gás entra mais quente, a saída de gás sobe com ele e a saída de água sobe um pouco, o U do trocador muda com as propriedades do gás, e o PID-01 move a V-03 para manter o lado quente em 8 atm.

Resultados e Validação

Sample O que observar Direção
CSTR, mais carga em e1 temperatura do reator e conversão de ácido acético as duas sobem; o aumento de temperatura ao longo do reator cresce
CSTR, carga a zero temperatura se acomoda no valor adiabático definido pela carga e pelo calor de reação
PFR, mais carga perfil de temperatura ao longo do tubo, temperatura de saída o perfil sobe; a saída sobe em rampa ao longo de cerca de um tempo de residência
Trocador, degraus em GAS IN temperatura de saída do gás, abertura da V-03 a saída segue cada degrau em menos de um minuto; a V-03 se move para manter 8 atm

Resultados esperados

Estes samples se leem de forma qualitativa: os números dependem das posições dos sliders e de onde a corrida é parada. As conferências que importam são a forma de cada resposta, o atraso da saída do PFR em relação à carga, e a malha de pressão do trocador mantendo 8 atm durante os degraus de temperatura.

Entendendo os Resultados

Um reator em modo dinâmico difere do seu eu de regime permanente numa coisa: ele tem inventário. O CSTR de regime permanente encontra a composição que faz a taxa de reação casar com a vazão; o CSTR dinâmico parte do que estiver no vaso e caminha para essa composição na taxa que o inventário permite, que é o tempo de residência. O PFR faz o mesmo seção por seção, e a saída dele responde a uma mudança na entrada só depois de a mudança percorrer o tubo. O trocador tem dois inventários pequenos e uma parede; as temperaturas dele respondem em segundos, as pressões em fração de segundo, e são as pressões que as condutâncias e as válvulas de saída precisam manter sensatas.

Ler um flowsheet preparado é uma habilidade própria. Antes de apertar Run: quais correntes são as fronteiras e o que elas mantêm; quais objetos têm volume e em que nível começam; qual schedule está ativo, que estado ele restaura, que eventos carrega; quais variáveis estão monitoradas. Dez minutos no Dynamics Manager poupam uma hora tentando entender o que um gráfico mostra.

Reset Contents

Todo holdup tem uma marca Reset Contents: no próximo passo de corrida o holdup é descartado e refeito como numa primeira corrida (veja Initialize using Inlet Stream); o PFR refaz o conteúdo das seções pela corrente de entrada. Uma corrida do estado atual a obedece uma vez e a limpa; uma corrida a partir de um estado guardado segue a marca que o estado guardou. Use quando uma corrida anterior deixou um vaso num estado que você não quer carregar adiante.

Automatizando Este Tutorial

Arquivos neste repositório

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.UnitOperations")

from DWSIM.Automation.FluentAPI import Flowsheet, Q

# the samples ship in the "samples" folder of the DWSIM installation; DWSIM_SAMPLES overrides it
samples = os.environ.get("DWSIM_SAMPLES", os.path.join(DWSIM_BIN, "samples"))

# the heat exchanger sample: run its schedule from the stored state St2
fs = Flowsheet.Load(os.path.join(samples, "Dynamic Simulation - Heat Exchanger.dwxmz"))
result = fs.RunDynamics("Sch1").Execute()
print(result.Completed, result.Steps)
for name in ("HotTemp", "ColdTemp"):
    s = result.GetSeries(name)
    print(f"{name}: start {s.Initial:.1f} C, end {s.Final:.1f} C, min {s.Min:.1f}, max {s.Max:.1f}")

# the CSTR sample: run as it ships, then again with a duty step scheduled as an event
fs = Flowsheet.Load(os.path.join(samples, "Dynamic Simulation - CSTR.dwxmz"))
fs.Solve()
base = fs.RunDynamics("Sch1").FromCurrentState(True).Execute()
print("base run:", base.Completed, base.GetSeries("Temperature").Final)
fs.Dynamics.WithHistorian(True, 5000)
fs.Dynamics.StoreCurrentStateAs("Base")
(fs.Dynamics.DefineEventSet("Duty")
   .AddStepChange("e1", "PROP_ES_0", 6000.0, Q.Seconds(120.0), "kW", "duty step"))
(fs.Dynamics.DefineSchedule("DutyStep").WithIntegrator("Int1")
   .WithEventSet("Duty").WithInitialState("Base").MakeCurrent())
r = fs.RunDynamics("DutyStep").Execute()
print("duty step:", r.Completed, r.GetSeries("Temperature").Final, r.GetSeries("Acetic Acid Conversion").Final)

Abra cada sample com dwsim.flowsheet.open, liste seus schedules e variáveis monitoradas com as ferramentas dwsim.dynamics.*, rode o schedule e leia as séries; mude a carga com dwsim.unitop.set na corrente de energia entre corridas.

A saída pode variar

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

Abra o sample do DWSIM "Dynamic Simulation - Heat Exchanger" via servidor MCP.
Liste seus integradores, schedules, conjuntos de eventos, estados guardados e
variáveis monitoradas. Rode o schedule "Sch1" e informe as temperaturas de saída
quente e fria no início, em 1,5, 3 e 6 minutos, e no fim, junto com a abertura da
V-03 nos mesmos instantes. Depois explique qual entrada do conjunto de eventos causou
cada mudança.

Exercícios

  1. No sample do CSTR, ponha a carga em zero e rode. Onde a temperatura se acomoda, e o que isso diz sobre o aumento adiabático de temperatura da reação nesta conversão?
  2. No sample do trocador, ponha a Wall Thermal Mass de HE-012 em 500 kJ/K e rode Sch1 de novo. Quanto mais tarde a saída de gás responde a cada degrau de temperatura?
  3. No sample do PFR, reduza a vazão de carga à metade pelo slider e rode. Como muda o atraso entre uma mudança de carga térmica e a temperatura de saída?

Leitura Complementar

Referências selecionadas da bibliografia técnica do DWSIM.

  • H. S. Fogler. (2016). Elements of Chemical Reaction Engineering. Pearson
  • W. L. Luyben. (2007). Chemical Reactor Design and Control. Wiley

Próximos Passos

Em Controladores Personalizados e Redes, um controlador escrito em Python substitui o PID no tanque, e a rede de água de um distrito mantém o nível de um tanque por uma válvula redutora de pressão.