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
- Ter completado Eventos, Schedules e Estados
- Os reatores de Sistemas de Reação e o trocador de Projeto de Trocador de Calor
Visão Geral do Processo¶
Três flowsheets da lista Samples, cada um já preparado para o modo dinâmico:
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.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.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 PIDPID-01mantendo a pressão de saída do gás em 8 atm pela válvula de saída de gás, um conjunto de eventosES1que sobe a temperatura de entrada do gás para 110, 140 e 180 °C em 1, 2 e 5 min, e um estado inicial guardadoSt2. 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.

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
- Script Python:
examples/dynamics/05_run_reactor_samples.py - No DWSIM: lista Samples na tela inicial,
Dynamic Simulation - CSTR,Dynamic Simulation - PFReDynamic Simulation - Heat Exchanger
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
- 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?
- No sample do trocador, ponha a Wall Thermal Mass de HE-012 em 500 kJ/K e rode
Sch1de novo. Quanto mais tarde a saída de gás responde a cada degrau de temperatura? - 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.