Você está na página 1de 83

1

UNIVERSIDADE FEDERAL DE UBERLÂNDIA


FACULDADE DE ENGENHARIA QUÍMICA
CURSO DE GRADUAÇÃO EM ENGENHARIA QUÍMICA

Desenvolvimento de uma Biblioteca Eletrônica de


Modelos

Fernando Rosa Gomes

Uberlândia / MG
2009
2

UNIVERSIDADE FEDERAL DE UBERLÂNDIA


FACULDADE DE ENGENHARIA QUÍMICA
CURSO DE GRADUAÇÃO EM ENGENHARIA QUÍMICA

Desenvolvimento de uma Biblioteca Eletrônica de Modelos

Fernando Rosa Gomes

Monografia de graduação apresentada à


Universidade Federal de Uberlândia como
parte dos requisitos necessários para a
aprovação da disciplina de Projeto de
Graduação do curso de Engenharia Química.

Uberlândia / MG
2010
3

BANCA EXAMINADORA DA MONOGRAFIA DA DISCIPLINA PROJETO DE


GRADUAÇÃO DE FERNANDO ROSA GOMES APRESENTADA À FACULDADE DE
ENGENHARIA QUÍMICA DA UNIVERSIDADE FEDERAL DE UBERLÂNDIA, EM
12/01/2010.

BANCA EXAMINADORA:

___________________________________
Prof. Luís Cláudio Oliveira Lopes
Orientador- FEQUI/UFU

___________________________________
Prof.ª Dra. Míria Hespanhol Miranda Reis
FEQUI/UFU

___________________________________
Prof. Cláudio Roberto Duarte
FEQUI/UFU
1

AGRADECIMENTOS

Ao orientador Prof. Dr. Luís Cláudio Oliveira Lopes que sempre acreditou no meu
potencial e na minha capacidade em desenvolver este projeto de graduação.

Às amigas Juliana Maria e Lívia Tizzo, companheiras de reunião, com quem


compartinhei momentos de dúvidas e sucessos deste trabalho. Além disso, foram momentos
que proporcionaram nos conhecer melhor e aumentar os laços de amizade.

Aos amigos, Diego Souza e Karen Valente, que foram meus companheiros de reunião
antes da minha ida para a França.

E principalmente aos meus familiares e amigos que sempre estiveram comigo e que
entenderam os momentos que estive desenvolvendo este e que não passei com eles. Este
apoio, mesmo que indiretamente, colaborou para a execução da obra e meu êxito.
2

“O mestre na arte da vida faz pouca distinção entre o


seu trabalho e o seu lazer, entre a sua mente e o seu
corpo, entre a sua educação e a sua recreação, entre
o seu amor e a sua religião. Ele dificilmente sabe
distinguir um corpo do outro. Ele simplesmente per-
segue sua visão de excelência em tudo que faz,
deixando para os outros a decisão de saber se está
trabalhando ou se divertindo. Ele acha que está
sempre fazendo as duas coisas simultaneamente.”
(Texto Zen-Budista)
3

SUMÁRIO

1 INTRODUÇÃO .................................................................................................................. 1
2 REVISÃO BIBLIOGRÁFICA............................................................................................ 3
2.1. IMPORTÂNCIA DE FONTES DE DADOS TERMODINÂMICOS ............................ 3
2.1.1. DIPPR (Design Institute for Physical Properties)........................................................ 3
2.1.2. FYDAT ........................................................................................................................ 4
2.2. CAPE-OPEN ................................................................................................................... 5
2.3. A REGRA DE FASES DE GIBBS E GRAU DE LIBERDADE ................................... 7
2.4. CÁLCULOS DE FLASH – SISTEMA DE ÚNICO ESTÁGIO DE EQUILÍBRIO....... 9
2.4.1. Derivações do Modelo Flash ..................................................................................... 10
2.4.1.1. Estratégias para os cálculos de flash ...................................................................... 13
2.4.1.2. Sequência de cálculo Flash TP ............................................................................... 14
2.4.2. Método Inside-Out para os Cálculos de Flash ........................................................... 15
2.5. PROJETO DE REATORES NÃO-ISOTÉRMICOS .................................................... 18
2.5.1. Balanço de energia e a Primeira Lei da Termodinâmica ........................................... 19
2.5.2. CSTR (Continuous-Stirred-Tank-Reactor) ................................................................ 20
2.5.3. PFR (Plug-Flow Tubular Reactor) ............................................................................. 22
3 RESULTADOS E DISCUSSÃO ...................................................................................... 24
3.1. FHASH ISOTÉRMICO MULTICOMPONENTE........................................................ 24
3.2. FLASH ADIABÁTICO MULTICOMPONENTE........................................................ 39
3.3. REATOR CSTR ADIABÁTICO MULTICOMPONENTE ......................................... 42
3.4. REATOR PFR ADIABÁTICO MULTICOMPONENTE ............................................ 44
3.5. CASO ESPECIAL DE UM SEPARADOR À MEMBRANA DE BIOGÁS................ 45
3.6. OBTENÇÃO DE PARÂMETROS FÍSICOS E TERMODINÂMICOS ...................... 46
4 CONCLUSÃO .................................................................................................................. 46
SUGESTÕES PARA PRÓXIMOS TRABALHOS ................................................................. 47
REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 47
APÊNDICES ............................................................................................................................ 48
APÊNDICE A - CÓDIGO SCILAB UTILIZADO PARA SIMULAR OS CASOS DE FLASH
ISOTÉRMICO, PONTO DE BOLHA E PONTO DE ORVALHO. ........................................ 49
APÊNDICE B – CÓDIGO IMPLEMENTADO NO SCILAB QUE UTILIZA AS
FERRAMENTAS DO COCO. ................................................................................................. 55
4

APÊNDICE C – CÓDIGO SCILAB DE CÁLCULO DO FLASH ISOTÉRMICO


UTILIZANDO O MÉTODO DE NEWTON E A PLATAFORMA DO COCO. .................... 57
APÊNDICE D – CÓDIGO SIMPLIFICADO PARA O CÁLCULO DO FLASH
ISOTÉRMICO QUE UTILIZA SOMENTE COMANDOS DO COCO. ................................ 60
APÊNDICE E – CÓDIGO SCILAB UTILIZADO PARA IMPLEMENTAR O CASO DE
FLASH ADIABÁTICO NO COCO. ........................................................................................ 60
APÊNDICE F – CÓDIGO SCILAB UTILIZADO PARA A DEFINIÇÃO DA UNIDADE DE
CSTR ADIABÁTICO. ............................................................................................................. 61
APÊNDICE G – CÓDIGO SCILAB UTILIZADO PARA A DEFINIÇÃO DA UNIDADE
PFR ADIABÁTICO. ................................................................................................................ 63
APÊNDICE H.1 – CÓDIGO PRINCIPAL SCILAB DA UNIDADE DE SEPARAÇÃO DE
BIOGÁS. .................................................................................................................................. 66
APÊNDICE H.2 – ARQUIVO ADICIONAL SCILAB PARA A IMPLEMENTAÇÃO DA
UNIDADE DE SEPARAÇÃO DE BIOGÁS. .......................................................................... 68
APÊNDICE I – ARQUIVO SCILAB DE LEITURA DE PROPRIEDADES DAS
SUBSTÂNCIAS CONTIDAS NO DYPPR E FYDAT. ......................................................... 69
5

LISTA DE FIGURAS
Figura 1 - Janela principal do ambiente de simulação do COCO-COFE. .................................. 6
Figura 2 - Separação contínua e com um único estágio de equilíbrio: (a) vaporização flash
(flash adiabático com válvula, flash isotérmico sem válvula com T especificada); (b)
condensação parcial (análogo para flash isotérmico quando T é especificado). ...................... 10
Figura 3 - Unidade Flash. ......................................................................................................... 11
Figura 4 - Localização da seção de criação de pacotes termodinâmicos (ConfigureTEA) e
caixa de seleção de pacotes termodinâmicos criados previamente dos pacotes de substâncias
químicas. ................................................................................................................................... 28
Figura 5 - Adicionando componentes a um pacote termodinâmico. ........................................ 29
Figura 6 - Seleção das propriedades e equações de estado....................................................... 30
Figura 7 - Inserção de unidade de operação Scilab no COCO. ................................................ 32
Figura 8 - Edição de uma unidade de Operação no COCO. ..................................................... 33
Figura 9 - Configuração da corrente de alimentação. ............................................................... 34
Figura 10 - Edição da unidade de operacional Scilab, aproximando a aparência da unidade a
ser simulada. ............................................................................................................................. 35
Figura 11 - Ícone de teste do código Scilab implementado no COCO..................................... 35
Figura 12 - Tela de simulação do COCO mostrando o caso do Flash isotérmico I- Método de
Newton, para o qual não obteve sucesso. ................................................................................. 36
Figura 13 - Tela de simulação do COCO mostrando o caso do Flash isotérmico II. ............... 38
Figura 14 - Tela de simulação do COCO mostrando o caso do Flash isotérmico. ................... 39
Figura 15 - Impressão da tela principal do COCO mostrando os resultados simulados para o
caso do flash adiabático. ........................................................................................................... 41
Figura 16 - Impressão da tela principal do COCO mostrando os resultados simulados para o
caso de um CSTR adiabático. ................................................................................................... 43
Figura 17 - Impressão da tela principal do COCO mostrando os resultados simulados para o
caso do flash adiabático. ........................................................................................................... 44
Figura 18 – Fluxograma e planilhas de resultados obtidos para o caso de Separação de Biogás.
.................................................................................................................................................. 46
6

LISTA DE TABELAS

Tabela 1 - Algoritmo para o CSTR. ......................................................................................... 21


Tabela 2 - Algoritmo para um PFR adiabático, com reação elementar reversível em fase
gasosa ( A ↔ B ) e perda de pressão desprezível. .................................................................... 23
Tabela 3 - Simulação obtida no software HYSIM para o caso flash isotérmico para a
separação de hidrocarbonetos. .................................................................................................. 25
Tabela 4 - Resultado gerado na simulação do código implementado no Scilab de cálculo do
flash isotérmico. ....................................................................................................................... 27
Tabela 5 - Relatório da simulação da unidade “Scilab Flash isotérmico II”, resgatando os
dados gerados pelo próprio COFE............................................................................................ 37
Tabela 6 - Relatório da simulação da unidade “Flash isotérmico”, gerado através da utilização
da unidade operacional Flash do COFE. .................................................................................. 38
Tabela 7 - Valores para a simulação de um flash adiabático apresentado por Seader & Henley
(2006). ...................................................................................................................................... 40
Tabela 8 - Valores para a simulação do flash adiabático no COCO utilizando a equação de
estado de Soave Redlich Kwong Modificada. .......................................................................... 42
Tabela 9 - Valores da simulação do CSTR adiabático no COCO. ........................................... 43
Tabela 10 - Valores da simulação do PFR adiabático .............................................................. 45
7

RESUMO

Este trabalho visou o desenvolvimento de uma base (biblioteca) de dados


composta por modelos dinâmicos de baixa e média complexidade de atividades nas áreas
de separação de fluidos e reatores químicos, utilizando ferramentas computacionais que
fornecessem, numa linguagem computacional livre e de fácil acesso, resultados mais
próximos possíveis daqueles que se encontram na realidade industrial e citados na
literatura. Além disso, este foi conduzido em dois caminhos diferentes, porém
complementares. O primeiro caminho dedicou-se na implementação no Scilab de códigos
de busca de dados termodinâmicos das substâncias físico-químicas, através da
decodificação binária de dois softwares, o FYDAT e o DIPPR, específicos para esta
atividade e disponíveis comercialmente. O segundo caminho foi a utilização das
plataformas Scilab e COCO (que utiliza o padrão CAPE-OPEN e Inside-Out),
verificando a viabilidade de se trabalhar simultaneamente com ambos, através da
implementação de problemas típicos da Engenharia Química. A vantagem de utilizar
estes softwares está na interface gráfica amigável do COCO e também na possibilidade
de implementar problemas utilizando métodos que produzem os resultados desejáveis. Os
resultados mostraram que a gama de possibilidades é grande e que nenhum ou pequenos
desvios relativos dos valores apresentados na literatura podem ocorrer, e essa precisão
depende da equação de estado e das correlações termodinâmicas de predição dos
parâmetros utilizadas nos cálculos.

Palavras-chave: Biblioteca de Modelos, Simulação, CAPE-OPEN, Linguagem Livre,


Inside-Out.
8

ABSTRACT

This work aimed at the development of a database (library) composed for dynamic
models of low and average complexity of activities in the areas of separation of fluids
and chemical reactors, using computational tools which supply, in a free computational
language and of easy access, results more nearby to those that is found in the industrial
reality and cited in the literature. Moreover, this work was lead in two different ways,
however complementary. The first one dedicated in the implementation of search Scilab
codes of thermodynamic data of physicist-chemistries substances, through the binary
decoding of two softwares, the FYDAT and the DIPPR, specific for this activity and
available commercially. The second way was the use of the Scilab platforms and
COCONUT (that it uses standard CAPE-OPEN and Inside-Out), verifying the viability to
work simultaneously with both, through the implementation of Chemical Engineering
typical problems. The advantage to use these softwares is the COCONUT friendly
graphical interface and also the possibility to implement problems using methods that
produce the results desirable. The results had shown that the gamma of possibilities is
great and none or small relative shunting lines of the values presented in literature can
occur, and this precision depends on the equation of state and the thermodynamic
prediction correlations of the parameters used in the calculations.

Keywords: Library of Models, Simulation, CAPE-OPEN, Free Language, Inside-Out.


1

1 INTRODUÇÃO

A IMPORTÂNCIA DA ANÁLISE DE PROCESSOS

Para se obter um bom entendimento de processos em que o Engenheiro Químico


