Pular para conteúdo

Loops de Reciclo

Neste tutorial você construirá um flowsheet com uma corrente de reciclo na GUI Clássica do DWSIM, em que parte da saída do processo é realimentada para a entrada. Loops de reciclo são fundamentais na engenharia química: alimentação não reagida, solventes e catalisadores são rotineiramente reciclados para melhorar a eficiência.

O que você vai aprender

  • Como construir um flowsheet em malha fechada usando Mixer, Splitter e a operação lógica Recycle
  • Como o DWSIM detecta tear streams e itera até a convergência
  • Como especificar razões de divisão e inspecionar a convergência no Console Output

Pré-requisitos

  • Ter completado Sistemas de Reação
  • Conceito de tear streams: o solver "rasga" um loop de reciclo, faz uma estimativa inicial das condições da tear stream, resolve para frente e itera até a convergência

Visão Geral do Processo

Um loop de reciclo simples:

  1. Mixer combina a alimentação fresca com a corrente de reciclo
  2. Unidade de processo (aqui um aquecedor que simula qualquer etapa de processamento)
  3. Splitter divide a saída em uma corrente de produto e uma corrente de reciclo
  4. Recycle (operação lógica) fecha o loop e dispara o solver iterativo

Diagrama de Fluxo do Processo

graph LR
    FF["Fresh Feed<br/>300 K, 1 atm<br/>1 kg/s Water"] --> MIX["MIX-1"]
    MIX --> H["H-1<br/>(Heater)<br/>350 K"]
    H --> SP["SP-1<br/>(Splitter)"]
    SP -->|70%| PROD["Product"]
    SP -->|30%| REC["Recycle"]
    REC --> RC["RC-1<br/>(Recycle)"]
    RC --> MIX

Parâmetros de Projeto

Parâmetro Valor Unidade
Composto Water -
Pacote Termodinâmico Steam Tables -
Temperatura da alimentação fresca 300 K
Pressão da alimentação fresca 1 atm Pa
Vazão mássica da alimentação fresca 1,0 kg/s
Temperatura de saída do aquecedor 350 K
Razão de divisão (produto) 0,70 (70% para o produto) -

Passo a Passo na GUI Clássica

1. Configurar a simulação

File > New Chemical Process Model:

  • Compounds: Water
  • Property Package: Steam Tables
  • Clique em Finish

2. Criar as correntes

Arraste cinco Material Streams para o canvas:

  • Fresh-Feed (T = 300 K, P = 1 atm, m = 1 kg/s, Water = 1.0)
  • Mixed (vazia)
  • Heated (vazia)
  • Product (vazia)
  • Recycle (vazia)
  • Recycle-Return (vazia)

Sim, são seis. A corrente Recycle-Return representa a saída da operação lógica Recycle de volta para o Mixer.

3. Inserir o Mixer

Arraste um Mixer para o canvas, nomeie como MIX-1. No painel Connections:

  • Inlet 1: Fresh-Feed
  • Inlet 2: Recycle-Return
  • Outlet: Mixed

4. Inserir o Heater

Arraste um Heater chamado H-1:

  • Outlet Temperature: 350 K, ΔP: 0, Efficiency: 100%
  • Inlet: Mixed, Outlet: Heated, Energy: criar nova

5. Inserir o Splitter

Arraste um Splitter da Object Palette, nomeie como SP-1. No editor:

  • Splitting Mode: Split Ratios
  • Outlet 1 Ratio: 0.70
  • Outlet 2 Ratio: 0.30

Conexões:

  • Inlet: Heated
  • Outlet 1: Product
  • Outlet 2: Recycle

Splitter configurado

6. Inserir o Recycle (operação lógica)

Arraste um objeto Recycle da Object Palette para o canvas (na categoria Logical Operations). Nomeie como RC-1. No editor:

  • Inlet: Recycle
  • Outlet: Recycle-Return
  • Convergence Tolerance: deixe no padrão (por exemplo, 0,01%)
  • Maximum Iterations: 50

Loop de reciclo fechado

7. Resolver

F6 LIGADO → Solve. O solver detecta o ciclo, escolhe uma tear stream, faz uma estimativa inicial e itera. Observe o painel Console Output para mensagens como "Recycle iteration 1, convergence error 5.2%, tolerance 0.01%". Após várias iterações, o loop converge.

8. Inspecionar o estado estacionário

Abra as abas Results:

  • Vazão mássica de Product: deve ser igual a 1,0 kg/s (= alimentação fresca; conservação de massa)
  • Vazão mássica de Mixed: ~1,43 kg/s (= 1,0 / 0,70 porque 30% é reciclado)
  • Vazão mássica de Recycle: ~0,43 kg/s (= 1,43 × 0,30)

Vazões em estado estacionário convergido

Resultados e Validação

Variável Esperado Unidade
Vazão mássica de Product ~1,0 kg/s
Vazão mássica de Recycle ~0,43 kg/s
Vazão da corrente Mixed ~1,43 kg/s

Resultados esperados

No estado estacionário, a vazão de produto é igual à alimentação fresca (conservação de massa: tudo que entra como alimentação fresca deve sair como produto). O reciclo divide o fluxo interno: 30% de reciclo significa fluxo interno = 1,0 / 0,70 = 1,43 kg/s.

Entendendo os Resultados

O loop de reciclo amplifica a vazão interna. Com divisão 70/30, o misturador vê 43% mais vazão do que apenas a alimentação fresca. Isso é útil em processos reais:

  • Aumenta a conversão por passe em um reator
  • Ajuda a controlar temperaturas e concentrações internas

