PROGRAMA EQ-ANP Processamento, Gestão e Meio Ambiente na Indústria do Petróleo e Gás Natural DESENVOLVIMENTO DE UM PROCEDIMENTO PARA SIMULAÇÃO DINÂMICA DE TAMBORES DE “FLASH” MULTIFÁSICOS USANDO COMPUTAÇÃO ALGÉBRICA Fernanda Mota Gonçalves Tese de Mestrado Orientadores Ofélia de Queiroz Fernandes Araújo, Ph.D. Marcelo Castier, Ph.D. Julho de 2001 DESENVOLVIMENTO DE UM PROCEDIMENTO PARA SIMULAÇÃO DINÂMICA DE TAMBORES DE “FLASH” MULTIFÁSICOS USANDO COMPUTAÇÃO ALGÉBRICA Fernanda Mota Gonçalves Tese submetida ao Corpo Docente do Curso de Pós-Graduação em Tecnologia de Processos Químicos e Bioquímicos da Escola de Química da Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários para a obtenção do grau de Mestre em Ciências. Orientada por: ________________________________________ Ofélia de Queiroz Fernandes Araújo, Ph.D. (orientadora – presidente da banca) ________________________________________ Marcelo Castier, Ph.D. (orientador) Aprovada por: ________________________________________ Evaristo Chalbaud Biscaia Junior, D.Sc. ________________________________________ Marcio José Estillac de Mello Cardoso, Ph.D. ________________________________________ Maurício Bezerra de Souza Junior, D.Sc. Rio de Janeiro, RJ - Brasil Julho de 2001 i Gonçalves, Fernanda Mota. Desenvolvimento de um Procedimento para Simulação Dinâmica de Tambores de “Flash” Multifásicos usando Computação Algébrica/ Fernanda Mota Gonçalves. Rio de Janeiro: UFRJ/EQ, 2001. xv, 114 p.; il. (Dissertação) – Universidade Federal do Rio de Janeiro, Escola de Química, 2001. Orientador(es): Ofélia Queiroz Fernandes Araújo e Marcelo Castier 1. Simulação Dinâmica 2. Equilíbrio de Fases 3. Processos de Separação. I. EQ/UFRJ II. Título (série) ii Dedico este trabalho a todos os que me incentivaram a concluir mais esta etapa da minha vida, em especial àquela que foi muito mais que orientadora, foi uma grande amiga, Ofélia. iii O importante é estar pronto para, a qualquer momento, sacrificar o que somos pelo que poderíamos vir a ser. (Charles Du Bois) iv AGRADECIMENTOS Gostaria de conseguir expressar minha gratidão a todos que contribuíram para o encerramento desta etapa da minha vida. O interesse pelo andamento da tese, as palavras de incentivo e a certeza de que eu conseguiria foram muito importantes. Inicialmente agradeço aos meus orientadores, Marcelo e Ofélia, que cumpriram muito além do papel de mestres, me ensinando, incentivando e sempre dispostos a ajudar. Agradeço aos meus pais Fernando e Marly, responsáveis pela pessoa que sou hoje, às minhas irmãs Daniela e Adriana e também às minhas “branquinhas” Cindy e Megg. Agradeço ainda a todos os amigos que estiveram presentes mesmo que distantes. Em especial, aos amigos André (Dedé) e Maria Isabel (Bebel) pelos telefonemas diários sempre com palavras amigas e de incentivo. Foram muito mais que alguns minutos de papo, tenham certeza disso. Agradeço ao Robson, que agüentou com muita paciência e carinho todos os dias de mau humor e cansaço. Nos momentos de indecisão, me incentivou, nos momentos de tristeza fez tudo o que podia para me animar. Sem você não teria conseguido. Agradeço à galera da piscina pelos excelentes momentos que temos passado juntos. Em especial agradeço à Dani, minha "sobrinha", pelo carinho. Agradeço aos professores e funcionários da Escola de Química em especial aos amigos que fiz na época da graduação e que continuam a me dar muito carinho: Márcia, Chico, Zé e Aquino, Jane e Maria. Agradeço ainda à Rosellee e Marlene responsáveis pelos serviços da pós-graduação, apesar de nunca terem se limitado a tal função. Os momentos que passei com todos vocês são inesquecíveis. Agradeço a todos do Laboratório H2CIN (I-221), em especial ao Prof. José Luiz Medeiros, pela infraestrutura que me foi concedida para desenvolver este trabalho. v Agradeço ainda à Agência Nacional de Petróleo (ANP) pelo apoio financeiro através do PRH-13. Enfim, gostaria de agradecer àquele que é responsável pela vida, pelo amor, pelas alegrias, enfim, é o responsável por tudo. Obrigado Senhor DEUS pelos inúmeros detalhes visíveis e invisíveis da minha existência. vi Resumo da Tese de Mestrado apresentada ao Curso de Pós-Graduação em Tecnologia de Processos Químicos e Bioquímicos da Escola de Química/UFRJ como parte dos requisitos necessários para obtenção do grau de Mestre em Ciências, com ênfase na área de Petróleo e Gás Natural. DESENVOLVIMENTO DE UM PROCEDIMENTO PARA SIMULAÇÃO DINÂMICA DE TAMBORES DE “FLASH” MULTIFÁSICOS USANDO COMPUTAÇÃO ALGÉBRICA Fernanda Mota Gonçalves Julho, 2001 Orientadores: Profa. Ofélia de Queiroz Fernandes Araújo, Ph.D. Prof. Marcelo Castier, Ph.D. Neste trabalho, um procedimento de simulação dinâmica de tambores de "flash" foi desenvolvido. Foi considerada a possibilidade de desaparecimento ou surgimento de fases em equilíbrio além da realização do teste de estabilidade global de fases, utilizando-se propriedades termodinâmicas rigorosamente calculadas. O modelo consiste em um conjunto de equações diferenciais e algébricas (EAD's). Os balanços de massa e energia foram escritos como equações diferenciais para a energia interna e número de moles de cada componente. As equações algébricas no sistema constituem relações de equilíbrio de fases e conservação do número de moles e volume nas fases presentes no sistema. As propriedades físicas necessárias para o modelo foram calculadas usando-se a equação de estado de Peng-Robinson. A implementação computacional do modelo do equipamento e das propriedades termodinâmicas necessárias foram realizadas utilizando computação algébrica (Mathematica®, Wolfram Inc.) que permite a geração automática de códigos em linguagem FORTRAN. Para a simulação, um ambiente com processamento numérico e interface gráfica foi empregado (MATLAB®, The MathWorks Inc.). A inteface entre código FORTRAN e o MATLAB® foi realizada através DLL's (dynamic link libraries) compiladas. Com o desenvolvimento de tais procedimentos computacionais, a simulação dinâmica de tambores de “flash” foi realizada em diversas situações, incluindo o caso de tanques de GLP (Gás Liquefeito de Petróleo), produto de interesse na indústria de Petróleo e Gás Natural. A abordagem desenvolvida deverá ser estendida para a modelagem de equipamentos de separação mais complexos, tais como colunas de destilação. vii Abstract of a Thesis presented to Curso de Pós-Graduação em Tecnologia de Processos Químicos e Bioquímicos - EQ/UFRJ as partial fulfillment of the requirements for the degree of Master of Science with emphasis on Petroleum and Natural Gas. DEVELOPMENT OF A PROCEDURE FOR THE DYNAMIC SIMULATION OF MULTIPHASE FLASH DRUMS USING COMPUTER ALGEBRA Fernanda Mota Gonçalves July, 2001 Supervisors: Ofélia de Queiroz Fernandes Araújo, Ph.D. Marcelo Castier, Ph.D. In this work, a procedure was developed for the dynamic simulation of flash drums. The possibility of the disappearance of phases, and also of their appearance, was taken into account by means of the global phase stability test, and with rigorously calculated thermodynamic properties. The model consists of a set of differential and algebraic equations (DAEs). The energy and mass balances were written as differential equations for the internal energy and the number of moles of each species. The algebraic equations in the system were the phase equilibrium relationships and mole number and volume conservation among the phases present in the flash drum. The physical properties required by the model were calculated using the Peng-Robinson equation of state. The computational implementation of the drum model and of the thermodynamic properties were done with the aid of computer algebra (Mathematica®, Wolfram Inc.), which allowed automatic generation of FORTRAN codes. For simulation, an environment with numerical and graphical features (MATLAB®, The MathWorks Inc.) was employed. FORTRAN codes were interfaced through DLL (dynamic link libraries) compiled versions, callable from within the MATLAB® programming language. With the developed computational procedure, the simulated dynamic behavior of flash drums in several situations was obtained, including the case of LPG (Liquefied Petroleum Gas) tanks, of interest to the Oil and Gas Industry. The developed approach is to be extended to model the dynamic behavior of more complex pieces of separation equipment, such as distillation columns. viii ÍNDICE Capítulo 1 – Introdução 1 Capítulo 2 – Revisão Bibliográfica 4 2.1 – Simulação Dinâmica de Processos 4 2.2 – Simulação de “Flashes” 6 2.3 – Propriedades Termodinâmicas 9 2.4 – Resolução de Equações Algébrico-Diferenciais 10 2.4.1 – O Código ode15s 12 2.4.2 – Resolução de EAD’s no SIMULINK® 14 2.5 – Da Computação Algébrica à Simulação Dinâmica Rigorosa de Processos: O Problema de “Flash” Multifásico Capítulo 3 – Formulação 16 19 3.1 – “Flash” UVN 19 3.2 – Implementação Computacional 25 3.2.1 – Integração de códigos FORTRAN ao Ambiente MATLAB® 28 3.2.2 – Códigos em Ambiente MATLAB® 30 3.2.3 – Códigos em Ambiente SIMULINK® 30 3.3 – Cálculo de Propriedades Termodinâmicas 33 3.3.1 – Propriedades Termodinâmicas 36 3.3.2 – Teste de Estabilidade Global de Fases 37 3.3.3 – Equação de Estado 38 3.4 – “Flash” TVN 39 3.5 – “Flash” TPN 40 Capítulo 4 –Resultados 41 4.1 – Sistema Exemplo 1: BENZENO-ETILBENZENO 41 4.2 – Sistema Exemplo 2: METANO 45 4.3 - Controle para o Sistema Exemplo 1 46 4.4 – Sistema Exemplo 3: GLP 53 ix Capítulo 5 – Conclusão 65 Referências Bibliográficas 68 Apêndice A1 – Montagem das Equações Algébricas de Equilíbrio de Fases Apêndice A2 – Cálculo das Propriedades Termodinâmicas 72 80 A2.1 – Entrada dos dados para geração da rotina flsuvn 80 A2.2 – Rotina flsuvn 82 A2.3 – Entrada dos dados para geração da rotina penrob 89 A2.4 – Rotina penrob 90 x ÍNDICE DE FIGURAS Figura 2.1 Diagrama de Blocos do Simulador SIMULINK® 15 Figura 3.1 Algoritmo para Resolução Numérica 27 Figura 3.2 Estrutura MEX FORTRAN 29 Figura 3.3 Modelo em Ambiente SIMULINK® 32 Figura 3.4 “Flash” com Controle de Temperatura 34 Figura 4.1 Sistema Exemplo 1 Submetido a Padrão Temporal Descrito na Tabela 4.2: Telas de Especificação e Acompanhamento SIMULINK® Figura 4.2 Sistema Exemplo 1 sem Controle: Séries Temporais 42 43 Figura 4.3 Sistema Exemplo 1 Submetido a Padrão Temporal Descrito na Tabela 4.3 47 Figura 4.4 Simulação de Injeção de Gás Metano Puro no Tambor de “Flash” Submetido a Padrão Temporal Descrito na Tabela 4.5 48 Figura 4.5 Simulação de Injeção de Gás Metano Puro no Tambor de “Flash” Submetido a Padrão Temporal Descrito na Tabela 4.6 Figura 4.6 Sistema Exemplo 1 sob Controle de T e P 49 51 Figura 4.7 Sistema Exemplo 1 sob Controle de T e P: Séries Temporais 52 Figura 4.8 Adaptação de Ganho do Controlador sob Evento de Surgimento de Fase 54 Figura 4.9 Desempenho da Estratégia de Controle com Adaptação de Ganho de Nova Fase Líquida Figura 4.10 Sistema Exemplo 3: Flash 55 56 Figura 4.11 Tela de Especificação para o Sistema Exemplo 3 em Ambiente SIMULINK® 58 Figura 4.12 Sistema Exemplo 1: Série Temporais 60 Figura 4.13 Sistema Exemplo 3: Temperatura e Carga Térmica do Sistema 61 xi Figura 4.14 Sistema Exemplo 3: Resposta da Pressão a modificações no “Set-Point” Figura 4.15 Resposta do Controlador de Nível ao Surgimento da Fase 62 63 xii ÍNDICE DE TABELAS Tabela 3.1 Ajuste de Passo Máximo para Auxílio de Convergênca das Equações Agébricas 31 Tabela 4.1 Condições Iniciais do Sistema Exemplo 1 41 Tabela 4.2 Condições de Entrada 1 do Sistema Exemplo 1 44 Tabela 4.3 Condições de Entrada 2 do Sistema Exemplo 1 44 Tabela 4.4 Condições Iniciais do Sistema Exemplo 2 45 Tabela 4.5 Condições de Entrada 1 do Sistema Exemplo 2 45 Tabela 4.6 Condições de Entrada 2 do Sistema Exemplo 2 46 Tabela 4.7 Sintonia de Controladores 50 Tabela 4.8 Adaptação do Ganho do Controlador de Temperatura 53 Tabela 4.9 Condições Iniciais do Sistema Exemplo 3 56 Tabela 4.10 Variação dos “Set-Points” durante a Simulação 57 Tabela 4.11 Condições de Entrada do Sistema Exemplo 3 59 xiii NOMENCLATURA LETRAS ARÁBICAS Símbolo Descrição ai, bi parâmetros do componente i puro na equação de estado am, bm parâmetros da mistura Af energia livre de Helmhotz na fase f DLL ) fi “dynamic link library” fugacidade do componente i Fij vazão do composto i na corrente j Hj entalpia (por unidade de tempo) da corrente j kij parâmetro de interação binária Kc parâmetro de sintonia do controlador nc número de componentes Nij número de moles do componente i na fase j Ni número total de moles do componente i no interior do “flash” np número de fases Pf pressão da fase f Q carga térmica no sistema QF função objetivo do “flash” UVN R constante universal dos gases S entropia T temperatura U energia interna Up energia interna na fase p Vf volume da f VTOTAL volume total do “flash” Ws potência de eixo xij fração molar do componente i na fase j xiv LETRAS GREGAS Símbolo Descrição µij potencial químico do componente i na fase j δjp função delta de Kronecker τi parâmetro de sintonia para ação integral do controlador τD parâmetro de sintonia para ação derivativa do controlador α parâmetro de sintonia para filtro na ação derivativa do controlador Ω função do teste global de estabilidade de fases SOBRESCRITOS Símbolo Descrição ESPEC valor especificado SUBSCRITOS Símbolo Descrição ci propriedade crítica do componente i ri propriedade reduzida do componente i xv 1 Introdução A simulação dinâmica de operações da indústria de petróleo e gás natural tem destaque no cenário de controle de processos, treinamento de operadores, e diagnóstico e análise de falhas. Neste tipo de aplicação, a etapa de modelagem termodinâmica é, freqüentemente, feita de forma bastante simplificada a fim de reduzir o esforço computacional das simulações. Entretanto, a disponibilidade de computadores cada vez mais velozes está ampliando a possibilidade de realizar simulações dinâmicas com modelos termodinâmicos mais rigorosos. Tal esforço se justifica pois, potencialmente, permite o estabelecimento de condições operacionais e metas de controle adequadas, fundamentadas no uso de modelos termodinâmicos capazes de correlacionar e predizer o comportamento de misturas de hidrocarbonetos. Em tais simulações, várias propriedades termodinâmicas são necessárias, tais como, entalpia, fugacidade de compostos na mistura, capacidade calorífica, energia interna, além de diversas de suas derivadas. Para a obtenção das expressões das diversas propriedades físicas necessárias a uma simulação dinâmica, a computação algébrica pode ser um instrumento auxiliar poderoso. Poder-se-ia mesmo pensar em realizar toda a simulação dinâmica de equipamentos de separação usando programas comerciais de computação algébrica, tais como Maple® ou Mathematica®. Entretanto, programas de álgebra computacional são raramente empregados neste contexto devido ao longo tempo computacional envolvido. Contudo, uma abordagem híbrida que empregue recursos algébricos para a geração de códigos em linguagens de cálculos numéricos rápidos, a exemplo de FORTRAN e C, surge com forte atrativo. Adicionalmente, integrar estes códigos compilados com um ambiente de computação numérica e visualização gráfica representa um diferencial significativo como agente facilitador no desenvolvimento de simuladores de processo. 2 INTRODUÇÃO O objetivo deste trabalho foi desenvolver a simulação dinâmica de tambores de “flash”, usando-se este termo de forma ampla para denotar equipamentos para o armazenamento e a separação de fluidos, típicos da indústria de refino de petróleo e gás natural. Tal como em diversos modelos existentes na literatura para aplicações similares, a hipótese central no desenvolvimento do modelo do equipamento é a de que o equilíbrio termodinâmico é atingido instantaneamente no interior do tambor de “flash”. Uma distinção importante, contudo, é que o procedimento de simulação dinâmica foi formulado usando-se propriedades físicas rigorosamente calculadas. Especial atenção foi dada à realização do teste de estabilidade de fases, o que permite que o modelo do “flash” se altere automaticamente, ao longo da simulação, para incorporar, se necessário, novas fases ao sistema. De igual modo, testa-se o sistema quanto à eventual necessidade de remoção de fases ao longo da simulação. O modelo resultante constitui um sistema de equações algébricodiferenciais. Há diversas estratégias possíveis para a solução de tais sistemas. Explorá-las sistematicamente e comparar seus desempenhos, entretanto, não constituiu o escopo central desta tese. Sendo assim, resolveram-se, separadamente, as equações algébricas do modelo a cada passo de integração das equações diferenciais. Do ponto de vista das ferramentas computacionais utilizadas, o desenvolvimento do procedimento de simulação resultou da integração da solução proveniente da computação algébrica, com códigos em linguagem compiláveis e ambiente de resolução numérica e visualização gráfica. Em particular, usou-se o “software” Mathematica® para a parte de computação algébrica e a geração automática de códigos em FORTRAN. A resolução das equações algébricas do modelo foi feita usando-se um código compilado em FORTRAN, que foi acoplado ao software MATLAB®, responsável pela integração numérica das equações diferenciais, implementação de estratégias de controle do processo e pela visualização dos resultados. Os exemplos desenvolvidos visam a ilustrar os recursos de cálculos termodinâmicos e a robustez da formulação da resolução de problemas de INTRODUÇÃO 3 adição e remoção de fases. Entretanto, foram identificadas algumas limitações na formulação desenvolvida nesta tese, cuja superação deverá ser objeto de pesquisas adicionais. Este trabalho está organizado sob a forma de capítulos. O Capítulo 2 contém uma breve Revisão Bibliográfica sobre o processo abordado, modelagem termodinâmica e resolução numérica. O Capítulo 3 apresenta a Formulação do problema, destacando o “flash” com especificação de energia interna, volume e números de mols (“flash” UVN), a geração de condição inicial e a abordagem numérica adotada. Exemplos que empregam hidrocarbonetos, e exploram situações de surgimento e desaparecimento de fases, são apresentados e discutidos em Resultados no Capítulo 4. No Capítulo 5, encontram-se as Conclusões e Sugestões. No Apêndice 1, está disposto o desenvolvimento da função objetivo para teste de estabilidade de fases. O desenvolvimento computacional do modelo termodinâmico é apresentado no Apêndice 2. 2 Revisão Bibliográfica 2.1. Simulação Dinâmica de Processos A simulação de processos é uma ferramenta valiosa no projeto, análise e operação de processos, e tem se desenvolvido sob o impulso de especificações rígidas de qualidade de produtos, segurança de processos e regulamentações ambientais. Um enfoque especial tem sido dedicado à simulação dinâmica de processos, que depende de uma ferramenta de resolução de equações que resista a situações como condições iniciais inconsistentes, restrições de desigualdade e mau condicionamento, para citar algumas. Adicionalmente, são frequentes as situações em que variáveis de processos estão sujeitas a restrições, como, por exemplo, de não-negatividade em temperatura e volume, dificultando a convergência na solução dos modelos. Outra dificuldade encontrada em simulação de processos é a ocorrência de comportamentos abruptos, com descontinuidades de derivadas. Marquardt (1991) aponta que a maioria dos códigos de resolução de equações está apta a enfrentar modelos de comportamentos suaves. A simulação de processos, no entanto, apresenta ações discretas e restrições lógicas que podem conduzir a descontinuidades nas equações do modelo (Gopal e Biegler, 1997). Um exemplo típico de descontinuidade é encontrado em transição de fases. Esta situação pode levar a mudanças nas equações do modelo ou mesmo uma mudança na sua estrutura, exigindo uma representação consistente da descontinuidade e uma ferramenta de resolução capaz de contornar tal dificuldade. Mudanças discretas nas equações de um modelo são marcadas pela ocorrência de um evento. Os métodos empregados para solução de sistemas dinâmicos devem ser capazes de localizá-lo. REVISÃO BIBLIOGRÁFICA 5 Os problemas de simulação dinâmica em um intervalo contínuo podem ser descritos por um sistema de equações algébrico-diferenciais (EAD): as equações diferenciais descrevem o comportamento dinâmico enquanto que as equações algébricas impõem relações físicas do sistema. Uma vez localizado um evento, um novo conjunto de EAD’s e/ou variáveis passa a descrever o sistema, e um novo conjunto de condições iniciais deve ser gerado para continuação da simulação, que tipicamente resultam da condição final do intervalo anterior e de condições decorrentes do próprio evento (Gopal e Biegler, 1997). Três aspectos importantes devem ser considerados quando se trata de problemas dinâmicos não suaves: 1. Localização de eventos nas variáveis de estado, no intervalo de integração; 2. Identificação do instante de ocorrência do evento (emprego de rotina de interpolação); 3. Reinicialização da integração a partir do instante da ocorrência do evento; Quando a integração é conduzida, o problema fica “preso” no caso contínuo e nenhuma descontinuidade é permitida, até que uma função comutadora (switching function) localiza um evento. Estas funções são projetadas de tal forma que os seus zeros correspondam aos pontos de descontinuidade. Uma vez localizado o evento, o tempo correspondente é encontrado por alguma rotina de interpolação. A integração prossegue a partir deste ponto, com a nova estrutura do modelo e com novas condições iniciais. A questão crucial é se o conjunto de EAD’s anteriores ao evento pode fornecer a condição inicial para o intervalo posterior ao evento. Na simulação de processos químicos, é muito comum a ocorrência de descontinuidades implícitas decorrentes do cálculo de equilíbrio de fases, como na simulação de “flashes”. O problema básico é que o número de fases não é conhecido a priori. REVISÃO BIBLIOGRÁFICA 6 2.2. Simulação de “Flashes” Vasos para o armazenamento e separação de fluidos são dos equipamentos mais estudados no que diz respeito à modelagem do comportamento dinâmico. A formulação deste tipo de problema aparece em diversos livros-textos (Luyben, 1989; Raman, 1985). Entretanto, observa-se também que, na maioria dos estudos de simulação dinâmica destes equipamentos, a modelagem termodinâmica é muito simplificada, empregandose aproximações tais como a de comportamento ideal das fases. Tais aproximações reduzem, em larga medida, a complexidade dos sistemas de equações do modelo e, via de regra, simplificam sua resolução, distanciando, muitas vezes, os valores preditos dos valores reais. Neste contexto, optou-se por delimitar a revisão bibliográfica dos textos de simulação dinâmica apenas aos trabalhos que empregam uma formulação termodinâmica mais rigorosa para a simulação de tambores de “flash”. No presente trabalho, conforme está apresentado no Capítulo 3, referente à formulação do problema, a parte algébrica do sistema de EAD’s abordado corresponde às equações de um “flash” com valores especificados para a energia interna (U), volume (V) e número de mols (N) no equipamento (“flash” UVN). O equilíbrio termodinâmico corresponde à configuração macroscópica que maximiza a entropia do sistema, sobre os estados que têm os valores especificados de U, V e N (Callen, 1985). Entretanto, o uso direto de uma formulação baseada na maximização da entropia é inconveniente pois, em geral, as propriedades termodinâmicas necessárias à simulação não são funções explícitas de U, V e N. Isto ocorre porque a maior parte das equações de estado em uso corrente em Engenharia Química permite obter as propriedades residuais em termos de temperatura, volume e frações molares ou, alternativamente, temperatura, pressão e frações molares. Por este motivo, este tipo de “flash” foi estudado em três trabalhos recentes (Saha e Carroll (1997); Müller e Marquardt (1997); Michelsen (1999)). No trabalho de Saha e Carroll (1997) o “flash” isoenergético-isocórico (UVN) é utilizado para simulação dinâmica de vasos onde é ressaltado que nenhuma das variáveis intensivas (T e P) são conhecidas. Este fato produz REVISÃO BIBLIOGRÁFICA 7 maior dificuldade de resolução do que em “flashes” de outros tipos. No modelo, além das equações de balanço são necessárias as relações de equilíbrio. Os autores empregaram um método de convergência “super-linear” para resolver o sistema de equações não-lineares resultantes da formulação, que, criticamente requer uma boa condição inicial. Como nenhuma das variáveis intensivas são conhecidas, um esquema de geração de condições iniciais é crucial para a solução do problema. Os autores ressaltam que uma solução trivial para este problema de “flash” é bastante usual, particularmente quando uma equação de estado é utilizada para cálculos de propriedades tanto na fase líquida quanto na fase vapor. O uso de análise de estabilidade é apresentado para evitar este problema. Observa-se, ainda, que a formulação apresentada neste artigo está limitada a problemas bifásicos e que a existe a necessidade de resolver a equação de estado para cada fase, em cada iteração e passo de integração. Müller e Marquardt (1997) estudaram o efeito dinâmico de “flashes” multifásicos, comparando o efeito de usar esquemas simplificados para detectar o surgimento de fases versus a utilização do teste global de estabilidade de fases. Dois tipos de especificações foram consideradas: UVN e TPN, mas escassos detalhes são apresentados a respeito da formulação adotada e da metodologia de resolução. Todos os exemplos apresentados no artigo modelam as fases líquidas usando expressões para a energia livre de Gibbs em excesso, ao contrário do trabalho desenvolvido nesta tese, que utiliza uma equação de estado para modelar as fases fluidas presentes. Esta é uma distinção importante porque o uso de equações de estado introduz dificuldades adicionais devido à grande dependência da pressão com o volume molar de fases líquidas. Michelsen (1999) apresenta uma variedade de formulações para a resolução de “flashes” de importância prática, cujas especificações são, contudo, pouco usuais ou ainda escassamente estudadas. Conforme é bem conhecido na literatura de termodinâmica, o autor ressalta que a resolução de “flashes” TP corresponde a localizar o mínimo global da energia livre de Gibbs da mistura. Adicionalmente, especificações de PH, PS, TV ou SV também permitem a seleção de funções termodinâmicas de estado para as quais o REVISÃO BIBLIOGRÁFICA 8 mínimo global pode ser localizado. São apontadas como vantagens da abordagem de minimização: (a) a solução desejada é única, (b) análise de estabilidade pode ser usada para verificar a consistência da solução e determinar o número de fases em equilíbrio. Exceto para o “flash” TP, as demais especificações citadas recaem em um problema de minimização (da função termodinâmica de estado) com restrições não lineares. Duas soluções são apresentadas. Na primeira, uma malha externa de otimização tem como variáveis de decisão T e P, e em malha interna é resolvido o problema de “flash” TP. Na segunda abordagem, uma função objetivo modificada é proposta onde as restrições são removidas, mas o problema de ponto de mínimo é substituído por um problema de ponto de sela. As equações resultantes são resolvidas através de um método de Newton global. Nesta tese, utiliza-se a segunda abordagem apresentada. Vale ressaltar que Michelsen (1999) comenta, nas conclusões do seu trabalho, que a formulação do “flash” UVN iterando diretamente sobre o volume das fases e sobre os números de mols de cada composto em cada fase, isto é, sem a necessidade de resolver a equação de estado, merecia estudos adicionais. Esta é a formulação adotada nesta tese. Para ressaltar a importância do cálculo de propriedades termodinâmicas em um ambiente amigável ao usuário, o produto comercial MULTIFLASH (InfoChem, 2001) de simulação dinâmica de “flashes”, oferece uma ampla variedade de opções de especificações: PT, PH, TH, PS, TS, PV, TV, PU, TU, Pf, Tf, UV e HS, onde: P = pressão, T = temperatura, H = entalpia, S= entropia, V = volume, U = energia interna e f = fração molar. O software utiliza o ambiente MATLAB®, e calcula diversas propriedades físicas e de transporte: composição, fase, temperatura, pressão, volume, entalpia, entropia, energia interna, energia livre de Gibbs, fator de compressibilidade, peso molecular médio, capacidades caloríficas, viscosidade, condutividade térmica e tensão superficial. Várias equações de estado estão disponíveis para seleção. 9 REVISÃO BIBLIOGRÁFICA 2.3. Propriedades Termodinâmicas Embora haja diversas equações de estado propostas na literatura para a modelagem de sistemas fluidos de hidrocarbonetos, optou-se por realizar todas as simulações com a equação de estado de Peng-Robinson (1976), que é uma das mais empregadas na modelagem de tais sistemas. Sendo assim, não faz parte do escopo deste trabalho uma análise da formulação e do desempenho de equações de estado. Por este motivo, a revisão bibliográfica referente ao cálculo de propriedades termodinâmicas se limita ao aspecto de implementação computacional de modelos com o auxílio de técnicas computacionais modernas, tais como diferenciação automática e computação algébrica (CA), com ênfase nesta última. O cálculo de propriedades físicas para projeto, análise e controle de processos requer, freqüentemente, a execução de expressões longas, passíveis de erro de implementação quando realizadas manualmente. Esta situação gera o incentivo para uso de CA. Um emprego de processamento algébrico de particular interesse é a obtenção de derivadas analíticas de modelos termodinâmicos (Bischof et al., 1992). Vieira (2001) recomenda o emprego de diferenciação automática na formulação de problemas de EAD’s. O uso de CA na implementação de procedimentos de cálculo de propriedades termodinâmicas foi anteriormente empregado (Taylor e Monagan, 1993; Taylor, 1994; Adams e Taylor, 1994; Silva, 1993; Silva e Castier, 1993b), utilizando modelos relativamente simples para cálculo de propriedades de misturas com número de componentes conhecido a priori. Silva e Castier (1993a) e Taylor (1997) desenvolveram procedimentos de manipulação algébrica de modelos termodinâmicos que relaxaram esta limitação. Os programas de CA como Maple® (Char et al., 1991) e Mathematica® (Wolfram, 1991) realizam não apenas as tarefas de manipulação algébrica mas também as de operações numéricas e de visualização gráfica, em um ambiente computacional completo. Contudo, as computações numéricas realizadas em ambientes de CA são lentas quando comparadas com códigos em FORTRAN ou C. Adicionalmente, há um forte interesse em acoplar novos modelos termodinâmicos a programas pré-existentes para simulação de operações de 10 REVISÃO BIBLIOGRÁFICA processo químico, criando incentivo para uso de pacotes de CA para escrever procedimentos que implementem modelos termodinâmicos em linguagem compilável (Castier, 1999). Um pacote para implementação automática de modelos termodinâmicos, Thermath, na linguagem de programação Mathematica® foi desenvolvido por Castier (1999). O Thermath, a partir de um modelo de energia livre de Gibbs de excesso ( G E ) ou de uma equação de estado, pode ser empregado para gerar expressões para várias propriedades termodinâmicas e analisar a estrutura das expressões resultantes, gerando código que as implementa em linguagem de computação (FORTRAN77, por exemplo). 2.4. Resolução de Equações Algébrico-Diferenciais Com a introdução de modelos termodinâmicos rigorosos, envolvendo testes de estabilidade de fases, a complexidade do sistema de equações algébrico-diferenciais (EAD’s) resultante requer códigos numéricos especialmente desenvolvidos para esta finalidade. O código DASSL emprega métodos BDF (Backward Differentiation Formulas) para resolver um sistema de EAD’s ou de equações diferenciais ordinárias (EDO’s). Os métodos são de passo e ordem variável. O sistema de EAD’s no DASSL é escrito na forma: f (t , y , y ' ) = 0 (2.1) onde y’ denota a derivada temporal de y. Os métodos BDF empregados no código DASSL requerem a resolução de sistemas não-lineares de grande dimensão, em cada passo de tempo: f (t n , y n ,α n y n + β n ) = 0 (2.2) onde α n e β n são escalares que dependem do método e do passo. O sistema da Eq. (2.2) é resolvido por uma iteração de Newton modificada, que requer, a cada iteração, a solução do problema linear: 11 REVISÃO BIBLIOGRÁFICA Ay n( k +1) = bn( k ) (2.3) onde a matriz A é dada por: A = αn ∂f ∂f + ∂y ' ∂y (2.4) que é resolvida por um método específico para matrizes em faixas (banded method), sensível à largura da faixa. Ou seja, para problemas com faixa larga (como para problemas de equações diferenciais parciais bi-dimensionais resolvidas pelo método das linhas), o resolvedor do sistema apresentado na Eq. (2.3) se torna bastante ineficiente. Brown et al. (1994) apresentou um novo resolvedor de EAD’s, o DASPK, que utiliza um método GMRES para resolução do sistema linear, que não requer a matriz A mas sim o produto Av, aproximado pela Eq. (2.5): Av ≅ f (t , y + δv ,α ( y + δv ) + β ) − f (t , y ,αy + β )δ Neste trabalho, optou-se por (2.5) empregar o MATLAB®/SIMULINK® pelas ferramentas nele oferecidas para ambiente resolução numérica e visualização gráfica, incluindo código para a resolução de EAD’s. O código, ode15s, baseia-se em uma variante do algoritmo BDF, o NDF (numerical differentiation formula), desenvolvido para integrar EDO’s rígidas da forma (Shampine e Reichelt, 1997; Shampine et al., 1999): M (t )y ' = f (t , y ) (2.6) Quando a matriz de massa M(t) é singular, trata-se de um sistema de EAD’s. De acordo com Shampine et al. (1999), o cálculo de um novo passo com NDF ou BDF não requer que a matrix M(t) seja não-singular, como ocorre nos códigos DASSL, LSODI ou SPRINT. A maioria dos códigos disponíveis para resolução de EAD’s impõe a necessidade de uma condição inicial consistente. O ode15s oferece, a exemplo do DASSL e SPRINT, um código para cálculo de condições iniciais. Petzold (1992) observa que a crítica mais comum dos usuários do DASSL e SPRINT é 12 REVISÃO BIBLIOGRÁFICA a falta de robustez destes códigos na geração de condições iniciais. Nesta direção, o trabalho de Vieira (2001) apresenta diversas sugestões para inicialização em problemas de engenharia química. 2.4.1. O código ode15s Os códigos BDF têm emprego bastante difundido na resolução de problemas rígidos (stiffs). Quando são usados passo de tempo constante (h) e diferenças para trás (backward differences), a fórmula de ordem k, BDFk, para um passo de (tn,yn) para (tn+1,yn+1) é dada pela Eq. (2.7). k 1 m ∇ y n +1 − hF (t n +1; y n +1 ) = 0 m =1 m ∑ A equação algébrica para yn+1 (2.7) é resolvida pelo método iterativo de Newton, inicializado como: k y n(0+)1 = ∑ ∇ m y n (2.8) m =1 Por outro lado, as fórmulas NDF (numerical differentiation formula) (Shampine, 1997) são métodos da forma: k 1 m ∇ y n +1 − hF (t n +1; y n +1 ) + κγ k ( y n +1 − y n(0+)1 ) = 0 m m =1 ∑ (2.9) onde k 1 j =1 j γk = ∑ (2.10) O código ode15s é uma implantação com passo de integração quase constante do método NDF em termos de diferenças para trás. É fornecida a opção de integração com a fórmula BDF, e ordens inferiores a 5 (o default). Muitas das táticas adotadas no código se assemelham aos códigos como o REVISÃO BIBLIOGRÁFICA 13 DIFSUB, DDRIV2, LSODE e VODE. O método de seleção do passo inicial decorre da observação que é possível formar estimativas de um passo inicial ótimo a partir das derivadas de F(t,y) em t = t0 (Shampine, 1997). Os métodos para resolução de problemas rígidos envolvem as derivadas parciais das funções que definem as equações diferenciais. Os códigos mais popularizados permitem ao usuário fornecer as derivadas analíticas. O código ode15s permite, alternativamente, a geração numérica da matriz Jacobiana. Um aspecto da montagem das derivadas parciais é a opção de vetorizar, quando a função para cálculo das derivadas é codificada de forma a devolver uma matriz de valores da função. Uma característica do código é calcular Jacobianas esparsas e cheias. O código retém cópia da matriz Jacobiana, como explorado pelo VODE. A taxa de convergência é monitorada e a iteração é interrompida se for predito que a convergência não será atingida em 4 iterações. Neste evento, uma nova matriz Jacobiana é formada, caso contrário, o passo é reduzido. Neste esquema, o código formará poucas matrizes Jacobianas quando aplicado a um problema não-rígido, o que o torna competitivo com os códigos para problemas nãorígidos, em parte, também, devido à eficiente álgebra linear do MATLAB® (Shampine, 1997). Adicionalmente, Shampine e Reichelt (1997) ressaltam que o código ode15s do MATLAB® apresenta-se com o objetivo de tornar a resolução de uma EAD de índice 1 o mais semelhante possível à resolução de uma EDO. Desta forma, o código ode15s reconhece uma EAD automaticamente, e aceita o vetor y0 como uma estimativa inicial, computando um conjunto de condições y ) consistentes, resolvendo a equação algébrica não-linear: iniciais ( ~ M (t 0 )( y~ − y 0 ) = f (t 0 , y~) h (2.11) onde h é um passo no tempo suficientemente pequeno. ~ y é um conjunto consistente de condições iniciais com 14 REVISÃO BIBLIOGRÁFICA y~ − y 0 y~' = ( ) h (2.12) No cômputo da condição inicial, apenas os valores algébricos são alterados. Adicionalmente, dado o objetivo de manter semelhança de uso entre as aplicações EDO/EAD, o MATLAB® estende a opção de “localização de eventos” para a solução de equações algébrico-diferenciais. Ressalta-se que este recurso é de grande valia no tratamento de descontinuidades, como apresentado por Gopal e Biegler (1997). 2.4.2. Resolução de EAD’s no SIMULINK® O ambiente SIMULINK® é uma ferramenta largamente empregada na resolução de modelos físicos especificados em uma linguagem direcionada por diagramas de blocos. Um “loop” algébrico em um diagrama de blocos é uma série de blocos conectados de tal forma que as saídas afetam as entradas. Em termos matemáticos, estes “loops” definem uma EAD. As EAD’s formuladas em SIMULINK devem ter a forma semi-explícita (de índice 1): u ' = f1(t , u, v ) (2.13) 0 = f2 (t , u, v ) A abordagem indireta (semi-explícita) é chamada por Shampine et al. (1999) de “Abordagem EDO”. As equações são resolvidas no intervalo [t0,tf ] com condição inicial u(t0) = u0 e uma estimativa inicial para v(t0) = v0 . Assumindo que a equação algébrica 0 = f2 (t 0 , u0 , v ) tem solução V próxima a v0 , o requisito básico é que a matriz Jacobiana ∂f2 seja não-singular na região ∂v contendo (t0,u0,V), o que torna o problema de índice 1. A resolução implícita requer a existência de uma função R(t,u) tal que R(t0,u0) = V e 0 = f2 (t 0 , u0 , R(t , u )) . As equações diferenciais são então: 15 REVISÃO BIBLIOGRÁFICA u ' = f1(t , u, R(t , u )) = f (t , u ) (2.14) que é uma EDO. A função f(t,u) envolve a resolução de um sistema de equações algébricas não-lineares, que é um aspecto computacional que dá complexidade à abordagem. Por outro lado, permite acesso a qualquer rotina de resolução de EDO’s do MATLAB® e do SIMULINK®, que incluem, entre outros, dois códigos Runge-Kutta explícitos e um Adams-Bashforth-Moulton, para problemas não rígidos, e um código NDF, um código Rosenbrock modificado e um código de regra trapezoidal para sistemas rígidos. A “Abordagem EDO” é a solução “natural” no ambiente SIMULINK®, que só está apto a resolver EAD’s semi-explícitas na forma acima (Shampine et al., 1999), representado na Fig. 2.1, onde ui são saídas de blocos integradores e vi saídas de blocos não integradores. Como o fluxo de sinais em um diagrama de blocos SIMULINK® é direcional, os blocos podem ser ordenados topologicamente. Os componentes extremamente conectados representam as restrições algébricas. A primeira etapa ao resolver 0 = f2 (t , u,v ) para a variável v é particionar em sub-conjuntos, que podem ser resolvidos independentemente em ordem topológica, por corte nos nós. Cada subconjunto é resolvido com o código HYBRID1 do MINPACK. Figura 2.1. Diagrama de Blocos de Simulador SIMULINK® REVISÃO BIBLIOGRÁFICA 16 É importante ressaltar que testes feitos no ambiente MATLAB® (Shampine et al., 1999) indicam que a “Abordagem EDO” não é competitiva quando comparada com a abordagem direta. Contudo, não é desprezível a vantagem apontada anteriormente de que a abordagem indireta abre a possibilidade de uso de uma grande variedade de códigos de resolução de EDO’s. 2.5. Da Computação Algébrica à Simulação Dinâmica Rigorosa de Processos: O Problema de “Flash” Multifásico Neste capítulo, pretendeu-se abordar os diversos aspectos envolvidos na simulação dinâmica de processos químicos. O problema abordado neste estudo aproxima as questões expostas com a proposta de unir a modelagem termodinâmica rigorosa às ferramentas de resolução numérica disponíveis para o tratamento numérico em ambiente de programação amigável. Dentre os aspectos relevantes do trabalho, destacam-se: 1. O equipamento de “flash” é abordado com especificação UVN. A modelagem envolve uma formulação na qual a condição de equilíbrio corresponde a um ponto de sela. A formulação adotada nesta tese foi recentemente (Michelsen, 1999) apontada como merecedora de estudos; 2. O problema de modelagem termodinâmica é abordado com rigor, envolvendo teste de estabilidade de fases. A possibilidade de surgimento ou desaparecimento de fases ao longo da simulação origina uma descontinuidade implícita que requer eficiência do código de resolução numérica; 3. Emprego de resultados de computação algébrica para desenvolvimento de códigos FORTRAN para cálculo de propriedades termodinâmicas. Nesta tarefa, emprega-se o programa Thermath (Castier, 1999); 4. O código FORTRAN gerado pelo Thermath é integrado ao ambiente MATLAB® através de procedimento de geração de DLL executável por REVISÃO BIBLIOGRÁFICA 17 programa em linguagem de programação MATLAB®. Este recurso é apresentado no Capítulo 3 – Formulação; 5. O resolvedor de EDA’s/EDO’s, ode15s, do MATLAB®. O uso do código DASSL não foi explorado neste trabalho já que havia opção de resolução com as próprias ferramentas internas do MATLAB®. A opção pelo ambiente MATLAB® é que orientou, neste trabalho, a seleção pelo código ode15s e não o reconhecimento de qualquer superioridade numérica deste sobre o DASSL; 6. O ambiente SIMULINK® foi explorado como interface amigável para o problema proposto. Neste, o bloco S-function permite invocar as rotinas geradas pelo Thermath e o código ode15s, entre outros. 3 Formulação Neste capítulo, apresenta-se o modelo do equipamento de “flash” com energia interna (U), volume (V) e número de mols (N) especificados (“flash” UVN). As propriedades termodinâmicas necessárias para a simulação rigorosa do equipamento são obtidas por computação algébrica (CA) através do programa Thermath (Castier, 1999) no ambiente Mathematica®. Tal procedimento gera um código em FORTRAN que pode ser utilizado pelo simulador. A dedução das expressões algébricas responsáveis pela geração do código referente à modelagem do “flash” UVN encontra-se no Apêndice 1 (“Montagem das Equações Algébricas de Equilíbrio de Fases”). No Apêndice 2 (“Cálculo das Propriedades Termodinâmicas”), está apresentada a geração das equações algébricas e das propriedades necessárias para o cálculo do equilíbrio termodinâmico e teste de estabilidade de fases. Neste trabalho, explora-se a possibilidade de migrar códigos desenvolvidos em linguagem FORTRAN para um ambiente de computação numérica e visualização gráfica, como o MATLAB®, através de uma interface desenvolvida. 3.1. “Flash” UVN Considera-se um tambor de “flash” com s f correntes de entrada e s w correntes de saída. Para tambores com apenas correntes de entrada (ou saída), s w (ou s f ) é zero e a mesma formulação é mantida. O volume do tambor é constante e conhecido, igual a V. Os balanços de massa e energia são descritos nas Eqs. (3.1) e (3.2): 20 FORMULAÇÃO s sw f dU = ∑ H jf • − ∑ H kw• + Q − WS dt k =1 j =1 (3.1) s sw f dN i = ∑ f ij• − ∑ wik• dt k =1 j =1 i = 1,..., nc (3.2) Nestas equações, t é o tempo, U é a energia interna, e Ni é o número de mols do componente i no tanque. A entalpia (por unidade de tempo) da corrente j de entrada é representada por H jf • e f ij• é a vazão molar do componente i na corrente de entrada j. Os símbolos H kw• e wik• denotam valores análogos para a corrente de saída k, e Ws é a potência de eixo, nulo no caso de um tambor de “flash”. A carga térmica adicionada ao tambor é representada por Q e nc é o número total de componentes no sistema. O sistema resultante é composto de (nc + 1) equações diferenciais ordinárias (EDO’s) representadas pelas Eqs. (3.1) e (3.2) que, por integração, fornecem a trajetória de U e N . Assim, possíveis mudanças no número de fases em equilíbrio no interior do “flash” não afetam em momento algum o sistema de equações diferenciais, ou seja, o número de estados correspondentes às equações diferenciais permanece constante ao longo da integração. Sob integração, U , V e N serão conhecidos a qualquer passo de tempo. Admite-se que, em qualquer intervalo, o material no interior do tambor esteja em equilíbrio termodinâmico. Com esta hipótese, as condições de equilíbrio podem ser determinadas pela maximização da entropia para um dado conjunto de valores UVN . As condições de máxima entropia fornecem um conjunto de equações algébricas que devem ser resolvidas a cada passo de integração. No entanto, na maioria das aplicações práticas, as equações de estado (EDE) são da forma P = P (T ,V , N ) . Com isso, a formulação de entropia torna-se pouco conveniente 21 FORMULAÇÃO dado que as propriedades residuais obtidas a partir das EDE são também funções de T , V e N. Recentemente, Michelsen (1999) formulou vários problemas de “flash” menos usuais. No caso de especificações UVN, ele sugeriu o uso de uma função QF que, convenientemente diferenciada, fornece as condições de equilíbrio, conforme será apresentado na seqüência. A função QF é dada por: QF = A − U ESPEC RT (3.3) onde A é a energia livre de Helmholtz, U ESPEC é o valor especificado de energia interna e R é a constante universal dos gases. No caso de problemas de equilíbrio líquido-vapor em “flash”, Michelsen (1999) sugere a diferenciação de QF em relação ao logaritmo natural da temperatura e do volume de uma das fases (a fase vapor, por exemplo), e também em relação ao número de mols de cada componente em uma das fases. Nesta tese, essa formulação foi tentada mas mostrou-se de difícil convergência quando uma das fases apresentava-se em pequena quantidade, isto é, muito próxima ao ponto de saturação, tornando inconveniente a manipulação de funções logarítmicas. Optou-se, portanto, por trabalhar com as derivadas diretamente em relação à temperatura, aos volumes de cada fase, e manteve-se a sugestão quanto ao número de mols. A dedução das equações de modelagem do equipamento encontra-se no Apêndice 1. Observou-se que esta segunda abordagem teve mais sucesso. Contudo, longe do ponto de saturação, as duas opções apresentaram desempenhos semelhantes e convergiram com o mesmo número de iterações. Assim, para um sistema contendo np fases, foi obtido o seguinte conjunto de equações algébricas constituídas das derivadas de QF : np ⎛ ∂Q ⎞ rT = ⎜ F ⎟ = ⎝ ∂T ⎠V ,N U ESPEC − ∑ Uk k =1 RT 2 =0 (3.4) 22 FORMULAÇÃO ⎛ ∂Q rV = ⎜⎜ F ⎝ ∂Vk ⎞ P − Pk ⎟⎟ = K =0 RT ⎠TN,Vm ≠ k ,K ⎛ ∂Q rN = ⎜ F ⎜ ∂n ⎝ ij ⎞ µ − µ iJ ⎟ = ij = 0 , i = 1,..., n c ⎟T ,V RT ⎠ nkm,k ≠ i ,m ≠ j ,J k = 1,..., n p k ≠K (3.5) j = 1,..., n p ; j ≠ J (3.6) Nestas equações, U k e Pk são a energia interna e a pressão na fase k, µ ij é o potencial químico do componente i na fase j . O problema foi formulado admitindo que volume de uma das fases (fase K) é uma variável dependente, calculada a partir da equação de conservação de volume. Por conveniência numérica, a fase com maior volume, em cada iteração, foi admitida como a fase dependente. De forma semelhante, a fase com o maior número de mols para cada componente foi admitida como a variável dependente. As Eqs. (3.4 - 3.6) representam um conjunto de (n p + n c (n p − 1)) equações algébricas não-lineares. No caso de existir uma única fase no sistema, o conjunto reduz-se a uma única equação (Eq. 3.4). As derivadas parciais necessárias para o cálculo da matriz Jacobiana do conjunto de equações, que estão deduzidas no Apêndice 1, estão apresentadas a seguir. Deve-se ressaltar que uma das vantagens desta formulação é que a matriz Jacobiana do conjunto de equações é a matriz Hessiana de QF ; assim, esta matriz é simétrica e é necessário calcular apenas [(n p + n c (n p − 1)) ∗ (n p + 1 + n c (n p − 1))] / 2 de seus termos, reduzindo o esforço computacional. O sistema resultante de equações algébricas não lineares foi resolvido usando-se o método de Newton-Raphson, cujo passo completo, em cada iteração, é dado pela resolução do seguinte sistema de equações lineares: ⎡r ⎢ TT ⎢ rVT ⎢ ⎢⎣rNT T rTV rVV rNV T ⎤ ⎡ rT ⎤ rTN ⎡ ∆T ⎤ ⎥ ⎢ ⎥ ⎢ ⎥ rVN ⎥ ⋅ ⎢∆V ⎥ = − ⎢ rV ⎥ ⎥ ⎢r N ⎥ rNN ⎥ ⎢⎣∆N ⎥⎦ ⎣ ⎦ ⎦ (3.7) 23 FORMULAÇÃO Eventualmente, o passo completo de Newton-Raphson calculado pela resolução da Eq. (3.7) leva uma ou mais variáveis a valores não-físicos como, por exemplo, volumes ou números de mols negativos. Na implementação desta tese, quando isto ocorreu, reduziu-se o tamanho de passo, preservando-se a direção de busca. No caso da dinâmica do “flash”, devido à integração das equações diferenciais, resolve-se em cada instante de tempo, um problema de “flash” UVN com especificações similares aos “flashes” precedentes. Observou-se que o uso da solução do “flash” precedente constitui, em geral, uma ótima estimativa inicial para um novo problema de “flash”. Extrapolações lineares das duas últimas soluções de problemas precedentes também foram tentadas, com bons resultados. Os termos que aparecem na Eq. (3.7) são dados por: 2(U − U ESPEC ) 1 ⎛ ∂r ⎞ − rTT = ⎜ T ⎟ = 3 RT RT 2 ⎝ ∂T ⎠V ,N rVV ⎛ ∂r =⎜ V ⎜ ∂V ⎝ p ⎞ 1 ⎟ =− ⎟T ,V ,m ≠ p,P , RT ⎠N m ⎛ ∂r rNN = ⎜⎜ N ⎝ ∂N rs ⎡⎛ ⎢⎜ ∂PF ⎢⎜⎝ ∂VF ⎣ ⎞ 1 ⎡⎛⎜ ∂µ ij ⎟⎟ = ⎢⎜ ⎠Tnab,V,,a ≠ r , RT ⎢⎣⎝ ∂N rj b ≠ s ,S ⎛ ∂U ⎞ ⎜ ⎟ ⎝ ∂T ⎠V ,N ⎞ ⎛ ∂P ⎟⎟ − δ f ,p ⎜⎜ f ⎠TN,Vm ,m ≠ p,P , ⎝ ∂Vf ⎞ ⎛ ⎟(δ js − δ jS ) + ⎜ ∂µ iJ ⎜ ∂N ⎟ ⎝ rJ ⎠ ⎡⎛ ⎢⎜ ∂U p ⎢⎜ ∂Vp ⎣⎢⎝ rTV ⎛ ∂ rT =⎜ ⎜ ∂V ⎝ p ⎞ 1 ⎟ =− ⎟T ,V ,m ≠ p,P , RT 2 ⎠N m rTN ⎛ ∂r = ⎜⎜ T ⎝ ∂N rs ⎞ 1 ⎟⎟ =− RT 2 ⎠TN,abV ,,a ≠ r ,b ≠s,S rVN ⎛ ∂r = ⎜⎜ V ⎝ ∂N rs ⎡ ⎞ 1 ⎢⎛ ∂Pf ⎟⎟ ⎜⎜ = ⎠TN,abV ,,a ≠ r ,b ≠s,S RT ⎢⎣⎝ ∂N rf (3.8) ⎤ ⎞ ⎟⎟(δ Js − δ JS )⎥ ⎥⎦ ⎠ ⎞ ⎛ ∂U ⎟ − ⎜⎜ P ⎟T ,V ,m ≠ p,P , ⎝ ∂VP ⎠N m ⎡⎛ ⎢⎜ ∂U s ⎢⎜⎝ ∂N rs ⎣ ⎤ ⎞ ⎥ ⎟⎟ ⎥ T , V , m ≠ p , P , m ⎠N ⎦ (3.10) ⎤ ⎞ ⎥ ⎟⎟ ⎠TN,Vm ,m ≠ p,P , ⎥⎥ ⎦ ⎛ ∂U S ⎞ ⎟⎟ − ⎜⎜ ⎠TN,abV ,,a ≠ r ,b ≠ s,S ⎝ ∂N rS ⎤ ⎞ ⎥ ⎟⎟ T , V , ⎠ Nab ,a ≠ r ,b ≠s,S ⎥⎦ ⎞ ⎛ ⎟⎟ (δ fs − δ fS ) − ⎜⎜ ∂PF ⎠TN,abV ,,a ≠ r ,b ≠s,S ⎝ ∂N rF (3.9) (3.11) (3.12) ⎤ ⎞ ⎟⎟ (δ Fs − δ FS )⎥ ⎥ T , V , ⎠ Nab ,a ≠ r ,b ≠s,S ⎦ (3.13) 24 FORMULAÇÃO 1 ⎛ ∂r ⎞ (PF − Pf ) + 1 rVT = ⎜ V ⎟ = − 2 RT RT ⎝ ∂T ⎠V ,N (µ iJ − µ ij ) 1 ⎛ ∂r ⎞ rNT = ⎜ N ⎟ = + RT RT ⎝ ∂T ⎠V ,N rNV ⎛ ∂r =⎜ N ⎜ ∂V ⎝ p ⎡ ⎞ 1 ⎢⎛⎜ ∂µ ij ⎟ = ⎟T ,V ,m ≠ p,P , RT ⎢⎜ ∂V ⎠N m ⎢⎣⎝ j ⎡⎛ ∂µ ij ⎢⎜⎜ ⎢⎣⎝ ∂T ⎡⎛ ∂PF ⎞ ⎛ ∂P ⎞ ⎤ ⎟ −⎜ f ⎟ ⎥ ⎢⎜ ⎣⎢⎝ ∂T ⎠V ,N ⎝ ∂T ⎠V ,N ⎦⎥ (3.14) ⎞ ⎛ ∂µ ⎞ ⎤ ⎟⎟ − ⎜ iJ ⎟ ⎥ ⎠V ,N ⎝ ∂T ⎠V ,N ⎥⎦ (3.15) ⎞ ⎟ (δ − δ jP ) − ⎛⎜⎜ ∂µ iJ ⎟T ,V ,m ≠ p,P , jp ⎝ ∂VJ ⎠N m ⎤ ⎞ ⎟⎟ (δ Jp − δ JP )⎥⎥ , , ≠ , , T V m p P ⎠N m ⎥⎦ (3.16) Uma vez que as Eqs. (3.8) a (3.16) constituem os elementos da matriz Hessiana de QF deve existir simetria entre diversos termos. Assim, as submatrizes rNN e rVV devem ser simétricas. Além disso, rTV (Eq. (3.11)) e rVT (Eq. (3.14)), bem como rTN (Eq. (3.12)) e rNT (Eq. (3.15)) também devem apresentar simetria. Todas estas simetrias foram testadas durante a implementação e corretamente obtidas pelo programa computacional. Como já mencionado, admite-se que o tambor esteja em equilíbrio termodinâmico a qualquer tempo. Para detectar o possível surgimento de uma nova fase no tambor, o teste de estabilidade global de fase é empregado (Michelsen, 1982a). Neste caso, o sistema de EAD’s é modificado para levar em consideração as equações algébricas relacionadas à existência desta nova fase. Admite-se o desaparecimento de uma fase sempre que a quantidade desta, durante a integração do sistema de EAD’s, situa-se abaixo de um patamar pré-estabelecido. Neste caso, o sistema de EAD’s é modificado pela remoção das equações algébricas correspondentes. Ressalta-se que apesar do surgimento ou desaparecimento de fases não modificar o número de equações diferenciais, este tem impacto no número de estados correspondentes às equações algébricas. Para o cálculo da condição inicial do tambor, emprega-se o procedimento desenvolvido por Espósito (1999) e Espósito et al. (2000). Este FORMULAÇÃO 25 procedimento corresponde à solução de um problema de “flash” multifásico em estado estacionário, no qual as especificações são a temperatura (T), o volume (V) e o número de mols (N) de cada componente na mistura (“flash” TVN). Para o cálculo das propriedades físicas das correntes de entrada, que pode conter uma ou mais fases, usou-se um procedimento de “flash” (Michelsen, 1982b) com especificação de temperatura (T), pressão (P) e número de mols (N) de cada componente. As propriedades físicas foram calculadas com a EDE de Peng-Robinson (1976) com as regras de mistura de um fluido de van der Waals (com parâmetros de interação binária fixados em zero para todos os exemplos). As expressões para cálculo de propriedades foram obtidas automaticamente com o programa de computação algébrica Thermath (Castier, 1999) e estão apresentadas no Apêndice 2. As propriedades de compostos puros necessárias para caracterizar cada substância foram obtidas em Reid et al. (1987). 3.2. Implementação Computacional O fluxograma da Fig. (3.1) apresenta o algoritmo de resolução do “flash” UVN. A rotina desenvolvida por Espósito (1999) foi adaptada para interface do MATLAB® (desenvolvimento de gateway, com pequenas modificações de código para adequação à finalidade do problema). A DLL gerada é chamada em código MATLAB® para obter as condições iniciais do problema (“flash” TVN, código eqfuvn.for). A cada passo de integração, as equações algébricas são avaliadas em código FORTRAN, que realiza o teste de estabilidade de fases, e resolve as equações algébricas pertinentes, utilizando as rotinas de cálculo de propriedades termodinâmicas desenvolvidas pelo procedimento de computação algébrica do Thermath (Castier, 1999) (“flash” UVN, código uvnslog.for). A DLL gerada para esta rotina é invocada pelo código de resolução de EAD/EDO´s ode15s, no ambiente MATLAB®. A primeira restrição quanto ao tratamento dos sistemas como EAD’s é a determinação do índice. Por definição, o índice diferencial é o número mínimo 26 FORMULAÇÃO de vezes que um subgrupo de sistema de EAD’s (ou equações derivadas dele) precisa ser diferenciado, em relação à variável independente até ser transformado em um sistema de EDO´s (Costa Jr., 2001). O código ode15s do MATLAB® permite resolução simultânea de equações algébricas e diferenciais de índice 1. Utilizando a ferramenta que possibilita a resolução das EAD’s, todas as rotinas (gateways), necessárias para a comunicação do MATLAB® com o FORTRAN foram construídas e testadas. No entanto, o código ode15s diagnosticou o problema como de índice superior a 1, restando, no escopo deste estudo, a “Abordagem EDO” descrita no Capítulo 2, e incluída no Fluxograma da Fig. (3.1). Adicionalmente, como mencionado no item 3.1, o surgimento ou desaparecimento de fases não modifica o número de estados correspondentes a equações diferenciais mas tem impacto no número de estados correspondentes a equações algébricas. Sob este aspecto, a “Abordagem EDO” para resolução do conjunto de EAD’s apresenta uma vantagem comparativa, tendo em vista que alterar as dimensões do vetor de estado e gerar condições para a nova fase pode atribuir rigidez ao sistema em estudo. Para inicialização do problema, recorreu-se ao “flash” TVN que necessita das seguintes especificações: 1. número de componentes 2. propriedades críticas (temperatura e pressão) e fator acêntrico 3. densidade global (g/cm3) 4. peso molecular dos componentes presentes 5. coeficientes da equação (Reid et al., 1987) para cálculo da capacidade calorífica a pressão constante no estado de gás ideal 6. temperatura (K) 7. número de mols iniciais por componente 27 FORMULAÇÃO Figura 3.1: Algoritmo para Resolução Numérica FORMULAÇÃO 28 Note-se que o conhecimento dos números de mols, dos pesos moleculares e da densidade mássica global, permite determinar o volume. 3.2.1. Integração de Códigos FORTRAN ao Ambiente MATLAB® A utilização do ambiente computacional MATLAB® oferece como maiores atrativos a disponibilidade de rotinas numéricas para resolução das EDO’s e um forte elenco de rotinas de visualização gráfica. Contudo, é indiscutível que a experiência prévia no desenvolvimento de códigos computacionalmente eficientes para cálculo de propriedades termodinâmicas, e simulação de operações típicas de processos químicos, apoia-se no uso de linguagens de programação compiláveis, com destaque, na Engenharia Química, para o FORTRAN. Na direção de integrar desenvolvimentos em FORTRAN ao ambiente MATLAB®, são empregados códigos EXECUTÁVEIS em MATLAB (arquivos MEX), isto é, que podem ser invocados no ambiente MATLAB®. Os componentes de um arquivo MEX FORTRAN, ilustrados na Fig. (3.2), incluem: a) uma rotina computacional que contém o código que se deseja implementar com o arquivo MEX b) uma rotina gateway que realiza a interface entre a rotina computacional e o MATLAB® tendo como ponto de entrada a função mexFunction e seus parâmetros (nle, nld, ple, pld), onde pld é uma matriz de argumentos do lado direito do comando, nld é o número de argumentos de entrada, ple é uma matriz de argumentos de saída do lado esquerdo, e nple é o número de saídas do lado esquerdo. A gateway chama a rotina computacional como subrotina. 29 FORMULAÇÃO (Arquivo MEX) MATLAB Rotina Gateway arq_2() arq_3() arq_1() Rotinas FORTRAN >> [a, b, c] = func(d, e, f, g); nle = 3 nld = 4 a pld ple b c d e f g número de lado esquerdo Ponteiro para lado esquerdo número de lado direito ponteiro para lado direito Figura 3.2. Estrutura MEX FORTRAN FORMULAÇÃO 30 3.2.2. Código em ambiente MATLAB® As rotinas DLL’s desenvolvidas foram utilizadas em código MATLAB®. A ocorrência de uma nova fase (ou desaparecimento de uma fase) constitui-se em uma descontinuidade e pode gerar dificuldade de convergência na resolução das equações algébricas. Para proteger o sistema, desenvolveu-se uma lógica através do recurso localizador de eventos disponível no código ode15s. Sempre que é identificada a dificuldade de convergência (normalmente associada ao evento de mudança de fase), a integração é interrompida automaticamente e retrocede-se no tempo para, então, retomar a integração com redução no passo máximo permitido. Após a normalização de convergência, relaxa-se o passo máximo, de acordo com Tabela 3.1. 3.2.3. Código em ambiente SIMULINK® Alternativamente, visando à obtenção de uma interface amigável e recursos disponíveis para simples configuração (como controladores, seletores, saídas gráficas e mostradores digitais, entre outros) através da construção modular, desenvolveu-se uma versão para o ambiente SIMULINK®, com o algoritmo da Fig. (3.1), conforme apresentado na Fig. (3.3). O “Tambor de Flash” utiliza o bloco “S-function” através da qual é possível chamar programas escritos em linguagem MATLAB® ou Funções MEX em FORTRAN (ou C). Ressalta-se que esta alternativa supera as limitações da construção apresentada na Fig. (2.1). A Fig. (3.3) apresenta o recurso de geração de máscaras para blocos, tornando a interface do programa mais amigável. 31 FORMULAÇÃO Tabela 3.1: Ajuste de Passo Máximo para Auxílio de Convergência das Equações Algébricas tspan=[t0;tfinal]; maxt=10; opt=odeset('Events',@eventos,'MaxStep',maxt,'InitialStep',0.00001); while t0 < tfinal tspan = [t0; tfinal]; [t,y,te,ye,ie] = ode15s(@f,tspan,y0,opt); y0=y(end,:)'; t0=t(end,:); if ie= =1 opt=odeset('Events',@eventos,'MaxStep',maxt/100,… 'InitialStep',0.00001); y0=y(end-1,:)'; t0=t(end-1,:); M else opt=odeset('Events',@eventos,'MaxStep',maxt,… 'InitialStep',0.001); y0=y(end,:)'; t0=t(end,:); M end end %************************************************************* % FUNÇÃO LOCALIZADORA DO EVENTO DE NÃO CONVERGÊNCIA %************************************************************* function [value,isterminal,direction]=eventos(t,y) global flg saidoloop value = [(flg= =1) saidoloop]; isterminal=[1 1]; % Evento interrompe a integração direction=[0 0]; % Evento em qualquer direção Figura 3.3. Modelo em Ambiente SIMULINK® FORMULAÇÃO 33 Como exemplo do elenco de recursos disponíveis para a construção de modelos dinâmicos no ambiente SIMULINK®, foi elaborado um modelo, apresentado na Fig. (3.4), que utiliza: a) bloco controlador PID (com janela de diálogo aberta para ilustrar a interface de configuração); b) bloco seletor multi-portas, através do qual foi configurada uma lógica que modifica o ganho do controlador de acordo com o surgimento de fases; c) bloco Produto para promover a adaptação do ganho do controlador; d) bloco gerador de pulsos para pulsar o “setpoint” de temperatura do tambor em torno de um valor médio, fixado através de um bloco constante. 3.3. Cálculo de Propriedades Termodinâmicas As expressões de propriedades termodinâmicas necessárias para a formulação do problema em estudo, para uma equação de estado tal como a de Peng-Robinson (1976), são longas e complexas. O Thermath (Castier, 1999) permite a obtenção de expressões para o cálculo de propriedades físicas como entalpia, entropia, coeficiente de fugacidade, capacidade calorífica, etc., a partir de modelos termodinâmicos definidos pelo usuário, através da geração de procedimentos automáticos em linguagem FORTRAN. Embora a versão atual do programa esteja limitada à geração de códigos nesta linguagem, possivelmente, poucas modificações seriam necessárias para que tais procedimentos sejam gerados em outras linguagens de programação como C ou em código para MATLAB®. Figura 3.4. “Flash” com Controle de Temperatura 35 FORMULAÇÃO A possibilidade de geração de expressões genéricas torna a utilização do Thermath bastante atrativa. As equações independem, por exemplo, do número de componentes presentes no sistema. O Thermath analisa todas as expressões definidas identificando a existência de subexpressões interrelacionadas ou simétricas com a finalidade de estabelecer uma ordem hierárquica para a resolução destas. Isto é bastante importante quando existe a preocupação quanto ao esforço computacional, como por exemplo, quando se deseja calcular a derivada do logaritmo da fugacidade em relação ao número de mols do componente i em uma mistura de nc componentes. Conforme a Eq. (3.17), esta derivada é simétrica: ⎛ ∂ ln fˆi ⎜ ⎜ ∂n j ⎝ ⎛ ∂ ln fˆj ⎞ ⎟ =⎜ ⎟T ,P , ⎜ ∂n i ⎠ nk ≠ j ⎝ ⎞ ⎟ i=1,...,nc j=1,..,nc ⎟T ,P , ⎠ nk ≠ i (3.17) Sem ser considerada tal igualdade, seria necessário calcular nc2 equações. Ainda que o algoritmo implementado no programa Thermath ocasionalmente falhe na identificação de tais simetrias em expressões muito longas, ele permite, nos casos em que funciona perfeitamente, gerar o código FORTRAN explorando a simetria, o que, neste caso, significa que o programa gerado avaliaria somente (nc (nc + 1) 2) expressões. A implementação dos modelos termodinâmicos através do Thermath, basicamente, pode ser divida em duas partes. A primeira, que compreende aproximadamente 17% do código total, realiza a dedução das expressões, utilizando funções implícitas do Mathematica® e procedimentos complementares. Na segunda parte do código, a análise quanto à eficiência da implementação, descrita anteriormente, é realizada. Tendo em vista que foi possível aplicar a versão atual do programa Thermath diretamente nesta tese, sem necessidade de alterações, não se apresenta uma discussão sobre o modo de funcionamento do programa. Tal discussão pode ser encontrada em Castier (1999). FORMULAÇÃO 36 3.3.1. Propriedades Termodinâmicas Geralmente, as propriedades termodinâmicas são escritas como a soma da contribuição de um sistema de referência (geralmente consideram-se gases ou soluções ideais) e do desvio em relação ao sistema de referência (chamadas de propriedades residuais ou de excesso, dependendo da referência adotada). As expressões para contribuições ideais são bem conhecidas e facilmente determinadas. Porém, a contribuição relativa ao desvio nem sempre é calculada com facilidade. No caso desta tese, utilizou-se uma equação de estado para modelar as fases do sistema. Assim sendo, a contribuição de referência é a de gás ideal que, por sua simplicidade, foi implementada manualmente em linguagem computacional. O desvio é uma contribuição usualmente denominada de residual, cuja implementação computacional foi realizada utilizando-se o programa Thermath. Os programas de “flash” TPN e TVN necessários para a determinação, respectivamente, das condições das correntes de entrada e da condição inicial no tambor de “flash” para a simulação dinâmica encontravam-se praticamente prontos (Gandur, 1990; Espósito, 1999). Entretanto, foi necessário deduzir e implementar automaticamente as diversas propriedades termodinâmicas necessárias para a formulação do “flash” UVN que é resolvido em cada passo de integração. As propriedades assim implementadas foram: a) a própria equação de estado, ou seja, a expressão para a pressão; b) a primeira e a segunda derivadas da pressão em relação ao volume molar, a temperatura e a frações molares constantes, necessárias para a resolução da equação de estado pelo algoritmo de Topliss et al. (1988) durante o teste de estabilidade de fases; c) a energia interna residual e o logaritmo da fugacidade de cada composto na mistura e as derivadas destas duas propriedades a volume total constante: em relação à temperatura (que é a capacidade calorífica residual a volume constante) e em relação aos números de mols de cada composto, mantidos FORMULAÇÃO 37 constantes os números de mols dos demais compostos, a temperatura e o volume total; d) a entalpia residual. A entrada de dados para a dedução destas expressões e a rotina em FORTRAN escrita automaticamente encontram-se no Apêndice 2. 3.3.2. Teste da Estabilidade Global de Fases O teste de estabilidade global de fases de um sistema contendo nc componentes, seguindo a formulação proposta por Michelsen (1982), requer a minimização da função objetivo: nc Ω = ∑ xiJ ( µ iJ − µ ij ) (3.18) i =1 com J ≠ j , onde J é a fase denominada de incipiente e j é uma das fases presentes no sistema. µ iJ e x iJ representam, respectivamente, o potencial químico e a fração molar do componente i na fase incipiente, e µ ij corresponde ao potencial químico do componente i nas demais fases presentes no sistema. Deve-se notar que o teste de estabilidade é realizado para detectar se uma solução das equações de equilíbrio termodinâmico, determinada supondo-se um determinado número de fases, é estável ou não. Portanto, o teste de estabilidade de fases é realizado a partir de uma configuração do sistema em que os valores de µ ij são iguais em todas as fases. Se a função Ω for positiva, o sistema é estável; em caso contrário, o sistema é instável e, portanto, pelo menos mais uma fase deve ser agregada para a determinação das condições de equilíbrio termodinâmico. Este teste de estabilidade de fases tem sido amplamente utilizado na literatura de equilíbrio de fases desde que foi proposto. A implementação utilizada nesta tese foi a realizada originalmente por Michelsen (1982), sem modificações substanciais. Por este motivo, não se faz uma discussão a respeito dos detalhes de implementação. 38 FORMULAÇÃO 3.3.3. Equação de Estado A equação de estado utilizada na modelagem do sistema foi a equação de Peng-Robinson (1976), por ser de uso freqüente na modelagem de processos químicos e petroquímicos. Esta equação de estado está representada pela Eq.(3.19): P= am RT − 2 v − bm v − 2bmv − bm2 (3.19) onde P representa a pressão do sistema, T a temperatura, R a constante universal dos gases, v o volume molar e am e bm são os parâmetros de interação da mistura, calculados segundo as regras de mistura de van der Walls. O cálculo dos parâmetros a e b para a mistura, bem como os valores para os compostos puros, estão apresentados a seguir: nc nc i =1 j =1 am = ∑ x i ∑ x j aij (3.20) nc bm = ∑ x i bi (3.21) aij = ai a j (1 − k ij ) (3.22) i =1 [ ( ai = 0,45724R 2Tci2 1 - 1,43754 1 - Tri0,5 Pci bi = RTci 8Pci )] 2 (3.23) (3.24) onde Tci e Pci são, respectivamente, a temperatura e pressão críticas, xi é a fração molar do componente i e kij é o parâmetro de interação binária. As propriedades termodinâmicas necessárias à simulação foram deduzidas rigorosamente, usando o programa Thermath, tornando possível realizar simulações em condições afastadas da idealidade. FORMULAÇÃO 39 3.4. “Flash” TVN As condições iniciais necessárias para a resolução das equações do modelo dinâmico são obtidas através das especificações de um “flash” com temperatura (T), volume (V) e número de mols (N) conhecidos, ou seja, um “flash” TVN. Espósito (1999) desenvolveu um programa, em linguagem FORTRAN, que consiste na determinação de equilíbrio termodinâmico em sistemas sob influência de campos gravitacionais. O algoritmo é análogo ao procedimento desenvolvido por Castier (1988) para sistemas com T, P e N especificados, que consiste na minimização da energia livre de Gibbs. Porém, este caso possui especificações de T, V e N e a função objetivo a ser minimizada é a energia livre de Helmholtz. O trabalho de Espósito (1999) visava ao estudo do efeito do campo gravitacional em sistemas em equilíbrio. A proposta do seu trabalho é a utilização de potenciais termodinâmicos modificados que acrescentam a influência da gravidade no sistema. No presente trabalho de tese, tal influência não foi incluída como fonte de interferência significativa nos resultados da dinâmica dos equipamentos simulados. Por este motivo, algumas modificações foram realizadas no programa de Espósito (1999), de modo a negligenciar o efeito do campo gravitacional, tornando-o um “flash TVN” convencional. Deste modo, os resultados gerados pela versão modificada do programa de Espósito (1999), sem levar em conta o efeito do campo gravitacional, são consistentes com as hipóteses adotadas na formulação da dinâmica do tambor de “flash”, garantindo-se assim a consistência das condições iniciais determinadas. Exceto pelo negligenciamento do campo gravitacional, o algoritmo e o programa de Espósito (1999) foram utilizados sem modificações adicionais. Por este motivo, considera-se que uma discussão detalhada do algoritmo de Espósito (1999) e de sua implementação computacional fuja ao escopo do texto desta tese. FORMULAÇÃO 40 3.5. “Flash” TPN No balanço de energia, torna-se necessário o cálculo da entalpia das correntes de entrada e saída. Os valores das correntes de saída são calculados pela própria rotina que resolve a parte algébrica do modelo dinâmico, ou seja, as equações do “flash” UVN. Entretanto, os valores referentes às correntes de entrada são calculados através de um “flash” com pressão, temperatura e número de mols especificados (“flash” TPN). Enfocando, neste item, as propriedades das correntes de entrada, devese notar que suas entalpias podem variar com o tempo, caso tais correntes estejam sujeitas a perturbações. Neste caso, a resolução das equações diferenciais requer a avaliação de “flashes” TPN para avaliar as propriedades das correntes de entrada em cada passo de integração. Adotou-se o algoritmo de “flash” TPN proposto por Michelsen (1982a, b), que consiste na minimização da energia livre de Gibbs. Do ponto de vista de implementação computacional, foi utilizada aquela realizada por Gandur (1990). Em sua tese de mestrado, Gandur (1990) concentrou-se no desenvolvimento de um algoritmo para “flash” reativo com especificação de pressão, entalpia e número de mols. Entretanto, o programa computacional implementado por ele permite também resolver “flashes” TPN em sistemas não reativos, calculando-se a entalpia como uma das variáveis de saída. Portanto, o programa de Gandur (1990) pode ser utilizado sem necessidade de nenhuma modificação importante e, por este motivo, seus detalhes não são discutidos neste texto de tese. 4 Resultados A capacidade de simulação do sistema desenvolvido é demonstrada a partir de exemplos, apresentados a seguir. Em todos os casos, a integração das equações diferenciais foi realizada utilizando o código ode15s do MATLAB®. Em todos os gráficos apresentados neste capítulo, as temperaturas são em Kelvin; as pressões, em bar; as energias internas, em cm3.bar; as cargas térmicas, em cm3.bar/min; as vazões, em mol/min; os volumes, em cm3 e o tempo, em min. 4.1. Sistema Exemplo 1: BENZENO-ETILBENZENO Uma mistura de benzeno (i = 1) e etilbenzeno (i = 2), inicialmente nas condições apresentadas na Tabela 4.1 (utilizada para todas as rodadas com este Sistema Exemplo), é submetida a padrões temporais dispostos na Tabela 4.2. Tabela 4.1: Condições Iniciais do Sistema Exemplo 1 Temperatura Inicial (K) 373 Volume do Tambor (m3) 1,1 Número de Mols Inicial i = 1 0,33 i = 2 0,67 A Fig. (4.1) reproduz uma composição de telas de especificação e acompanhamento da simulação. As séries temporais são reproduzidas na Fig. (4.2). Observa-se que em t=250 min surge uma nova fase (np=2). Figura 4.1. Sistema Exemplo 1 Submetido a Padrão Temporal Descrito na Tabela 4.2: Telas de Especificação e Acompanhamento SIMULINK® Figura 4.2. Sistema Exemplo 1 sem Controle: Séries Temporais 44 RESULTADOS Tabela 4.2: Condições de Entrada 1 do Sistema Exemplo 1 Carga Térmica (cm3.bar /min) 1000+100sen(t) Pressão da Alimentação (bar) 30 Temperatura da Alimentação (K) 271+20 sen(0,005t) Vazão da Alimentação (mol/min) 0,5 Vazão de Saída (mol/min) 0 Composição da Alimentação i=1 0,33 i=2 0,67 Na Fig. (4.3), o mesmo sistema descrito na Tabela 4.1 é submetido a novo padrão temporal de acordo com a Tabela 4.3, e simulado em ambiente MATLAB®. Os pontos dos gráficos são gerados a cada vez que a rotina de cálculo das derivadas é chamada pelo integrador ode15s, observando-se a adaptação do passo a cada variação abrupta da entrada temperatura. Verificase surgimento de fase em tempo de aproximadamente 50 minutos. Tabela 4.3: Condições de Entrada 2 do Sistema Exemplo 1 Carga Térmica (cm3.bar/min) 10000 + 1000 sen(0,01 t) Pressão da Alimentação (bar) 5 Temperatura da Alimentação (K) 250, sujeito a pulsos de amplitude 50 e período 20π minutos Vazão da Alimentação (mol/min) 2 Vazão de Saída (mol/min) 0 Composição da Alimentação i=1 0,33 i=2 0,67 45 RESULTADOS 4.2. Sistema Exemplo 2: METANO A simulação reportada utiliza metano puro, inicialmente na condição apresentada na Tabela 4.4. O tambor, em um primeiro caso, é alimentado de acordo com o padrão temporal descrito na Tabela 4.5. Tabela 4.4: Condições Iniciais do Sistema Exemplo 2 Temperatura Inicial (K) 298,15 Volume do Tambor (m3) 30 Número de Mols Inicial 922,73 As séries temporais de entrada (Q) e resposta (U, P, T e np) estão apresentadas na Fig. (4.4). Adicionalmente, para o Sistema Exemplo 2, visando a explorar surgimento de fase, impôs-se ao sistema novo padrão temporal na alimentação, conforme mostrado na Tabela 4.6, obtendo-se as séries temporais apresentadas na Fig. (4.5). Tabela 4.5: Condições de Entrada 1 do Sistema Exemplo 2 Carga Térmica (cm3.bar/min) Para t < 500 Q=0 Para t ≥ 500 Q = -100 * (t - 500) Pressão da Alimentação (bar) 3 Temperatura da Alimentação (K) 298,15 Vazão da Alimentação (mol/min) 1 Vazão de Saída (mol/min) 0 46 RESULTADOS Tabela 4.6: Condições de Entrada 2 do Sistema Exemplo 2 Carga Térmica (cm3.bar/min) Para t < 500 Q=0 Para t ≥ 500 Q = -10000 (t - 500) Pressão da Alimentação(bar) 10 Temperatura da Alimentação (K) 301,62 Vazão da Alimentação (mol/min) 10 Vazão de Saída (mol/min) 0 Observa-se a adaptação do passo em t = 500min, quando é imposta rampa de remoção de calor no tambor. Em t = 800min, surge uma segunda fase, líquida, que ocasiona mudança no padrão temporal de P e T. Este fato, em termos de controle de processo, implicaria na necessidade de adaptação do ganho do controlador à nova situação. 4.3. Controle para Sistema Exemplo 1 Os recursos do SIMULINK® foram explorados na operação do Sistema Exemplo 1, com as condições iniciais da Tabela 4.1, exceto pela temperatura que foi inicializada em 400 K. A Fig. (4.6) mostra a tela do modelo em SIMULINK®, e algumas telas gráficas. As séries temporais da simulação estão apresentadas na Fig. (4.7). A pressão e a composição da corrente de alimentação são aquelas apresentadas na Tabela 4.2. A temperatura da alimentação foi fixada em 380K. A carga térmica do “flash” foi manipulada por um controlador de temperatura, que teve seu “set-point” alterado de através de pulsos conforme Fig. (4.7). A pressão de operação do “flash” foi controlada em 0,45 bar, através de manipulação da vazão de entrada. A vazão de retirada foi fixada em 0 mol/min. Figura 4.3. Sistema Exemplo 1 Submetido a Padrão Temporal Descrito na Tabela 4.3 (No diagrama da temperatura, os círculos e cruzes indicam, respectivamente, os valores no tanque e na corrente de alimentação) Figura 4.4. Simulação de Injeção de Gás Metano Puro no Tambor de “Flash” Submetido a Padrão Temporal Descrito na Tabela 4.5 Figura 4.5. Simulação de Injeção de Gás Metano Puro no Tambor de “Flash” Submetido a Padrão Temporal Descrito na Tabela 4.6 50 RESULTADOS Na operação reportada, a sintonia do controlador de temperatura seguiu ajuste mais rígido, relaxando-se a sintonia do controlador de pressão para minimizar interação entre as malhas, conforme apresentado na Tabela 4.9. A função de transferência para os controladores está apresentada na Eq. (4.1): Gc ( s ) = K c (1 + τ s 1 + D ) τ I s αs + 1 (4.1) Tabela 4.7: Sintonia de Controladores Neste Parâmetros de Controlador de Controlador de Sintonia Temperatura Pressão Kc 1000 0,01 τI 0,001 10 τD 0,0005 0,05 α 0,01 0,01 exemplo, não ocorreu surgimento de nova fase e, conseqüentemente, não houve dificuldades de controle. Para explorar esta situação, fixou-se o valor de referência em T = 370K, com pulsos de –2K. Devido às dificuldades de controle, empregou-se esquema de aceleração do controlador de temperatura apresentado na Tabela 4.8, A Fig. (4.8) apresenta a comfiguração de simulação no SIMULINK®. As séries temporais de resposta de temperatura a mudançcas do “SetPoint” do controlador de temperatura, e o movimento da variável manipulada Q estão apresentadas na Fig. (4.9). Figura 4.6. Sistema Exemplo 1 sob Controle de T e P Figura 4.7. Sistema Exemplo 1 sob Controle de T e P: Séries Temporais (F representa a vazão da alimentação) 53 RESULTADOS Tabela 4.8: Adaptação do Ganho do Controlador de Temperatura Número de Fases 1 2 Sintonia de Controlador (*) K c = K c ,1 ; K c ,1 Kc = Kc = 10 K c = 10 K c ,1 ; τI τI τ I ,1 ;τ D = τ D ,1 K c ,1 τ I ,1 ;τ D = 10τ D ,1 (*) Kc,1 = 1000; τI,1 = 100; τD,1 = 0,005, α = 0,01 (mantido constante) Apesar da adaptação, verifica-se uma dinâmica mais lenta do processo (o ciclo dos pulsos precisou ser aumentado em relação à Fig. (4.7) para que os novos “set-points” fossem alcançados, apesar de ser empregada uma sintonia muito mais rápida nos controladores para nP = 1). O desempenho insatisfatório da malha de controle sugere o possível risco de projeto de estratégias de controladores a partir de modelos dinâmicos que não incorporam o rigor necessário nos modelos termodinâmicos empregados. 4.4. Sistema Exemplo 3: GLP Um terceiro Sistema Exemplo foi empregado para teste do programa de simulação de “flash” multifásico. A Fig. (4.10) representa o esquema do processo proposto. O sistema é composto por 6 componentes e as condições iniciais estão dispostas na Tabela 4.9. O padrão de operação temporal está apresentado na Tabela 4.10. Figura 4.8. Adaptação de Ganho do Controlador sob Evento de Surgimento de Fase Figura 4.9. Desempenho da Estratégia de Controle com Adaptação de Ganho na Ocorrência de Nova Fase (F representa a vazão de alimentação) Figura 4.10. Sistema Exemplo 3: Flash Na Tabela 4.10, está apresentada a variação dos ”set-points” dos controladores no intervalo de simulação e, na Tabela 4.11 apresentam-se as condições operacionais da corrente de entrada. O valor inicial da carga térmica (Q) foi especificado igual a –20000 cm3.bar/min. Tabela 4.9: Condições Iniciais do Sistema Exemplo 3 Temperatura Inicial (K) 315,0 Volume do Tambor (m3) Número de Mols Inicial 4,4 Etano(i=1) 10,8 Propeno(i=2) 360,8 Propano(i=3) 146,5 i-Butano(i=4) 233,0 n-Butano(i=5) 233,0 n-Pentano(i=6) 15,9 Na Fig. (4.11) é apresentado o esquema de simulação em ambiente SIMULINK®. Realiza-se o controle na temperatura do processo através da carga térmica (Q) adicionada ou removida do processo, da pressão através da vazão de retirada de vapor presente no sistema e há ainda um controlador de nível que manipula a vazão da fase líquida que somente entra em operação quando o volume atingir 200000 cm3. Tabela 4.10: Variação dos “set-points” durante a Simulação t < 20 Temperatura (K) 300 Pressão (bar) 5 Nível do tanque (cm3) 10000 20 ≤ t < 30 Temperatura (K) 300 Pressão (bar) 3 Nível do tanque (cm3) 100000 30 ≤ t < 40 Temperatura (K) 305 Pressão (bar) 3 Nível do tanque (cm3) 10000 Temperatura (K) 300 Pressão (bar) 3 Nível do tanque (cm3) 100000 t ≥ 40 Figura 4.11. Tela de Especificação para o Sistema Exemplo 3 em Ambiente SIMULINK® A Fig. (4.12) apresenta a série temporal referente à simulação. Observase que logo ocorre o surgimento de fase, aproximadamente em 1 min. Para melhor visualização, a Fig. (4.13) apresenta a evolução da temperatura do sistema e da carga térmica a ele submetida. Em t=20 min ocorre uma mudança no “Set-Point” da pressão. Com isto, observa-se a tentativa de ajuste do controlador, porém na série temporal que precede tal evento, o “off-set” estava estável dificultando a ação integral do controlador. Tabela 4.11: Condições de Entrada do Sistema Exemplo 3 Pressão da Alimentação (bar) 5 Temperatura da Alimentação (K) 270 Vazão da Alimentação (mol/min) 1 Composição da Alimentação i=1 0,0108 i=2 0,3608 i=3 0,1465 i=4 0,2330 i=5 0,2330 i=6 0,1590 Com a alteração no “set-point” do volume da fase líquido, as equações algébricas não convergiram para a variável pressão, conforme pode ser observado na Fig. (4.14). Este fato é reconhecido pela rotins através uma função evento que pára a integração, retorna ao passo anterior, prosseguindo o avanço no tempo com passos 100 vezes menor. Isto faz com que o sistema se recupere e retome a convergência. Figura 4.12. Sistema Exemplo 1: Série Temporais (Vap e Liq são, respectivamente, as vazões retirada de vapor e líquido do sistema e Vol é o nível do tanque) Figura 4.13. Sistema Exemplo 3: Temperatura do Sistema e Carga Térmica P Vap Figura 4.14. Sistema Exemplo 3: Resposta da Pressão à modificações no “Set-Point” Vol Liq Figura 4.15 - Resposta do Controlador de Nível ao Surgimento da Fase 5 Conclusões e Sugestões A simulação dinâmica de “flashes” bifásicos foi abordada com modelos rigorosos para cálculo de propriedades termodinâmicas e de equilíbrio de fases. Utilizou-se o ambiente de computação algébrica Mathematica® para geração automática de códigos em FORTRAN para cálculo de propriedades termodinâmicas e o ambiente de resolução numérica e visualização gráfica MATLAB®/SIMULINK® para a simulação do equipamento. A implementação envolveu o desenvolvimento das equações para “flash” com especificação de energia interna, volume e número de mols (“flash” UVN), resultando em expressões complexas, e o código foi desenvolvido por computação algébrica. O emprego da ferramenta de desenvolvimento e a integração com o ambiente MATLAB® permitiu a simulação de processo envolvendo misturas de hidrocarbonetos, e gás liquefeito de petróleo, de interesse do Setor de Petróleo e Gás. Uma conclusão importante, do ponto de vista numérico, diz respeito às variáveis independentes adotadas para a resolução das equações algébricas que constituem o modelo do “flash” UVN. Além dos números de mols dos compostos nas fases, Michelsen (1999) sugeriu que se utilizassem os logaritmos da temperatura e dos volumes das fases. Observou-se que, freqüentemente, não se obtém convergência com esta escolha, na vizinhança dos pontos de saturação, embora, longe destes, o esquema proposto por Michelsen (1999) funcione bem. Obteve-se uma formulação numericamente bem mais confiável ao se utilizar a temperatura e os volumes das fases diretamente, sem uso de logaritmos. Identificou-se, entretanto, uma limitação na formulação adotada. Apesar do modelo detectar corretamente o aparecimento de uma terceira fase para certos conjuntos de especificação, não foi possível obter a convergência das equações algébricas do modelo nos problemas trifásicos testados. Extensos CONCLUSÕES E SUGESTÕES 66 testes foram realizados em busca de algum possível erro de programação, que não foi encontrado. Especula-se que a possível causa para a limitação de desempenho encontrada esteja na formulação, que caracteriza a solução através de um ponto de sela. Michelsen (1987), por exemplo, detectou dificuldades na resolução de “flashes” isentálpicos quando utilizou uma formulação baseada em um ponto de sela. Vale também ressaltar que a formulação adotada permite desacoplar, em certos casos, os subconjuntos das equações algébricas e diferenciais. Em função do interesse em desenvolver um programa geral de simulação, este não foi um aspecto explorado nesta tese. Mas, dependendo do tipo de especificação, pode ser possível obter soluções analíticas das equações diferenciais, mesmo quando o subconjunto algébrico apresenta grande complexidade. Como sugestões para trabalhos futuros, destacam-se: 1. investigar a possibilidade de formular uma função objetivo algébrica (ou seja, a função cujas derivadas constituem as equações algébricas do modelo de “flash”) que incorpore um termo de penalidade. Tal penalidade deve depender do quadrado do desvio entre os valores especificados e calculado da energia interna, de modo análogo ao que foi empregado, com êxito, por Michelsen (1987) e por Gandur (1990), no caso mais geral, com a existência de reações químicas. A expectativa é que essa formulação permitiria caracterizar a condição de equilíbrio termodinâmico como um ponto de mínimo da nova função objetivo, o que apresenta vantagens numéricas em relação à caracterização como ponto de sela. 2. investigar a resolução das equações algébrico-diferenciais (EAD) pelo código odes15s do MATLAB® ou, através de uma gateway, pelo código DASSL. Os exemplos testados, em primeira etapa neste trabalho, obtiverem do código ode15s a indicação de não se tratar de um sistema de EAD´s de índice 1. Entretanto, tal indicação foi interpretada como resultado preliminar, sujeito a verificação adicional. Métodos de redução CONCLUSÕES E SUGESTÕES 67 de índice deverão ser investigados para que os benefícios numéricos da resolução simultânea do conjunto de equações algébrico-diferenciais sejam utilizados para a simulação de operações unitárias mais complexas como colunas de destilação reativas. 3. existe um interesse crescente no desenvolvimento de ferramentas de detecção e diagnóstico de falhas baseadas em modelos do processo, estimação de parâmetros e estimação de estados (Iserman, 1997). A detecção de falha é o reconhecimento de um comportamento onde pelo menos uma propriedade característica ou parâmetro do processo se desvia da situação de normalidade. Nesta linha, a disponibilidade de modelos rigorosos não só auxiliam na identificação destes eventos como também no diagnóstico. O impacto de simplificações normalmente adotadas frente ao rigor termodinâmico apresentado neste trabalho requer investigações futuras. 4. incorporar, no programa desenvolvido, chaveamentos lógicos que interrompam a execução no caso de situações não-físicas, como por exemplo, o escoamento de regiões de pressões mais baixas para aquelas de pressões mais altas, tal como ocorreu nos exemplos apresentados nas Seções 4.1 e 4.3. 6 Referências Adams, S. e Taylor, R., Thermodynamics with Maple V. III - Thermodynamic Property Relations and the Maxwell Equations, Maple Tech. 1, 68-81, 1994. Alfradique, M.F., Espósito, R.O. e Castier, M., Automatic Generation of Procedures for the Simulation of Multistage Separators Using Computer Algebra, aceito para publicação em Chemical Engineering Communications, 2001. Bischof, C.H., Carle, A., Corliss, G.F., Griewank, A. e Hovland, P., ADIFOR: Generating Derivative Codes from Fortran Programs, Scientific Programming 1, 1-29, 1992. Brown, P.N., Hindmarsh, A.C. e Petzold, L.R., Using Krylov Methods in the Solution of Large-Scale Differential-Algebraic Systems, SIAM J. Sci. Comput., 15, 1467-1488, 1994. Callen, H.B., Thermodynamics and an Introduction to Thermostatistics, 2aedição, Wiley, New York, 1985. Castier, M., Automatic Implementation Of Thermodynamic Models Using Computer Algebra, Computers and Chemical Engineering, 23, 1229, 1999. Costa Jr, E.F., Caracterização Estrutural Automática de Sistemas AlgébricoDiferenciais, Exame de Qualificação ao Doutorado, PEQ/COPPE, Universidade Federal do Rio de Janeiro, 2001. Espósito, R.O., “Cálculo de Equilíbrio Termodinâmico em Sistemas sob a Influência de Campos Gravitacionais”, Tese de Mestrado, Escola de Química, Universidade Federal do Rio de Janeiro, 1999. Espósito R.O, Castier M. e Tavares, F.W., Calculations of thermodynamic equilibrium in systems subject to gravitational Engineering Science, 55, 3495-3504, 2000. fields, Chemical 70 REFERÊNCIAS Gandur, M.C., “Equilíbrio Químico e de Fases com Especificação de Pressão e Entalpia em Sistemas não Ideiais”, PEQ/COPPE, Universidade Federal do Rio de Janeiro, 1990. Gopal, V. e Biegler, L.T., Nonsmooth Dynamic Simulation with Linear Programming Based Methods, Computers and Chemical Engineering, 21(7), 675-689, 1997. Gopal, V. e Biegler, L.T., Smoothing Methods for the Treatment of Complementarity Conditions and Nested Discontinuities, AIChE Journal, 45(7), 1535-1547, 1999. Gopal, V. e. Biegler, L.T, An Optimization Approach to Consistent Initialization and Reinitialization after Discontinuities of Differential Algebraic Equations, SIAM J. Cient. Comp., 20(2), 447-467, 1999b. Isermann, R. e Ballé, P., Trends in the Application of Model Based Fault Detection and Diagnosis of Technical Process, Control Eng. Pratice, 5, 709-719, 1997. Marquardt, W., Dynamic Process Simulation Recent Progress and Future Challenges, in “Chemical Process Control” Eds. Y. Arkun e W.H. Ray, CACHE – AIChE Publications, 130, 1991. Michelsen, M.L., The Isothermal Flash Problem. I. Stability Analysis, Fluid Phase Equilibria 9, 1-19, 1982a. Michelsen, M.L., The Isothermal Flash Problem. II. Phase Split Calculation, Fluid Phase Equilibria 9, 21–40, 1982b. Michelsen, M.L., Multiphase Isenthalpic and Isentropic Flash Algorithms, Fluid Phase Equilibria, 33, 13-27, 1987. Michelsen, M.L., State Function Based Flash Specifications, Fluid Phase Equilibria, 158-160, 617-626, 1999. Müller, D. e Marquardt, W., Dynamic Multiple-Phase Flash Simulation: Global Stability Analysis Versus Quick Phase Determination, Computers and Chemical Engineering, 97, S817-S822, 1997. Peng, D.Y. e Robinson, D.B., A simple two-constant equation of state, Ind. Eng. Chem. Fundamentals 15, 59-64, 1976. REFERÊNCIAS 71 Petzold, L., “Numerical Methods for Differential-Algebraic Equations. Current Status and Future Directions” , Computational Ordinary Differential Equations, Eds. J. Cash e I. Gladwell, Clarendon Press, Oxford, 259273, 1992. Reid, R.C., Prausnitz, J.M. e Poling, B.E., The Properties of Gases and Liquids, McGraw-Hill Book Company, 4a edição, 1987. Saha, S. e Carroll, J.J., The Isoenergetic-Isochoric Flash, Fluid Phase Equilibria, 138, 23-41, 1997. Shampine, L.F. e Reichelt, M.W., The MATLAB ODE Suite, SIAM Journal on Scientific Computing, 18, 1-22, 1997. Shampine, L.F., Reichelt, M.W., e Kierzenka, J.A., Solving Index-1 DAEs in MATLAB and Simulink, SIAM Review, 41, 538-552, 1999. Silva, A.S., Diferenciação e Implementação de Modelos Termodinâmicos Usando Computação Algébrica, Tese de Mestrado, Escola de Química, Universidade Federal do Rio de Janeiro, 1993. Silva, A.S. e Castier, M., Automatic Differentiation and Implementation of Thermodynamic Models Using a Computer Algebra System, Computers and Chemical Engineering 17, S473-S478, 1993a. Silva, A.S. e Castier, M., Computação Algébrica: uma Revisão com Aplicações à Engenharia Química, Revista Brasileira de Engenharia, Caderno de Engenharia Química 10, 65-94, 1993b. Taylor, R. e. Monagan, M.B, Thermodynamics with Maple V. I - Equations of state, Maple Tech., 10, 50-59, 1993. Taylor, R., Thermodynamics with Maple V. II - Phase equilibria in binary systems, Maple Tech. 1, 83-92, 1994. Taylor, R., Automatic Derivation of Thermodynamic Property Functions using Computer Algebra, Fluid Phase Equilibria 129, 37-47, 1997. Topliss, R.J., Dimitrelis, D. e Prausnitz, J.M., Computational Aspects of a NonCubic Equation of State for Phase Equilibrium Calculations. Effect of Density Dependent Mixing Rules. Comput. Chem. Eng., 12, 483-489, 1988. REFERÊNCIAS 72 Vieira, R.C., Iniciação de Sistemas Algébrico-Diferenciais Empregando Algoritmos Heurísticos de Otimização, D.Sc. Exame de Qualificação ao Doutorado, Universidade Federal do Rio de Janeiro, 1999. Wilson, G., AIChE National Meeting, May 4-7, 1969, Cleveland, OH. Wolfram, S., Mathematica®: a System for Doing Mathematics by Computer, Addison-Wesley, 1991, Redwood City, CA. Apêndice 1 Montagem das Equações Algébricas de Equilíbrio de Fases O objetivo deste Apêndice é apresentar a dedução das derivadas da Eq. (A1.1), que compõem a matriz Jacobiana o cálculo do equilíbrio de fases do sistema. Essas expressões foram deduzidas com o auxílio do programa Thermath. Vale ressaltar, contudo, de que a dedução foi menos automatizada do que a das propriedades termodinâmicas a partir da equação de estado. Isto ocorrreu porque se considerou que o volume de uma das fases era uma variável dependente, bem como que, para cada composto, havia uma fase na qual o número de mols era dependente. De qualquer modo, uma vez deduzidas as expressões, o código FORTRAN correspondente foi gerado pelo programa Thermath e está apresentado na seção A2.3 do Apêndice 2. A função QF proposta por Michelsen (1999) e que constitui o ponto de partida da dedução,.é dada por: A − U ESPEC QF = RT (A1.1) e será derivada em relação à temperatura (T), ao volume das fases (V) e ao número de mols (N) dos componentes nas fases independentes produzindo as funções rT, rV e rN respectivamente as Eqs. (A1.5), (A1.9) e (A1.14). As fases dependentes estão representadas, por conveniência, por letras maiúsculas. Para a derivada em relação à temperatura, tem-se: 1 1 ⎛ ∂A ⎞ ⎛ ∂Q ⎞ rT = ⎜ F ⎟ A − U ESPEC + =− ⎜ ⎟ 2 RT ⎝ ∂T ⎠V ,N RT ⎝ ∂T ⎠V ,N ( mas: ) (A1.2) 73 APÊNDICE 1 ⎛ ∂A ⎞ = −S ⎜ ⎟ ⎝ ∂T ⎠V ,N (A1.3) e S= U−A T (A1.4) Substituindo as Eqs. (A1.3) e (A1.4) na Eq. (A1.2): rT (U − U =− ESPEC RT ) (A1.5) 2 Para a derivada em relação aos volumes de fase independentes, tem-se: ⎛ ∂Q rv = ⎜⎜ F ⎝ ∂Vf ⎞ 1 ⎛ ∂A ⎟⎟ ⎜⎜ = ⎠ TN,Vg ,g ≠ f ,F , RT ⎝ ∂Vf ⎡ ⎞ 1 ⎢⎛ ∂Af ⎟⎟ ⎜⎜ = ⎠TN,Vg ,g ≠ f ,F , RT ⎢⎝ ∂Vf ⎣ ⎞ ⎛ ∂A ⎟⎟ − ⎜⎜ F ⎠ TN,Vg ,g ≠ f ,F , ⎝ ∂VF ⎞ ⎛ ∂VF ⎟⎟ ⎜⎜ ⎠TN,Vg ,g ≠ f ,F , ⎝ ∂Vf (A1.6) mas ⎛ ∂A ⎞ ⎟ = −P ⎜ ⎝ ∂V ⎠ (A1.7) e a derivada do volume da fase dependente (F) em relação à qualquer outra fase independente, será sempre igual a –1 pois: VF = VTOTAL − np −1 ∑V f =1 f (A1.8) com isto, rV = 1 (PF − Pf ) RT (A1.9) Para a derivada em relação aos números de mols independentes, temse: ⎤ ⎞⎥ ⎟⎟ ⎠⎥ ⎦ 74 APÊNDICE 1 ⎛ ∂Q rN = ⎜ F ⎜ ∂N ij ⎝ ⎞ 1 ⎛⎜ ∂A ⎟ = ⎜ ⎟ T ,V , ⎠ Nmn ,m ≠ i ,n ≠ j ,J RT ⎝ ∂N ij ⎞ ⎟ ⎟ T ,V , ⎠ N mn ,m ≠ i ,n ≠ j ,J (A1.10) mas a derivada da Eq. (A1.10) pode ser dividida: ⎛ ∂A ⎜ ⎜ ∂N ⎝ ij ⎛ ∂A j ⎞ ⎟ =⎜ ⎜ ⎟ T ,V , ⎠ N mn ,m ≠ i ,n ≠ j ,J ⎝ ∂N ij ⎞ ⎛ ∂A ⎟ + ⎜⎜ J ⎟ T ,V , ⎠ Nmn ,m ≠ i ,n ≠ j ,J ⎝ ∂N iJ ⎛ ∂N iJ ⎞ ⎜ ⎟⎟ ⎜ , , T V ⎠ Nmn ,m ≠ i ,n ≠ j ,J ⎝ ∂N ij ⎞ ⎟ ⎟ ⎠ (A1.11) seguindo o mesmo raciocínio do apresentado para o volume, é possível escrever o número de mols do componente i segundo a Eq.(A1.12). A derivada do número de mols na fase dependente (J) em relação às fases independentes (j) é portanto, -1. np −1 N iJ = N i − ∑ N ij (A1.12) ⎛ ∂A ⎞ mas ⎜ ⎟ =µ ⎝ ∂N ⎠ T ,V (A1.13) j =1 Com isto, a Eq. (A1.10) pode ser escrita conforme a Eq. (A1.14): rN = µ ij − µ iJ (A1.14) RT Derivando as funções rT, rV e rN em relação à temperatura obtem-se as Eqs.(A1.15), (A1.16) e (A1.17). ( ) 2 U − U ESPEC 1 ⎛ ∂U ⎞ ⎛ ∂rT ⎞ − ⎜ ⎟ = ⎜ ⎟ 3 RT RT 2 ⎝ ∂T ⎠V ,N ⎝ ∂T ⎠V ,N 1 ⎛ ∂rv ⎞ =− (PF − Pf ) + 1 ⎜ ⎟ 2 RT RT ⎝ ∂T ⎠TN,abV ,,b ≠ s,S 1 ⎡ (µ iJ − µ ij ) ⎛ ∂µ ij ⎛ ∂rN ⎞ + ⎜⎜ ⎢ ⎜ ⎟ = T ⎝ ∂T ⎠V ,N RT ⎢⎣ ⎝ ∂T ⎤ ⎡⎛ ∂P ⎞ ⎛ ∂P ⎞ ⎥ ⎢⎜ F ⎟ −⎜ f ⎟ ⎢⎝ ∂T ⎠TN,V ,,b ≠ s,S ⎝ ∂T ⎠TN,V ,,b ≠ s,S ⎥ ab ab ⎦ ⎣ ⎞ ⎛ ∂µ ⎞ ⎤ ⎟⎟ − ⎜ iJ ⎟ ⎥ ⎠V ,N ⎝ ∂T ⎠V ,N ⎥⎦ (A1.15) (A1.16) (A1.17) Derivando agora em relação ao volume Vp das fases independentes, ressaltando que Vp não necessariamente é igual a Vf. 75 APÊNDICE 1 ⎛ ∂rT ⎜ ⎜ ∂V ⎝ p ⎞ 1 ⎛⎜ ∂U ⎟ =− ⎟ T ,V ,m ≠ p,P , RT 2 ⎜⎝ ∂V p ⎠N m ⎡ ⎞ 1 ⎢⎛⎜ ∂U P ⎟ =− 2 ⎟ T ,V ,m ≠ p,P , RT ⎢⎜⎝ ∂VP ⎠N m ⎢⎣ ⎞ ⎟⎟ ⎠ TN,Vm ,m ≠ p,P , ⎛ ∂V ⋅⎜ P ⎜ ∂V ⎝ p ⎞ ⎛ ∂U p ⎟+⎜ ⎟ ⎜ ∂V ⎠ ⎝ p (A1.18) mas conforme discutido anteriormente, ⎛ ∂VP ⎜ ⎜ ∂V ⎝ p ⎞ ⎟ = −1 ⎟T ,V ,m ≠ p,P , m ⎠N (A1.19) portanto, ⎛ ∂rT ⎞ 1 ⎜ ⎟ ⎜ ∂V ⎟T ,V ,m ≠ p,P , = − RT 2 ⎝ p ⎠N m ⎡⎛ ⎛ ∂UP ⎢⎜ ∂U p ⎞⎟ ⎜ − ⎢⎜⎝ ∂Vp ⎟⎠T ,Vm ,m ≠ p,P , ⎜⎝ ∂Vp ⎢⎣ N ⎤ ⎞ ⎥ ⎟ ⎟T ,V ,m ≠ p,P , ⎥ ⎠N m ⎥⎦ (A1.20) Derivando a função rV em relação ao volume Vp: ⎡ ⎛ ∂rv ⎞ ⎛ ∂Pf 1 ⎢⎛⎜ ∂PF ⎞⎟ ⎜ ⎟ ⎜ ⎜ ∂V ⎟T ,V ,m ≠ p,P , = RT ⎢⎜ ∂V ⎟T ,V ,m ≠ p,P , − ⎜ ∂V p ⎠ m ⎝ P ⎝ p ⎠N m ⎝ N ⎣⎢ ⎤ ⎞ ⎥ ⎟⎟ ⎥ , , ≠ , , T V m p P m ⎠N ⎦⎥ (A1.21) mas a Eq. (A1.21) pode ser escrita da forma: ⎡ ⎛ ∂rV ⎞ 1 ⎢⎛ ∂PF ⎟ ⎜ ⎜ = ⎜ ∂V ⎟T ,V ,m ≠ p,P , RT ⎢⎜ ∂V ⎝ p ⎠N m ⎣⎝ F ⎛ ∂V ⎞ ⎛ ∂P ⎞ ⎟⎟ ⋅ ⎜ F ⎟ − ⎜⎜ f ⎟ ⎜ ⎠TN,Vm ,m ≠ p,P , ⎝ ∂Vp ⎠ ⎝ ∂Vf ⎛ ∂Vf ⎞⎤ ⎞ ⎟⎥ ⎟⎟ ⋅⎜ ⎜ ∂V ⎟⎥ T V m p P , , ≠ , , m ⎠N ⎝ p ⎠⎦ (A1.22) As derivadas apresentadas na Eq. (A1.22) devem ser analisadas ⎛ ∂V separadamente. O termo ⎜ F ⎜ ∂V ⎝ p analisado com maior cuidado: f =p ⇒ ⎛ ∂Vf ⎞ ⎜ ⎟ =1 ⎜ ∂V ⎟T ,V ,m ≠ p,P , ⎝ p ⎠N m f ≠p ⇒ ⎛ ∂Vf ⎞ ⎜ ⎟ =0 ⎜ ∂V ⎟T ,V ,m ≠ p,P , ⎝ p ⎠N m ⎞ ⎞ ⎛ ⎟ = −1, porém o termo ⎜ ∂Vf ⎟ deve ser ⎟ ⎜ ⎟ ⎝ ∂Vp ⎠ ⎠ ⎤ ⎞ ⎥ ⎟ ⎟ T ,V ,m ≠ p,P , ⎥ ⎠N m ⎦⎥ 76 APÊNDICE 1 Com isto, é possível reescrever a Eq. (A1.22): ⎛ ∂rv ⎞ 1 ⎜ ⎟ =− ⎜ ∂V ⎟T ,V ,m ≠ p,P , RT ⎝ p ⎠N m ⎡⎛ ⎢⎜ ∂PF ⎢⎜⎝ ∂VF ⎣ ⎛ ∂P ⎞ ⎟⎟ − δ f , p ⋅ ⎜⎜ f ⎝ ∂Vf ⎠TN,Vm ,m ≠ p,P , ⎤ ⎞ ⎥ ⎟⎟ ⎥ T , V , m ≠ p , P , ⎠N m ⎦ (A1.23) Derivando rN em relação ao volume da fase p: ⎡ ⎛ ∂µ ⎛ ∂rN ⎞ 1 ⎢⎛⎜ ∂µ ij ⎞⎟ ⎟ ⎜ − ⎜ iJ = ⎜ ∂V ⎟T ,V ,m ≠ p,P , RT ⎢⎜ ∂V ⎟T ,V ,m ≠ p,P , ⎜ ∂V ⎝ p ⎝ p ⎠N m ⎢⎣⎝ p ⎠N m ⎤ ⎞ ⎥ ⎟ ⎟T ,V ,m ≠ p,P , ⎥ ⎠N m ⎥⎦ (A1.22) A Eq. (A1.22) pode ser escrita na forma: ⎡ ⎛ ∂rN ⎞ 1 ⎢⎛⎜ ∂µ ij ⎜ ⎟ = ⎜ ∂V ⎟T ,V ,m ≠ p,P , RT ⎢⎜ ∂V ⎝ p ⎠N m ⎢⎣⎝ j ⎞ ⎛ ∂Vi ⎞ ⎛ ∂µ iJ ⎟ ⎜ ⎟−⎜ ⎟T ,V ,m ≠ p,P , ⎜ ∂V ⎟ ⎜ ∂V ⎠N m ⎝ p⎠ ⎝ J ⎛ ∂V j Analisando o termo ⎜ ⎜ ∂V ⎝ p ⎛ ∂VJ ⎞⎤⎥ ⎞ ⎜ ⎟ ⎟⎟ ⎜ ∂V ⎟⎥ , , ≠ , , T V m p P m ⎠N ⎝ p ⎠⎥⎦ (A1.23) ⎞ ⎟ quando j for a fase dependente, ou seja, j = ⎟ ⎠ P: ⎛ ∂V j ⎜ ⎜ ∂V ⎝ p ⎞ ⎟ = −1 ⎟ ⎠ (A1.24) caso contrário, deve-se considerar as possibilidades: ⎛ ∂V j para j = p: ⎜ ⎜ ∂V ⎝ p ⎞ ⎟ =1 ⎟ ⎠ (A1.25) ⎛ ∂V j para j ≠ p: ⎜ ⎜ ∂V ⎝ p ⎞ ⎟=0 ⎟ ⎠ (A1.26) Com isso, pode-se escrever que: ⎛ ∂V j ⎜ ⎜ ∂V ⎝ p ⎞ ⎟ = δ jp − δ jP ⎟ ⎠ (A1.27) ⎛ ∂V ⎞ Analisando o termo ⎜ J ⎟ seguindo o mesmo raciocínio, obtem-se que: ⎜ ∂V ⎟ ⎝ p⎠ ⎛ ∂VJ ⎞ ⎟ = δ Jp − δ JP ⎜ ⎜ ∂V ⎟ ⎝ p⎠ (A1.28) 77 APÊNDICE 1 Substituindo as Eqs. (A1.27) e (A1.28) na Eq. (A1.23), chega-se à Eq. (A1.29): ⎡ ⎛ ∂rN ⎞ 1 ⎢⎛⎜ ∂µ ij ⎟ ⎜ = ⎜ ∂V ⎟T ,V ,m ≠ p,P , RT ⎢⎜ ∂V j ⎝ p ⎠N m ⎣⎢⎝ ⎞ ⎛ ∂µ ⎟ ( δ − δ jP ) − ⎜⎜ iJ jp ⎟T ,V ,m ≠ p,P , ⎝ ∂VJ ⎠N m ⎤ ⎞ ⎟⎟ (δ Jp − δ JP )⎥⎥ (A1.29) T V m p P , , ≠ , , m ⎠N ⎦⎥ Tomando as derivadas agora em relação ao número de mols em relação ao componente r e a fase s (Nrs): ⎛ ∂rT ⎜⎜ ⎝ ∂N rs ⎞ 1 ⎛ ∂U ⎜ ⎟⎟ =− 2 ⎜ , , T V RT ⎝ ∂N rs ⎠ Nab ,b ≠ s,S ⎡ ⎞ 1 ⎢⎛ ∂U S ⎜ ⎟⎟ =− 2 ⎜ ⎢ , , T V ∂N RT ⎠ Nab ,b ≠ s,S ⎣⎝ rS ⎞ ⎟⎟ ⎠ TN,abV ,,b ≠ s,S ⎛ ∂N ⋅ ⎜⎜ rS ⎝ ∂N rs ⎞ ⎛ ∂U s ⎟⎟ + ⎜⎜ ⎠ ⎝ ∂N rs ⎤ ⎞ ⎥ ⎟⎟ T , V , ⎠ Nab ,b ≠ s,S ⎥⎦ (A1.30) A derivada do número de mols do componente r na fase dependente S em relação à fase independente s será sempre igual a –1. Com isto, obtem-se a Eq. (A1.31): ⎛ ∂rT ⎞ 1 ⎜⎜ ⎟⎟ =− RT 2 ⎝ ∂Nrs ⎠TN,abV ,,b ≠ s,S ⎛ ∂U ⎞ 1 ⎜⎜ ⎟⎟ =− RT 2 ⎝ ∂Nrs ⎠TN,abV ,,b ≠ s,S ⎤ ⎡⎛ ⎛ ∂US ⎞ ⎥ (A1.31) ⎢⎜ ∂Us ⎞⎟ ⎜ ⎟ − ⎜ ∂N ⎟T ,V , ⎢⎜⎝ ∂Nrs ⎟⎠T ,V , ⎝ rS ⎠Nab ,b ≠ s,S ⎥⎦ N ab ,b ≠ s ,S ⎣ A derivada da função rV em relação ao número de mols do componente r na fase s é: ⎛ ∂rv ⎜⎜ ⎝ ∂N rs ⎡ ⎞ 1 ⎢⎛ ∂PF ⎜⎜ ⎟⎟ = ⎢ T V , , RT ∂N ⎠ Nab ,b ≠ s,S ⎣⎝ rs ⎛ ∂P O termo ⎜⎜ F ⎝ ∂N rs ⎛ ∂P ⎞ ⎟⎟ − ⎜⎜ f ⎠ TN,abV ,,b ≠ s,S ⎝ ∂N rs ⎤ ⎞ ⎥ ⎟⎟ T , V , ⎠ Nab ,b ≠ s,S ⎥⎦ ⎞ ⎟⎟ pode ser escrito conforme a Eq. (A1.33): T , V , ⎠ Nab ,b ≠ s,S (A1.32) 78 APÊNDICE 1 ⎛ ∂Pf ⎞ ⎛ ∂P ⎟⎟ ⎜⎜ = ⎜⎜ f ⎝ ∂Nrs ⎠Tnab,V,,b ≠ s,S ⎝ ∂Nrf ⎛ ∂N ⎞ ⎞ ⎟⎟ ⋅ ⎜⎜ rf ⎟⎟ ⎠Tnab,V,,b ≠ s,S ⎝ ∂Nrs ⎠Tnab,V,,b ≠ s,S (A1.33) A derivada do número de mols do componente r na fase f em relação à ⎛ ∂N ⎞ deve ser analisada cuidadosamente: fase s ⎜⎜ rf ⎟⎟ ⎝ ∂Nrs ⎠Tnab,V,,b ≠ s,S se f = S : ⎛ ∂N rS ⎜⎜ ⎝ ∂N rs ⎞ ⎟⎟ = −1 ⎠Tnab,V,,b ≠ s,S (A1.34) caso contrário, ou seja, se f ≠ S : se f = s ⎛ ∂N rf ⎜⎜ ⎝ ∂N rs ⎞ ⎟⎟ =1 T , V , ⎠ nab ,b ≠ s,S (A1.35) ⎛ ∂N rf ⎜⎜ ⎝ ∂N rs ⎞ ⎟⎟ =0 ⎠ Tnab,V,,b ≠ s,S (A1.36) logo, ⎛ ∂N rf ⎜⎜ ⎝ ∂N rs ⎞ ⎟⎟ = (δ fs − δ fS ) ⎠ Tnab,V,,b ≠ s,S (A1.37) da mesma forma: ⎛ ∂NrF ⎜⎜ ⎝ ∂Nrs ⎞ ⎟⎟ = (δ Fs − δ FS ) ⎠Tnab,V,,b ≠ s,S (A1.38) com isto, a Eq. (A1.32) pode ser escrita conforme a Eq. (A1.39): ⎛ ∂rV ⎜⎜ ⎝ ∂N rs ⎡ ⎞ 1 ⎢⎛ ∂Pf ⎟⎟ ⎜⎜ = ⎢ , , T V ∂N RT ⎠ Nab ,b ≠s,S ⎣⎝ rf ⎞ ⎛ ∂P ⎟⎟ ⋅ (δ fs − δ fS ) − ⎜⎜ F ⎠TN,abV ,,b ≠s,S ⎝ ∂N rF ⎤ ⎞ ⎟⎟ ⋅ (δ Fs − δ FS )⎥ ⎥ ⎠TN,abV ,,b ≠s,S ⎦ (A1.39) 79 APÊNDICE 1 Derivando agora o função rN em relação ao número de mols Nrs: ⎛ ∂rN ⎜⎜ ⎝ ∂N rs ⎡ ⎞ 1 ⎢⎛ ∂µ ij ⎜⎜ ⎟⎟ = ⎠TN,abV ,,b ≠s,S RT ⎢⎣⎝ ∂N rs ⎞ ⎛ ∂µ ⎟⎟ − ⎜⎜ iJ ⎠TN,abV ,,b ≠s,S ⎝ ∂N rs ⎛ ∂µ ij Analisando o termo ⎜⎜ ⎝ ∂N rs ⎤ ⎞ ⎥ ⎟⎟ T , V , ⎠ Nab ,b ≠s,S ⎥⎦ (A1.40) ⎞ ⎟⎟ : ⎠TN,abV ,,b ≠s,S caso j = S, pode-se escrever que: ⎛ ∂µ ij ⎜⎜ ⎝ ∂N rs nc ⎛ ⎞ ∂µij ⎟⎟ = ∑⎜ ⎜ ⎠TN,abV ,,b ≠s,S z =1 ⎝ ∂N zj ⎞ ⎛ ∂N zj ⎟⋅⎜ ⎟ ⎜ ∂N ⎠ ⎝ rs ⎞ ⎟⎟ ⎠ (A1.41) Caso o termo relativo à derivada do número de mols do componente z na fase j em relação ao componente r na fase s só tem sentido se z=r e será igual a –1, pois trata-se de fases independentes. Deve-se atentar que neste caso tem-se um somatório, logo somente este termo não nulo contribuirá para a definição da Eq. (A1.42). ⎛ ∂µ ij ⎜⎜ ⎝ ∂N rs ⎛ ∂µij ⎞ ⎟⎟ = −⎜ ⎜ ∂N ⎠TN,abV ,,b ≠ s,S ⎝ zj ⎞ ⎟ ⎟T ,V , ⎠ Nab ,b ≠s,S (A1.42) caso j ≠ S, somente quando se tratar da mesma fase independente, ou seja quando j = s, e a derivada será igual a 1. Com isto, pode-se escrever o termo em análise segundo a Eq. (A1.43): ⎛ ∂µ ij ⎜⎜ ⎝ ∂N rs ⎛ ∂µ ij ⎞ ⎟⎟ =⎜ ⎜ ⎠TN,abV ,,b ≠ s,S ⎝ ∂N rj ⎞ ⎟ ⋅ (δ is − δ jS ) ⎟T ,V , ⎠ Nab ,b ≠s,S (A1.43) O mesmo raciocínio deve ser aplicado para o outro termo derivativo da Eq. (A1.40) obtendo-se então a Eq. (A1.44): ⎛ ∂r rNN = ⎜⎜ N ⎝ ∂N rs ⎞ 1 ⎡⎛⎜ ∂µ ij ⎟⎟ = ⎢⎜ ⎠Tnab,V,,a ≠ r , RT ⎢⎣⎝ ∂N rj b ≠ s ,S ⎞ ⎛ ⎟(δ js − δ jS ) + ⎜ ∂µ iJ ⎜ ∂N ⎟ ⎝ rJ ⎠ ⎤ ⎞ ⎟⎟(δ Js − δ JS )⎥ ⎥⎦ ⎠ (A1.44) Apêndice 2 Cálculo das Propriedades Termodinâmicas A seguir, está apresentada a forma de definição no Mathematica® da função objetivo e das propriedades termodinâmicas necessárias para os cálculos da resolução do sistema algébrico apresentado no Apêndice 1. Este apêndice está dividido em quatro seções. As seções A2.1 e A2.2 apresentam, respectivamente, a entrada e a saída (subrotina em FORTRAN) do programa Thermath das equações do modelo de “flash” UVN. As seções A2.3 e A2.4 apresentam a entrada e a saída (subrotina em FORTRAN) do programa Thermath das propriedades termodinâmicas calculadas a partir da equação de estado de Peng-Robinson (1976). A2.1. Entrada dos dados para geração da rotina flsuvn: deplis2 = {{Aph, {t, V, rn}}, {Uph, {t, V, rn}}, {Sph, {t, V, rn}}, {Cvph, {t, V, rn}}, {pph, {t, V, rn}}, {rmi, {t, V, rn}}}; {deplis, deplis2} = updatedeplis[deplis, deplis2]; A = Sum[Aph[ie], {ie, 1, np}] q = (A - Uspec)/(r*t); Rt0 = D[q, t, NonConstants -> deplis] //. rule1 //. rule2 //. rule3 //. rule4 //. d$Aph$t[phase_] -> -Sph[phase]; Rt = Simplify[Rt0 //. Sph[phase_] -> (Uph[phase] - Aph[phase])/t //. rule1 //. rule2 //. rule3 //. rule4]; dRtdt = Simplify[D[Rt, t, NonConstants -> deplis] //. d$Uph$t[phase_] -> Cvph[phase]]; Rtnew = Rt /. Sum[Uph[ie], {ie, 1, np}] -> Sum[Uph[indepv[indv]], {indv, 1, npm1}] + Uph[kdepv[nzv]]; APÊNDICE 2 81 dRtdV0 = D[Rtnew, V[indepv[k]], NonConstants -> deplis] dRtdV1 = dRtdV0 //. d$Uph$V[kdepv[nzv], indepv[k]] -> -d$Uph$V[kdepv[nzv]]; dRtdV = dRtdV1 //. Sum[d$Uph$V[indepv[indv], indepv[k]], {indv, 1, npm1}] -> d$Uph$V[indepv[k]]; Rtforn = Rt /. Sum[Uph[ie], {ie, 1, np}] -> Sum[Uph[indepn[i, m]], {m, 1, npm1}] + Uph[kdepn[i]]; dRtdn = D[Rtforn, rn[i, indepn[i, j]], NonConstants -> deplis] //. d$Uph$rn[kdepn[i], i, indepn[i, j]] -> d$Uph$rn[i, kdepn[i]] //. Sum[d$Uph$rn[indepn[i, m], i, indepn[i, j]], {m, 1, npm1}] -> d$Uph$rn[i, indepn[i, j]]; qforRv = q /. Sum[Aph[ie], {ie, 1, np}] -> Sum[Aph[indepv[indv]], {indv, 1, npm1}] + Aph[kdepv[nzv]]; Rv0 = D[qforRv, V[indepv[k]], NonConstants -> deplis] //. rule1 //. rule2 //. rule3 //. rule4; Rv1 = Rv0 //. d$Aph$V[kdepv[nzv], indepv[k]] -> pph[kdepv[nzv]]; Rv = Rv1 //. Sum[d$Aph$V[indepv[indv], indepv[k]], {indv, 1, npm1}] -> -pph[indepv[k]]; dRvdt = Simplify[D[Rv, t, NonConstants -> deplis]]//. rule4; dRvdV0 = D[Rv, V[indepv[m]], NonConstants -> deplis]; dRvdV1 = dRvdV0 //. d$pph$V[kdepv[nzv], indepv[m]] -> -d$pph$V[kdepv[nzv]]; dRvdV = Simplify[dRvdV1 //. d$pph$V[indepv[k], indepv[m]] -> d$pph$V[indepv[k]]*rkr[indepv[k], indepv[m]]]; dRvdn = D[Rv, rn[i, indepn[i, j]], NonConstants -> deplis] //. d$pph$rn[kdepv[nzv], i, indepn[i, j]] -> d$pph$rn[i, kdepv[nzv]]*(rkr[kdepv[nzv], indepn[i, j]] - rkr[kdepv[nzv], kdepn[i]])//. d$pph$rn[indepv[k], i, indepn[i, j]] -> d$pph$rn[i, indepv[k]]*(rkr[indepv[k], indepn[i, j]] - rkr[indepv[k], kdepn[i]]); qforRnn = q /. Sum[Aph[ie], {ie, 1, np}] -> Sum[Aph[indepn[i, m]], {m, 1, npm1}] + Aph[kdepn[i]]; Rnn0 = D[qforRnn, rn[i, indepn[i, j]], NonConstants -> deplis] //. rule1 //. rule2 //. rule3 //. rule4; Rnn1 = Rnn0 /. d$Aph$rn[kdepn[i], i, indepn[i, j]] -> -rmi[i, kdepn[i]]; Rnn = Rnn1 /. Sum[d$Aph$rn[indepn[i, m], i, indepn[i, j]], {m, 1, npm1}] -> rmi[i, indepn[i, j]]; dRnndt = Simplify[D[Rnn, t, NonConstants -> deplis]] //. rule4; 82 APÊNDICE 2 dRnndV0 = D[Rnn, V[indepv[m]], NonConstants -> deplis] //. d$rmi$V[i, indepn[i, j], indepv[m]] -> d$rmi$V[i, indepn[i, j]]*(rkr[indepn[i, j], indepv[m]] - rkr[indepn[i, j], kdepv[nzv]]); dRnndV = dRnndV0 //. d$rmi$V[i, kdepn[i], indepv[m]]-> d$rmi$V[i, kdepn[i]]*(rkr[kdepn[i], indepv[m]] rkr[kdepn[i], kdepv[nzv]]); dRnndn0 = D[Rnn, rn[i1, indepn[i1, j1]], NonConstants -> deplis]; dRnndn=dRnndn0 //. (d$rmi$rn[i,indepn[i,j],i1,indepn[i1,j1]]->d$rmi$rn[i,i1,indepn[i,j]]* (rkr[indepn[i,j],indepn[i1,j1]]-rkr[indepn[i,j],kdepn[i1]]))//.(d$rmi$rn[i,kdepn[i],i1,indepn[i1,j1]]-> d$rmi$rn[i,i1,kdepn[i]]*(rkr[kdepn[i],indepn[i1,j1]]-rkr[kdepn[i],kdepn[i1]])); equations = {Rt, dRtdt, dRtdV, dRtdn, Rv, dRvdt, dRvdV, dRvdn, Rnn, dRnndt, dRnndV, dRnndn}; prontas = ordeq[equations, {}]; createroutine[flsuvn, prontas]; A2.2. Rotina flsuvn subroutine flsuvn( & green, i$b, i$e, & ie$b, ie$e, indepn$b, & indepn$e, indepv$b, indepv$e, & i1$b, i1$e, j$b, & j$e, j1$b, j1$e, & k$b, kdepn$b, kdepn$e, & kdepv$b, kdepv$e, k$e, & m$b, m$e, nzv$b, & nzv$e, Cvph, d$rmi$rn, & d$rmi$t, d$rmi$V, i, & indepn, indepv, i1, & kdepn, kdepv, np, & pph, r, rkr, & rmi, t, Uph, & Uspec, o$27, o$28, & o$29, o$30, o$31, & o$32, o$33, o$34, & o$35, o$36, o$37, & o$38 & ) C C C C C C C C Parameter statements used to dimension internal variables Please check if these values are adequate for your application; if they are not, change them manually. parameter parameter parameter parameter parameter parameter (i_1=1) (i_2=20) (i1_1=1) (i1_2=20) (j_1=1) (j_2=20) 83 APÊNDICE 2 parameter parameter parameter parameter parameter parameter parameter parameter C C C (j1_1=1) (j1_2=20) (k_1=1) (k_2=20) (m_1=1) (m_2=20) (nzv_1=1) (nzv_2=20) Type declarations and dimension statements implicit Double precision (a-h,o-z) C logical dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension & dimension dimension dimension dimension dimension & dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension & dimension dimension dimension & dimension & C C C green green (1:12) Uph(ie$b:ie$e) kdepv(nzv$b:nzv$e) kdepn(i1$b:i1$e) indepv(m$b:m$e) Cvph(ie$b:ie$e) indepn(i1$b:i1$e,j1$b:j1$e) pph(kdepv$b:kdepv$e) d$Uph$V(kdepv$b:kdepv$e) d$pph$V(kdepv$b:kdepv$e) d$pph$t(kdepv$b:kdepv$e) rmi(i$b:i$e,kdepn$b:kdepn$e) rkr(kdepn$b:kdepn$e,kdepv$b:kdepv $e) d$Uph$rn(i$b:i$e,kdepn$b:kdepn$e) d$rmi$V(i$b:i$e,kdepn$b:kdepn$e) d$rmi$t(i$b:i$e,kdepn$b:kdepn$e) d$pph$rn(i$b:i$e,kdepv$b:kdepv$e) d$rmi$rn(i$b:i$e,i1$b:i1$e,kdepn$ b:kdepn$e) w$4(nzv_1:nzv_2) w$5(k_1:k_2) w$7(i_1:i_2) w$8(i_1:i_2,j_1:j_2) w$10(i_1:i_2,j_1:j_2,nzv_1:nzv_2) w$13(i_1:i_2,k_1:k_2) w$14(i1_1:i1_2,i_1:i_2,j1_1:j1_2) w$15(i_1:i_2,j_1:j_2,k_1:k_2) w$25(i_1:i_2,m_1:m_2,nzv_1:nzv_2) w$26(i_1:i_2,i1_1:i1_2,j1_1:j1_2) o$29(k$b:k$e,nzv$b:nzv$e) o$30(i$b:i$e,j$b:j$e) o$31(k$b:k$e,nzv$b:nzv$e) o$32(k$b:k$e,nzv$b:nzv$e) o$33(k$b:k$e,m$b:m$e,nzv$b:nzv$e) o$34(i$b:i$e,j$b:j$e,k$b:k$e,nzv$ b:nzv$e) o$35(i$b:i$e,j$b:j$e) o$36(i$b:i$e,j$b:j$e) o$37(i$b:i$e,j$b:j$e,m$b:m$e,nzv$ b:nzv$e) o$38(i$b:i$e,i1$b:i1$e,j$b:j$e,j1 $b:j1$e) Internal function definition Poneg$(a$dummy,b$dummy)=a$dummy**b$dummy C C C C Start executable commands 84 APÊNDICE 2 if ( & green(1) & green(2) & green(3) & green(4) & green(5) & green(6) & green(7) & green(8) & green(9) & green(10) & green(11) & green(12) & ) then .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. C w$3=1/r C end if C C if ( & green(5) & green(7) & green(8) & green(9) & green(11) & green(12) & ) then .or. .or. .or. .or. .or. C w$12=w$3/t C end if C C if ( & green(1) & green(3) & green(4) & green(6) & green(10) & ) then .or. .or. .or. .or. C w$11=w$3/t**2 C end if C C if ( & green(1) & green(2) & ) then .or. C s$43=dfloat(0.) do 10043 ie=1,np s$43=s$43 + Uph(ie) 10043 continue w$6=s$43 C end if C C if ( & green(5) .or. & green(6) & ) then APÊNDICE 2 C do 10045 nzv=nzv$b,nzv$e w$4(nzv)=pph(kdepv(nzv)) 10045 continue do 10047 k=k$b,k$e w$5(k)=pph(indepv(k)) 10047 continue C end if C C if ( & green(9) .or. & green(10) & ) then C do 10049 i=i$b,i$e w$7(i)=rmi(i,kdepn(i)) 10049 continue do 10051 i=i$b,i$e do 10052 j=j$b,j$e w$8(i,j)=rmi(i,indepn(i,j)) 10052 continue 10051 continue C end if C C if ( & green(8) .or. & green(11) & ) then C do 10054 i=i$b,i$e do 10055 j=j$b,j$e do 10056 nzv=nzv$b,nzv$e w$10(i,j,nzv)=rkr(indepn(i,j),kdepv(nzv)) 10056 continue 10055 continue 10054 continue do 10058 i=i$b,i$e do 10059 k=k$b,k$e w$13(i,k)=rkr(indepv(k),kdepn(i)) 10059 continue 10058 continue do 10061 i=i$b,i$e do 10062 j=j$b,j$e do 10063 k=k$b,k$e w$15(i,j,k)=rkr(indepn(i,j),indepv(k)) 10063 continue 10062 continue 10061 continue C end if C C if ( & green(1) & ) then C o$27=w$11*(Uspec - w$6) C end if C C 85 APÊNDICE 2 if ( & green(2) & ) then C s$66=dfloat(0.) do 10066 ie=1,np s$66=s$66 + Cvph(ie) 10066 continue o$28=w$3*(-(s$66*t) - 2*Uspec + 2*w$6)/t** & 3 C end if C C if ( & green(3) & ) then C do 10068 k=k$b,k$e do 10069 nzv=nzv$b,nzv$e o$29(k,nzv)=w$11*(-d$Uph$V(indepv(k)) + d$ & Uph$V(kdepv(nzv))) 10069 continue 10068 continue C end if C C if ( & green(4) & ) then C do 10071 i=i$b,i$e do 10072 j=j$b,j$e o$30(i,j)=w$11*(-d$Uph$rn(i,indepn(i,j)) + & d$Uph$rn(i,kdepn(i))) 10072 continue 10071 continue C end if C C if ( & green(5) & ) then C do 10074 k=k$b,k$e do 10075 nzv=nzv$b,nzv$e o$31(k,nzv)=w$12*(w$4(nzv) - w$5(k)) 10075 continue 10074 continue C end if C C if ( & green(6) & ) then C do 10077 k=k$b,k$e do 10078 nzv=nzv$b,nzv$e o$32(k,nzv)=w$11*(t*(-d$pph$t(indepv(k)) + & d$pph$t(kdepv(nzv))) - w$4(nzv) + w$5 & (k)) 10078 continue 86 APÊNDICE 2 10077 continue C end if C C if ( & green(7) & ) then C do 10080 k=k$b,k$e do 10081 m=m$b,m$e do 10082 nzv=nzv$b,nzv$e o$33(k,m,nzv)=-(w$12*(d$pph$V(kdepv(nzv)) & + d$pph$V(indepv(k))*rkr(indepv(k),ind & epv(m)))) 10082 continue 10081 continue 10080 continue C end if C C if ( & green(8) & ) then C do 10084 i=i$b,i$e do 10085 j=j$b,j$e do 10086 k=k$b,k$e do 10087 nzv=nzv$b,nzv$e o$34(i,j,k,nzv)=w$12*(d$pph$rn(i,kdepv(nzv & ))*(-rkr(kdepn(i),kdepv(nzv)) + w$10(i & ,j,nzv)) - d$pph$rn(i,indepv(k))*(-w$1 & 3(i,k) + w$15(i,j,k))) 10087 continue 10086 continue 10085 continue 10084 continue C end if C C if ( & green(9) & ) then C do 10089 i=i$b,i$e do 10090 j=j$b,j$e o$35(i,j)=w$12*(-w$7(i) + w$8(i,j)) 10090 continue 10089 continue C end if C C if ( & green(10) & ) then C do 10092 i=i$b,i$e do 10093 j=j$b,j$e o$36(i,j)=w$11*(t*(d$rmi$t(i,indepn(i,j)) & - d$rmi$t(i,kdepn(i))) + w$7(i) - w$8( & i,j)) 10093 continue 87 APÊNDICE 2 10092 continue C end if C C if ( & green(11) & ) then C do 10095 i=i$b,i$e do 10096 m=m$b,m$e do 10097 nzv=nzv$b,nzv$e w$25(i,m,nzv)=-(d$rmi$V(i,kdepn(i))*(-rkr( & kdepn(i),kdepv(nzv)) + w$13(i,m))) 10097 continue 10096 continue 10095 continue do 10099 i=i$b,i$e do 10100 j=j$b,j$e do 10101 m=m$b,m$e do 10102 nzv=nzv$b,nzv$e o$37(i,j,m,nzv)=w$12*(d$rmi$V(i,indepn(i,j & ))*(-w$10(i,j,nzv) + w$15(i,j,m)) + w$ & 25(i,m,nzv)) 10102 continue 10101 continue 10100 continue 10099 continue C end if C C if ( & green(12) & ) then C do 10104 i1=i1$b,i1$e do 10105 i=i$b,i$e do 10106 j1=j1$b,j1$e w$14(i1,i,j1)=rkr(indepn(i1,j1),kdepn(i)) 10106 continue 10105 continue 10104 continue do 10108 i=i$b,i$e do 10109 i1=i1$b,i1$e do 10110 j1=j1$b,j1$e w$26(i,i1,j1)=-(d$rmi$rn(i,i1,kdepn(i))*(& rkr(kdepn(i),kdepn(i1)) + w$14(i1,i,j1 & ))) 10110 continue 10109 continue 10108 continue do 10112 i=i$b,i$e do 10113 i1=i1$b,i1$e do 10114 j=j$b,j$e do 10115 j1=j1$b,j1$e o$38(i,i1,j,j1)=w$12*(d$rmi$rn(i,i1,indepn & (i,j))*(rkr(indepn(i,j),indepn(i1,j1)) & - w$14(i,i1,j)) + w$26(i,i1,j1)) 10115 continue 10114 continue 10113 continue 10112 continue C end if 88 APÊNDICE 2 C C return end C C The subroutine was successfully created A2.3. Entrada dos dados para geração da rotina penrob: deplis2={{am,{t,x}},{bm,{x}}}; {deplis,deplis2}=updatedeplis[deplis,deplis2]; (* Peng-Robinson EOS *) p=r*t/(v-bm)-am/(v^2+2*bm*v-bm^2) //.rule1 //.rule2 //.rule4 dpdv=Expand[D[p,v]] //.rule1 //.rule2 //.rule4 dpdrho=Expand[-v^2*(dpdv)] //.rule1 //.rule2 //.rule4 d2pdv2=Expand[D[dpdv,v]] //.rule1 //.rule2 //.rule4 d2pdrho2=Expand[v^3*(2*dpdv+v*d2pdv2)] //.rule1 //.rule2 //.rule4 dpdt=Expand[D[p,t,NonConstants->deplis]] //.rule1 //.rule2 //.rule4 lnfimix=Simplify[resid[g]/(r*t) //.rule1 //.rule2 //.rule4 (* Residual enthalpy *) hr=Simplify[resid[h] //.rule1 //.rule2 //.rule4 //.rule4 dhrdt=Expand[D[hr,t,NonConstants->deplis] //.rule1 //.rule2 //.rule4 (* Residual internal energy *) ur=Simplify[resid[u] //.rule1 //.rule2 //.rule4 //.rule4 cvr=D[ur,t,NonConstants->deplis] lnfii=Simplify[Pmp[lnfimix] //.rule1 //.rule2 //.rule3]//.rule4 rmi = Log[x[k$0]] + lnfii + Log[p])], (* derivative of rmi with respect to t at constant molar volume and mole fraction *) drmidt=Simplify[D[rmi,t,NonConstants->deplis]] //.rule1 //.rule2 //.rule3//.rule4 (* derivative of rmi with respect to molar volume at constant temperature and mole fraction *) 89 90 APÊNDICE 2 drmidv=Simplify[D[rmi,v,NonConstants->deplis]] //.rule1 //.rule2 //.rule3 //.rule4 (* derivative of ln fii with respect to mole numbers at constant temperature and pressure *) dlnfiidnjatp=Dtransf[lnfii,1,p,v] //.rule1 //.rule2 //.rule3 //.rule4 (* derivative of rmi with respect to mole numbers at constant temperature and total volume *) drmidnjatV=Dtransf[rmi,1,V,v] //.rule1 //.rule2 //.rule3 //.rule4\ (* derivative of p with respect to mole numbers at constant temperature and total volume *) dpdnatV=Dtransf[p,1,V,v] //.rule1 //.rule2 //.rule3 //.rule4 durdv=Simplify[D[ur, v, NonConstants->deplis]]//. rule1//.rule2 //. rule3//. rule4 expressions={p, dpdv, d2pdv2, dpdrho, d2pdrho2, dpdt, lnfimix, hr, dhrdt, ur, cvr, lnfii, rmi, drmidt, drmidv, dlnfiidnjatp, drmidnjatV, durdv, dpdnatV}; analyzedexpressions=ordeq[expressions,{t,x,v},deplis2]; createroutine[penrob,analyzedexpressions]; A2.4. Rotina penrob subroutine penrob( & hierch, green, k$0$b, & k$0$e, k$1$b, k$1$e, & am, bm, d$1am, & d$1bm, d$2am, d$2bm, & d$am$t, d$d$1am$t, d$d$am$t$t, & r, rkr, t, & v, x, o$313, & o$314, o$315, o$316, & o$317, o$318, o$319, & o$320, o$321, o$322, & o$323, o$324, o$325, & o$326, o$327, o$328, & o$329, o$330, o$331 & ) C C C C C C C C Parameter statements used to dimension internal variables Please check if these values are adequate for your application; if they are not, change them manually. parameter parameter parameter parameter C C C (k$0_1=1) (k$0_2=20) (k$1_1=1) (k$1_2=20) Type declarations and dimension statements 91 APÊNDICE 2 implicit Double precision (a-h,o-z) C logical logical dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension dimension C C C green hierch green (1:19) hierch(0:3) x(k$0$b:k$0$e) d$1bm(k$1$b:k$1$e) d$1am(k$1$b:k$1$e) d$d$1am$t(k$0$b:k$0$e) d$2bm(k$0$b:k$0$e,k$1$b:k$1$e) d$2am(k$0$b:k$0$e,k$1$b:k$1$e) rkr(k$0$b:k$0$e,k$1$b:k$1$e) w$50(k$0_1:k$0_2,k$1_1:k$1_2) w$80(k$0_1:k$0_2) w$99(k$1_1:k$1_2) w$100(k$0_1:k$0_2) w$125(k$0_1:k$0_2,k$1_1:k$1_2) w$126(k$0_1:k$0_2,k$1_1:k$1_2) w$231(k$1_1:k$1_2) w$234(k$0_1:k$0_2) w$266(k$1_1:k$1_2) w$282(k$0_1:k$0_2) w$291(k$1_1:k$1_2) w$294(k$0_1:k$0_2) w$297(k$1_1:k$1_2) w$298(k$0_1:k$0_2) w$302(k$0_1:k$0_2) w$307(k$0_1:k$0_2) w$310(k$0_1:k$0_2) w$311(k$0_1:k$0_2,k$1_1:k$1_2) w$312(k$0_1:k$0_2) o$324(k$0$b:k$0$e) o$325(k$0$b:k$0$e) o$326(k$0$b:k$0$e) o$327(k$0$b:k$0$e) o$328(k$0$b:k$0$e,k$1$b:k$1$e) o$329(k$0$b:k$0$e,k$1$b:k$1$e) o$331(k$1$b:k$1$e) Save automatically created variables save save save save save save save save save save save save save save save save save save save save save save save w$1 w$2 w$3 w$7 w$9 w$10 w$11 w$23 w$24 w$25 w$27 w$28 w$32 w$33 w$34 w$35 w$36 w$38 w$43 w$47 w$48 w$49 w$50 92 APÊNDICE 2 save save save save save save save save save save save save save save save save save save save save save save save save save save save C C C w$51 w$59 w$60 w$61 w$72 w$73 w$78 w$80 w$83 w$85 w$87 w$89 w$91 w$92 w$93 w$95 w$97 w$98 w$99 w$100 w$112 w$124 w$125 w$126 w$129 w$131 w$152 Internal function definition Poneg$(a$dummy,b$dummy)=a$dummy**b$dummy C C C C C C Start executable commands Open hierarchy level 0 if (hierch(0)) then C if ( & green(7) & green(8) & green(9) & green(10) & green(11) & green(12) & green(13) & green(14) & green(16) & green(17) & ) then .or. .or. .or. .or. .or. .or. .or. .or. .or. C w$3=dble(1.4142135623730951) w$60=1 + w$3 w$124=1 - w$3 C end if C C if ( & green(7) & green(12) & green(13) & green(14) & green(15) .or. .or. .or. .or. .or. 93 APÊNDICE 2 & & & green(16) green(17) ) then .or. C w$28=1/r C end if C C if ( & green(7) & green(8) & green(9) & green(10) & green(11) & ) then .or. .or. .or. .or. C w$32=dble(0.7071067811865476) C end if C end if C C C C C C Closed hierarchy level 0 Open hierarchy level 1 if (hierch(1)) then C if ( & green(1) & green(2) & green(3) & green(4) & green(5) & green(7) & green(8) & green(12) & green(13) & green(14) & green(15) & green(16) & green(17) & green(19) & ) then .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. C w$2=r*t C end if C C if ( & green(7) & green(12) & green(13) & green(15) & green(16) & green(17) & ) then C w$27=1/t C end if C .or. .or. .or. .or. .or. 94 APÊNDICE 2 C if ( & green(7) & green(15) & ) then .or. C w$83=w$27*w$28 C end if C C if ( & green(16) & green(17) & ) then .or. C w$38=-2*w$2 C end if C C if ( & green(14) & ) then C w$34=4*t C end if C end if C C C C C C Closed hierarchy level 1 Open hierarchy level 2 if (hierch(2)) then C if ( & green(7) & green(8) & green(9) & green(10) & green(11) & green(12) & green(13) & green(14) & green(16) & green(17) & ) then .or. .or. .or. .or. .or. .or. .or. .or. .or. C w$112=bm*w$60 w$152=bm*w$124 C end if C C if ( & green(7) & green(8) & green(9) & green(10) & green(11) & green(16) & green(17) .or. .or. .or. .or. .or. .or. 95 APÊNDICE 2 & ) then C w$30=1/bm C end if C C if ( & green(9) & green(12) & green(13) & green(14) & green(15) & green(16) & green(17) & ) then .or. .or. .or. .or. .or. .or. C w$29=bm**2 C end if C C if ( & green(5) & green(12) & green(13) & green(14) & green(16) & green(17) & ) then .or. .or. .or. .or. .or. C w$1=4*bm C end if C C if ( & green(7) & green(8) & green(10) & green(16) & green(17) & ) then .or. .or. .or. .or. C w$59=w$30*dble(-0.5) C end if C C if ( & green(2) & green(15) & green(16) & green(17) & green(19) & ) then .or. .or. .or. .or. C w$7=2*am C end if C C if ( & green(12) & green(13) .or. .or. 96 APÊNDICE 2 & & & & green(14) green(16) green(17) ) then .or. .or. C w$11=2*bm w$51=am*w$3 w$82=w$28/bm**2 C end if C C if ( & green(8) & green(10) & green(14) & green(18) & ) then .or. .or. .or. C w$78=am - d$am$t*t C end if C C if ( & green(4) & green(15) & green(16) & green(17) & ) then .or. .or. .or. C w$25=-2*am C end if C C if ( & green(12) & green(13) & green(16) & green(17) & ) then .or. .or. .or. C w$36=bm*w$2 w$89=w$2*w$29 w$95=-(w$2*w$29) do 10358 k$0=k$0$b,k$0$e w$100(k$0)=-am - d$1am(k$0) 10358 continue C end if C C if ( & green(3) .or. & green(5) .or. & green(14) & ) then C w$24=-8*bm C end if C C if ( 97 APÊNDICE 2 & & & & green(7) green(8) green(10) ) then .or. .or. C w$87=w$32*w$59 C end if C C if ( & green(12) & green(13) & green(14) & ) then .or. .or. C w$86=w$82*dble(0.25) C end if C C if ( & green(16) & green(17) & green(19) & ) then .or. .or. C w$9=-2*bm C end if C C if ( & green(8) & green(10) & ) then .or. C w$131=w$78*w$87 C end if C C if ( & green(9) & green(11) & ) then .or. C w$98=d$d$am$t$t*t*w$30*w$32*dble(0.5) C end if C C if ( & green(9) & green(14) & ) then .or. C w$61=r*w$29 C end if C C if ( & green(12) & green(13) .or. 98 APÊNDICE 2 & ) then C w$93=w$27*w$86 C end if C C if ( & green(16) & green(17) & ) then .or. C w$10=-3*bm w$23=3*bm w$46=w$2*w$9 do 10371 k$0=k$0$b,k$0$e do 10372 k$1=k$1$b,k$1$e w$50(k$0,k$1)=d$1bm(k$0) + d$2bm(k$0,k$1) 10372 continue 10371 continue w$72=-am + w$36 w$73=w$25 + w$36 w$91=w$27*w$82 do 10377 k$1=k$1$b,k$1$e w$99(k$1)=w$46*d$1bm(k$1) 10377 continue do 10379 k$0=k$0$b,k$0$e do 10380 k$1=k$1$b,k$1$e w$126(k$0,k$1)=-d$1am(k$0) - d$1am(k$1) & d$2am(k$0,k$1) 10380 continue 10379 continue w$129=-(bm*w$60) C end if C C if ( & green(9) & ) then C w$33=bm*d$am$t w$43=2*bm*r C end if C C if ( & green(14) & ) then C w$47=w$2*w$24 w$48=d$am$t*t*w$11 w$49=-(bm*d$am$t*t) w$92=bm*w$51 w$97=w$86/t**2 C end if C C if ( & green(15) & ) then C w$35=bm**3 APÊNDICE 2 w$85=-4*w$29 C end if C C if ( & green(17) & ) then C do 10392 k$0=k$0$b,k$0$e w$80(k$0)=1/x(k$0) 10392 continue do 10394 k$0=k$0$b,k$0$e do 10395 k$1=k$1$b,k$1$e w$125(k$0,k$1)=rkr(k$0,k$1) - x(k$0) 10395 continue 10394 continue C end if C end if C C Closed hierarchy level 2 C C C Open hierarchy level 3 C if (hierch(3)) then C if ( & green(1) .or. & green(2) .or. & green(3) .or. & green(4) .or. & green(5) .or. & green(6) .or. & green(7) .or. & green(8) .or. & green(9) .or. & green(12) .or. & green(13) .or. & green(14) .or. & green(15) .or. & green(16) .or. & green(17) .or. & green(18) .or. & green(19) & ) then C w$16=v**2 C end if C C if ( & green(1) .or. & green(2) .or. & green(3) .or. & green(4) .or. & green(5) .or. & green(6) .or. & green(8) .or. & green(12) .or. & green(13) .or. & green(14) .or. 99 100 APÊNDICE 2 & & & & & & green(15) green(16) green(17) green(18) green(19) ) then .or. .or. .or. .or. C w$18=2*v w$62=-bm + w$18 C end if C C if ( & green(1) & green(2) & green(3) & green(4) & green(5) & green(6) & green(8) & green(13) & green(14) & green(15) & green(16) & green(17) & green(18) & green(19) & ) then .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. C w$141=w$16 + bm*w$62 C end if C C if ( & green(1) & green(2) & green(3) & green(4) & green(5) & green(6) & green(7) & green(12) & green(13) & green(16) & green(17) & green(19) & ) then .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. .or. C w$56=-bm + v C end if C C if ( & green(7) & green(8) & green(9) & green(10) & green(11) & green(12) & green(13) & green(14) & green(16) .or. .or. .or. .or. .or. .or. .or. .or. .or. 101 APÊNDICE 2 & & green(17) ) then C w$151=v + w$112 w$183=1/(v + w$152) w$198=w$151*w$183 w$204=Log(w$198) C end if C C if ( & green(5) & green(8) & green(9) & green(12) & green(13) & green(15) & green(16) & green(17) & ) then .or. .or. .or. .or. .or. .or. .or. C w$15=v**3 C end if C C if ( & green(1) & green(5) & green(6) & green(13) & green(16) & green(17) & green(18) & green(19) & ) then .or. .or. .or. .or. .or. .or. .or. C w$160=1/w$141 C end if C C if ( & green(2) & green(3) & green(4) & green(5) & green(16) & green(17) & green(19) & ) then .or. .or. .or. .or. .or. .or. C w$166=w$141**(-2) C end if C C if ( & green(8) & green(9) & green(12) & green(13) & green(15) & green(16) .or. .or. .or. .or. .or. .or. 102 APÊNDICE 2 & & green(17) ) then C w$177=w$15 + bm*(bm*(bm - 3*v) + w$16) C end if C C if ( & green(2) & green(4) & green(5) & green(16) & green(17) & green(19) & ) then .or. .or. .or. .or. .or. C w$116=w$56**(-2) C end if C C if ( & green(2) & green(4) & green(15) & green(16) & green(17) & green(19) & ) then .or. .or. .or. .or. .or. C w$13=bm + v C end if C C if ( & green(8) & green(9) & green(12) & green(13) & green(16) & green(17) & ) then .or. .or. .or. .or. .or. C w$196=1/w$177 C end if C C if ( & green(7) & green(12) & green(13) & green(14) & green(16) & green(17) & ) then .or. .or. .or. .or. .or. C w$19=-2*v w$148=-w$16 + bm*(bm + w$19) C end if C C 103 APÊNDICE 2 if ( & green(1) & green(5) & green(6) & green(13) & green(17) & ) then .or. .or. .or. .or. C w$115=1/w$56 C end if C C if ( & green(4) & green(5) & green(16) & green(17) & green(19) & ) then .or. .or. .or. .or. C w$155=w$116*w$2 C end if C C if ( & green(7) & green(8) & green(15) & green(16) & green(17) & ) then .or. .or. .or. .or. C w$58=bm - v C end if C C if ( & green(7) & green(12) & green(13) & green(16) & green(17) & ) then .or. .or. .or. .or. C w$174=w$148*w$2 w$197=1/(w$174 + am*w$56) w$224=Log(w$174*w$197) C end if C C if ( & green(12) & green(13) & green(14) & green(16) & green(17) & ) then C w$17=am*v w$41=-(am*v) w$54=am + v*w$2 .or. .or. .or. .or. 104 APÊNDICE 2 C end if C C if ( & green(7) & green(14) & green(16) & green(17) & ) then .or. .or. .or. C w$170=1/w$148 C end if C C if ( & green(2) & green(16) & green(17) & green(19) & ) then .or. .or. .or. C w$195=-(w$116*w$2) + w$13*w$166*w$7 C end if C C if ( & green(12) & green(13) & green(16) & green(17) & ) then .or. .or. .or. C w$67=v + w$11 w$103=w$17 + w$95 w$180=v*(w$41 + bm*w$54) + w$62*w$89 w$226=w$177*w$204 w$240=w$226*w$3 w$254=w$1*w$180 + w$226*w$51 w$269=bm*w$103 + w$177*w$2*w$224 + v*(w$41 & + w$36*w$67) w$279=w$1*w$269 do 10434 k$0=k$0$b,k$0$e w$282(k$0)=w$279 + w$240*w$100(k$0) 10434 continue do 10436 k$0=k$0$b,k$0$e w$294(k$0)=w$254*d$1bm(k$0) + bm*w$282(k$0 & ) 10436 continue C end if C C if ( & green(1) .or. & green(13) .or. & green(17) & ) then C w$194=-(am*w$160) + w$115*w$2 C end if C 105 APÊNDICE 2 C if ( & green(8) & green(16) & green(17) & ) then .or. .or. C w$119=am*w$58 C end if C C if ( & green(16) & green(17) & green(19) & ) then .or. .or. C w$185=am*w$160*(w$18 + w$9) do 10441 k$1=k$1$b,k$1$e w$231(k$1)=w$155*d$1bm(k$1) + w$160*(-d$1a & m(k$1) + w$185*d$1bm(k$1)) 10441 continue C end if C C if ( & green(3) .or. & green(5) & ) then C w$149=-8*w$16 + bm*(-16*v + w$24) w$184=am*w$166 C end if C C if ( & green(8) .or. & green(9) & ) then C w$217=v*w$196 C end if C C if ( & green(8) .or. & green(10) & ) then C w$249=w$131*w$204 C end if C C if ( & green(4) .or. & green(15) & ) then C w$159=w$13*w$25 C 106 APÊNDICE 2 end if C C if ( & green(9) & green(11) & ) then .or. C w$250=w$204*w$98 C end if C C if ( & green(12) & green(13) & ) then .or. C w$223=w$196*w$93 do 10450 k$0=k$0$b,k$0$e w$302(k$0)=w$223*w$294(k$0) 10450 continue C end if C C if ( & green(16) .or. & green(17) & ) then C w$55=w$11 + w$19 w$127=(v + w$1)*w$2 w$139=-am + w$2*w$55 w$143=3*w$16 + bm*(w$10 + w$18) w$147=w$16 + bm*(-6*v + w$23) w$171=1/w$151 w$175=w$36*(-bm + 2*w$62) w$191=w$170*w$177 w$209=w$196*dble(-0.25) w$210=w$143*w$209 w$211=-(w$148*w$197) w$221=w$196*w$91 w$225=w$147*w$209 + w$59 w$229=w$147*w$204 w$239=am*w$229 w$241=w$171*(-(w$124*w$198) + w$60) w$242=am*w$241 w$251=w$147*w$224 w$255=w$171*w$177*(1 + (-v + w$129)*w$183) & + w$143*w$204 w$256=w$229 + w$177*w$241 w$265=w$255*w$3 do 10473 k$1=k$1$b,k$1$e w$266(k$1)=w$256*d$1bm(k$1) 10473 continue w$277=w$255*w$51 + w$1*(bm*(am + w$2*w$67) & + v*w$73) do 10476 k$1=k$1$b,k$1$e w$291(k$1)=w$3*(w$239*d$1bm(k$1) + w$177*( & w$204*d$1am(k$1) + w$242*d$1bm(k$1))) & + 4*(w$180*d$1bm(k$1) + bm*(w$175*d$1b & m(k$1) + v*(w$58*d$1am(k$1) + w$54*d$1 & bm(k$1)))) 10476 continue APÊNDICE 2 w$292=w$1*(w$119 + w$2*(w$143*w$224 + w$19 & 1*(-2*w$13 + w$211*(am + w$13*w$38)) + & bm*w$67) + v*w$72) do 10479 k$1=k$1$b,k$1$e w$297(k$1)=4*(w$269*d$1bm(k$1) + bm*(w$103 & *d$1bm(k$1) + v*(-(v*d$1am(k$1)) + w$1 & 27*d$1bm(k$1)) + w$2*(w$251*d$1bm(k$1) & + w$191*(w$55*d$1bm(k$1) + w$211*(w$5 & 6*d$1am(k$1) + w$139*d$1bm(k$1)))) + b & m*(v*d$1am(k$1) + w$99(k$1)))) 10479 continue do 10481 k$0=k$0$b,k$0$e w$298(k$0)=w$225*w$294(k$0) 10481 continue do 10483 k$0=k$0$b,k$0$e w$307(k$0)=dble(0.25)*(w$277*d$1bm(k$0) + & bm*(w$292 + w$265*w$100(k$0))) + w$210 & *w$294(k$0) 10483 continue do 10485 k$0=k$0$b,k$0$e do 10486 k$1=k$1$b,k$1$e w$311(k$0,k$1)=d$1bm(k$1)*w$298(k$0) + dbl & e(0.25)*(d$1bm(k$1)*w$282(k$0) + d$1bm & (k$0)*w$291(k$1) + bm*(w$3*(w$226*w$12 & 6(k$0,k$1) + w$100(k$0)*w$266(k$1)) + & w$297(k$1)) + w$254*w$50(k$0,k$1)) 10486 continue 10485 continue C end if C C if ( & green(1) & ) then C o$313=w$194 C end if C C if ( & green(2) & ) then C o$314=w$195 C end if C C if ( & green(3) & ) then C o$315=(am*w$149)/w$141**3 + 2*(w$184 + w$2 & /w$56**3) C end if C C if ( & green(4) & ) then C o$316=w$16*(w$155 + w$159*w$166) 107 APÊNDICE 2 C end if C C if ( & green(5) & ) then C o$317=w$15*(w$155*(-2 + w$115*w$18) + (w$1 & + v*(6 + w$149*w$160))*w$184) C end if C C if ( & green(6) & ) then C o$318=r*w$115 - d$am$t*w$160 C end if C C if ( & green(7) & ) then C o$319=w$83*((w$2*(-bm + w$224*w$58))/w$58 & + am*(v*w$170 + w$204*w$87)) C end if C C if ( & green(8) & ) then C o$320=-w$2 + (w$119 + w$141*w$2)*w$217 + w & $249 C end if C C if ( & green(9) & ) then C w$222=w$16*w$196 o$321=-r + r*w$15*w$196 - d$am$t*w$222 + w & $250 + w$217*w$33 + w$222*w$43 - v*w$1 & 96*w$61 C end if C C if ( & green(10) & ) then C o$322=w$249 C end if C C if ( 108 APÊNDICE 2 & & green(11) ) then C o$323=w$250 C end if C C if ( & green(12) & ) then C do 10500 k$0=k$0$b,k$0$e o$324(k$0)=w$302(k$0) 10500 continue C end if C C if ( & green(13) & ) then C do 10502 k$0=k$0$b,k$0$e o$325(k$0)=Log(w$194*x(k$0)) + w$302(k$0) 10502 continue C end if C C if ( & green(14) & ) then C w$84=d$am$t*w$16 w$154=v*(w$41 + w$48) + bm*(-2*w$17 + w$49 & ) w$189=w$170*w$97 w$237=w$204*w$3 w$268=bm*(v*(w$47 - 4*w$54) + w$34*(d$am$t & *v + w$61) + w$204*w$92) w$274=-((v*w$1 + w$148*w$237)*w$78) do 10510 k$0=k$0$b,k$0$e o$326(k$0)=w$189*(w$274*d$1bm(k$0) + bm*(w & $268 + w$237*(w$154 + w$148*d$1am(k$0) & + t*(w$84 + w$141*d$d$1am$t(k$0))))) 10510 continue C end if C C if ( & green(15) & ) then C w$165=w$141**2 w$173=(-bm + 4*v)*w$35 + w$16*(w$16 + w$85 & ) w$200=-(w$165*w$2) + w$58**3*w$7 w$215=w$83/w$177**2 w$216=-(v*(w$165*w$2 + w$159*w$58**2)) do 10517 k$0=k$0$b,k$0$e o$327(k$0)=w$215*(w$216 + w$173*d$1am(k$0) & + w$200*d$1bm(k$0)) 10517 continue 109 APÊNDICE 2 C end if C C if ( & green(16) & ) then C do 10519 k$0=k$0$b,k$0$e w$310(k$0)=-(w$307(k$0)/w$195) 10519 continue do 10521 k$0=k$0$b,k$0$e do 10522 k$1=k$1$b,k$1$e o$328(k$0,k$1)=w$221*(w$231(k$1)*w$310(k$0 & ) + w$311(k$0,k$1)) 10522 continue 10521 continue C end if C C if ( & green(17) & ) then C w$207=1/w$194 do 10525 k$0=k$0$b,k$0$e w$234(k$0)=w$207*w$80(k$0) 10525 continue w$235=w$195*w$207 do 10528 k$0=k$0$b,k$0$e w$312(k$0)=-(v*(w$235 + w$221*w$307(k$0))) 10528 continue do 10530 k$0=k$0$b,k$0$e do 10531 k$1=k$1$b,k$1$e o$329(k$0,k$1)=w$221*w$311(k$0,k$1) + w$31 & 2(k$0) + w$234(k$0)*(w$194*w$125(k$0,k & $1) + w$231(k$1)*x(k$0)) 10531 continue 10530 continue C end if C C if ( & green(18) & ) then C o$330=w$160*w$78 C end if C C if ( & green(19) & ) then C w$214=-(v*w$195) do 10535 k$1=k$1$b,k$1$e o$331(k$1)=w$214 + w$231(k$1) 10535 continue C end if C end if 110 APÊNDICE 2 C C C C Closed hierarchy level 3 return end C C The subroutin was successfully created 111