irá atuar, é necessário analisá-los partindo de suas formas mais simples e isoladas do
todo. Ou seja, é necessário que o engenheiro possua uma base bem fundamentada dos
fenômenos que ocorrem no determinado processo para, depois conseguir inferir as
influências que este pode sofrer dos fatores externos. Mas à medida que o processo exige
uma maior complexidade, já que é de suma importância representar da melhor forma o
que se verifica na realidade, torna-se impossível o desenvolvimento de modelos e
resoluções das equações de forma manual. Nesse sentido, o uso de computadores, mais
precisamente, de simuladores, é de grande ajuda, tanto na questão da velocidade de
processamento quanto na criação de um banco de dados permanente, disponível sempre
que necessário e que não exige recomeçar o procedimento toda vez que mudar os dados
analisados.
Historicamente, os processos químicos evoluíram de uma escala e unidades
pequenas onde eram geralmente operadas no modo batelada ou semi-contínuo. Matéria-
prima e energia eram relativamente abundantes. As regulamentações governamentais em
segurança, efluentes e emissões eram pouco rígidas. As margens de lucro eram
relativamente altas e atrativas e a tecnologia, em termos de ferramentas analíticas, era
primitiva. Nos últimos anos consideráveis mudanças têm sido adotadas. Primeiro pela
competição e depois pelos custos de matéria-prima e energia têm criado uma convincente
necessidade por processos eficientes, levando a um maior grau de integração entre
energia e matéria no design de processos. Cada vez que é introduzido um reciclo de
material ou um trocador de calor, criam-se novas interações entre as variáveis do
processo, no qual aumenta o número de relações matemáticas que podem ser
consideradas simultaneamente.
É importante notar que o sistema como um todo pode exibir características
superiores e além daquelas que se consideram quando se utiliza apenas seus componentes
individuais. Em Engenharia Química, um sistema bem conhecido é a associação de um
reator químico exotérmico como um simples trocador de calor. Ambas as unidades
apresentam estabilidades. No momento em que o trocador de calor é conectado ao reator
2

para pré-aquecer a alimentação e para resfriar o produto, um comportamento bastante


diferente é observado para o sistema como um todo, pois várias soluções possíveis
podem ocorrer, mas algumas são soluções estáveis enquanto outras são instáveis.
Portanto, quanto mais unidades forem sendo acopladas, mais complexa será a sua
resolução.
A gama de simuladores que hoje existe é fruto da necessidade de predizer os
fenômenos que ocorrem na natureza e nos diversos segmentos de indústrias, sem correr o
risco de haver desperdício de matéria-prima e gasto desnecessário de mão-de-obra, além
de preservar a segurança das pessoas envolvidas. O que difere um simulador do outro é,
na maioria das vezes, a interface gráfica e a forma com que o algoritmo foi transcrito.
Esta última é o ponto de partida de muitos estudos, já que é sempre mais viável trabalhar
com programas que gerem respostas em menor período de tempo e também com menor
esforço computacional. Porém, não basta um software bem estruturado, se somente o
programador/autor do mesmo consegue entendê-lo, é necessário que o simulador esteja
numa linguagem acessível, para que outras pessoas consigam aprender e capacitar outras
tantas. O desenvolvimento de modelos codificados em uma linguagem computacional de
fácil acesso permite grande impacto dessas avaliações no ambiente educacional e de
pesquisa, onde esses modelos podem ser usados em laboratórios e ambiente de testes para
implementações variadas.
Além disso, é necessário que o engenheiro possua também um conhecimento
sobre pacotes termodinâmicos responsáveis por predizer a energia requerida pelo sistema,
o momento do equilíbrio de fases e o tamanho dos equipamentos. Ou seja, a eficiência de
uma simulação depende dos métodos de predição das propriedades das misturas ideais e
não-ideais, como o volume específico, entalpia, entropia, fugacidades e atividades
juntamente com seus coeficientes, todos como função da temperatura, pressão e
composição das fases. Outro parâmetro importante é a constante de Equilíbrio, K, que
mostra a composição limite atingível para uma mistura de dois ou mais componentes, em
outras palavras, quando se atinge o equilíbrio químico.
A modelagem de processos químicos permite que representações conceituais de
processos sejam avaliadas em diversas áreas de interesse da Engenharia Química,
destacando-se a otimização de processos, a avaliação de segurança, a parada e partida de
plantas e o controle de processos. Com esse intuito, esse projeto visa o desenvolvimento
de uma base (biblioteca) de dados composta por modelos dinâmicos de baixa e média
complexidade que implementam atividades nas áreas de: separação de fluidos, reatores
3

químicos, reatores biotecnológicos etc. e consiste na investigação e desenvolvimento do


modelo, implementação dos mesmos em uma linguagem computacional livre e de fácil
acesso utilizando ferramentas de análise de processos químicos e de simulação
computacional.

2 REVISÃO BIBLIOGRÁFICA

2.1. IMPORTÂNCIA DE FONTES DE DADOS TERMODINÂMICOS

Toda atividade significativa em química ou engenharia química requer quantificação


dos parâmetros e composição envolvidos nos processos. Um simples computador e até
mesmo um complexo simulador é impossível quantificar sem o conhecimento das
propriedades físicas dos presentes componentes e suas misturas. Para muitos, esta pode ser
uma atividade tediosa e cansativa. Além disso, complicam-se quando se tem dados de
substâncias menos usadas de péssima credibilidade e, também quando se comete erros na
transferência de unidades. Para um cálculo em engenharia química ter credibilidade é
imprescindível haver precisão nas propriedades dos dados.
Equações de estado como aquelas de SOAVE (1972), PENG ROBINSON (1976), e
JACOBSEN et al. (1995), são cada vez mais usadas para correlacionar propriedades
termofísicas. Independente das propriedades particulares do modelo usado, o uso efetivo de
propriedades termofísicas na prática industrial, é dependente de algoritmos rápidos e robustos
para a simulação de processos. É por esses motivos que programas computacionais são
criados, ficando com o trabalho de calcular as propriedades das substâncias e, com isso, a
dedicação fica restrita somente na resolução dos problemas.

2.1.1. DIPPR (Design Institute for Physical Properties)

O banco de dados DIPPR® 801 é um extenso banco de dados de componentes puros


rigorosamente avaliados de compostos químicos importantes industrialmente. Este contém um
total de 1891 compostos até hoje. Valores recomendados podem ser encontrados para 48
propriedades de cada componente no banco de dados, isto é, dados “crus” da literatura assim
como valores recomendados e criticamente avaliados para cada uma das 34 propriedades
4

constantes. Dados “crus” da literatura e coeficientes de equações para 15 propriedades


dependentes da temperatura são também incluídas para cada composto. Além disso,
referências, notas e códigos de qualidade podem ser encontrados para cada propriedade
termodinâmica.

2.1.2. FYDAT

O banco de dados FYDAT é um software livre o qual pode ser ampliado inserindo
novas substâncias. Este não é universalmente usado, mas é destinado às técnicas
computacionais para propósitos práticos e pedagógicos. O FYDAT pode ser utilizado como
um direto diálogo interativo para o cálculo de propriedades ou como uma biblioteca usada em
programas de aplicação escrita em Visual Basic 5.0.
Este banco de dados fornece as seguintes propriedades físicas:

 Massa molar;
 Constantes críticas (pressão, temperatura, volume);
 Fator acêntrico;
 Índice de refração;
 Momento dipolo;
 Ponto de ebulição normal;
 Ponto de fusão;
 Calor de fusão;
 Ponto de ebulição (dependente da pressão);
 Ponto de orvalho;
 Calor de evaporação;
 Densidade (fase vapor e líquida);
 Viscosidade dinâmica (fase vapor e líquida);
 Capacidade térmica (fase vapor e líquida);
 Condutividade térmica (fase vapor e líquida);
 Tensão superficial;
 Pressão de vapor;
 Funções termodinâmicas (entalpia,entropia, energia interna);
 Coeficiente de Joule-Thompson;
5

 Logaritmo do coeficiente de fugacidade, entre outras.

Estas propriedades podem ser fornecidas tanto em moles ou quilogramas. E todos os


valores são listados em unidades SI menos para as exceções notificadas.

2.2. CAPE-OPEN

Os padrões CAPE-OPEN são normas uniformes para interface de componentes de