O solver do DWSIM lida com a dependência circular por iteração: ele estima as condições da corrente de reciclo, resolve todas as unidades em sequência, compara as condições calculadas do reciclo com a estimativa, e ajusta usando aceleração de Wegstein até que coincidam.

Por que aceleração de Wegstein?

Wegstein detecta padrões de oscilação em iterações sucessivas do reciclo e amortece os overshoots, convergindo em muito menos iterações do que substituição direta. Também é mais simples de configurar do que Newton-Raphson completo, que exigiria um Jacobiano de todo o flowsheet. Para a maioria dos reciclos bem-postos, Wegstein converge à tolerância padrão de 0,01% em 5-15 iterações.

Automatizando Este Tutorial

Arquivos neste repositório

from DWSIM.Automation.FluentAPI import Flowsheet, PropertyPackages, Q
from DWSIM.Interfaces.Enums.GraphicObjects import ObjectType

fs = (Flowsheet.Create("RecycleTutorial")
      .WithCompound("Water")
      .WithPropertyPackage(PropertyPackages.SteamTables))

fresh = (fs.AddMaterialStream("Fresh-Feed")
         .At(Q.Kelvin(300.0), Q.Pascal(101325.0))
         .WithMassFlow(Q.KgPerSecond(1.0)))

mixed = fs.AddMaterialStream("Mixed")
heated = fs.AddMaterialStream("Heated")
product = fs.AddMaterialStream("Product")
recycle = fs.AddMaterialStream("Recycle")
recycle_return = fs.AddMaterialStream("Recycle-Return")

(fs.AddMixer("MIX-1")
   .ConnectFeed(fresh, 0)
   .ConnectFeed(recycle_return, 1)
   .ConnectProduct(mixed, 0))

(fs.AddHeater("H-1")
   .WithOutletTemperature(350.0.Kelvin())
   .WithPressureDrop(0.0.Pascal())
   .WithEfficiencyPercent(100.0)
   .ConnectFeed(mixed, 0)
   .ConnectProduct(heated, 0))

(fs.AddSplitter("SP-1")
   .WithSplitRatios([0.70, 0.30])
   .ConnectFeed(heated, 0)
   .ConnectProduct(product, 0)
   .ConnectProduct(recycle, 1))

fs.AddUnitOperation(ObjectType.Recycle, "RC-1") \
  .ConnectFeed(recycle, 0) \
  .ConnectProduct(recycle_return, 0)

fs.AutoLayout()
fs.Solve()
print(f"Product = {product.MassFlowKgPerSecond:.4f} kg/s")
print(f"Recycle = {recycle.MassFlowKgPerSecond:.4f} kg/s")

Construa com dwsim.unitop.add para Mixer, Heater, Splitter e Recycle, conecte-os via dwsim.unitop.connect, depois dwsim.solve.run.

O resultado pode variar

O resultado depende da capacidade de raciocínio e do uso correto de ferramentas pelo LLM. Sempre verifique se a simulação corresponde à sua intenção antes de confiar nos números.

Use o DWSIM (via servidor MCP) para construir a seguinte simulação:

- Crie um flowsheet chamado "RecycleTutorial"
- Adicione Water como único composto; configure o pacote
  termodinâmico como "SteamTables"
- Adicione uma corrente material chamada "Fresh-Feed" a 300 K e
  101325 Pa com vazão mássica de 1,0 kg/s (Water = 1,0)
- Adicione correntes materiais vazias "Mixed", "Heated", "Product",
  "Recycle" e "Recycle-Return"
- Adicione um Mixer chamado "MIX-1"; conecte Fresh-Feed e
  Recycle-Return como entradas e Mixed como produto
- Adicione um Heater chamado "H-1" com temperatura de saída 350 K,
  queda de pressão 0 Pa e eficiência 100 %; alimente a partir de
  Mixed e produza Heated
- Adicione um Splitter chamado "SP-1" com razões de divisão 0,70 /
  0,30; alimente a partir de Heated; saída 1 = Product, saída 2 =
  Recycle
- Adicione uma operação lógica Recycle chamada "RC-1"; alimente a
  partir de Recycle e produza Recycle-Return (fechando o loop)
- Resolva o flowsheet (o solver irá iterar até a convergência)
- Reporte a vazão mássica convergida de Product (kg/s) e a vazão
  mássica de Recycle (kg/s)

Exercícios

  1. Mude a razão de divisão para 50/50. Como muda a vazão interna?
  2. Substitua o Heater por um Conversion Reactor (defina uma reação fictícia A → B). O reciclo agora aumenta a conversão global de A não reagido.
  3. O que acontece com 100% de reciclo (split 0/1)? Por que o solver não consegue convergir?

Leitura Complementar

Referências selecionadas da bibliografia técnica do DWSIM. Clique no link DOI para acessar cada artigo.

  • A. Wächter & L. T. Biegler. (2006). On the Implementation of an Interior-Point Filter Line-Search Algorithm for Large-Scale Nonlinear Programming. Mathematical Programming. doi:10.1007/s10107-004-0559-y
  • Michael Michelsen & Jorgen Mollerup. (2007). Thermodynamic Models: Fundamentals and Computational Aspects. Tie-Line Publications
  • K. Thomsen. (1997). Aqueous electrolytes: model parameters and process simulation

Próximos Passos

Em Envelope de Fases, você aprenderá como gerar diagramas de fases pressão-temperatura para misturas multicomponentes usando o menu Utilities.