softwares de modelagem de processos, desenvolvidas especialmente para o design e operação
de processos químicos. As normas são públicas, com multiplataformas, uniformes e
livremente disponíveis para realizar download. (http://www.colan.org/index-3.html).
O CAPE-OPEN é descrito em um conjunto de documentos formais abrangendo áreas
como operações unitárias, propriedades físicas e resolvedores numéricos. Na prática, este
permite ‘linkar’ componentes de outras partes, como os nichos de pacotes de propriedades
físicas ou modelos de operações unitárias, para ser usada no modo “plug and play” em
ferramentas de softwares de modelagem de processos comerciais. Com isso, remove a maior
barreira para a construção de melhores modelos de processos clássicos em áreas específicas.
O CAPE-OPEN Laboratories Network (CO-LaN) é uma reconhecida organização de
responsáveis pelo gerenciamento do padrão CAPE-OPEN (CO). A CO-LaN ajuda a facilitar a
implantação de interfaces do padrão CO em softwares comerciais tornando uma simulação em
uma realidade prática.(http://www.colan.org/Communication/COLAN_2003_Leaflet.pdf).
O ambiente de simulação escolhido para se trabalhar nessa monografia foi o COCO
(CAPE-OPEN to CAPE-OPEN), que utiliza o padrão CAPE-OPEN. Este foi criado pelo
grupo amsterCHEM, formado por experts no padrão citado. O COCO consiste dos seguintes
componentes:
 COFE – CAPE-OPEN Flowsheet Environment: é uma interface intuitiva gráfica para
o usuário construir fluxogramas. Exibe as propriedades das correntes, trabalha com
conversão de unidades e fornece facilidades durante a plotagem de gráficos.
 TEA-COCO’s Thermodynamics for Engineering Applications, é baseado na biblioteca
termodinâmica de códigos e inclue um banco de dados de mais de 150 substâncias
químicas comumente usadas. O pacote exibe mais de 100 métodos de cálculos de
propriedades com suas derivadas numéricas e analíticas.
6

 COUSCOUS – o CAPE-OPEN Unit Operations Simple contém divisores,


misturadores, trocadores de calor, bombas e reatores além de outras unidades de
operação.
 CORN – O pacote CAPE-OPEN Reaction Numerics especifica algum tipo de cinética
ou reação em equilíbrio. Simples unidades de reação, como reatores de conversão,
CSTR’s e PFR’s podem usar este pacote.

Figura 1 - Janela principal do ambiente de simulação do COCO-COFE.

O padrão CAPE-OPEN pode interagir com outros softwares e com isso, ser possível
utilizar a linguagem de programação específica daquele software. Isso é possível com o
Microsoft Office Excel, Matlab e Scilab. Na página do grupo amsterCHEM,
http://www.amsterchem.com, existem guias de como operar o CAPE-OPEN nos três
softwares acima citados e vice-versa. Mais especificamente para este trabalho, a interação
utilizada foi entre o CAPE-OPEN e o Scilab.
As duas formas disponíveis para realizar a interação são através da utilização dos
pacotes ‘Scilab CAPE-OPEN Thermo Import’ e ‘Scilab CAPE-OPEN Unit Operation’. O
primeiro permite importar do CAPE-OPEN pacotes de propriedades termodinâmicas e físicas
para o Scilab, através de um pacote de comandos, e então apresentar os cálculos das mesmas
propriedades assim como cálculos de equilíbrio termodinâmico. O pacote define todas as
interfaces de comunicação com os pacotes de propriedades CAPE-OPEN e este não
implementa um equipamento termodinâmico sozinho. Para utilizar estes pacotes, são
7

necessárias as versões 5.02 (ou maior) do Scilab assim como a versão 1.1 do CAPE-OPEN.
(http://www.amsterchem.com/scilabthermo.html)
A segunda forma de interação, o ‘Scilab CAPE-OPEN Unit Operation’, é uma
implementação de uma unidade de operação na qual os cálculos são realizados na linguagem
Scilab. Para iniciá-lo, é necessário iniciar o ambiente de simulação escolhido que utiliza o
padrão CAPE-OPEN, no caso deste, o ambiente de simulação COCO. Após, inserir um
‘Scilab CAPE-OPEN Unit Operation’, definir as “portas” de alimentação e produto. Para
editar a unidade de operação, insere-se o código Scilab na seção corresponde à este, e as
correntes de entrada e saída devem ser especificadas de acordo com a linguagem específica de
resgate das mesmas no padrão CAPE-OPEN.
(http://www.amsterchem.com/scilabunitop.html)

2.3. A REGRA DE FASES DE GIBBS E GRAU DE LIBERDADE

A descrição de um sistema de estágio único no equilíbrio físico envolve variáveis


intensivas, na qual são independentes do tamanho do sistema, e variáveis extensivas, no qual
dependem do tamanho do sistema. Variáveis intensivas são temperatura, pressão, e
composições de fase (frações molares, frações mássicas, concentrações, etc.). Variáveis
extensivas incluem massa ou moles e energia para um sistema batelada, e vazão mássica ou
molar e taxa de transferência de energia para um sistema contínuo.
Independente se somente variáveis intensivas ou ambas variáveis intensivas e
extensivas são consideradas, somente uma pequena parcela das variáveis são independentes;
quando essas são especificadas, todas as outras se tornam fixas. O número de variáveis
independentes é a variância, ou o número de grau de liberdade, F, para o sistema.
A regra de fase de J. Willard Gibbs, a qual se aplica somente para as variáveis
intensivas no equilíbrio, afirma que:

F = C−P +2 (1)

onde C é o número de componentes e P é o número de fases no equilíbrio. A equação (1) é


derivada contando, no equilíbrio físico, o número de variáveis intensivas e o número de
equações independentes que relata essas variáveis. O número de variáveis intensivas, V, é
8

V = C .P + 2 (2)

onde o 2 refere-se a pressão e temperatura do equilíbrio, enquanto o termo CP é o número


total de variáveis de composição (por exemplo, frações molares) para os componentes
distribuíos ao longo das fases de equilíbrio P. O número de equações independentes, E,
relacionando as variáveis intensivas é

E = P + C (P − 1) (3)

no qual o primeiro termo, P, refere à necessidade do somatório das frações molares ou

mássicas ser 1 para cada fase e o segundo termo, C(P


P-1) refere ao número de equações de K
independentes da forma geral

fraçao molar de i na fase (1)


Ki =
fraçao molar de i na fase ( 2)

onde (1) e (2) refere às fases em equilíbrio. Para duas fases, há C expressões independentes
deste tipo, três fases, 2C; para quatro, 3C; e assim por diante.

Assim, o Grau de Liberdade, que é o número de variáveis intensivas (V) menos o


número de equações (E), pode ser definido, como combinação das equações (2) e (3):

F = V − E = (CP + 2 ) - [P + C(P-1)] = C-P + 2

Usando a Regra de Fases de Gibbs, pode-se notar que K’s não são variáveis, mas são
funções termodinâmicas que dependem de variáveis intensivas. A Regra é limitada porque ela
não trata de correntes enviadas para o estágio de equilíbrio nem de variáveis extensivas
usadas no design ou análise em operações de separação. No entanto, a regra de fases pode ser
estendida para aplicações em processos, adicionando a corrente de alimentação e variáveis
extensivas, e equações independentes adicionais relatando as variáveis de alimentação,
extensivas, e intensivas já consideradas pela regra. (SEADER; HENLEY (2006))
9

2.4. CÁLCULOS DE FLASH – SISTEMA DE ÚNICO ESTÁGIO DE EQUILÍBRIO

Em programas de simulação de processos, a determinação de um sistema de separação


flash representa o mais frequentemente envolvido e o mais básico dos conjuntos de cálculos.
Este é requerido para determinar o estado de alguma corrente do processo após uma
transformação física ou química. Isso ocorre após a adição ou remoção de calor, uma
mudança na pressão ou uma carga na composição devido à reação. Os cálculos do flash
podem resultar em um comportamento de fase complexo, no qual inclui múltiplas fases e
também fases sólidas.
Um flash é um estágio único de destilação de equilíbrio na qual uma alimentação é
parcialmente vaporizada para dar um vapor mais rico em componentes mais voláteis, do que o
líquido remanescente. Na Figura 2a, uma alimentação líquida é aquecida sobre pressão e
‘flasheada’ adiabaticamente através da válvula para um vaso de menor pressão, resultando na
criação de uma fase vapor que é separada do líquido remanescente no mesmo vaso. Se a
válvula é omitida, um líquido de baixa pressão pode ser parcialmente vaporizado no
aquecedor e então separado em duas fases no vaso de flash. Alternativamente, uma
alimentação de vapor pode ser resfriada e parcialmente condensada, com separação de fases,
como na Figura 2b, para dar um líquido que é mais rico no componente menos volátil. Em
ambos os casos, se o equipamento é bem projetado, o vapor e o líquido que deixam o vaso
estão em equilíbrio.
10

Figura 2 - Separação contínua e com um único estágio de equilíbrio: (a) vaporização flash
(flash adiabático com válvula, flash isotérmico sem válvula com T especificada); (b)
condensação parcial (análogo para flash isotérmico quando T é especificado).

A menos que a volatilidade relativa seja muito grande, o grau de separação alcançado
entre os dois componentes em um estágio único de equilíbrio é pobre. Portanto, um flash
(parcial vaporização ou condensação parcial) é usualmente uma operação auxiliar usada para
preparar correntes para um processo seguinte. Tipicamente, a fase vapor é enviada para o
sistema de separação de vapor, enquanto a fase líquida é enviada para o sistema de separação
de líquidos. (SEADER; HENLEY (2006))

2.4.1. Derivações do Modelo Flash

Para ilustrar a discussão dessa seção, considere a operação de separação de fase


representada na Figura 3.
11

Vapor

Feed

Liquid
Flash isotérmico
Figura 3 - Unidade Flash.

O modelo desenvolvido para esta unidade de separação é baseado nos fluxos molares
para os NC componentes i nas correntes de alimentação, vapor e líquida, fi, vi, li,
respectivamente. Assume-se que o estado da alimentação é completamente definido, ou seja,
conhece-se a vazão, fração molar (zi) e a entalpia de entrada. Definindo, as frações molares
como xi=li/(Σili) e yi=vi/(Σivi) obtém-se o mínimo conjunto de balanço de massa:
f i = vi + l i i=1,...NC (4)

equações de equilíbrio:

γ i (l,T)f i 0 (T, P)x i = φ (v,T)Py i i=1,...NC (5)

e um balanço de entalpia:

FH f ( f ,T , P ) + Q = VH v ( v ,T , P ) + LH l ( l ,T , P ) (6)

o qual nos dá (2 NC+1) equações para as (2 NC+3) variáveis, vi, li, T, P e Q. Tem-se portanto
um grau de liberdade igual à dois para especificar para o problema flash.
No entanto, quando uma fase desaparece, um modelo derivado dos balanços de massa
em fluxos molares conduz a composições indefinidas para as condições de ponto de orvalho e
de bolha. Além disso, já que as relações de equilíbrio de fase não-linear são dependentes da
composição, será desenvolvido um modelo de flash um pouco diferente em termos das vazões
e frações molares. Seguindo a mínima descrição acima, o balanço de massa para a unidade é
dada por:
zi F = Vyi + Lxi i=1,...NC (7)

E o balanço de entalpia porduz


FH f + Q = VH v ( y ,T , P ) + LH l ( x ,T , P ) (8)
12

Definindo ainda o valor K:


0
K i = γ i (x,T)f i (T, P)xi / φ (y,T)P i=1,...NC (9)

Portanto tem-se (3 NC+5) variáveis (yi, xi, L, T, P, Q, V) e somente (3 NC+1)


equações até agora. Notar que não foi especificado nenhuma condição ainda das condições de
xi e yi (por exemplo, que a soma das frações molares é 1). Interessantemente, esta escolha
necessita ser feita cuidadosamente já que falsas raízes são introduzidas mesmo com algumas
escolhas óbvias.
Já que nem a fração molar de líquida nem de vapor é especificada pode-se incluir um
balanço de massa global:

F =V + L i=1,...NC (10)

Agora considere que o mais simples dos casos onde T e P são especificados. Este
dissocia o balanço de entalpia e permite que Q seja calculado uma vez que o balanço de massa
é resolvido. Combinando a equação do balanço total de massa com as expressões de balanço
de massa dos componentes e de equilíbrio chega-se nas seguintes relações para as frações
molares:
zi K i zi
xi = F yi = (11)
V V
1 + (K i − 1) 1 + (K i − 1)
F F
Neste momento, necessita-se de uma especificação adicional em qualquer um dos
conjuntos de frações molares para obter um modelo com o requerido grau de liberdade igual à
dois.
Considere as duas escolhas óbvias: Σxi =1 ou Σyi=1. Par a primeira escolha tem-se:

 Fz i 
∑ x = ∑  F + (K
i i i =1
- 1)V 
(12)
 i

e o modelo flash é trivialmente satisfeito para todo problema flash se for estabelecido que yi =
zi e V=0. Similarmente, se for usado Σyi=1 encontra-se:

 F.K i .z i 
∑ y = ∑  F + (K
i =1 (13)
i - 1)V 
i i

e o modelo flash é trivialmente satisfeito para todo problema flash se for estabelecido que yi
= zi e V=F.
13

Claramente, qualquer uma das equações conduz à pseudo-soluções (na composição de


alimentação) que não estão relacionadas com a verdadeira solução do problema flash. Para
eliminar as soluções triviais considera-se uma especificação alternativa de Rachord e Rice
(1952). Tomando a diferença de Σxi=1 e Σyi=1 tem-se:

∑ x −∑ y =0
i i i i (14)

Nota-se que esta nova especificação, junto com o balanço de massa total, ainda conduz
às corretas especificações nas frações molares. Aplicando estas condiçoes às relações das
frações molares tem-se:

 F (K i - 1)z i 
∑ y − ∑ x = ∑  F + (K
i i i i i
- 1)V
=0 (15)
 i 
e vê-se que as pseudo-raízes não podem resolver esta equação. De fato, xi=zi ou xi=zi são
soluções permitidas somente se a (bem apropriada) condição que Ki = 1 e se for uma mistura
azeotrópica. (BIEGLER et al. (1999))

2.4.1.1. Estratégias para os cálculos de flash

O modelo flash pode ser dado concisamente por:


z i F = Vyi + Lxi i = 1,...NC
y i = K i xi i = 1,...NC
0
K i = γ i (x,T)f i (T, P)xi / φ(y,T)P i = 1,...NC
F =V + L (16)

∑ x −∑ y =0
i i i i

FH f + Q = VH v ( y, T , P ) + LH l ( x, T , P )

e agora dois graus de liberdade podem ser especificados. Enquanto muitas alternativas são
possíveis para os cálculos do projeto, os cálculos de flash são geralmente resolvidos pelos
graus de liberdade escolhidos entre as variáveis V/F, Q, P e T, como pode ser visto abaixo,
nas combinações possíveis dessas variáveis:
T, P - Flash isotérmico
V/F = 0, P - Temperatura do ponto de bolha
V/F = 1, P - Temperatura do ponto de orvalho
T, V/F=0 - Pressão do ponto de bolha
14

T, V/F=1 - Pressão do ponto de orvalho


Q=0, P - Flash adiabático
Q, P - Flash não adiabático
V/F, P - Percentagem de vaporização no flash

O mais simples dos casos é dado pelo flash (P,T) já que este não requer iteração para o
balanço de energia. Para este caso, o problema flash pode ser resolvido pela sequência de
cálculos, apresentada na seção 2.4.1.2.

2.4.1.2. Sequência de cálculo Flash TP

1. Para um fixo zi (estando certo que Σ zi=1) e F, especifica-se T e P. Continuar se estiver


entre o ponto de bolha e ponto de orvalho. (Para não-idealidade dependente da
composição, fornecer uma estimativa inicial para xi e yi);
2. Chute V/F;
3. Calcule K i = γ i (x,T)f i 0 (T, P)x i / φ (y,T)P ;

4. Calcular x i = z i /(1 + (K i - 1)V/F) e yi =Kixi;

5. Avaliar a relação implícita Ψ(V/F) = Σ xi Σ yi. Se Ψ(V/F) é zero (ou com uma

pequena tolerância), PARE. Siga para o passo 6;


6. Reavalie o chute para V/F e volte ao passo 3.

Especificações TP são mais comuns para misturas em que todos os componentes têm
pontos de ebulição numa faixa bem estreita (valores bem próximos), como o benzeno e o
tolueno. Aqui V/F pode variar enre zero e um, com uma pequena faixa de temperatura. Este
caso é comum para misturas separadas por destilação. Por outro lado, para misturas com uma
faixa larga de ebulição (como a água e ar) a especificação TP na sequência de cálculos do
flash funciona pobremente porque a temperatura de equilíbrio varia bastante para pequenas
mudanças em V/F. Estas misturas comumente separadas por absorção e as especificações
(V/F, T) e (V/F, P) são usadas. Senão, o algoritmo é similar à sequência de cálculos apresenta
anteriormente. Além disso, para estes casos, note que o balanço de entalpia não é necessário
no loop de iteração.
Finalmente, quando a especificação no calor de entrada, Q, é feita (como em um flash
adiabático), então um balanço de entalpia é imposto e necessita ser incorporado ao algoritmo
15

do flash. Geralmente o balanço de entalpia é tratado “chutando” a temperatura, e resolvendo o


flash TP no loop interno. A entalpia é então calculada, combinada ao calor de entrada, e a
temperatura é reavaliada no loop externo. Esta sequência de cálculos consome muito mais
tempo. Alternativamente, todas as equações do modelo flash podem ser resolvidas
simultaneamente usando o método de Newton ou Broyden. Com esta simultânea
aproximação, ambas as misturas de pontos de ebulição próximos e mais distantes podem ser
conduzidos por um caminho simples. No entanto, para todos estes métodos, rotinas
termodinâmicas não-ideias necessitam ser chamadas frequentemente e isso aumenta os gastos
computacionais.

2.4.2. Método Inside-Out para os Cálculos de Flash

As sequências de cálculo flash desenvolvidas acima sofrem de duas desvantagens:


• Elas são projetadas para misturas de altos ou baixos pontos de ebulição e se
apresentam pobres para os casos opostos;
• Elas requerem frequentes chamadas para avaliar as funções termodinâmicas não-
ideais, especialmente quando o balanço de energia necessita ser incorporada nos
cálculos do flash.

Preocupados com esses problemas, Boston e Britt (1978) desenvolveram um algoritmo


“inside-out” que acelera enormemente a solução dos problemas de flash. No loop externo,
esta aproximação combina as equações das propriedades físicas não-ideais e expressões
simplificadas para K e entalpias e então usa estas expressões para resolver as equações de
flash no loop interno. A solução destas equações é então usada para atualizar as expressões
simplificadas e o procedimento termina uma vez que as expressões combinam aqueles atuais
não-ideais no loop externo.
Para ilustrar as vantagens do algoritmo inside-out, considere o tipo de flash PQ com as
equações de flash dadas anteriormente. Boston (1980) além disso sugeriu as seguintes
simplificaçoes para o loop interno:
16

Ki = αi Kb
ln(K b ) = A + B (1/T - 1/T * )
(17)
H' v = C + D (T - T * )
H' l = E + F (T - T * )

Onde os parâmetros A, B, C, D, E, F e αi são livres para combinarem com as expressões não-


ideais de K e entalpias (H’v e H’l computadas em base mássica). Kb é uma média de K que é
baseada na importância do K componente i. αi representa as volatilidades relativas, e H’v e H’l
são as entalpias de gás ideal com temperatura de referência T*. Para manusear ambas as
misturas com substâncias com pontos de ebulição estreitos e largos, Boston e Britt definiram
uma variável artificial de iteração, R = Kb/(Kb+L/V). Esta variável toma o domínio de
temperatura ou V/F para misturas mencionadas, respectivamente, e elimina a necessidade de
separar algoritmos para estes sistemas. Este ocorre porque R pode agora variar bastante ambas
para grandes mudanças em T (wide boiling) e L/V (narrow boiling). Neste ponto, uma vez
fixados os parâmetros (A, B, C, D, E, F e αi) para o loop externo, pode-se derivar as seguintes
relações através da substituição das equações de flash e expressões simplificadas:
z i F = f i = Vy i + Lxi (18)

Usando yi =Kixi e definindo Ki =αiKi, tem-se:

f i = (VK i + L )xi = (α iVK b + L )xi (19)

Dividindo por (VKb+L) e substituindo por R chega em:

f i / (VK b + L ) = (α iVK b + L )xi / (VK b + L )


(20)
f i / (VK b + L ) = (α i R + 1 - R )xi

Define então o novo conjunto de variáveis:

pi = xi (VK b + L ) = xi L / (1 - R ) = f i / (α i R + 1 - R )xi (21)

Note que pi’s são determinados somente de R e quantidades especificadas no loop


externo. Do somatório e das equações de equilíbrio obtem-se:
17

L = (1 - R )∑ pi
V =F-L
K b = (∑ pi ∑α p )i i

xi = pi / (VK b + L ) (22)

y i = α i K b xi
−1
T = ((ln K b − A) / B + 1 / T * )

Usando R como a variável de iteração, o cálculo do flash é completado checando o


balanço de entalpia simplificado. O algoritmo de Boston-Britt pode ser resumido pela
seguinte sequência de cálculos:

1. Iniciar A, B, C, D, E, F e αi;
2. Chutar R;
3. Resolver para pi, Kb,T, L, V, xi e yi usando as equaçoes acima;
4. Converter os fluxos para a base mássica e avaliar as entalpias mássicas simplificadas
para a equação de balanço;
Ψ (R ) = H ' f +Q / F' +(L' / F' )(H' l (x,T, P ) − H ' v ( y,T, P )) − H ' v ( y,T, P )
5. Se Ψ(R) está dentro da tolerância estipulada, ir para o passo 6. Senão, modifique o
chute para R e volte para o passo 3;
6. Na primeira passagem, obtem-se os novos valores de A, B, C, D, E, F e αi comparando
com as expressões não-ideais. Para os próximos ajuste somente A, C, E e αi usando o
método de Broyden para conciliar estes parâmetros com as expressões não-ideais.

Boston e Britt preferem a base mássica para o balanço de entalpia para evitar
insensibilidade de R (através de L/F) quando (Hv-Hl) é próximo de zero em termos molares.
Este algoritmo converge muito mais rapidamenteque os algoritmos desenvolvidos
anteriormente e tem sido incorporado como o algoritmo padrao para o flash em simuladores
de processos comerciais.
Para demonstrar este algoritmo, Boston e Britt resolveram uma grande variedade de
sistemas não-ideais incluindo sistemas de ponto de ebulição próximos e afastados, e com
Wilson, UNIQUAC, NRTL, e equação de estado. Típica experiência nestes exemplos tem
menos que seis interações externas (onde avaliações das propriedades físicas são requeridas).
Finalmente, experimentos numéricos têm mostrado que este algoritmo geralmente pode ser
18

resolvido com a composição dependente de K embora as expressões simplificadas não sejam


funções de xi. Para casos altamente não-ideais, no entanto, Boston (1980) sugere uma
modificação que leva em conta o K simplificado dependente da composição e torna o
algoritmo mais robusto. (BIEGLER et al. (1999))

2.5. PROJETO DE REATORES NÃO-ISOTÉRMICOS

Reatores químicos, particularmente para processos contínuos, são geralmente


projetados para envolver múltiplas fases (por exemplo, vapor, líquido, sólido reagente e
catalizador sólido), diferentes geometrias (tanques agitados, tubulares, transporte através da
membrana), e vários regimes de transferência de momento, calor e massa (fluxos viscosos,
turbulentos, condução, radiação, difusão e dispersão). São várias configurações, envolvendo
diferentes combinações de seus atributos, que na tentativa de desenvolver modelos de reatores
generalizados tem-se deparado com um sucesso limitado.
A maioria dos simuladores de processo fornece quatro tipos de modelos de reatores,
incluindo:
(1) Um modelo estequiométrico que permite a especificação das conversões e extenção da
reação para uma ou mais reações específicas;
(2) Um modelo de múltiplas fases no equilíbrio químico, onde a aproximação para o
equilíbrio para reações individuais podem ser feitas;
(3) Um modelo cinético para um reator CSTR que assume perfeita mistura das fases
homogêneas (líquido e vapor); e
(4) Um modelo cinético para um reator PFR, para fases homogêneas e assumindo
nenhuma dispersão.
Estes modelos ideais são usados nos primeiros estágios da síntese de processos,
quando os detalhes do projeto do reator são menos importante, porém os efluentes do reator e
a condução de calor são necessários.
Os modelos de reatores ideais são substituidos por modelos comerciais de
significantes detalhes. Para este propósito, todos os simuladores fornecem facilidades para a
inserção de modelos gerados pelo usuário e também facilitam a estimação dos parâmetros dos
modelos cinéticos por regressão não-linear. (SEIDER et al. (2003))
19

2.5.1. Balanço de energia e a Primeira Lei da Termodinâmica

Um sistema é qualquer porção limitada do universo, estacionário ou em movimento,


que é escolhida para a aplicação de várias equações termodinâmicas. Para um sistema
fechado, no qual nenhuma massa cruza as fronteiras do sistema, a variação na energia total do
sistema, dÊ, é igual ao fluxode calor para o sistema, δQ, menos o trabalho realizado pelo
sistema sobre as vizinhanças, δW:

dÊ = δQ − δW (23)

no qual os δ’s signficam que δQ e δW não são diferenciais exatas de uma função de estado.
Já para os sistemas abertos, ou seja, onde massa cruza as fronteiras do sistema, como
nos casos dos reatores de escoamento contínuo citados anteriormente, o balanço de energia
pode ser representado pela expressão genérica, representada pela equação (24).
 taxa de   taxa de transferência   taxa de transferência 
 taxa de     taxa de variação de  de energia adicionada  de energia perdida 
acúmulo   transferência        (24)
  = de calor das  −  trabalho realizado  +  ao sistema através  −  pelo sistema através 
de energia    pelo sistema sobre     
   vizinhanças    da massa transferida  da massa que sai 
no sistema  para o sistema  suas vizinhanças  para o sistema  do sistema 
  

O balanço de energia para o regime não estacionário para um sistema aberto que tenha
n espécies, cada qual entrando ou saindo do sistema, com suas respectivas vazões molares Fi
(moles de i por tempo), e com suas respectivas energias Ei (joules por mol de i), é

dÊ sist & & n n


= Q − W + ∑ E i Fi − ∑ E i Fi (25)
dt i =1 entrada i =1 saida

De forma mais específica, no caso do regime estacionário:


n
& − F ∑ T Θ C dT − ∆H° (T ) + T ∆C dT  F X = 0
& −W
Q s A0
i =1
∫Ti 0 i p i  Rx R ∫TR p  A 0 (26)

onde:
FA0 – fluxo molar da espécie de referência A;
Θ – razão do número de moles iniciais (que entram) da espécie i, pelo número de moles
iniciais (que entram) da espécie A;
20

n T
Cpi – calor específico da espécie i na temperatura T, podendo o termo ∑∫
i =1
Ti 0
Θ i C p i dT ser

representado por:
T
n T n
~ ~ ∫ C p i dT
∑∫ Θ i C p i dT = ∑ Θ i C p i (T − Ti 0 )
Ti 0
e Cpi = ;
i =1
Ti 0
i =1 (Ti 0 − T )
T
∆H° Rx (TR ) + ∫ ∆C p dT - é a entalpia de reação à temperatura T, ∆H Rx (T ) , e ∆H° Rx (TR ) é a
TR

entalpia de reação à temperatura de referência TR; e


X é a conversão. (FOGLER, (1999))

2.5.2. CSTR (Continuous-Stirred-Tank-Reactor)

O mais simples dos reatores cinéticos é o CSTR, no qual o conteúdo é assumido estar
perfeitamente agitado. Com isso, a composição e a temperatura são assumidas uniformes em
todo o volume do reator e igual à composição e temperatura do efluente do reator. Um reator
perfeitamente agitado é usado geralmente para reações homogêneas em fase líquida. O
modelo CSTR é adequado para este caso, desde que a reação ocorra sob condições
isotérmicas ou adiabáticas. Embora os cálculos envolvam somente equações algébricas, estas
podem ser não-lineares. Consequentemente, uma possível complicação que deve ser
considerado é a existência de múltiplas soluções, duas ou mais podendo ser estáveis.
(SEIDER et al. (2003))
A equação de projeto para um CSTR no qual não há variação espacial na velocidade
de reação é
FA 0 X
V= (27)
− rA
Acoplando a equação (27) na equaçao (26) e fazendo alguns rearranjos e simplificação
obtém a equação (28)
& −W
Q & n

FA0
s
[ ]
− X ∆H°Rx (TR ) + ∆Ĉp (T − TR ) = ∑ΘiCpi (T − Ti0 ) (28)
i=1

sendo ∆Ĉ p os calores específicos médios ou constantes. Esta equação é utilizada para obter o

volume do reator ou a temperatura de operação. Se necessário, o CSTR é ou aquecido ou


21

resfriado por uma camisa de aquecimento ou resfriamento ou por uma serpentina colocada no
interior do reator.
As reações são frequentemente conduzidas adiabaticamente e usualmente com
aquecimento ou resfriamento das correntes de entrada e saída do vaso de reação. Com a
exceção de processos altamente viscosos, o trabalho feito pelo agitador geralmente pode ser
& na equação (28), o balanço de energia pode ser escrito
desprezado. Depois de substituir Q
como
UA(Ta − T ) n
~
FA 0
[ ]
− X ∆H° Rx (TR ) + ∆Ĉ p (T − TR ) = ∑ Θ i C pi (T − Ti 0 ) (29)
i =1

sendo Ta a temperatura ambiente.


Sob condições de operação adiabática e trabalho de agitação desprezível, o balanço se
torna
n
~
[ ]
− X ∆H° Rx (TR ) + ∆Ĉ p (T − TR ) = ∑ Θ i C pi (T − Ti 0 ) (30)
i =1

Abaixo é ilustrado um algoritmo para o projeto de um reator não isotérmico


considerando a reação irreversível de primeira ordem, em fase líquida:

Tabela 1 - Algoritmo para o CSTR.


1. Equação de projeto do CSTR:
FA 0 X
V= (T.1.1)
− rA

2. Lei de velocidade de reação: − rA = kC A (T.1.2)


−E
RT
com k = Ae (T.1.3)
3. Estequiometria (fase líquida, v=v0):
C A = C A 0 (1 − X ) (T.1.4)
4. Combinando, resulta
v0  X 
V= −E   (T.1.5)
Ae
RT
1− X 

CASO A: As variáveis X, v0, CA0 e FA0 são especificadas, e o volume do reator, V,


deve ser determinado:
5.a. Encontrar a temperatura, T, para a alimentação. Para o caso adiabático, resolver
22

n
~
[
− X ∆H° Rx (TR ) + ∆Ĉ p TR + ∑ Θ i C pi Ti 0 ]
i =1
T= n
(T.1.6)
~
∑ Θ i C pi + X∆Ĉ p
i =1

Para o caso não adiabático,


n
UA(Ta ) ~
FA 0
[
− X ∆H° Rx (TR ) + ∆Ĉ p TR + ∑ Θ i C pi Ti 0 ]
i =1
T= n
(T.1.7)
UA ~
+ X∆Ĉ p + ∑ Θ i C pi
FA 0 i =1

6.a.Calcular k pela equação de Arrhenius


7.a.Calcular o volume do reator, V, a partir da equação (T.1.5).

CASO B: As variáveis v0, CA0, V e FA0 são especificadas, e a temperatura de saída,


T, e a conversão, X, são quantidades desconhecidas. O procedimento é:
5.b.Resolver o balanço de energia (adiabático) para X como uma função de T:
n
~
∑ Θ C (T − T )
i =1
i pi i0
X EB = − (T.1.8)
[∆H° Rx (TR ) + ∆Ĉ p (T − TR )]
Para o caso não adiabático,
UA(Ta − T ) n ~
− ∑ Θ i C pi (T − Ti 0 )
FA 0 i =1
X EB = (T.1.9)
[∆H° Rx (TR ) + ∆Ĉ p (T − TR )]

6.b.Resolver a equação (T.1.5) para X como uma função de T:


−E
RT
τAe V
X MB = −E
onde τ = (T.1.10)
1 + τAe
RT
v0

7.b.Encontrar os valores de X e T que satisfaçam tanto o balanço de energia quanto o


balanço molar.
(FOGLER, (1999))

2.5.3. PFR (Plug-Flow Tubular Reactor)

Mais complexo, no qual a composição do fluido, escoando como um pistão,


gradualmente muda ao longo do comprimento do reator, sem gradiente de composição ou
23

temperatura na direção do escoamento. Além disso, as taxas de transferência de calor e massa


são negligenciáveis na direção axial. Então, o PFR é completamente não-agitado, com todos
os elementos tendo o mesmo tempo de residência no reator. Se o reator opera sob condições
adiabáticas ou não-isotérmicas, a temperatura do fluido muda gradualmente ao longo do
reator. (SEIDER et al. (2003))
O balanço de energia dado pela equação (26) relaciona a conversão em qualquer ponto
à temperatura da mistura de reação no mesmo ponto (isto é, fornece X como uma função de
T). Normalmente existe uma quantidade desprezível de trabalho realizado sobre a, ou pela,
mistura reagente, de forma que, em geral, o termo de trabalho pode ser desprezado no projeto
de reator tubular. Contudo, a menos que a reação seja conduzida adiabaticamente, a equação
(26) ainda é difícil de ser resolvida porque em reatores não adiabáticos o calor adicionado ou
removido do sistema varia ao longo do comprimento do reator. Este problema não ocorre em
& e
reatores adiabáticos, os quais são frequentemente encontrados na indústria. Como o Q
& são iguais a zero, a equação (26) reduz-se a
Ws

T n
X[− ∆H Rx (T )] = ∫
Ti 0
∑Θ C
i =1
i pi dT (31)

Esta equação pode ser combinada com o balanço molar diferencial


dX
FA 0 = −rA (X, T ) para obter a temperatura, a conversão e os perfis de concentração ao
dV
longo do comprimento do reator. O algoritmo para resolver PFRs operados adiabaticamente é
mostrado na Tabela 2.

Tabela 2 - Algoritmo para um PFR adiabático, com reação elementar reversível em fase
gasosa ( A ↔ B ) e perda de pressão desprezível.
dX − rA
Balanço molar: = (T.2.1)
dV FA 0
 C 
Lei de velocidade de reação: − rA = k  C A − B  (T.2.2)
 KC 
 E  1 1 
  −  
 R  T1 T  
com k = k 1 exp (T.2.3)

 ∆H °Rx  1 1  
  −  
 R  T2 T  
K C = K C (T2 )exp (T.2.4)

Estequiometria: Gás, ε=0, P=P0


24

T0
C A = C A 0 (1 − X ) (T.2.5)
T
T0
C B = C A0 X (T.2.6)
T
Combinando,
 X  T0 
− rA = kC A 0 (1 − X ) −   (T.2.7)
 K C  T 
 X  T0 
kC A 0 (1 − X ) −  
dX  K C  T 
e = (T.2.8)
dV FA 0

Balanço de energia:
n
~
[ ]
− X ∆H° Rx (TR ) + ∆Ĉ p TR + ∑ Θ i C pi Ti 0
i =1
T= n
(T.2.9)
~
∑ Θ i C pi + X∆Ĉ p
i =1

~
Entrar com os valores dos parâmetros k1, E, R, KC(T2), ∆HRx(TR), C pi , ∆Ĉ p , CA0, T0, T1, T2 e
P.
Entrar com os valores iniciais X=0, V=0 e os valores iniciais X=Xf e V=Vf.
Definir as vazões iniciais de entrada dos componentes, Fi0.

3 RESULTADOS E DISCUSSÃO

O objetivo dessa análise é implementar um simples processo químico usando


diferentes plataformas de simulação e comparando os resultados obtidos entre si e, se
possível, com aqueles encontrados na literatura, obtidos de dados experimentais previamente
testados ou que são realizados em plantas químicas reais. No caso deste trabalho foram
implementados casos de flash’s isotérmico e adiabático; um caso de CSTR adiabático e um
PFR adiabático. Além disso, ao final será mostrado um exemplo de um sistema de separação
de biogás por um sistema de membrana (a unidade implementada) que representa apenas uma
parte de um conjunto de outros equipamentos.

3.1. FHASH ISOTÉRMICO MULTICOMPONENTE


25

Para o cálculo do flash isotérmico multicomponente, várias formas diferentes de


representar um problema foram testadas de maneira que ao final fosse possível verificar a
eficiência dos códigos implementados e também das plataformas utilizadas.
Um exemplo de vaso flash isotérmico retirado da literatura, mais precisamente aquele
da simulação no software HYSIM e apresentados no seu Guia do Usuário, página 7-110, foi
utilizado para a validação dessa seção: uma corrente de 144 kmol/h a 60°F e 600 Psia é
alimentada a um vaso flash. Esta é formada por uma mistura de hidrocarbonetos, onde os
componentes e suas frações molares são apresentados na Tabela 3. Os resultados após
simulação também foram descritos na mesma tabela. Além disso, a alimentação descrita
anteriormente será a mesma para todos os casos apresentados nessa seção.

Tabela 3 - Simulação obtida no software HYSIM para o caso flash isotérmico para a
separação de hidrocarbonetos.
Corrente Alimentação Líquido Vapor Unidade
Pressão 600 600 600 Psia
Temperatura 60 60 60 °F
Vazão 144 74,3626 69,6374 lbmol/h
Fração molar metano 0,4861 0,1933 0,7988 -
Fração molar etano 0,1389 0,1435 0,1339 -
Fração molar propano 0,0694 0,1040 0,0325 -
Fração molar isobutano 0,0625 0,1067 0,0153 -
Fração molar n-butano 0,0556 0,0979 0,0104 -
Fração molar isopentano 0,0486 0,0900 0,0044 -
Fração molar n-pentano 0,0417 0,0779 0,0030 -
Fração molar n-hexano 0,0486 0,0929 0,0013 -
Fração molar n-heptano 0,0278 0,0535 0,0003 -
Fração molar n-octano 0,0208 0,0403 0,0001 -
Entalpia 231900,2465 -41325,5303 273225,7809 Btu/h

Primeiramente trabalhou-se com a implementação de um código no Scilab 5.1.1. Este,


que pode ser visto no Apêndice A, foi concebido para ser capaz de calcular 3 casos diferentes,
dependendo da necessidade do problema. Estes casos são: (1) cálculo de flash isotérmico, (2)
condição de ponto de bolha de uma mistura e (3) ponto de orvalho. A escolha é feita inserindo
o número do caso desejável a ser resolvido via teclado, na tela de simulação do Scilab
26

‘Console’, após a validação do código e clicando em ‘Execute’. A partir deste ponto é


necessário inserir os dados solicitados na mesma tela de simulação ‘Console’, para que o
problema tenha grau de liberdade zero e possa convergir a uma resposta coerente. Neste
momento se está interessado no cas (1), ou seja, no cálculo de um flash isotérmico. O código
implementado considera algumas hipóteses que são importantes para o cálculo das
composições de equílibrio, como:
• Considerou-se que o sistema de mistura comporta-se como um sistema ideal,
por ser composto de espécies da mesma família (hidrocarbonetos), embora a
pressão não sendo baixa (600 psia ou 41,4 bar);
• O modelo termodinâmico segue a Lei de Raoult;
• São necessários calcular as variáveis K e estes são encontrados dividindo a
pressão de saturação de cada componente puro pela pressão do sistema;
• Para o cálculo das pressões parciais dos componentes, faz-se uso da Equação
de Antoine e consequentemente, foi necessário conhecer os valores dos
parâmetros dessa equação para cada componente. Os valores dos parâmetros
foram obtidos do apêndice A do livro The properties of gases and liquids de
Reid e Prausnitz (2001).

Para avaliar a convergência dos cálculos, lançou-se mão do Método de Newton, que
avalia o quanto este método é preciso na estimativa das variáveis. Para isso, definiu o limite
máximo de iterações e a tolerância do desvio entre o valor calculado na iteração atual e aquele
da iteração imediatamente anterior. Foram adotados como limte máximo de iterações e
tolerância do desvio os valores 1.107 e 1.10-8, respectivamente. Além disso, definou-se
também qual seria a estimativa inicial para a razão entre a vazão de Vapor e a da
Alimentação, representada pela variável VF. Esta será a variável de avaliação nas iterações do
Método de Newton.
Com isso, inseriu-se os dados necessários para a resolução e gerou-se os seguintes
resultados:
27

Tabela 4 - Resultado gerado na simulação do código implementado no Scilab de cálculo do


flash isotérmico.
iteração V/F função derivada
1 0,5000 0,0318 2,1985
2 0,4855 0,0002 2,1737
3 0,4855 0,0000 2,1736
***************************************************************************
No de iterações= 3
Valor de VF= 0,485452

A vazão da fase vapor e líquida são, respectivamente (em lbmol/h): 69,905148 74,094852
Composição a P= 600 Psia

*******************************************************************
* componente composição vazão *
* fração molar (lbmol/h) *
*-------------------------------------------------------------------------------------------------*
* | x y | liquida vapor *
* [ metano] | 0.149866 0.842486 | 11.104326 58.894074 *
* [ etano] | 0.154405 0.122466 | 11.440620 8.560980 *
* [ propano] | 0.115503 0.020534 | 8.558175 1.435425 *
* [isobutano] | 0.114602 0.007275 | 8.491419 0.508581 *
* [n-butano] | 0.103812 0.004499 | 7.691922 0.314478 *
* [isopentano] | 0.093073 0.001461 | 6.896259 0.102141 *
* [n-pentano] | 0.080174 0.000921 | 5.940449 0.064351 *
* [n-hexano] | 0.094169 0.000300 | 6.977416 0.020984 *
* [n-heptano] | 0.053982 0.000049 | 3.999795 0.003405 *
* [ octano] | 0.040414 0.000010 | 2.994472 0.000728 *
****************************************************************

Verifica-se que o Método de Newton foi bastante eficaz, visto que foram necessários
apenas 3 iterações para se obter os valores do Estado Estacionário. O valor final da razão
entre a vazão de Vapor produzida sobre aquela da Alimentação foi 0,485, ou seja, 48,5% da
alimentação é vapor e 51,5% é líquido. Comparando os valores obtidos nesta simulação com
aqueles apresentados na Tabela 3 verifica-se que a proporcionalidade de cada fração molar de
cada componente nas correntes vapor e líquida se mantém, porém a grandeza de cada um
difere. Este resultado já era esperado, pois se trata de uma simplificação do flash e métodos
utilizados naquele implementado no HYSIM.
Para que valores mais precisos fossem obtidos seria necessário, obviamente, aumentar
o grau de detalhamento do código, em outras palavras, detalhar o comportamento
termodinâmico da mistura, pois se trata de uma mistura não-ideal (devido à condição de
pressão e também pela variedade de tamanhos das moléculas e por haver compostos com
ramificação). Este maior detalhamento viria com um aumento dos esforços tanto mental
quanto computacional.
28

Neste sentido, buscaram-se novos caminhos que diminuíssem estes esforços e que
pudessem oferecer resultados ainda melhores. As alternativas são aquelas quando se utiliza a
plataforma CAPE-OPEN no Scilab e vice-versa. E o COCO 1.15, foi o software escolhido
para este trabalho que utiliza a plataforma CAPE-OPEN.
Antes de descrever os resultados obtidos da interação entre a plataforma CAPE-OPEN
com o Scilab é necessário inserir um pacote contendo todas as substâncias da mistura e o
pacote de propriedades termodinâmicas responsáveis pelos cálculos. É extremamente
importante que estes pacotes estejam totalmente criados para que as simulações feitas com os
mesmos possam ser válidas. Para isso, os passos a seguir apresentam como são criados e
modificados estes pacotes termodinâmicos:
• Abre-se a janela de interface ConfigureTEA, que utiliza a versão 1.1 do CAPE-
OPEN.
• Se o pacote de substâncias químicas que se deseja avaliar já existe, clique em
‘done’.

Figura 4 - Localização da seção de criação de pacotes termodinâmicos (ConfigureTEA) e


caixa de seleção de pacotes termodinâmicos criados previamente dos pacotes de substâncias
químicas.
29

• Caso este não exista, clique em ‘Create template’ (ver Figura 4). Na janela que
se abre, insere-se um nome para o pacote e uma descrição (opcional) na aba
‘General’. Na aba ‘Compounds’, clica-se em ‘Add’ e selecionam-se as
substâncias desejadas. Verifica-se em ‘Property Calculations’ quais
propriedades termodinâmicas e qual modelo das mesmas deseja-se calcular,
como por exemplo, para a Equação de Estado das fases vapor e líquida se o
modelo é mais bem representado pelo modelo de Peng Robinson ou Redlich
Kwong enre outras (ver Figuta 5).
• Além disso, pode-se definir a tolerância do erro, a quantidade máxima de
iterações a relação das pertubações da temperatura e pressão no sistema, etc.,
inseridas na aba ‘Options’.
• Existem outras abas que outros dados podem ser alterados de acordo com a
necessidade do problema.

Figura 5 - Adicionando componentes a um pacote termodinâmico.


30

Figura 6 - Seleção das propriedades e equações de estado.

• Criado o pacote é necessário escrever um código Scilab que possua alguns


comandos específicos de busca dos dados termodinâmicos contidos no pacote
de propriedades citado anteriormente. Os principais comandos utilizados nesta
implementação são aqueles mostrados logo abaixo e todo o código foi descrito
no Apêndice B.

Quando é utilizada a função capeOpenPackageManagers( ) esta buscará os ‘Pacotes


Mestres’ do COCO onde pacotes específicos de substâncias químicas foram definidas pelo
usuário e estes serão apresentados na tela de interface, podendo serem selecionados para se
trabalhar no Scilab. Com este pacote selecionado, pode-se detalhar quais pacotes específicos
de substâncias e propriedades serão utilizados, através do comando capeOpenPackages(x),
onde x representa o nome recebido para o Pacote Mestre. O código aqui implementado e
aqueles que serão implementados futuramente utilizam os pacotes criados no 'TEA (CAPE-
OPEN 1.1’ e sua busca é feita utilizando capeOpenGetPackage( ). E para obter os resultados
simulados utiliza-se a linha de comando
31

[phases,phaseFractions,phaseCompositions,T,P]=capeOpenEquilibrium(handle,X,prop1,val1,
prop2,val2,type), onde:

• handle: é o pacote escolhido entre os demais do pacote 'TEA (CAPE-OPEN


1.1;
• X: composição global;
• prop1: a propriedade 1 definida para a realização dos cálculos;
• val1: valor da prop1;
• prop2: a propriedade 2 definida para a realização dos cálculos;
• val2: valor da prop1;
• type: string indicando o tipo de solução desejada. É opcional;
• phases: quais fases estão presents no equilíbrio;
• phaseFractions: a fração que cada fase ocupa no equilíbrio;
• phaseCompositions: a composição molar dos componentes em cada uma das
fases;
• T e P são a temperatura e pressão no equilíbrio, respectivamente.

Ao final da simulação do código não foi possível obter qualquer resultado, pois
existem algumas inconsistências não identificadas. Por se tratar de um trabalho inovador erros
como este podem acontecer e, somente com um dispêndio de tempo maior são possíveis de
serem resolvidos. Mas em momento nenhum se tira o mérito de se construir uma biblioteca de
modelos. O desafio pode ser repassado para futuros pesquisadores e também aos usuários dos
códigos.

A última forma de análise do mesmo processo foi efetuar o caminho inverso


apresentado no segundo teste: utilizou a linguagem Scilab para projetar um vaso Flash
isotérmico no ambiente de simulação do COCO. Neste ambiente já existem simples unidades
operacionais prontas para serem utilizadas, somente necessitando definir o(s) pacote(s)
termodinâmico(s) (apresentado anteriormente), as portas de entrada e saída de dados, e
consequentemente, especificarem os campos intrínsecos contidos na porta de entrada. Porém
o objetivo desse trabalho é utilizar a interface do COCO somente como apoio para obtenção
de propriedades termodinâmicas e também como uma interface gráfica amigável. A intenção
é conseguir atingir um grau de detalhamento e complexidade de um processo, representando-o
da maneira que se aproxime o máximo possível da realidade, sem a necessidade de utilizar
32

modelos matemáticos intrínsecos do software, que podem não ser os mais indicados para o
caso. Porém, como se necessita de um parâmetro de comparação, configurou-se em uma
mesma janela de simulação uma unidade operacional com um código Scilab e outra gerada
pelo COCO. As especificações das entradas e pacotes termodinâmicos foram os mesmos para
ambas e, ao final, compararam-se os resultados, analizando os desvios gerados.
Para isso, a unidade operacional que será implementada com o código Scilab,
inicialmente funciona como uma “caixa-preta” na qual se pode escrever um código seja qual
for a linguagem escolhida (Scilab, Matlab), que manipula as informações de entrada e
transforma-as nas informações de saída do processo.
Os passos para se chegar nesta configuração são os seguintes:
• Abre-se a janela de interface COFE 1.15. Seleciona na barra de ferramentas o
ícone ‘Insert’, ‘Unit operation’, ‘Custom’ e finalmente ‘Scilab Unit
Operation’. Confirme em ‘ok’.

Figura 7 - Inserção de unidade de operação Scilab no COCO.

• Para modificar a unidade, clica-se duas vezes sobre esta e na janela que se abrir
seleciona-se ‘Show GUI’, na parte debaixo da mesma. Uma nova janela se abre
e nesta é possível definir as portas de entrada e saída (no caso do Flash, uma
entrada e duas saídas), os parâmetros e o próprio código. A linguagem utilizada
na seção ‘Scilab’ não difere muito daquela implementada software de mesmo
nome, como pode ser comprovada no Apêndice C.
33

Figura 8 - Edição de uma unidade de Operação no COCO.

• Com as portas definidas, a unidade “caixa-preta” aceitará inserir ‘setas’ que


representam as correntes, na configuração definida na seção ‘Ports’. As
magnitudes e unidades das variáveis do processo podem ser especificadas, que
podem ser acessadas através do duplo-clique do botão esquerdo do mouse, no
qual uma nova caixa de diálogo se abre, passível de modificação.
34

Figura 9 - Configuração da corrente de alimentação.

• Como já dito, o COCO possui uma interface gráfica bastante amigável. Nesse
sentido, é possível modificar a aparência das unidades operacionais,
escolhendo entre várias opções de unidades operacionais já existentes no
software.
35

Figura 10 - Edição da unidade operacional Scilab, aproximando a aparência da unidade a ser


simulada.

• Retornando à seção de modificação da unidade operacional, ‘Scilab’, pode-se


verificar se a implementação foi bem feita, clicando sobre o ícone ‘Test’ e, se
houver qualquer erro, na seção ‘Output’ mostrará o erro e onde este está, de
maneira análoga ao Scilab.

Figura 11 - Ícone de teste do código Scilab implementado no COCO.


36

• Se não houver mais nenhum problema, feche as janelas abertas e para resolver
o caso clica-se em ‘Sove’, na barra de ferramentas.
• Um relatório da simulação pode ser visualizado, inserindo um ‘Stream report’:
definem-se quais portas e variáveis são pertinentes para a análise. Além deste,
pode-se gerar o relatório da unidade, o ‘Unit report’.

Duas unidades diferentes cada uma com seu código Scilab foram implementadas, uma
utilizando o mesmo método de Newton para convergência apresentado anteriormente e a
outra usando somente alguns comandos de manipulação da corrente de alimentação (através
da linguagem própria CAPE-OPEN - COCO). Estas receberão as denominações “Scilab
isotérmico I” e “Scilab isotérmico II”, respectivamente. A unidade operacional gerada com os
recursos já definidos pelo COFE será tratada como “Flash isotérmico”. Os códigos foram
exibidos nos Apêndices C e D, respectivamente. Porém, no caso da unidade ‘Scilab
isotérmico I’ o código implementado não forneceu a convergência esperada, apresentando
uma mensagem de erro, assim como ocorreu para o caso apresentado anteriormente de
utilização do COCO no Scilab. A Figura 12 mostra a tela principal do COCO onde foi
simulada a unidade “Scilab isotérmico I” com sua respectiva mensagem de erro.

Figura 12 - Tela de simulação do COCO mostrando o caso do Flash isotérmico I- Método de


Newton, para o qual não obteve sucesso.
37

A Tabela 5 mostra os resultados obtidos na simulação da unidade “Scilab Flash


isotérmico II”. O pacote termodinâmico escolhido foi implementado utilizando a equação de
estado de Peng Robinson e verfica-se que estes apresentaram um desvio relativo menor em
comparação aos valores citados na literatura e também bem diferentes daqueles simulados no
Scilab, onde se considerou uma mistura ideal e seguindo a Lei de Raoult.

Tabela 5 - Relatório da simulação da unidade “Scilab Flash isotérmico II”, resgatando os


dados gerados pelo próprio COFE.
Corrente Alimentação Líquido Vapor Unidade
Pressão 600 600 600 Psia
Temperatura 60 60 60 °F
Vazão 144 74,5248 69,4752 lbmol/h
Fração molar metano 0,4861 0,191051 0,802593 -
Fração molar etano 0,1389 0,147447 0,129732 -
Fração molar propano 0,0694 0,103713 0,032593 -
Fração molar isobutano 0,0625 0,106841 0,0149367 -
Fração molar n-butano 0,0556 0,0976466 0,0104974 -
Fração molar isopentano 0,0486 0,0895533 0,00467011 -
Fração molar n-pentano 0,0417 0,0774261 0,00337729 -
Fração molar n-hexano 0,0486 0,0927611 0,0012292 -
Fração molar n-heptano 0,0278 0,05345 0,000285674 -
Fração molar n-octano 0,0208 0,0401113 0,0000851717 -
Entalpia -693202 -642962 -50239,6 Btu/h

Os mesmos resultados foram obtidos quando se utilizou a unidade operacional ‘Flash’


contida na biblioteca interna de modelos do COCO, como pode ser comprovado observando a
Tabela 6 e a Figura 14. Este resultado era esperado, pois no caso do Scilab Flash isotérmico II
trata-se de uma forma mais entendível e visível de obter os dados da simulação que é feita
internamente pelo caso Flash isotérmico.
38

Figura 13 - Tela de simulação do COCO mostrando o caso do Flash isotérmico II.

Tabela 6 - Relatório da simulação da unidade “Flash isotérmico”, gerado através da utilização


da unidade operacional Flash do COFE.
Corrente Alimentação Líquido Vapor Unidade
Pressão 600 600 600 Psia
Temperatura 60 60 60 °F
Vazão 144 74,5248 69,4752 lbmol/h
Fração molar metano 0,4861 0,191051 0,802593 -
Fração molar etano 0,1389 0,147447 0,129732 -
Fração molar propano 0,0694 0,103713 0,032593 -
Fração molar isobutano 0,0625 0,106841 0,0149367 -
Fração molar n-butano 0,0556 0,0976466 0,0104974 -
Fração molar isopentano 0,0486 0,0895533 0,00467011 -
Fração molar n-pentano 0,0417 0,0774261 0,00337729 -
Fração molar n-hexano 0,0486 0,0927611 0,0012292 -
Fração molar n-heptano 0,0278 0,05345 0,000285674 -
Fração molar n-octano 0,0208 0,0401113 0,0000851717 -
Entalpia -693202 -642962 -50239,6 Btu/h
39

Figura 14 - Tela de simulação do COCO mostrando o caso do Flash isotérmico.

3.2. FLASH ADIABÁTICO MULTICOMPONENTE

Prosseguindo com exemplos de unidades operacionais que trabalham simultaneamente


com Scilab e COCO, será apresentado nessa seção o caso de um flash adiabático com
alimentação multicomponente. O exemplo escolhido como referência foi aquele apresentado
no livro Separation Process Principles, 2.ed., de SEADER & HENLEY (2006), pp. 130-131.
Este diz que uma corrente de alimentação contendo hidrogênio, metano, benzeno e tolueno
são alimentados a um vaso flash a 120°F e 485 psia. Porém, a corrente líquida em equilíbrio
saindo do vaso alimentará uma torre de destilação para remover o restante de metano e
hidrogênio na mesma. E a pressão no prato de alimentação desta torre é de 165 psia. Portanto,
uma válvula que aplica uma queda de pressão é instalada na entrada do vaso flash,
diminuindo a pressão da corrente alimentada de 485 a 165 psia, realizando uma operação
adiabática. Na resolução do mesmo, o livro utiliza a equação de estado de Peng-Robinson
para a estimativa termodinâmica dos parâmetros. A Tabela 7 mostra as quantidades de cada
corrente deste vaso flash.
40

Tabela 7 - Valores para a simulação de um flash adiabático apresentado por Seader & Henley
(2006).
Corrente Alimentação Líquido Vapor Unidade
Pressão 485 165 165 Psia
Temperatura 120 112 112 °F
Vazão 487,4 471,06 16,34 kmol/h
Vazão molar hidrogênio 1,0 0,3 0,7 kmol/h
Vazão molar metano 27,9 12,7 15,2 kmol/h
Vazão molar benzeno 345,1 344,7 0,4 kmol/h
Vazão molar tolueno 113,4 113,36 0,04 kmol/h
Entalpia -1089,0 -1451,0 362,0 kJ/h

A partir deste exemplo, foi implementado no COCO duas unidades flash e


compararam-se seus resultados. Da mesma forma realizada na seção anterior, foi criada uma
unidade que utiliza um código Scilab (Flash adiabático Scilab) e outra a partir do modelo
Inside-Out, intrínseco do software COCO (Flash adiabático COCO). A Figura 15 mostra a
interface obtida após a simulação de ambas as unidades operacionais no COCO. O código
Scilab é mostrado no Apêndice E. O mesmo procedimento realizado na seção anterior, de
criação e modificação das unidades foi realizado nessa, com a diferença que a queda de
pressão na unidade ‘Flash adiabático COCO’ foi instalada uma válvula antes da alimentação
no vaso.
41

Figura 15 - Impressão da tela principal do COCO mostrando os resultados simulados para o


caso do flash adiabático.

Verifica-se que os resultados para ambas as unidades operacionais simuladas (que


apresentaram os mesmos valores) apresentam valores próximos daqueles da literatura, mas
não idênticos. Devido a este problema foi testado a influência do pacote termodinâmico nos
resultados, mais precisamente das equações de estado utilizadas, e concluiu-se que estes
influenciam na resposta final. Entre as equações de estado disponíveis no COCO, a que
melhor obteve resultados mais próximos daqueles apresentados na literatura foi aquela de
Soave Redlich Kwong Modificada. A Tabela 8 mostra os resultados da simulação quando se
utiliza esta equação de estado.
42

Tabela 8 - Valores para a simulação do flash adiabático no COCO utilizando a equação de


estado de Soave Redlich Kwong Modificada.
Corrente Alimentação Líquido Vapor Unidade
Pressão 485 165 165 Psia
Temperatura 120 112 112 °F
Vazão 487,4 471,696 15,7035 kmol/h
Vazão molar hidrogênio 1,0 0,0793177 0,920682 kmol/h
Vazão molar metano 27,9 13,5176 14,3824 kmol/h
Vazão molar benzeno 345,1 344,739 0,360552 kmol/h
Vazão molar tolueno 113,4 113,36 0,0398851 kmol/h
Entalpia -1,41837.107 -1,44959.107 8888,79 kJ/h

3.3. REATOR CSTR ADIABÁTICO MULTICOMPONENTE

Neste exemplo de CSTR adiabático foram implementadas duas unidades operacionais,


uma utilizando a unidade CSTR da biblioteca do COCO e a outra inserindo o código Scilab,
assim como nas demais seções vistas anteriormente. Este problema foi retirado da página do
grupo Amsterchem, http://www.amsterchem.com, que possui alguns exemplos de utilização
da linguagem Scilab na criação de unidades. Utilizou-se deste exemplo como ilustração do
caso de um CSTR adiabático, pois não foi encontrado na literatura um caso não tão complexo
e que também trabalhasse com substâncias químicas contidas no banco de dados do COCO
que, na versão gratuita não possui todas as existentes. O código implementado foi descrito no
Apêndice F.
O problema testado é o seguinte: deseja-se produzir etano, em fase gasosa, a partir da
reação entre o etileno e hidrogênio. A alimentação de 10 kmol/h contendo etileno, hidrogênio
e nitrogênio, nas proporções molares mostradas na Tabela 9, é alimentada a um CSTR que
opera adiabaticamente. A reação isotérmica tem uma taxa de reação igual a -rA = 4,16667e-6
*C(Etileno)*C(Hidrogênio) [mol/s/m3] e um calor de reação de -136330 J/mol. O volume do
reator é 0,09025 m3.
Os resultados obtidos por essa simulação, iguais para ambas as unidades, foram
discretizados também na Tabela 9, e a Figura 16 mostra a tela de simulação do COCO com as
duas unidades simuladas.
43

Tabela 9 - Valores da simulação do CSTR adiabático no COCO.


Corrente Alimentação Produto Unidade
Pressão 1466560 1466560 Pa
Temperatura 300 324,583 K
Vazão 10 9,93534 kmol/h
Fração molar etano 0 0,00650798 -
Fração molar etileno 0,4 0,396095 -
Fração molar hidrogênio 0,4 0,396095 -
Fração molar nitrogênio 0,2 0,201302 -

Figura 16 - Impressão da tela principal do COCO mostrando os resultados simulados para o


caso de um CSTR adiabático.

Existe a possibilidade de modificar as condições de operações das unidades, na


tentativa de obter uma melhor conversão na saída do reator. Porém, modificando a pressão e a
temperatura, por exemplo, as mudanças são pequenas ou piora-se a produção de etano.Esta é
uma vantagem de utilização do COCO, onde as simulações são realizadas com rapidez e de
uma maneira organizada na forma de planilhas.
44

3.4. REATOR PFR ADIABÁTICO MULTICOMPONENTE

Para este caso foi considerado como parâmetro de comparação o exemplo mostrado
por FOGLER (1999), no capítulo 8, sobre a isomerização em fase líquida do n-butano em um
PFR a alta pressão, usando essencialmente traços de um catalisador líquido. Este catalisador
dá à reação uma taxa específica de 31,1 h-1 a 360 K. Deseja-se calcular o volume necessário
para processar 163 kmol/h de uma mistura de 90 mol % de n-butano e 10 mol% de isopentano
(considerado inerte). O ∆HRx é igual a -6900J/molbutano e a energia de ativação 65,7 kJ/mol. A
constante da taxa de reação segue a Equação de Arrhenius e a concentração inicial de n-
butano, CA0, é 9,3 kmol/m3.
Neste exemplo, foi implementado a unidade operacional Scilab e seu código foi
mostrado no Apêndice G. A tela contendo a simulação realizada é aquela mostrada na Figura
17.

Figura 17 - Impressão da tela principal do COCO mostrando os resultados simulados para o


caso do flash adiabático.

A planilha contendo os resultados da simulação é mostrada na Tabela 10. Verifica-se


que os valores obtidos são muito próximos daqueles exibidos na literatura. Porém, o código
ainda necessita de melhorias, como por exemplo, no momento de integrar a equação do
balanço de massa para obter o volume do reator. No código implementado foi utilizado o
45

método numérica de discretização da integral, o que gera um pequeno desvio do valor real. O
valor do volume desse reator PFR citado na literatura para chegar à conversão de equilíbrio é
igual a 3,4 m3, enquanto que na simulação foi encontrado um valor de 2,58 m3.

Tabela 10 - Valores da simulação do PFR adiabático


Corrente Alimentação Produto Unidade
Pressão 600 600 Psi
Temperatura 330 359,469 K
Vazão 163 163 kmol/h
Fração molar n-butano 0,9 0,27 -
Fração molar isopentano 0,1 0,1 -
Fração molar isobutano 0 0,63 -

3.5. CASO ESPECIAL DE UM SEPARADOR À MEMBRANA DE BIOGÁS

Um caso especial, retirado também do site do Amsterchem é aquele sobre a separação


de compostos contidos num biogás através de um sistema de membranas. Esta ilustração é
feita apenas para mostrar que é possível implementar uma unidade operacional que utiliza o
código Scilab interligada a outros equipamentos e montar um fluxograma de um processo
industrial. A Figura 18 mostra o fluxograma e as planilhas de resultados após simulação.
Outra novidade neste caso é a utilização de um arquivo adicional, o gpcross.sci que calcula a
transferência de massa dos compostos entre as fibras e a calandra. Este código, por ser escrito
na planilha de simulação do Scilab, pode ser simulado separadamente neste ambiente ou
mesmo servir como arquivo-base para outros problemas.
Os dois códigos, o principal simulado no COCO e o gpcross.sci foram descritos nos
Apêndices H.1 e H.2.
46

Figura 18 – Fluxograma e planilhas de resultados obtidos para o caso de Separação de Biogás.

3.6. OBTENÇÃO DE PARÂMETROS FÍSICOS E TERMODINÂMICOS

A outra vertente desse trabalho foi a criação de um código Scilab (e que trabalha neste
ambiente) que lê e busca dados termodinâmicos e físicos das substâncias requeridas e são
apresentadas na tela CONSOLE do mesmo software estes dados reqsueridos. Este código,
descrito no Apêndice I, procura dados de duas listas diferentes de compostos simultaneamente
gerados a partir da decodificação binária de dois softwares lvres disponíveis atualmente, o
FYDAT e o DIPPR. O FYDAT possui uma lista de aproximadamente 700 substâncias
químicas e o DIPPR, 1023 compostos. Este é bastante útil e rápido na determinação das
propriedades, pois evita a necessidade de recorrer à literatura, o que pode custar bastante
tempo.

4 CONCLUSÃO

Conclui-se com este trabalho que há uma infinidade de possibilidades que podem ser
utilizadas para a simulação de unidades operacionais, servindo como uma base de modelos
dinâmicos para a utilização por pesquisadores ou até mesmo como material de aprendizado
em sala de aula. A comunicação entre softwares é muito vantajosa, visto que cada um
contribui com que melhor possui para facilitar e melhorar o entendimento de processos
47

químicos, como é o caso da ligação entre o Scilab e o COCO. Quanto mais ferramentas de
modelagem e simulação são disponíveis às pessoas mais tempo pode-se dedicar ao
aperfeiçoamento dos códigos, sem se preocupar se a propriedades físico-químicas e
termodinâmicas dos compostos estão corretas e se as fontes são confiáveis.
O objetivo deste trabalho é bastante audacioso, e nestas páginas foram descritas
somente o início de um projeto que ainda tem um potencial enorme de contribuição.

SUGESTÕES PARA PRÓXIMOS TRABALHOS

Futuros trabalhos que completem este trabalho serão bem-vindos e sugestões para
estes seriam: a verificação dos códigos implementados e possíveis melhoramentos e soluções
para os problemas de não-convergência encontrados; simulação de novas unidades
operacionais, como reatores biológicos, colunas de destilação, absorção e flash trifásico. Além
disso, criar fluxogramas de processos consagrados e verificar suas eficiências é outra forma
bastante interessante para se realizar.

REFERÊNCIAS BIBLIOGRÁFICAS

BIEGLER, L.T. et al. Sistematic Methods of Chemical Process Design. Rio de


Janeiro, Prentice-Hall do Brasil Ltda, 1999.

BOSTON, J. F. & H. I. BRITT, A Radically Different Formulation and Solution of the


Single-Stage Flash Problem. Comp. Chem.Eng., 2, 109, 1978.

FOGLER, H.S. Elementos de Engenharia das Reações Químicas 3.ed. Rio de Janeiro,
LTC Editora, 1999.

PENG, D. Y. & ROBINSON, D. B. A new two-constant equation of state. Ind. Eng.


Chem. Fundam.. v. 15, p. 59-64, 1976.

REID, R.C.; PRAUSNITZ, J.M. The properties of gases and liquids. 5.ed. New York
McGraw-Hill, 2001.

SEADER, J.D.; HENLEY, E.J. Separation process principles. 2.ed. EUA, John Wiley
& Sons, 2006.

SEIDER, W.D. et al. Product & Process Design Principles. 2.ed. EUA, John Wiley &
Sons, 2003.

Soave, G., Equilibrium Constants for a Modified Redlich-Kwong Equation of State.


Chem. Eng. Sci., 27, 1186, 1972.
48

APÊNDICES
49

APÊNDICE A - CÓDIGO SCILAB UTILIZADO PARA SIMULAR OS CASOS DE


FLASH ISOTÉRMICO, PONTO DE BOLHA E PONTO DE ORVALHO.
50
51
52
53
54
55

APÊNDICE B – CÓDIGO IMPLEMENTADO NO SCILAB QUE UTILIZA AS


FERRAMENTAS DO COCO.
56
57

APÊNDICE C – CÓDIGO SCILAB DE CÁLCULO DO FLASH ISOTÉRMICO


UTILIZANDO O MÉTODO DE NEWTON E A PLATAFORMA DO COCO.
//Flash isotérmico utilizando o Método de Newton
//Caso para uma separação entre metano, etano, propano, n-butano, isobutano,
//n-pentano, i-pentano, n-hexano, n-heptano, n-octano.

CAS_Methane="74-82-8";
CAS_Ethane="74-84-0";
CAS_Propane="74-98-6";
CAS_Butane="106-97-8";
CAS_Isobutane="75-28-5";
CAS_Pentane="109-66-0";
CAS_Isopentane="78-78-4";
CAS_Hexane="110-54-3";
CAS_Heptane="142-82-5";
CAS_Octane="111-65-9";

//Obtendo os indices dos componentes


cas=getCompoundConstant("CASRegistryNumber");
indexMethane=0;
indexEthane=0;
indexPropane=0;
indexButane=0;
indexIsobutane=0;
indexPentane=0;
indexIsopentane=0;
indexHexane=0;
indexHeptane=0;
indexOctane=0;

for i=1:nComp
casNumber=cas(i,:);

if (indexMethane==0) then if (strcmp(casNumber,CAS_Methane)==0) then indexMethane=i; end; end;


if (indexEthane==0) then if (strcmp(casNumber,CAS_Ethane)==0) then indexEthane=i; end; end
if (indexPropane==0) then if (strcmp(casNumber,CAS_Propane)==0) then indexPropane=i; end; end
if (indexButane==0) then if (strcmp(casNumber,CAS_Butane)==0) then indexButane=i; end; end
if (indexIsobutane==0) then if (strcmp(casNumber,CAS_Isobutane)==0) then indexIsobutane=i; end; end
if (indexPentane==0) then if (strcmp(casNumber,CAS_Pentane)==0) then indexPentane=i; end; end
if (indexIsopentane==0) then if (strcmp(casNumber,CAS_Isopentane)==0) then indexIsopentane=i; end; end
58

if (indexHexane==0) then if (strcmp(casNumber,CAS_Hexane)==0) then indexHexane=i; end; end


if (indexHeptane==0) then if (strcmp(casNumber,CAS_Heptane)==0) then indexHeptane=i; end; end
if (indexOctane==0) then if (strcmp(casNumber,CAS_Octane)==0) then indexOctane=i; end; end

end
if (indexMethane==0) then error("Componente Metano nao encontrado"); end
if (indexEthane==0) then error("Componente Etano nao encontrado"); end
if (indexPropane==0) then error("Componente Propano nao encontrado"); end
if (indexButane==0) then error("Componente Butano nao encontrado"); end
if (indexIsobutane==0) then error("Componente Isobutano nao encontrado"); end
if (indexPentane==0) then error("Componente Pentano nao encontrado"); end
if (indexIsopentane==0) then error("Componente Isopentano nao encontrado"); end
if (indexHexane==0) then error("Componente Hexano nao encontrado"); end
if (indexHeptane==0) then error("Componente Heptano nao encontrado"); end
if (indexOctane==0) then error("Componente Octano nao encontrado"); end

// Busca dos dados de entrada


T=getFeedProp(1,"temperature")
P=getFeedProp(1,"pressure")
imax=getParameter("max_int") // numero maximo de iteracoes para Metodo de Newton
tol=getParameter("tolerance") //precisao desejada para o Metodo de Newton
zf=getFeedProp(1,"fraction")
F=getFeedProp(1,"flow")
totalFlow=sum(F);
VF=getParameter("vf")

// Calculo dos valores de K


Ac_coef=getSinglePhaseProperty("activityCoefficient","liquid",T,P,[zf])
Fug_coef=getSinglePhaseProperty("FugacityCoefficient","vapor",T,P,[zf])
Fug=getSinglePhaseProperty("Fugacity","vapor",T,P,[zf])
for r=1:nComp
k(r)=(Ac_coef(r)*Fug(r))/(P*Fug_coef(r));
end

disp('Valores de k:');
disp (k);

//Metodo de Newton
iter=0;
toler=1e10;

//iteracao alfa funcao derivada


while (toler>tol) & (iter<imax) then

for d=1:nComp
x(d)=zf(d)/(1+VF*(k(d)-1));
y(d)=k(d)*x(d);
end
disp('Xs sao'); disp(x);
disp('Ys sao'); disp(y);
sum_x=sum(x);disp('somatorio de x eh:'); disp(sum_x);
sum_y=sum(y);disp('somatorio de y eh:');disp(sum_y);
Ac_coef=getSinglePhaseProperty("activityCoefficient","liquid",T,P,[x]);
Fug_coef=getSinglePhaseProperty("FugacityCoefficient","vapor",T,P,[y])
59

for s=1:nComp
k(s)=(Ac_coef(s)*Fug(s))/(P*Fug_coef(s));
end
disp('valores de k eh'); disp(k);

if abs(sum_x-sum_y)>1e-5 then
f=0;
for j=1:nComp
f=f+zf(j)*(1-k(j))/(1+VF*(k(j)-1));
end
disp("f eh"); disp(f);
df=0;
for g=1:nComp
df=df+zf(g)*(1-k(g))^2/(1+VF*(k(g)-1))^2;
end
disp("df eh"); disp(df); VF_old=VF;
if (VF>0) & (VF<1) then
if abs(df)>1e-8 then
VF= VF - f/df;
disp("vf eh"); disp(VF);
else
error ('Derivada nula');
end
else
error('Sistema nao fornece duas fases em equilibrio nessas condicoes');
end
else

break;

end

disp('tolerancia eh');
toler=abs(VF-VF_old);
disp (toler);
disp('iteracao:'); iter=iter+1; disp(iter);

end

disp('Composicao da fase liquida')


disp(x);
disp('Composicao da fase vapor')
disp(y);
V=totalFlow*VF;
L=totalFlow-V;
disp("A vazao de vapor eh:");
disp(V);
disp("A vazao de liquido eh:");
disp(L);
disp('setproduct y');
setProduct(1,V,y,"pressure",P,"temperature",T);
disp('setproduct x');
setProduct(2,L,x,"pressure",P,"temperature",T);
60

APÊNDICE D – CÓDIGO SIMPLIFICADO PARA O CÁLCULO DO FLASH


ISOTÉRMICO QUE UTILIZA SOMENTE COMANDOS DO COCO.
T=getFeedProp(1,"temperature")
P=getFeedProp(1,"pressure")
zf=getFeedProp(1,"fraction")
F=getFeedProp(1,"flow")
totalFlow=sum(F)

[phases,phasefractions,compositions,T,P]=getEquilibrium(zf,"pressure",P,"temperature",T)
vaporFraction=phasefractions(1);
vaporPhase=0;
phaseCount=size(phasefractions,1);
for i=1:phaseCount
if (getAggregationState(phases(i,:))==AGGSTATE_VAPOR) then
vaporPhase=i;
break
end
end
liquidPhase=0;
phaseCount=size(phasefractions,1);
for j=1:phaseCount
if (getAggregationState(phases(j,:))==AGGSTATE_LIQUID) then
liquidPhase=j;
break
end
end

fv=totalFlow*vaporFraction;
fl=totalFlow-fv; disp(fl);
setProduct(1,fv,compositions(vaporPhase,:),"pressure",P,"temperature",T);
setProduct(2,fl,compositions(liquidPhase,:),"pressure",P,"temperature",T);

APÊNDICE E – CÓDIGO SCILAB UTILIZADO PARA IMPLEMENTAR O CASO


DE FLASH ADIABÁTICO NO COCO.
// Exemplo de Flash Adiabatico

F=getFeedProp(1,"totalFlow")
delta_p=getParameter("Pressure drop")
delta_T=getParameter("Temp drop")
delta_h=getParameter("Heat duty")
zf=getFeedProp(1,"fraction")

if ((delta_p==0)&(delta_h==0)) then
//usando a alimentação de equilibrio
[phases,phasefractions,compositions,T,P]=getFeedEquilibrium(1)
else
//Calculando o equilibrio depois da queda de pressão e trabalho
if (delta_h~=0) then if (F==0) then delta_h=0, end; end
if (delta_h~=0) then delta_h=delta_h/F; end
p=getFeedProp(1,"pressure")-delta_p
t1=getFeedProp(1,"temperature")-delta_T
h=getFeedProp(1,"enthalpy")+delta_h
[phases,phasefractions,compositions,T,P]=getEquilibrium(zf,"pressure",p,"temperature",t1)
61

end

//Encontrando a fase vapor


vaporPhase=0;
phaseCount=size(phasefractions,1);
for i=1:phaseCount
if (getAggregationState(phases(i,:))==AGGSTATE_VAPOR) then
vaporPhase=i;
break
end
end

//Checando se temos uma fase vapor


if (vaporPhase>0) then
vaporFraction=phasefractions(vaporPhase)
if (phaseCount==1) then
//Tem-se somente a fase vapor
setProduct(1,F,zf,"pressure",P,"temperature",T)
setProduct(2,0,zf,"pressure",P,"temperature",T)
else
//Fase vapor
setProduct(1,F*vaporFraction,compositions(vaporPhase,:),"pressure",P,"temperature",T)
//Todas as outras fases por diferença
f=zf*F-(F*vaporFraction*compositions(vaporPhase,:));
ftot=sum(f);
if (ftot>0) then x=f/ftot; end;
setProduct(2,ftot,x,"pressure",P,"temperature",T);
end
else
disp(Não tem fase vapor);
setProduct(1,0,zf,"pressure",P,"temperature",T)
setProduct(2,F,zf,"pressure",P,"temperature",T)
vaporFraction=0
end

APÊNDICE F – CÓDIGO SCILAB UTILIZADO PARA A DEFINIÇÃO


DA UNIDADE DE CSTR ADIABÁTICO.
disp('Este eh um exemplo de um CSTR adiabatico')
disp('Reação: Etileno + Hidrogenio -> Etano')
//
//O sistema termico apresentado abaixo deve incluir os três componentes, e
// expor CASRegistryNumber, enthalpyF e volume

//Pressumir que a reação acorre na fase vapor

CAS_Ethane="74-84-0";
CAS_Ethylene="74-85-1";
CAS_Hydrogen="1333-74-0";

//Estequiometria
stoi_Ethane=1;
stoi_Ethylene=-1;
stoi_Hydrogen=-1;

//Obtendo os indices dos componentes


cas=getCompoundConstant("CASRegistryNumber");
62

compCount=size(cas,1)
indexEthane=0;
indexEthylene=0;
indexHydrogen=0;
for i=1:compCount
casNumber=cas(i,:);
if (indexEthane==0) then if (strcmp(casNumber,CAS_Ethane)==0) then indexEthane=i; end; end
if (indexEthylene==0) then if (strcmp(casNumber,CAS_Ethylene)==0) then indexEthylene=i; end; end
if (indexHydrogen==0) then if (strcmp(casNumber,CAS_Hydrogen)==0) then indexHydrogen=i; end; end
end
if (indexEthane==0) then error("Compound Ethane not found"); end
if (indexEthylene==0) then error("Compound Ethylene not found"); end
if (indexHydrogen==0) then error("Compound Hydrogen not found"); end

//A taxa da reação (mol/m3/s) é dada por


//r*C(Ethylene)*C(Hydrogen)
r=4.16667e-006;

//Nome da fase vapor


vaporPhaseName=[];
for i=1:nPhase
if (phaseAggregationStates(i)==AGGSTATE_VAPOR) then
vaporPhaseName=phaseNames(i,:)
break;
end
end

if (isempty(vaporPhaseName)) then error("Nenhuma definicao para a fase vapor"); end

//Checando que alimentação contém somente vapor


[phases]=getFeedEquilibrium(1);
if (size(phases,1)~=1) then error("Alimentação deve ser Feed must be in vapor state"); end
if (strcmpi(phases(1,:),vaporPhaseName)~=0) then error("Feed must be in vapor state"); end

//heat of reaction, J/mol


// Hreac=-136330;
//using heat of reaction assumes that formation terms are not included in
// default enthalpy; instead we will use enthalpy, for which formation
// terms are included and we will not use heat of reaction

//get reactor volume, m3


vol=getParameter("Reactor volume")

//get pressure drop, Pa


dP=getParameter("Pressure drop")

//get feed pressure


p=getFeedProp(1,"pressure");

//reactor pressure
p=p-dP

//get total and component flow in


flow=getFeedProp(1,"flow")
totalFlow=sum(flow)
if (totalFlow==0) then error("Reactor calculations cannot be performed for zero flow"); end

//calculate total reactor H


hfeed=totalFlow*getFeedProp(1,"enthalpyF");
63

//we solve for reactor extent, mol/s


function d=ErrorFunc(extent)
//at the current extent, calculate the compound flows
f=flow;
f(indexEthane)=f(indexEthane)+extent*stoi_Ethane;
if (f(indexEthane)<0) then f(indexEthane)=0; end
f(indexEthylene)=f(indexEthylene)+extent*stoi_Ethylene;
if (f(indexEthylene)<0) then f(indexEthylene)=0; end
f(indexHydrogen)=f(indexHydrogen)+extent*stoi_Hydrogen;
if (f(indexHydrogen)<0) then f(indexHydrogen)=0; end
//calc X
ft=sum(f);
x=f/ft;
//calculate reactor temperature from enthalpy flash
[phases,phasefractions,compositions,T,P]=getEquilibrium(x,"enthalpyF",hfeed/ft,"pressure",p);
//we ignore the fact that non-vapor phases can be returned, we will check at the solution
//calc vapor volume at T and p
vapVol=getSinglePhaseProperty("volume",vaporPhaseName,T,p,x);
//total concentration is 1 / volume
Ctotal=1/vapVol;
//r*C(Ethylene)*C(Hydrogen)
CEthylene=x(indexEthylene)*Ctotal;
CHydrogen=x(indexHydrogen)*Ctotal;
rate=vol*r*CEthylene*CHydrogen; //mol / m3 / s * m3 = mol / s
//return error for current extent guess
d=extent-rate;
endfunction

//solve for the reaction extent


extent=fsolve(0,ErrorFunc)

//calculate the resulting compound flows


f=flow;
f(indexEthane)=f(indexEthane)+extent*stoi_Ethane;
f(indexEthylene)=f(indexEthylene)+extent*stoi_Ethylene;
f(indexHydrogen)=f(indexHydrogen)+extent*stoi_Hydrogen;
//calc X
ft=sum(f);
x=f/ft;
//calculate reactor temperature from enthalpy flash
[phases,phasefractions,compositions,T,P]=getEquilibrium(x,"enthalpyF",hfeed/ft,"pressure",p);
//check that only vapor results
if (size(phases,1)~=1) then error("Reaction product includes multiple phases"); end
if (strcmpi(phases(1,:),vaporPhaseName)~=0) then error("Reaction product is not vapor"); end

//set the product (no need to perform enthalpy flash, we have done so above; use the resulting T, more efficient)
setProduct(1,ft,x,"pressure",p,"temperature",T)

APÊNDICE G – CÓDIGO SCILAB UTILIZADO PARA A DEFINIÇÃO


DA UNIDADE PFR ADIABÁTICO.
disp('Isomerizacao do n-Butano em fase liquida');
disp('.........n-C4H10<-->i-C4H10..............');
disp('A reacao eh conduzida abiabaticamente em fase liquida sob alta pressao,');
disp('usando essencialmente tracos de um catalisador liquido (iso-pentano)');

CAS_Butane="106-97-8";
CAS_Isopentane="78-78-4";
64

CAS_i_Butane="75-28-5";

//Estequiometria
stoi_i_Butane=1;
stoi_Butane=-1;
stoi_Isopentane=0;

//Obtendo os indices dos componentes


cas=getCompoundConstant("CASRegistryNumber");
compCount=size(cas,1)
indexButane=0;
indexIsopentane=0;
indexi_Butane=0;
for i=1:compCount
casNumber=cas(i,:);
if (indexButane==0) then if (strcmp(casNumber,CAS_Butane)==0) then indexButane=i; end; end
if (indexIsopentane==0) then if (strcmp(casNumber,CAS_Isopentane)==0) then indexIsopentane=i; end; end
if (indexi_Butane==0) then if (strcmp(casNumber,CAS_i_Butane)==0) then indexi_Butane=i; end; end
end
if (indexButane==0) then error("Componente Butano nao encontrado"); end
if (indexIsopentane==0) then error("Componente Isopentano nao encontrado"); end
if (indexi_Butane==0) then error("Componente i_Butano nao encontrado"); end

//Caracterizacao da fase liquida


liquidPhaseName=[];
for i=1:nPhase
if (phaseAggregationStates(i)==AGGSTATE_LIQUID) then
liquidPhaseName=phaseNames(i,:)
break;
end
end

if (isempty(liquidPhaseName)) then error("Nao ha formacao de fase liquida"); end

//Checando que alimentação contém somente liquida


[phases]=getFeedEquilibrium(1);
if (size(phases,1)~=1) then error("Alimentação deve estar no estado liquido"); end
if (strcmpi(phases(1,:),liquidPhaseName)~=0) then error("Alimentação deve estar no estado liquido"); end

//Obtendo a queda de pressao, Pa


dP=getParameter("Pressure drop")

//Obtendo a pressao e temperatura de alimentacao


p=getFeedProp(1,"pressure");
To=getFeedProp(1,"temperature");

//pressao do reator
p=p-dP;

//Obtendo o fluxo de entrada por componente e total


flow=getFeedProp(1,"flow");disp(flow)
totalFlow=sum(flow);
if (totalFlow==0) then error("Os calculos para o reator nao podem ser desenvolvidos para fluxo zero"); end
zf=getFeedProp(1,"fraction");
//Obtendo os parametros da reacao

dHrx1=getParameter("dHrx");//J/mol
R=getParameter("Constgas");
E=getParameter("Eativ");
Kc1=getParameter("Const_C");
65

k1=getParameter("Const_reac");
v=getParameter("vazao_vol");disp(v);
Ca0=totalFlow/v*zf(indexButane); disp('ca0 eh'); disp(Ca0);

Cp(indexButane)=getParameter("CpnB");
Cp(indexi_Butane)=getParameter("CpiB");
Cp(indexIsopentane)=getParameter("CpiP");

theta(indexButane)=flow(indexButane)/flow(indexButane);
theta(indexi_Butane)=flow(indexi_Butane)/flow(indexButane);
theta(indexIsopentane)=flow(indexIsopentane)/flow(indexButane);

sum_thetaCp=
Cp(indexButane)*theta(indexButane)+Cp(indexi_Butane)*theta(indexi_Butane)+Cp(indexIsopentane)*theta(ind
exIsopentane);

disp(sum_thetaCp);disp(flow(indexButane));
deltaCp=Cp(indexButane)-Cp(indexi_Butane);
x=0:0.05:1;
for z=1:21
T(z)=To-(dHrx1*x(z))/sum_thetaCp;
k(z)=k1*exp(E/R*(1/360-1/T(z)));
Kc(z)=Kc1*exp(dHrx1/R*(1/333-1/T(z)));
Xe(z)=Kc(z)/(1+Kc(z));
rA(z)=k(z)*(Ca0)*(1-(1+1/Kc(z))*x(z));
t(z)=flow(indexButane)/rA(z);
end
disp (T);
disp(k);
disp(Kc);
disp(Xe);
disp(rA);disp(t);

V=0;
h1=(x(15)-x(1))/14;
V=V+3/8*h1*(t(1)+3*t(2)+3*t(3)+2*t(4)+3*t(5)+3*t(6)+2*t(7)+3*t(8)+3*t(9)+2*t(10)+3*t(11)+3*t(12)+2*t(1
3)+3*t(14)+t(15));
disp('Volume do PFR eh:');
disp(V);

//calculate total reactor H


hfeed=totalFlow*getFeedProp(1,"enthalpyF");

Ctotal=Ca0/zf(indexButane);
Ci_Butane=zf(indexi_Butane)*Ctotal;disp(Ci_Butane);
CButane=Ca0;
CIsopentane=zf(indexIsopentane)*Ctotal;

//calculate the resulting compound flows


disp(x(15));
flow(indexi_Butane)=flow(indexi_Butane)+x(15)*stoi_i_Butane*flow(indexButane);disp(flow(indexi_Butane));
flow(indexButane)=flow(indexButane)+x(15)*stoi_Butane*flow(indexButane);
flow(indexIsopentane)=flow(indexIsopentane)+x(15)*stoi_Isopentane*flow(indexButane);
//calc X
disp('flow eh:'); disp(flow);
ft=sum(flow);disp('ft eh:');disp(ft)
b=flow/ft; disp('b eh:');disp(b);
//calculate reactor temperature from enthalpy flash
[phases,phasefractions,compositions,T,P]=getEquilibrium(b,"enthalpyF",hfeed/ft,"pressure",p);
66

disp(phases);

//set the product (no need to perform enthalpy flash, we have done so above; use the resulting T, more efficient)
setProduct(1,ft,b,"pressure",p,"temperature",T)

APÊNDICE H.1 – CÓDIGO PRINCIPAL SCILAB DA UNIDADE DE


SEPARAÇÃO DE BIOGÁS.

/ Membrane properties library.


// Mem.Comp - chemical formula
// Mem.CAS - CAS number for each component (used to identify components in the feed stream)
// Mem.alfa - membrane selectivity relative to a reference component ref
// alfa(i) = Q(i)/Q(ref) where Q(i) represents membrane permeability [mol/(s*Pa*m^2)]
// Mem.Qref - membrane permeability of a reference component [mol/(s*Pa*m^2)]
Mem.Qref=1*(3.348E-9); // Permeance [mol/(s*Pa*m2)] of reference component
// 1 Barrer = 3.348E-9 [mol/(s*Pa*m2)] with a membrane thikness of 1000Å.
Mem.Comp=[]; Mem.CAS=[]; Mem.alfa=[];
Mem.Comp($+1)="CO2";Mem.CAS($+1)="124-38-9"; Mem.alfa($+1)=15;
Mem.Comp($+1)="H2O"; Mem.CAS($+1)="7732-18-5"; Mem.alfa($+1)=1000;
Mem.Comp($+1)="CH4"; Mem.CAS($+1)="74-82-8"; Mem.alfa($+1)=1;
Mem.Comp($+1)="C2H6"; Mem.CAS($+1)="74-84-0"; Mem.alfa($+1)=1.2;
Mem.Comp($+1)="H2S"; Mem.CAS($+1)="7783-06-4"; Mem.alfa($+1)=750;
Mem.Comp($+1)="N2"; Mem.CAS($+1)="7727-37-9"; Mem.alfa($+1)=1;
Mem.Comp($+1)="O2"; Mem.CAS($+1)="7782-44-7"; Mem.alfa($+1)=5;

// Verify that membrane properties are defined for all components.


alfa=zeros(nComp,1); Comp=[];
CompNames=getCompoundConstant("chemicalFormula");
CASRegNum=getCompoundConstant("casRegistryNumber");
for i=1:nComp,
ind=find(Mem.CAS==CASRegNum(i));
if isempty(ind) then
error('Missing permeability data for '+CompNames(i));
else
alfa(i)=Mem.alfa(ind); Comp(i)=Mem.Comp(ind);
end
end

// Feed stream properties.


nf=getFeedProp(1,"totalFlow"); // mol/s
xf=getFeedProp(1,"fraction"); // -
Tf=getFeedProp(1,"temperature"); // K
Pf=getFeedProp(1,"pressure"); // Pa

// Get input parameters


g=getParameter("Trans membrane pressure ratio"); // feed to permeate pressure ratio [-]
A=getParameter("Membrane area"); // membrane area [m2]

R=Pf*A*Mem.Qref/nf; // dimensionless membrane area (permeation factor)

// Simulate membrane module


getf('gpcross.sci'); // load the simulation model (cross flow model)
67

[xr,xp,th,rp,rr]=gpcross(xf,alfa,R,g); // run simulation

nr=(1-th)*nf;// retentate
np=th*nf;// permeate

Pp=Pf/g; // permeate pressure


Pr=Pf; // retentate pressure

// Report product streams


setProduct(1,nr,xr,"temperature",Tf,"pressure",Pr);
setProduct(2,np,xp,"temperature",Tf,"pressure",Pp);

// Set output parameters


setParameter("Dimensionless membrane area",R);

// Generate a report
txt=[ '|===================================================================|'
'| Membrane module for gas separation |'
'| Feed side |'
'| Feed |--------------------------| Retentate |'
'| nf,z --->| plug flow |-----> xr, nr |'
'| |==========================| |'
'| np,y <---| crossflow | |'
'| Permeate |--------------------------| |'
'| Permeate side |'
'|===================================================================|'
'| Comp. |Q(i)/Q(c)| Feed | Retentate | Permeate |'
'| | alfa(i) | xf | xr | rr | xp | rp |'
'|===================================================================|'];
for j=1:nComp,
txt=[txt;sprintf('|%7s| %7.1f | %0.3f | %0.3f | %0.3f | %0.3f | %0.3f
|\n',Comp(j),alfa(j),xf(j),xr(j),rr(j),xp(j),rp(j))];
end

txt=[txt;

sprintf('|===================================================================|'
);
sprintf('|Module cut rate th = np/nf = %6.3f |\n',th);
sprintf('|Pressure ratio g = Pf/Pp = %6.1f |\n',g);
sprintf('|Permeation factor R = Q(c)*Pf*A/nf = %6.3f |\n',R);

sprintf('|===================================================================|\
n')];
setReport("Membrane module",txt);
68

APÊNDICE H.2 – ARQUIVO ADICIONAL SCILAB PARA A


IMPLEMENTAÇÃO DA UNIDADE DE SEPARAÇÃO DE BIOGÁS.
69

APÊNDICE I – ARQUIVO SCILAB DE LEITURA DE PROPRIEDADES


DAS SUBSTÂNCIAS CONTIDAS NO DYPPR E FYDAT.
70
71
72

Você também pode gostar