desenvolvimento de software acadÊmico para engenharia...

106
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ – UTFPR DEPARTAMENTO ACADÊMICO DE ENGENHARIA QUÍMICA CURSO DE ENGENHARIA QUÍMICA GEAN CARLOS LEANDRO DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA QUÍMICA, UTILIZANDO LINGUAGEM FORTRAN E PYTHON - CÁLCULO DE REATORES TRABALHO DE CONCLUSÃO DE CURSO FRANCISCO BELTRÃO 2018

Upload: others

Post on 12-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ – UTFPRDEPARTAMENTO ACADÊMICO DE ENGENHARIA QUÍMICA

CURSO DE ENGENHARIA QUÍMICA

GEAN CARLOS LEANDRO

DESENVOLVIMENTO DE SOFTWARE ACADÊMICOPARA ENGENHARIA QUÍMICA, UTILIZANDO

LINGUAGEM FORTRAN E PYTHON - CÁLCULO DEREATORES

TRABALHO DE CONCLUSÃO DE CURSO

FRANCISCO BELTRÃO

2018

Page 2: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

GEAN CARLOS LEANDRO

DESENVOLVIMENTO DE SOFTWARE ACADÊMICOPARA ENGENHARIA QUÍMICA, UTILIZANDO

LINGUAGEM FORTRAN E PYTHON - CÁLCULO DEREATORES

Trabalho de Conclusão de Curso do Curso deEngenharia Química da Universidade Tecnoló-gica Federal do Paraná - UTFPR, como requi-sito parcial para a obtenção do título de Bacha-rel.

Orientador: Prof. Dr. Jeconias Rocha Guima-raesCoorientador: Prof. Dra. Ana Paula De Oliveira

FRANCISCO BELTRÃO

2018

Page 3: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Ministério da Educação Universidade Tecnológica Federal do Paraná

Campus Francisco Beltrão Curso de Engenharia Química

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

PR

TERMO DE APROVAÇÃO

Trabalho de Conclusão de Curso – TCC2

Desenvolvimento De Software Acadêmico Para Engenharia Química, Utilizando

Linguagem Fortran E Python - Cálculo De Reatores

por

Gean Carlos Leandro

Trabalho de Conclusão de Curso 2 apresentado às 14 horas e 30 min., do dia 15 de

junho de 2018, como requisito para aprovação da disciplina Trabalho de Conclusão

de Curso 2, do Curso de Engenharia Química da Universidade Tecnológica Federal

do Paraná, Campus Francisco Beltrão. O candidato foi arguido pela Banca

Avaliadora composta pelos professores abaixo assinados. Após deliberação, a

Banca Avaliadora considerou o trabalho ________ (Aprovado ou Reprovado).

Banca Avaliadora:

Prof. Dr. Andre Zuber

Coordenador (a) do Curso

Prof. Dr. Jeconias Rocha

Guimaraes

Professor (a) Orientador (a)

Prof. Gustavo Yuji Sato

Membro da Banca

Prof. Dra. Ana Paula De Oliveira

Professor (a) Coorientador (a)

_________________________________

Prof. Dra. Michele Di Domenico

Professora do TCC2

“A Folha de Aprovação assinada encontra-se na Coordenação do Curso”

Page 4: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Dedico este trabalho à toda minha família, em especial ao meu filho Gael que deu um novo

sentido à minha vida.

Page 5: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Agradecimentos

Agradeço aos meus orientadores Prof. Dr. Jeconias Rocha Guimaraes e Prof. Dra AnaPaula De Oliveira por todo suporte durante a execução deste projeto, pelos conselhos inspira-dores e a primorosa atenção para o seu desenvolvimento.

Aos meus queridos supervisores de estágio, Gilmar Antonio Meneghetti e Andrea Bac-ker que me transmitem diariamente lições importantes sobre a vida e me apoiaram imensamentedurante a produção deste trabalho, permitindo diversas vezes alterações de horário, para que eupriorizasse esta atividade.

Também gostaria de lembrar do Professor Gustavo Yuji Sato que sempre que possívelme auxiliava em algumas questões bem específicas sobre a área de programação e que foramcruciais para a finalização deste trabalho.

Gostaria de deixar registrado também, o meu reconhecimento à minha família, poisacredito que sem o apoio deles seria muito difícil vencer esse desafio.

Enfim, a todos que de algum modo contribuíram para a sua realização.

Page 6: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

There are two ways of constructing a software design. One way is to make it so simple that there

are obviously no deficiencies. And the other way is to make it so complicated that there are no

obvious deficiencies. The first method is much more difficult (HOARE, Charles A. R.).

Há duas formas de construir um projeto de software: Uma maneira de fazer isso deve ser tãosimples que, obviamente, não deixem deficiências, e a outra forma é a de torná-lo tão com-plicado que não percebam as evidentes deficiências. O primeiro método é muito mais difícil(HOARE, Charles A. R.).

Page 7: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Resumo

LEANDRO, GEAN C. Desenvolvimento de Software Acadêmico Para Engenharia Quí-mica, Utilizando Linguagem Fortran e Python - Cálculo de Reatores. 2018. 38 f. Traba-lho de Conclusão de Curso (Graduação) – Engenharia Química. Universidade TecnológicaFederal do Paraná. Francisco Beltrão, 2018.

Neste trabalho apresentamos o desenvolvimento de uma ferramenta computacional parademonstração de conceitos de reatores químicos. Recursos educacionais, como o desenvol-vido aqui, são de extrema relevância no aprendizado. Atualmente existe uma forte demandana produção deste tipo de material e os softwares estão em uma das mais linhas de frente.Neste sentido, utilizamos duas linguagens de programação, que estão entre as mais utili-zadas: Fortran e Python. A primeira está presente em grande parte dos códigos científicosenquanto que a última é voltada para o uso geral, desde científico à entretenimento. A fer-ramenta desenvolvida foca no dimensionamento de reatores químicos e suas propriedades.O código é estruturado de forma a facilitar o acesso do usuário na inserção dos parâmetrosque caracterizam cada reator. Como resultado, apresentamos não apenas o programa execu-tável ao usuário final, mas também seu código fonte. Deste modo, serve como um materialdidático completo. Esperamos que esta iniciativa propicie aos estudantes de graduação deengenharia uma visão do emprego de linguagens de programação como uma ferramentaessencial do desenvolvimento científico.

Palavras-chaves: Software. Aprendizado. Tecnologia. Reatores. Acadêmico.

Page 8: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Abstract

LEANDRO, GEAN C. Development of Academic Software for Chemical Engineering,Using Fortran and Python Language - Calculation of Reactors. 2018. 38 p. Trabalho deConclusão de Curso (Graduação) – Engenharia Química. Universidade Tecnológica Federaldo Paraná. Francisco Beltrão, 2018.

In this work we present the development of a computational tool for demonstration ofchemical reactors concepts. Educational resources, like the one developed here, have a hugeimportance on learning process. Thus, nowadays there is a strong demand in producing suchmaterials and softwares are among the ones in the front edge. In this way, we have used themost used programming language: Fortran and Python. The former is present in the mostscientific codes while the latter is of general use, ranging from science to entertainment. Ourprogram focuses on chemical reactors and their properties. It is structured in such a waythat makes easy access by user when inserting parameters that characterizes each reactor.As result, we present not only the binary program to final user, but also its source code.Thus, it serves as a complete didatic material. We expect this initiative will allow undergraduate students to have a broad vision in how to employ programing languages as anessential tool in scientific development.

Key-words: Software. Learning. Technology. Reactors. Academic.

Page 9: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Sumário

1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.1 Acessibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Conhecimento Específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1 Acessibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2 Conhecimento Específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

5 Fundamentação Teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.1 Cálculo de Reatores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.2 Linguagens de Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.2.1 Fortran x Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

6 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.1 Estudo Direcionado Sobre Cálculo de Reatores . . . . . . . . . . . . . . . . . 246.2 Estudo Direcionado Sobre as Linguagens de Programação . . . . . . . . . . . . 24

6.2.1 Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.2.2 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

6.3 Construção do Código do Programa . . . . . . . . . . . . . . . . . . . . . . . 27

7 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.1 Exemplo de Exercício Para o Programa em Base Fortran . . . . . . . . . . . . 30

7.1.1 Resolução Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.1.2 Resolução Pelo Software . . . . . . . . . . . . . . . . . . . . . . . . . 31

7.2 Exemplo de Exercício Para o Programa em Base Python . . . . . . . . . . . . 327.2.1 Resolução Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.2.2 Resolução Pelo Software . . . . . . . . . . . . . . . . . . . . . . . . . 34

7.3 Regras de utilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

8 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Page 10: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Anexos 44

Page 11: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

10

1 Introdução

Desde sempre a tecnologia teve como principal objetivo auxiliar e otimizar o trabalho.Esta não necessariamente se desenvolve de conceitos científicos, mas também através de avali-ações empíricas e intuitivas (LONGO, 2004). Todavia é interessante notar que esta constante-mente passa por processos evolutivos que visam facilitar sua utilização. Temos como exemploas invenções que são sempre seguidas de inovação, que melhoraram a tecnologia criada (MAR-CHETTI, 1980).

A produção exponencial de conhecimento científico nas últimas décadas de certa formadificultou o seu acesso, devido à falta de ferramentas práticas para sua difusão. Esta realidadereflete no sistema educacional, principal responsável pela transmissão de conhecimento, quebusca facilitar o acesso à informação através de tecnologias (BENFATTI, 2010). No campo doensino, as tecnologias modernas visam sua democratização no aprendizado (MOLINA, 2007).(KENSKI, 2001) ressalta que assim como a tela da televisão vem sendo substituída pela docomputador, o quadro negro também compete espaço com as novas ”telas” que permitem maiorinteração entre professor e aluno, com ferramentas que possibilitam espectros diferentes deaprendizagem. (CHACÓN, 2010), chama esse processo de quebra de paradigma da transferên-cia de conhecimento, para criar um novo: facilitador de conhecimento. O foco principal, não éapenas a transmissão de conhecimento para o aluno, mas facilitar que este conhecimento sejaabsorvido ao máximo. (KENSKI, 2001) ainda define com clareza essa transição quando diz que“o movimento é acelerado. A atualização é permanente. Novas informações derrubam velhascertezas. ” (KENSKI, 2001).

A engenharia química também é constantemente inovada e acompanha a tendência deutilização de novas tecnologias. Tem-se como exemplo, o Conselho Regional de Química, res-ponsável por regulamentar as atividades do engenheiro químico, que indica em suas páginasweb diversos softwares computacionais, tais como ChemCAD, Fness, Fluid Flow3 e Thermo-flow, como ferramentas essenciais facilitar as atividades envolvidas na execução de projetos(CRQ, 2018).

É inegável que este processo de mudança impacta na esfera acadêmica, tornando obri-gatório que o ensino de tais ferramentas seja ministrado pelas instituições de ensino, para queo profissional formado atenda as demandas de mercado (MELO, 2005). O curso de engenha-ria possui fundamentos básicos que permanecem intactos, devido sua grande relevância para aformação do engenheiro, entretanto vem se desenvolvendo ferramentas que facilitam o enten-dimento e concepção dos estudantes. Atualmente, existem calculadoras científicas e gráficas,softwares e materiais didáticos interativos, amplamente conhecidos no âmbito acadêmico. Es-tes recursos, demonstram que o desenvolvimento de ferramentas tecnológicas para auxílio emdisciplinas durante a graduação, é um interessante campo de pesquisa a ser trilhado.

Page 12: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

11

2 Problema

Durante a graduação em engenharia química, diversos docentes, visando facilitar o en-tendimento dos conteúdos aplicados, utilizam de softwares computacionais. De fato, tais ferra-mentas auxiliam bastante na didática e aprendizado do aluno. Contudo, a utilização desta tec-nologia em sala de aula pode gerar dois problemas significativos que dificulta a sua aplicação:a acessibilidade e conhecimento específico do software .

2.1 Acessibilidade

A dificuldade de acesso a um determinado software é influenciada por diversos fatores.O principal a ser considerado é o tipo de tecnologia utilizada por este. Atualmente a maioriadestes voltados para a área de engenharia possuem seu código de programação fechado e exigemcustos para aquisição. Este fator também limita as possibilidades do usuário em adequar asfunções do programa para casos mais específicos a sua realidade, tornando-o dependente deatualizações de seu fornecedor.

2.2 Conhecimento Específico

Outro ponto de impacto se refere a demanda de conhecimento para emprego do soft-

ware. Mesmo aqueles que possuem código aberto, encontra-se dificuldade na utilização, poispossuem uma linguagem distante daquela a qual o estudante está habituado e requer aprendi-zado prévio da ferramenta. Desta forma, um instrumento que visa facilitar a assimilação doconteúdo de determinada disciplina, causa um efeito contrário, aumentando a quantidade deinformação a ser transmitida ao estudante.

Page 13: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

12

3 Justificativa

A concepção de um software baseado em compiladores livres, visa solucionar os princi-pais problemas enfrentados na utilização destas ferramentas durante a graduação do engenheiroquímico: a acessibilidade e conhecimento específico do software.

3.1 Acessibilidade

Baseando-se a estrutura do software nas linguagens Fortran e Python, ambas livres, eli-minamos a necessidade de compra do programa para utilização, ou seja, qualquer usuário podeobter de forma gratuita a ferramenta, possibilitando o acesso a um número consideravelmentemaior de estudantes e inclusive o uso sem implicações legais para a instituição de ensino. O soft-

ware livre também possibilita ao usuário que tenha acesso ao código fonte do programa, iden-tificando o modo como este foi construído e permite que este altere sua estrutura, adequando-oda maneira que lhe for viável e interessante.

3.2 Conhecimento Específico

Estruturar-se-á o programa de maneira simples e didática, de forma que o usuário nãoprecise de conhecimentos específicos da ferramenta e/ou da programação desta. Com a utili-zação de uma linguagem mais próxima da realidade do aluno, o software identificará os dadosinformados e irá expor os resultados de maneira visual e de fácil assimilação.

Page 14: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

13

4 Objetivos

4.1 Objetivo Geral

Desenvolver um software acadêmico para Engenharia Química, voltado para a disci-plina de cálculo de reatores utilizando as linguagens de programação Fortran e Python.

4.2 Objetivos Específicos

I. Abordar técnicas e procedimentos para resolução de problemas relacionados a disciplina decálculo de reatores.

II. Avaliar as principais diferenças entre as linguagens de programação Fortran e Python.

III. Identificar as estruturas de programação das linguagens Fortran e Python.

IV. Desenvolver um código de um programa nas linguagens Fortran e Python que resolva casossimples de cálculo de reatores.

V. Estruturar o código do programa desenvolvido para fácil visualização e interpretação dousuário.

Page 15: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

14

5 Fundamentação Teórica

Para a elaboração deste projeto de pesquisa buscou-se em literatura referencial teóricopara os dois tópicos centrais. Desta forma a revisão bibliográfica está dividida em três eixos:cálculo de reatores, linguagens de programação (Fortran e Python) e softwares acadêmicos.

5.1 Cálculo de Reatores

Reatores, são comumente ligados a reações químicas e tal analogia está correta, afinalé neste onde elas se processam. Um importante parâmetro a ser avaliado na determinação daspropriedades de qualquer reator é o balanço molar, não obstante (FOGLER, 2016) o consideraum dos pilares da engenharia das reações químicas (Figura 1).

Figura 1 – Pilares da Engenharia da Reações Químicas (Balanço Molar). Fonte: Autor.

O balanço molar é a etapa inicial para determinação de um reator, nele se consideraquais os componentes de entrada, saída e geração do sistema a fim de determinar qual o acú-mulo. Na figura 2 visualiza-se como é realizado o balanço molar e as nomenclaturas usualmenteassociadas a cada termo utilizado (FOGLER, 2016).

Os reatores mais conhecidos e utilizados são do tipo: Batelada, reator tanque agitadocontínuo, reator tubular e reator de leito de recheio. Cada um destes possui características econdições específicas, modificando a equação do balanço molar.

Batelada: No reator batelada não existe entrada nem saída no sistema, pois os reagentes sãocolocados em totalidade dentro do reator e retirados após o término da reação de forma que o

Page 16: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 15

Figura 2 – Balanço molar. Fonte: Autor.

termo de acúmulo se igua-la ao termo de geração.

Reator tanque agitado contínuo (CSTR): Para este tipo de reator opera-se em regime esta-cionário e de mistura perfeita, ou seja, as propriedades no interior do reator não variam com otempo e cada ponto deste possui igual característica.

Reator tubular (PFR): Possui funcionamento análogo ao tanque agitado contínuo, entretantoas propriedades dos reagentes, sendo transformados em produtos ao longo do reator, mudamconforme o volume deste.

Reator de leito de recheio (PBR): Funciona igualmente ao PFR, entretanto possui seu leitorecheado, de forma que as análises são comumente realizadas em função do catalisador utilizadoe suas propriedades calculadas em funções de unidades mássicas.

Na Tabela 1, apresentam-se as equações algébricas e integrais dos reatores, após a sim-plificação do balanço molar atraves das condições de cada reator (FOGLER, 2016).

A segunda etapa a ser avaliada para a resolução dos problemas envolvendo casos dereatores mais simples é a Lei de Velocidade (Figura 3).

O balanço molar de um reator, idependente do seu modelo, e é projetado sempre emfunção da taxa de reação, de desaparecimento ou formação de determinado componente (SCH-MAL, 2017). Esta taxa geralmente é representata como a relação da equação 5.1

rj =Taxa de Formação do Componente j

Unidade de Volume(5.1)

E nos sistemas heterogêneos (Equação 5.2)

r′j =Taxa de Formação do Componente j

Unidade de Massa(5.2)

Para maioria dos casos a análise é feita a partir de um dos reagentes, ou seja, é avaliado

Page 17: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 16

Tabela 1 – Equação dos tipos de reatores analisados.

Reator ComentárioBalanço Molar naForma Diferencial

Forma Algébrica Forma Integral

BR

Sem variações espaciais dNAdt = rAV t1 =

∫ NA0NA1

dNA−rAV

CSTR

Sem variações espaciais.Regime estacionário

- V = FA0−FA−rA

-

PFR

Regime estacionário dFAdV = rA V1 =

∫ FA0FA1

dFA−rA

PBRRegime estacionário dFA

dW = r′A W1 =∫ FA0

FA1

dFA−rA

Figura 3 – Pilares da Engenharia da Reações Químicas (Lei de Velocidade). Fonte: Autor.

a taxa de desaparecimento, adotando-se por conversão o sinal negativo para a velocidade de

Page 18: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 17

reação, conforme (Equação 5.3)

−rA =Taxa de Formação do Componente A

Unidade de Volume(5.3)

Ordinalmente a determinação da velocidade de reação é obtida através de estudos expe-rimentais, todavia esta é função da concentração, pressão, temperatura e propriedades estequi-ométricas entre reagentes e produtos, sendo possível sua determinação analítica (FROMENT,2017). Para demonstrar a determinação da taxa de velocidade, pode-se utilizar o exemplo gené-rico da reação da equação 5.4.

aA+bB = cC+dD (5.4)

Desta forma a taxa de velocidade será dada pela equação 5.5.

−rA = kCAaCB

b (5.5)

Em que

k = Velocidade específica ou constante cinética;

a, b, c e d representão os coefientes estequiométricos e ordem de reação;

CA e CB = Concentrações dos reagentes A e B, respectivamente.

Dessa maneira, a constante cinética possui unidades de acordo com a ordem de reação.Para os casos mais simples de determinação do projeto de reator esta constante é fornecidaatravés de dados experimentais, porém também pode ser determinada através de análise daspropriedades específicas e etapas da reação (SCHMAL, 2017). Ainda utilizando como base areação genérica, na tabela 2, apresentam-se exemplos das unidades adotadas para a velocidadeespecífica de acordo com a ordem de reação (FOGLER, 2016).

Tabela 2 – Unidades adotadas para a velocidade específica.

Ordem da Reação Velocidade da reação UnidadesOrdem zero −rA = kCA

0CB0 k(mol

Lh )

1a Ordem −rA = kCA k(h−1)

2a Ordem −rA = kCA2 k( L

molh)

3a Ordem −rA = kCA3 k( L

mol )2h

A partir do balanço molar e da determinação da taxa de velocidade de reação é possívelprojetar o reator e determinar suas características, tais como o volume, conversão alcançada,

Page 19: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 18

tempo de operação, massa de catalisador e consumo do reagente. (LEVENSPIEL, 2000) abordaalguns parâmetros (com suas unidades usuais) e suas correlações:

Parâmetros -

∙ k = constante cinética (depende da ordem de reação);

∙ k’ = constante cinética para um PBR;

∙ rA = Velocidade de reação ( moldm3s

) para o componente A;

∙ r’A = Velocidade de reação ( molgcats) para o componente A;

∙ v = vazão volumétrica (dm3s );

∙ v0 = vazão volumétrica inicial (dm3s );

∙ V = volume do reator (dm3);

∙ FA = fluxo molar para o componente A (mols );

∙ FA0 = fluxo molar para o componente A na entrada (mols );

∙ NA = Número de mols do componente A (mols);

∙ NA0 = Número de mols do componente A na entrada (mols);

∙ CA = concentração do componente A ( moldm3 );

∙ CA0 = concentração do componente A na entrada ( moldm3 );

∙ W = massa de catalizador para um reator PBR (g);

∙ Ci = Concentração de um componente i ( moldm3 );

∙ X = Conversão de determinado reagente em produto (admensional).

Correlações -

∙ FA =CA * v ;

∙ FA0 =CA0 * v0 ;

∙ CA =NAV (nos casos onde não existe variação de volume);

∙ FA = FA0 − (1− x);

∙ CA =CA0 − (1− x) (nos casos onde não há variação de volume, temperatura e pressão).

Page 20: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 19

A ultima etapa considerada para desenvolver os cálculos relacionados a propriedadesdo reator é a Estequiometria (figura 4). Será esta que irá permear todo os parâmetros a seremobtidos (FOGLER, 2016). Para uma reação genérica (Equação 5.4) avalia-se as relações entreo número de mols dos componentes envolvidos:

NA

a=

NB

b=

NC

c=

ND

d(5.6)

Figura 4 – Pilares da Engenharia da Reações Químicas (Estequiometria). Fonte: Autor.

Onde

NA = Número de mols do componente A;

NB = Número de mols do componente B;

NC = Número de mols do componente C;

ND = Número de mols do componente D.

Utilizando da relação entre os componentes é possível determinar a conversão de cadacomponente, baseando-se no número de mols de entrada (Ni0) e saída (Ni), conforme a equação 5.7.

X i =Ni0 −Ni

Ni0(5.7)

Comumente se expressa as propriedades reacionais em função da concentração por con-versão, entretanto como esta depende do volume que é um parâmetro variável, sendo necessárioexpressar as correlações de variação para sua estimativa. Quando o volume não se altera no de-correr do processo reacional podemos ver as relações para determinação da concentração decada componente na tabela 3 (FOGLER, 2016).

Page 21: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 20

Tabela 3 – Relação da concentração final para cada espécie sem variação de volume.

Espécie Final da Reação

A CA0 −CA0X

B CB0 − baX(CA0X)

C CC0 +caX(CA0X)

D CD0 +da X(CA0X)

Quando existe variação do volume (Tabela 4) é necessário considerar o fator de ex-pansão, representado pelo símbolo ξ que é função da estequiometria, variação da pressão e datemperatura, para determinação da concentração (FOGLER, 2016).

Tabela 4 – Relação da concentração final para cada espécie com variação de volume.

Espécie Final da Reação

A CA0(1−X)(1+ξ X)

T 0T

PP0

B CA0

((CB0CA0

)−( b

a)X

1+ξ X

)T 0T

PP0

C CA0

((CC0CA0

)+( c

a)X

1+ξ X

)T 0T

PP0

D CA0

((CD0CA0

)+( d

a)X

1+ξ X

)T 0T

PP0

Em que

CB0 = Concentração inicial da espécie B;

CC0 = Concentração inicial da espécie C;

CD0 = Concentração inicial da espécie D;

P = Pressão final do sistema;

P0 = Pressão inicial do sistema;

T = Temperatura final do sistema;

T0 = Temperatura inicial do sistema.

Page 22: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 21

5.2 Linguagens de Programação

Melhorias voltadas para área computacional, tem beneficiado os mais diversos campos,possibilitando o desenvolvimento tecnológico e criação de novas técnicas científicas e meto-dológicas. Entretanto, com as diversas linguagens de programação existentes e suas particu-laridades, encontra-se dificuldade para a aplicação direta dos profissionais de outra área deconhecimento, sendo necessário melhor difundilas (FOX, 1990).

Para entender a evolução desta área dinâmica é necessário um breve histórico dos acon-tecimentos importantes. No período entre 1936 e 1945 o cientista Konrad Zuze, cria a lingua-gem Plankalkul, todavia a publicação deste importante marco, veio a ocorrer apenas em 1972,devido ao contexto histórico da época. Após a Plankalkul, outras séries de linguagens foramcriadas, com estrutura de pseudo códigos, códigos curtos e rápidos (SEBESTA, 2006).

A partir da década de 50, ainda que de maneira limitada, os computadores e as lingua-gens de programação ganharam espaço, passando a serem mais utilizados. Neste período foicrescente a utilização de liguagens como a C e Fotran denominadas linguagens procedurais eainda utilizadas atualmente (GUDWIN, 1997).

Destaca-se o avanço na área da computação, após a criação do IBM 704, possibilitandoa introdução de uma linguagem de alto nível a partir do desenvolvimento do Fortran (formulatranslation). Trabalhos anteriores, já haviam integrado a possibilidade de uso de funções algé-bricas, entretanto após a inserção do Fortran foi possível viabilizar a utilização da programação,facilitando o trabalho de pesquisadores das mais diversas áreas como por exemplo da engenha-ria (SEBESTA, 2006).

Após diversas revisões ao longo das décadas de 60 e 70, a estrutura da linguagem For-tran, permaneceu bem semelhante a suas primeiras versões, fazendo com que programadoresmigrassem para linguagens que possuíssem versões mais modernas. Foi então que em 1990 oFortran recebe uma estrutura modernizada que possibilitou novamente a exploração mais afincadesta linguagem (FERNANDES, 2003).

(FERNANDES, 2003), ressalta ainda que a programação em Fortran é simples e que adificuldade para um novo usuário, não é o código em si, mas na estruturação do pensamento.Isso demonstra que a utilização desta linguagem pode ser facilitada, quando o programadorutiliza do pensamento lógico e estrutura as ideias antes de formular seu código. Porém, por serconsiderada antiga e de difícil acesso a materiais atualizados, a utilização da linguagem Fortrané pouco difundida fora da academia (SILVA, 2008).

Linguagens modernas que facilitam a estrutura de programação têm ganhado espaçoentre os usuários e programadores, pois permitem uma integração maior de profissionais a áreade computação. A exemplo disso pode-se citar a linguagem Python, umas das mais utilizadasna atualidade.

Page 23: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 22

Criada pelo programador Guido Van Rossumem em 1991 e diferente do Fortran, a lin-guagem Python é interpretada, ou seja, esta não é diretamente executada pelo computador, comoum código de máquina, ao invés disso é feita a tradução da linguagem utilizada, para a lingua-gem computacional (ZELLE, 2002). Tal estrutura facilita o uso, pois utiliza de uma linguagemmais próxima da realidade do usuário e facilita o pensamento lógico. (ZELLE, 2002), explicade maneira interessante a utilização das linguagens interpretadas:

“Os processos computacionais dentro do computador são como espíritos má-gicos que podemos aproveitar para os nossos trabalhos. Infelizmente, essesespíritos só entendem uma linguagem muito complicada que não conhecemos.O que nós precisamos é um de gênio amigável que pode direcionar os es-píritos para cumprir nossos desejos. Nosso gênio é um intérprete de Python.Nós podemos dar instruções ao intérprete de Python e este direciona os es-píritos subjacentes para realizar nossas demandas. Nos comunicamos com ogênio através de uma linguagem especial de feitiços e encantamentos (ou seja,Python). ”

As linguagens interpretadas possibilitaram que uma nova parcela de pessoas tivesseacesso fácil as estruturas de programação. Esta é a realidade de muitas tecnologias, que possuemdeterminada complexidade e desta forma são criadas ferramentas que facilitam seu acesso.

5.2.1 Fortran x Python

Existem diferenças entre as estruturas de cada linguagem, isso ocorre principalmentepela diferença entre código interpretado e compilado. No compilador gera-se um código de má-quina a partir do código fonte, carregando todas as instruções do programa. Para o interpretadorocorre primeiro uma tradução das instruções para a linguagem da máquina, sendo necessárioum tempo de execução. Na figura 5 demonstra-se o funcionamento dos códigos e a tabela 5compara suas principais vantagens e desvantagens (MEDEIROS, 2015).

Pode-se definir o Fortran como mais explorado, e apesar de pouco uso se comparadacom as existentes, ainda é considerada uma linguagem prática e de grande importância, poismuitas das linguagens mais modernas, utilizam sua base a partir desta. A linguagem Python emgrande ascendência, estreitou o contato de outras áreas com a computação, todavia essa tambémrequer certo conhecimento técnico (RITA, 2009).

Page 24: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 5. Fundamentação Teórica 23

Figura 5 – Diferenças entre a linguagem interpretada e compilada. Fonte: Autor, 2012.

Tabela 5 – Vantagens e Desvantagens entre a linguagem interpretada e compilada.

Tradutor Vantagens Desvantagens

Execução mais veloz Várias etapas de tradução

Compilador Programas mais complexos, commais funcionalidades.

Maior consumo de memoria paraexecução, uma vez que o programafinal é maior.

Permite otimização do código-fonte.

Processo de depuração de cada li-nha é mais demorado.

Depuração mais simples. Execução mais lenta.

Interpretador Menor consumo de memória. Programa mais simples

Resultado imediato da execuçãodas instruções por ser passo passo.

É necessário que a maquina possuao programa fonte.

Page 25: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

24

6 Metodologia

Para a elaboração do software foi necessário identificar os métodos existentes para re-solver problemas envolvendo cálculo de reatores, quais os parâmetros a serem avaliados, quaisas relações entre as grandezas envolvidas e de que forma é possível traduzir essas informaçõespara as linguagens de programação utilizadas. Para tal, se dividiu o processo em três importan-tes etapas: estudo direcionado sobre cálculo de reatores, estudo direcionado sobre as linguagensde programação e construção do código do programa.

6.1 Estudo Direcionado Sobre Cálculo de Reatores

A metodologia utilizada como base na análise do projeto de reatores apresenta-se com-pilada no fluxograma proposto na figura 6 (FOGLER, 2016). Assim como o método do autor, osoftware segue um fluxograma específico para análise dos dados e por fim estima o parâmetrorequerido do reator estudado.

A interação entre o programa e o usuário acontece de maneira fácil, através de pergun-tas objetivas e manterá a mesma estrutura proposta por (FOGLER, 2016). Assim, possibilita aousuário a assimilação do método utilizado pelo programa, com aplicação de exercícios teóricos.Outra informação importante retirada da literatura são os parâmetros envolvidos na determina-ção das propriedades de um reator, tais como seu volume, o tipo de reação que irá se processar,a vazão volumétrica de entrada, o estado físico do material processado, a velocidade de rea-ção e a estequiometria. Muitos desses parâmetros citados possuem relações entre si, de formaque em caso de não conhecimento de certa propriedade, esta possa ser estimada com bases nasdemais conhecidas. Inicialmente considerou-se apenas os casos mais simples para estruturaçãodo programa computacional. Após análise e entendimento dos métodos para estimar as propri-edades dos reatores estudados, surgiu um novo desafio de introduzir toda essa informação emuma linguagem de programação, de forma que os dados fornecidos pelo estudante serem reco-nhecidos, calculados e resultarem na informação correta. Diversas considerações precisam sercontabilizadas e processadas pelo software de maneira correta, afim de que este esteja coerentecom a literatura. Dessa forma, deu-se prosseguimento do estudo no âmbito da linguagem deprogramação.

6.2 Estudo Direcionado Sobre as Linguagens de Programação

Para desenvolvimento do software, utilizou-se duas linguagens de programação, Fortrane Python. Para cada uma destas foi escrita a mesma estrutura de programa, onde as perguntas fei-tas ao usuário e o fluxograma de obtenção dos dados são os mesmos. Em ambas as linguagens,a principal estrutura empregada consiste no recebimento de variáveis seguido de comparação

Page 26: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 6. Metodologia 25

Figura 6 – Fluxograma para determinação de propriedades do reator estudado. Fonte: Adaptadode (FOGLER, 2016).

de valores. Dessa maneira, o programa recebe as informações dadas pelo usuário e as comparapara a próxima tomada de decisão. Todavia, cada linguagem possui uma estrutura diferente daoutra, de maneira que se mostrou necessário um estudo detalhado de cada tipo de linguagempara elaboração do software. Nos tópicos a seguir mostra-se um detalhamento dos comandosque foram usados para cada linguagem:

6.2.1 Fortran

∙ real:: - Declara as variáveis inclusas no comando como números reais.

∙ implicit none: - Identifica as variáveis utilizadas na estrutura do programa como sendo

Page 27: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 6. Metodologia 26

números reais, inteiros ou caracteres.

∙ print*,’ - Exibe uma mensagem ou variável ao usuário.

∙ read(*,*) – Recebe um valor ou caractere informado pelo usuário associado a uma variá-vel.

∙ if (.EQ.) then – Compara determinada variável com outra variável, valor ou caractere, demaneira que se a avaliação for verdadeira executa um tipo de ação, caso contrário executaoutra.

∙ end if – Finaliza a ação de comparação aberta.

∙ open (*,file = ’nome do arquivo.formato do arquivo’) – Cria um documento de textoem diversos formatos.

∙ write(*,*) – Escreve dentro do arquivo aberto com a função open.

∙ close(*) – Encerra a escrita dentro do arquivo aberto pela função open.

Um fator importante a respeito desta linguagem de programação é a necessidade de sedeclarar todas as variáveis utilizadas e o uso correto da estrutura de comparação para que ocódigo funcione corretamente.

6.2.2 Python

∙ if (==) - Compara determinada variável com outra variável, valor ou caractere, de maneiraque se a avaliação for verdadeira executa um tipo de ação, caso contrário executa outra.

∙ print() - Exibe uma mensagem ou variável ao usuário.

∙ input() - Exibe uma mensagem ao usuário e recebe o valor de uma variável.

∙ from * import * – Importa um módulo específico de uma biblioteca ou script ao qualeste pertença.

∙ import * – Importa uma biblioteca ou um módulo.

∙ While – Comando utilizado para criar laços de repetição, enquanto a condição de umavariável não se altera.

Para a linguagem Python, não há necessidade de comandos para encerrar os comandosde comparação, entretanto deve ser respeitada a indentação.

Após compreender a utilização dos comandos das duas linguagens utilizadas e suasparticularidades, partiu-se para a etapa de construção do código do programa.

Page 28: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 6. Metodologia 27

6.3 Construção do Código do Programa

Com o conhecimento obtido nos estudos sobre cálculo de reatores e as linguagens deprogramação, possibilitou-se enfim estruturar o código do programa. A primeira versão destaferramenta, considerou apenas os casos mais simples, de maneira que a determinação das pro-priedades dos reatores serão limitadas a processos onde as reações são diretas e elementares,visando simplificar ó codigo estruturado e diminuir o seu tamanho. Para tal empregou-se duasferramentas, pertinentes as duas linguagens abordadas: um editor e um compilador. O editor éa ferramenta utilizada para escrita do programa e o compilador é empregado na execução docódigo, transformando este em um programa a ser utilizado pelo usuário. Para a linguagemFortran fez-se o uso do programa Plato para edição e g95 para compilação, já para a Python,o Python 3.6, que exerce ambas as funções, pois já possui um editor próprio chamado IDLE.O programa desenvolvido seguindo o fluxograma proposto por Folgler (2012), indicado no es-tudo sobre cálculo de reatores, segue um passo a passo específico. Antes de solicitar os dadosnuméricos ao usuário, é necessário entender quais as condições para o caso analisado, de formaa reduzir as possibilidades existentes e calcular a informação relevante. Estas condições sãoconstatadas a partir de perguntas simples feitas ao usuário e solicitação de respostas objetivas.

As etapas mostradas na figura 7, requerem do usuário informações que são inerentesa qualquer tipo de propriedade que se queira calcular. A partir das escolhas definidas, se dásequência a um outro conjunto de perguntas mais específicas, para determinar propriedade re-querida. Nas figuras 8 e 9 indicam-se o fluxograma do código para ambas as linguagens.

Utilizando os comandos referentes a cada linguagem, construiu-se o programa que cal-cula as propriedades de um reator (Batelada, CSTR e PFR) a partir de uma triagem, para iden-tificar qual é a de interesse e os dados fornecidos pelo usuário. Utilizando o recurso de ediçãode arquivo, após a determinação das propriedades do reator, é criado um arquivo de texto para oprograma estruturado em Fortran, onde se relaciona a propriedade requerida com a conversão.Para o programa feito com linguagem Python, utilizou-se de uma biblioteca especifica de plo-tagem de dados, para gerar um gráfico para comparação da propriedade escolhida em relação aconversão alcançada no reator.

Quando selecionado o reator tanque agitado contínuo ou reator tubular as propriedadesque podem ser estimadas são: o volume, conversão, concentração do componente, vazão molardo componente A, concentração do componente B (quando existente), vazão molar do com-ponente B, concentração do componente C (quando existente), vazão molar do componente C,vazão volumétrica, constante de velocidade. Para o Reator Batelada as propriedades calculadassão: volume, conversão, concentração do componente, constante de velocidade e o tempo deoperação. Os códigos e suas estruturas, podem ser visualizados nos anexos 1 e 2.

Page 29: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 6. Metodologia 28

Figura 7 – Sequência lógica seguida pelo programa em qualquer uma das hipóteses. Fonte:Autor.

Figura 8 – Fluxograma da estrutura do programa para determinação das propriedades dos rea-tores escrito em Fortran. Fonte: Autor.

Page 30: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 6. Metodologia 29

Figura 9 – Fluxograma da estrutura do programa para determinação das propriedades dos rea-tores escrito em Python. Fonte: Autor.

Page 31: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

30

7 Resultados

Para ambas as linguagens, foi possível estruturar um programa que determinava as pro-priedades dos reatores batelada, CSTR e PFR para casos amis simples, para as reações ele-mentares e reversíveis. As informações fornecidas em tela pelo programa foram corretas e ainserção de dados ocorre de maneira simples. Testou-se os programas com exercícios genéricospara avaliar a exatidão dos cálculos desenvolvidos e estes mostraram-se coerentes tanto para oprograma em Python quanto para o desenvolvido em Fortran.

Quando digitadas corretamente as informações solicitadas, o programa apresenta bomfuncionamento e retorna ao usuário a resposta ao parâmetro solicitado, caso contrário, estesolicita seu encerramento. Durante a inserção de dados caso o usuário não digite um dado ne-cessário para a estimativa da propriedade escolhida, ou digite de maneira incorreta o programapermite a reinserção de um conjunto de dados. É interessante destacar que as relações existentesentre as propriedades estão inseridas no código, desta forma mesmo que o usuário não possuaou não coloque um determinado dado necessário para calcular o parâmetro solicitado, é possí-vel sua determinação a partir de outras propriedades inseridas. Para demonstrar a utilização doprograma, elaborou-se exercícios para os três tipos de reatores trabalhados e também foi feita acomparação entre a resolução manual e pelo software.

7.1 Exemplo de Exercício Para o Programa em Base Fortran

Para constatar a coesão dos valores calculados pelo programa com base em Fortran,utilizou-se do exemplo de exercício a seguir:

“ Determine o tempo de processo necessário para se reduzir o número de mols de 10para 1, de uma espécie em um reator batelada. Onde a reação A → B é irreversível e a constantede velocidade é de 0.023 ( 1

min)”

7.1.1 Resolução Manual

O primeiro passo a ser tomado é identificar o balanço molar para o reator Batelada. Noexercício foi dado o número de mols de entrada e sáida, desta forma podemos calcular o tempode operação pela relação disponível na tabela 1.

dNA

dt= rAV (7.1)

A velocidade de reação pode é descrita pela relação da equação 7.2.

−rA = kCA (7.2)

Page 32: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 31

Lembrando das correlações citadas na fudamentação teórica temos que:

CA =NA

V(7.3)

Substituindo a equação 7.3 na equação 7.2 obtem-se:

−rA =kNA

V(7.4)

Substituindo a equação 7.4 no balanço molar:

dNA

dt=

kNA

VV (7.5)

Quando resolvido chegamos a seguinte equação:

t =ln(

NA0NA1

)k

(7.6)

Substituindo os valores fornecidos pelo problema na equação 7.6, chegamos na equaçãofinal:

t =ln(10mols

1mols

)0.023

(min) = 100,11min (7.7)

O tempo necessário para reduzir o número de mols de 10 para 1 neste reator batelada éde aproximadamente 100 min.

7.1.2 Resolução Pelo Software

Ao iniciar o programa, a primeira informação solicitada é a escolha do reator, conformea figura 10.

Figura 10 – Solicitação do tipo de reator pelo programa em base Fortran. Fonte: Autor.

Como o exercício é referente a um reator batelada, escolhemos a opção 3. A seguir ousuário pode escolher qual propriedade deseja-se calcular (Figura 11). A propriedade requeridapelo exercício é o tempo de operação, desta forma se escolhe a opção 7.

Page 33: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 32

Figura 11 – Solicitação da propriedade a ser estimada pelo programa em base Fortran. Fonte:Autor.

Figura 12 – Digitação dos dados necessários para calcular a propriedade solicitada no programaem base Fortran. Fonte: Autor.

Agora é necessário informar os dados do exercicío para que o programa possa estimara propriedade requerida (Figura 12).

Após a inserção de dados, o programa solicitará qual o modelo de lei de velocidade,para este exemplo a reação é de primeira ordem (Figura 13).

Figura 13 – Digitação do modelo de lei de velocidade no programa em base Fortran. Fonte:Autor.

Ao final o programa informa o valor da variável requisitada pelo usuário conformemostra a figura 14.

Figura 14 – Programa em base fortran, informa ao usuário o valor da propriedade solicitada.Fonte: Autor.

O valor obtido pelo programa está de acordo com o resultado obtido efetuando o cálculomanualmente que é de aproximadamente 100 min de operação.

7.2 Exemplo de Exercício Para o Programa em Base Python

No programa feito em Python, utilizou-se para exemplo um exercício de estimativa devolume para um reator CSTR e outro PFR, onde seu enunciado diz:

“ Para uma determinada reação, onde não ocorre variação de volume, a vazão volumé-trica é de 10 dm3 por min e a concentração inicial do componente A é de 2,0 mols/dm3. A

Page 34: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 33

reação direta elementar é A → B. Estime o volume para um reator CSTR e depois para um PFR,para atingir uma conversão de 80 %. Dados: k = 0.2( 1

min).”

7.2.1 Resolução Manual

O primeiro passo a ser tomado é identificar os balanços molares para o reator CSTR ePFR. No exercício foi dada a conversão, desta forma podemos calcular o volume dos reatoresrelações disponíveis na figura 6.

PRF:

dXdV

=−rA

FA0(7.8)

CSTR:

V =FA0X−rA

(7.9)

A velocidade de reação pode é descrita pela relação da equação 7.2.

Lembrando das correlações citadas na fudamentação teórica, quando não ocorre varia-ção de volume dos componentes dentro do reator, temos que:

CA =CA0(1−X) (7.10)

Substituindo a equação 7.10 na equação 7.2 obtem-se:

−rA = kCA0(1−X) (7.11)

Primeiramente determina-se-á o volume para o reator CSTR

Substituindo a equação 7.11 no balanço molar do CSTR:

V =FA0X

kCA0(1−X)(7.12)

Temos a seguinte correlação para o fluxo molar:

FA0 =CA0v0 (7.13)

Substituindo a equação 7.13 na equação 7.12 obtem-se a seguinte expessão para o ba-lanço molar:

V =CA0v0X

kCA0(1−X)=

v0Xk(1−X)

(7.14)

Page 35: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 34

Substituindo os valores fornecidos pelo problema na equação 7.14, chegamos na equa-ção final:

V =10*0.8

(dm3

min

)0.2min(1−0.8)

= 200dm3 (7.15)

O volume do CSTR para atingir a 80 % de conversão é 200 dm3.

Agora determinado o volume para a mesma conversão em um PFR.

Substituindo a equação 7.11 no balanço molar do PFR:

dXdV

=kCA0(1−X)

FA0(7.16)

Substituindo a equação 7.13 que correlaciona o fluxo molar com a concentração, naequação 7.16 obtem-se a seguinte expessão para o balanço molar:

dXdV

=kCA0(1−X)

CA0v0(7.17)

Resolvendo a equação 7.17:

V =v0

kln(1−X) (7.18)

Substituindo os valores fornecidos pelo problema na equação 7.18, chegamos na equa-ção final:

V =10(

dm3

min

)0.2min

ln(1−0.8) = 80dm3 (7.19)

O volume do PFR para atingir essa conversão é de 80 dm3

7.2.2 Resolução Pelo Software

O programa inicia com uma interface gráfica de apresentação, conforme demonstradona figura 15

Igualmente ao programa elaborado em linguagem Fortran, a requisição ao usuário é aescolha do reator (Figura 16).

Assim como no método manual, começaremos pelo reator CSTR. Logo após selecio-narmos este reator é solicitado os valores dos coeficientes estequiométricos dos reagentes (a,b e c). Como a reação possui apenas 1 reagente, apenas o coeficiente a possui entrada (Figura17).

Page 36: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 35

Figura 15 – Interface de apresentação do programa em Python. Fonte: Autor.

Figura 16 – Solicitação do tipo de reator no programa em Python. Fonte: Autor.

Figura 17 – Solicitação dos coeficientes estequiométricos dos reagentes no programa emPython. Fonte: Autor.

Logo em seguida é solicitado o modelo de lei de velocidade, para esta reação seleciona-mos o de primeira ordem, conforme demonstrado na figura 18.

Figura 18 – Solicitação do modelo de lei de velocidade no programa em Python. Fonte: Autor.

Não ocorre variação do volume para esta reação, logo podemos considerar que ocorreno estado líquido (Figura 19).

Solicita-se a variável volume, conforme a figura 20 para determinar a propriedade re-

Page 37: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 36

Figura 19 – Solicitação do estado em que a reação se processa. Fonte: Autor.

querida no exercício. E logo em sequência se adiciona os dados necessários para se efetuar ocálculo. Como vimos no cálculo manual do exercício, é necessário saber o valor da conversãopara se estimar o volume do reator. Caso uma variável necessária não seja colocada o programadá a opção de colocar os dados do grupo (onde aquela variável é solicitada) novamente. Estaetapa pode ser verificada na figura 21.

Figura 20 – Escolha da propriedade desejada. Fonte: Autor.

Figura 21 – Inserção dos dados necessários para calcular a propriedade solicitada pelo usuário.Fonte: Autor.

Com a inserção de todos os dados necessário para estimar o parâmetro solicitado oprograma informa o usuário seu valor (Figura 22). Por fim o usuário tem a opção de avaliargraficamente a variação do volume com a conversão do reator (Figura 23)

O valor de 200 dm3 encontrado pelo programa é igual ao encontrado no método manual.Na figura 24 visualiza-se um exemplo de um gráfico gerado pelo programa relacionando ovolume do reator com base na conversão.

Page 38: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 37

Figura 22 – Programa em Python informa ao usuário o valor do parâmetro requerido. Fonte:Autor.

Figura 23 – opção de avaliaçaõ gráfica do volume pela conversão pelo programa em Python.Fonte: Autor.

Figura 24 – Gráfico plotado pelo programa em base Python, relacionando o volume do reatorCSTR com a conversão. Fonte: Autor.

Para o PRF o procedimento é o mesmo que para o CSTR, apenas o primeiro passo sedifere, pela escolha de outro modelo de reator. A figura 25 mostra o procedimento completo ea figura 26 o gráfico que avalia o comportamento do volume de um PFR conforme a conversão.

Page 39: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 38

Figura 25 – Procedimento de cálculo para o PFR no programa em Python. Fonte: Autor.

7.3 Regras de utilização

Durante os testes com o programa, percebeu-se a necessidade de informar ao usuárioque a notação decimal está utilizando o símbolo de “ponto”, ao invés de “vírgula”, pois tanto aslinguagens como os programas utilizados em conjunto utilizam o sistema americano de medida,também existe a necessidade de colocar os dados em notação decimal, mesmo aqueles que sãodados pelo exercício como números naturais, caso contrário em alguns cálculos, em ambasas linguagens, ocorrem erros, pois o resultado é de um valor em números inteiros e que nãonecessariamente está de acordo com o valor correto. Outro fator importante está relacionado asunidades dos dados inseridos, pois não é feito conversão de sistema de unidades, desta formapara que o programa estime de forma certa é necessário que todas as unidades sejam baseadasem mols, decímetros e minutos. A inserção incorreta dos dados nesses aspectos pode causarerros na execução do programa.

Page 40: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 7. Resultados 39

Figura 26 – Gráfico plotado pelo programa em base Python, relacionando o volume do reatorPFR com a conversão. Fonte: Autor.

Page 41: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

40

8 Considerações Finais

O desenvolvimento do presente estudo possibilitou uma análise importante sobre o de-senvolvimento de novas tecnologias voltadas para o meio acadêmico. A utilização de softwares

como ferramentas no auxílio de simulação de processos, desenvolvimento de cálculos e bancode dados de propriedades de materiais já é uma realidade dentro da engenharia química, tantona indústria como na esfera acadêmica. O custo de aquisição e/ou a dificuldade de aprendizadodestas ferramentas costumam inviabilizar o seu uso pelo estudante de graduação, inclusive osque oferecem licenças promocionais ou sejam livres.

Desenvolver um software acadêmico, com linguagem simples para os usuários que nãotem total domínio na área, revela que novos recursos podem ser criados, visando facilitar oaprendizado do conteúdo do curso de engenharia química, diminuindo a dificuldade no apren-dizado de uma matéria específica por dependência de aprendizado de um programa computa-cional complexo. Em contrapartida, a utilização da tecnologia de linguagem simples, ou seja,onde o código de programa pode ser acessado e editado, permite aos usuários que possuem in-teresse na área de programação entender melhor suas funcionalidades e criar novas ferramentaspara demais conteúdos programáticos do curso.

No que se refere ao estudo de cálculo de reatores, não se pretende substituir softwares

já consolidados para determinação de propriedades, mas oferecer uma alternativa de ferramentacom uma linguagem mais acessível para o aluno. Outro fator importante a ser destacado, é abase acadêmica do software, sendo este não voltado para utilização industrial, em sua primeiraversão, pois é feito para solucionar casos mais simples usados dentro da academia para o apren-dizado dos graduandos. Todavia, vale ressaltar que a tecnologia livre do software permite quepropriedades adicionais sejam colocadas neste, incluindo dados experimentais, para torna-lomais eficaz e abrangente.

Tendo em vista a estrutura de código criada, o programa apresenta algumas regras parautilização, tais como unidades fixas e notação decimal para os dados inseridos. Entretanto aotimização do tempo do usuário, pela possibilidade do programa da resolução de exercícioscomplexos, apenas com a informação dos dados informados pelo usuário, supera as eventuaisnecessidades para utilização do programa. É importante relembrar que recursos como conversãode unidades podem ser adicionados ao programa, por qualquer usuário, dado seu código aberto.

Destaca-se que o trabalho conseguiu atender aos seus objetivos gerais e específicos,desenvolvendo um software com as linguagens de programação propostas e calculando propri-edades de casos simples de reatores químicos, utilizando de linguagem de fácil compreensãopara o usuário e possibilitando a acessibilidade gratuita para o estudante. Este projeto tambématingiu um objetivo complementar, mas de fato muito interessante, o de integrar áreas do co-

Page 42: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Capítulo 8. Considerações Finais 41

nhecimento importantes como o da engenharia química e informática, demonstrando que estasse complementam e funcionam muito bem no desenvolvimento de novas tecnologias.

Page 43: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

42

Referências

BENFATTI, E. Utilização da tecnologia em Educação a Distância na formação de engenheirosde produção da Universidade Federal de Itajubá: uma avaliação educacional. São Carlos, SP,2010. Citado na página 10.

CHACÓN, F. Un nuevo paradigma para la educación corporativa a distancia. en RevistaAsuntos. Caracas, Venezuela, 2010. Citado na página 10.

CRQ. Biblioteca de softwares para Engenharia Química. [S.l.], 2018. Citado na página 10.

FERNANDES, F. A. N. Programação fortran para engenharia. [S.l.], 2003. Citado na página21.

FOGLER, H. Elements of Chemical Reaction Engineering. [S.l.]: Prentice Hall, 2016. (PrenticeHall International Series in the Physical and Chemi). Citado 6 vezes nas páginas 14, 15, 17,19, 20 e 24.

FOX, G. Fortran D Language Specification. Center for Research on Parallel Computation.Houston, 1990. Citado na página 21.

FROMENT, G. Chemical Reactor Analysis and Design. 3rd Edition. [S.l.], 2017. Citado napágina 17.

GUDWIN, R. R. Linguagens de Programação. Departamento de Engenharia de Computaçãoe Automação Industrial. Campinas, 1997. Citado na página 21.

KENSKI, V. M. Comunidades de aprendizagem, en direçao a uma nova sociabilidade naeducaçao. [S.l.], 2001. Citado na página 10.

LEVENSPIEL, O. Engenharia das Reações Químicas. 3a ed. São Paulo, SP, 2000. Citado napágina 18.

LONGO, W. P. Ciência e tecnologia: evolução, inter-relação e perspectivas. [S.l.], 2004.Citado na página 10.

MARCHETTI, C. Society as a learning system: discovery, invention and innovation cyclesrevisited. [S.l.], 1980. Citado na página 10.

MEDEIROS, H. Linguagens de programação. [S.l.], 2015. Citado na página 22.

MELO, E. Softwares de simulação no Ensino de Química uma representação social na práticadocente. Campinas, SP, 2005. Citado na página 10.

MOLINA, C. Avaliação do blended learning na disciplina de pesquisa operacional em cursosde pós-graduação em engenharia de produção. Itajubá, 2007. Citado na página 10.

RITA, S. Treinamento em Lógica de Programação.1a ed. [S.l.], 2009. Citado na página 22.

SCHMAL, M. Cinética e Reatores. 3a ed. [S.l.], 2017. Citado 2 vezes nas páginas 15 e 17.

SEBESTA, R. W. Conceitos de linguagem de programação.5a edição. São Paulo, 2006.Citado na página 21.

Page 44: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Referências 43

SILVA, W. Um tutorial de programação em visual Fortran. [S.l.], 2008. Citado na página 21.

ZELLE, J. Python Programming: An Introduction to Computer Science. Version 1. [S.l.], 2002.Citado na página 22.

Page 45: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

Anexos

Page 46: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

easy# -*- coding: cp1252 -*-import ANIMACAO

inicio = 1while (inicio == 1): Reator = input("Escolha seu reator: PFR (1),CSTR(2) ou BATELADA (3): ") if (Reator == 1): import PFR if (Reator == 2): import CSTR if (Reator == 3): import BATELADA inicio = input("Deseja determinar outra propriedade? Sim(1) ou Não(2) ") if (inicio == 2): exit(0)

Página 1

Anexo 1 - Código em Python

Page 47: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

ANIMACAO# -*- coding: cp1252 -*-# encoding: utf-8# encoding: iso-8859-1# encoding: win-1252# ANIMACAO.py"""Módulo de formatação de strings."""

def frmt_bytes(bytes): """Formata um inteiro enviado em "bytes" para um forma mais bonitinha, GB, MB, enfim. [1] """ if bytes < 1024: return '%dB' % (bytes) elif bytes < (1024 * 1024): return '%.1fKB' % (bytes / 1024.0) elif bytes < (1024 * 1024 * 1024): return '%.1fMB' % (bytes / 1024.0 / 1024.0) else: return '%.1fGB' % (bytes / 1024.0 / 1024.0 / 1024.0)

def strip_html(text): """Remove todo o html de uma determinada string. [2] """ import re s = re.sub('<[^>]*>', '', text) return sfrom graphics import *def main(): win = GraphWin("My Window", 700,500) #win.setBackground(color_rgb(0, 0, 0))

img = Image(Point(370, 270), "imagem3.gif") img2 = Image(Point(370, 270), "imagem4.gif") img3 = Image(Point(370, 270), "imagem2.gif") img4 = Image(Point(370, 270), "imagem35.gif")

img3.draw(win) time.sleep(1.0) img.draw(win) time.sleep(1.0) img4.draw(win) time.sleep(0.5) img2.draw(win) time.sleep(3.0) win.close()main()

Página 1

Page 48: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR# -*- coding: cp1252 -*-# encoding: utf-8# encoding: iso-8859-1# encoding: win-1252# PFR.py"""Módulo de formatação de strings."""

def frmt_bytes(bytes): """Formata um inteiro enviado em "bytes" para um forma mais bonitinha, GB, MB, enfim. [1] """ if bytes < 1024: return '%dB' % (bytes) elif bytes < (1024 * 1024): return '%.1fKB' % (bytes / 1024.0) elif bytes < (1024 * 1024 * 1024): return '%.1fMB' % (bytes / 1024.0 / 1024.0) else: return '%.1fGB' % (bytes / 1024.0 / 1024.0 / 1024.0)

def strip_html(text): """Remove todo o html de uma determinada string. [2] """ import re s = re.sub('<[^>]*>', '', text) return s

import numpy as npimport matplotlib.pyplot as pltfrom sympy import *init_printing()X, y = symbols('x y') #define x e y como variáveis simbólicas.

no = 123456print("Digite os coeficientes estequiométricos dos reagentes")a = input("a ")b = input("b ")c = input("c ")modelo = input("Escolha o modelo de lei de velocidade: Ordem zero (0), Primeira ordem(1), Segunda ordem(2) ou Terceira ordem(3) ")estado = input ("Em qual estado a reação se processa?: Líquido(1) ou Gasoso(2) ")if(b!=0 and c!=0): variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Concentração do Componente B(5) \n" "Vazão-molar do Componente B(6) \n"

Página 1

Page 49: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR "Concentração do Componente C(7) \n" "Vazão-molar do Componente C(8) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n" "Velocidade de Reação (11) \n" "" )if(b ==0 and c!=0): CBo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Concentração do Componente C(7) \n" "Vazão-molar do Componente C(8) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n" "Velocidade de Reação (11) \n" "" )if(b!=0 and c==0): CCo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Concentração do Componente B(5) \n" "Vazão-molar do Componente B(6) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n" "Velocidade de Reação (11) \n" "" )if(b==0 and c==0): CBo = 0 CCo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n" "Velocidade de Reação (11) \n" "" ) if(variavel == 1): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n"

Página 2

Page 50: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente A(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do Componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if(((FAo == no and conco == no and x == no) or ((vo == no) and (conco ==no and FAo ==no))) or (CA == no and x == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): if(vo == no or FAo == no): if(CA!=no): conco = CA/(1-x) else: repet = input("Não existe dados suficientes para estimar o volume,deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(x == no): if(CA != no): if(conco != no): x = 1-(CA/conco) else: if(vo == no or FAo == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: x = 1-(CA/conco)

Página 3

Page 51: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR else: repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") rA = input("Velocidade de Reação (mol/dm3/min) ") if (k == no and rA == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 volume = integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,x)) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else:

Página 4

Page 52: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR CC = 0 volume = integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,x)) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CC = 0 volume = integrate(((FAo*X)/(k*((((conco*(1-x)*P*To)/((1+E*X)*Po*T)))**(a))*(((conco*((CBo/conco)-((b/a)*X))*P*To)/((1+E*X)*(Po*T)))**(b))*(((conco*((CCo/conco)-((c/a)*X))*P*To)/((1+E*X)*(Po*T)))**(c))))) print ('O volume do reator é'),volume,("dm3") print("") graf = input("Deseja avaliar o Volume conforme a Conversão Sim(1) ou Não(2) ") if(graf == 1): conv = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9] if (estado == 1): vol = [(integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,xg))) for xg in conv] else: if(incomp == 1): vol = [(integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**

Página 5

Page 53: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,xg))) for xg in conv] else: vol = [(integrate(((FAo*X)/(k*((((conco*(1-x)*P*To)/((1+E*X)*Po*T)))**(a))*(((conco*((CBo/conco)-((b/a)*X))*P*To)/((1+E*X)*(Po*T)))**(b))*(((conco*((CCo/conco)-((c/a)*X))*P*To)/((1+E*X)*(Po*T)))**(c)))),(X,0,xg))) for xg in conv]

plt.plot( conv, vol, 'go') # green bolinha plt.plot( conv, vol, 'k:', color='black') # linha pontilha orange plt.axis([0, 1, 0, int(volume*1.5)]) plt.title("Volume X Conversao")

plt.grid(True) plt.xlabel("Conversao") plt.ylabel("Volume(dm3)") plt.show()

if(variavel == 2): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente A(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") FA = input("Vazão molar final do Componente A(mol/min) ") if((FAo == no and conco == no) or (vo == no and conco == no and FA == no) or (FAo == no and vo ==no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no and vo != no): conco = FAo/vo if(vo == no): vo = FAo/conco

Página 6

Page 54: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR if(FAo==no): FAo = conco*vo if(CA != no): if(conco != no): x = 1-(CA/conco) else: if((FAo != no and vo != no)): x = 1-(CA/conco) else: if (FA != no and (conco != no or vo != no)): x = 1 - (FA/FAo) else: repet = input("Não existe dados suficientes para estimar a conversão,deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) print ('A conversão do Reator é '),x print("") graf = input("Deseja avaliar o Volume conforme a Conversão Sim(1) ou Não(2) ") if(graf == 1): repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") rA = input("Velocidade de Reação (mol/dm3/min) ") if (k == no and rA == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0

Página 7

Page 55: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR volume = integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,x)) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2) ") if(incomp == 1): if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 volume = integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,x)) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CC = 0 volume = integrate(((FAo*X)/(k*((((conco*(1-x)*P*To)/((1+E*X)*Po*T)))**(a))*(((conco*((CBo/conco)-((b/a)*X))*P*To)/((1+E*X)*(Po*T)))**(b))*(((conco*((CCo/conco)-((c/a)*X))*P*To)/((1+E*X)*(Po*T)))**(c)))))

Página 8

Page 56: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR conv = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9] if (estado == 1): vol = [(integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,xg))) for xg in conv] else: if(incomp == 1): vol = [(integrate((((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c))))),(X,0,xg))) for xg in conv] else: vol = [(integrate(((FAo*X)/(k*((((conco*(1-x)*P*To)/((1+E*X)*Po*T)))**(a))*(((conco*((CBo/conco)-((b/a)*X))*P*To)/((1+E*X)*(Po*T)))**(b))*(((conco*((CCo/conco)-((c/a)*X))*P*To)/((1+E*X)*(Po*T)))**(c)))),(X,0,xg))) for xg in conv]

plt.plot( conv, vol, 'go') # green bolinha plt.plot( conv, vol, 'k:', color='black') # linha pontilha orange plt.axis([0, 1, 0, int(volume*1.5)]) plt.title("Volume X Conversao")

plt.grid(True) plt.xlabel("Conversao") plt.ylabel("Volume(dm3)") plt.show() if(variavel == 3): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and conco == no) or x == no): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco

Página 9

Page 57: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR if(FAo==no): FAo = conco*vo if(estado == 1): CA = conco*(1-x) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): CA = conco*(1-x) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) print ('A Concentração final do Componente A é '),CA, ("(mol/dm3)") print("")

if(variavel == 4): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and FAo == no) or x == no): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else:

Página 10

Page 58: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo FA = FAo*(1-x) print ('A Vazão molar final do Componente A é '),FA, ("(mol/s)") print("")

if(variavel == 5): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") FBo = input("Digite o valor da Vazão molar inicial do Componente B(mol/dm3) ") FAo = input("Vazão molar inicial do componente A (mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and conco == no) or x == no or (CBo == no and FBo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(CBo == no): CBo = FBo/vo if(estado == 1): CB = conco*((CBo/conco)-((b/a)*x)) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)

Página 11

Page 59: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR") if(incomp == 1): CB = conco*((CBo/conco)-((b/a)*x)) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) print ('A Concentração final do Componente B é '),CB, ("(mol/dm3)") print("")

if(variavel == 6): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") FBo = input("Digite o valor da Vazão molar inicial do Componente B(mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and FAo == no) or x == no or(vo == no and FBo == no) or (CBo == no and FBo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0)

Página 12

Page 60: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(CBo != no): FB = (FAo*((CBo/conco)-((b/a)*x))) repet = 0 else: FB = (FAo*((FBo/FAo)-((b/a)*x))) repet = 0 print ('A Vazão molar final do Componente B é '),FB, ("(mol/s)") print("")

if(variavel == 7): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FCo = input("Digite o valor da Vazão molar inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do componente A (mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and conco == no) or x == no or (CCo == no and FCo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(FCo == no):

Página 13

Page 61: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR FCo = CCo*vo if(CCo == no): CCo = FCo/vo if(estado == 1): CC = conco*((CCo/conco)-((c/a)*x)) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): CC = conco*((CCo/conco)-((c/a)*x)) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) print ('A Concentração final do Componente C é '),CC, ("(mol/dm3)") print("")

if(variavel == 8): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FCo = input("Digite o valor da Vazão molar inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ")

Página 14

Page 62: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR if((FAo == no and conco == no) or (vo == no and FAo == no) or x == no or(vo == no and FBo == no) or (CCo == no and FCo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(CCo != no): FC = (FAo*((CCo/conco)-((c/a)*x))) repet = 0 else: FC = (FAo*((FCo/FAo)-((c/a)*x))) repet = 0 print ('A Vazão molar final do Componente B é '),FC, ("(mol/s)") print("")

if(variavel == 9): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") if(vo == no): if(FAo == no or conco == no): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 else: repet = 0 if(vo == no): vo = FAo/conco else: v = vo

Página 15

Page 63: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR

if(estado == 1): print("A vazão volumétrica final é "),v,("(dm3/s)") else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): print("A vazão volumétrica final é "),v,("(dm3/s)") else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) v = ((vo*(1+E*x)*P*To)/(Po*T)) print("A vazão volumétrica final é "),v,("(dm3/s)")

if(variavel == 10): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente A(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do Componente A(mol/min) ")

Página 16

Page 64: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if(((FAo == no and conco == no and x == no) or ((vo == no) and (conco ==no and FAo ==no))) or (CA == no and x == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): if(vo == no or FAo == no): if(CA!=no): conco = CA/(1-x) else: repet = input("Não existe dados suficientes para estimar o volume,deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(x == no): if(CA != no): if(conco != no): x = 1-(CA/conco) else: if(vo == no or FAo == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: x = 1-(CA/conco) else: repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) repet1 = 1 while(repet1 == 1): rA = input("Velocidade de Reação (mol/dm3/min) ") if (rA == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n "

Página 17

Page 65: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T))

Página 18

Page 66: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CC = 0 k = rA/(CA**(a))*(CB**(b))*(CC**(c)) if (modelo == 0): print("o valor da Constante de velocidade é "),k, ("(mol/dm3/min) ") if (modelo == 1): print("o valor da Constante de velocidade é "),k, ("(1/min) ") if (modelo == 2): print("o valor da Constante de velocidade é "),k, ("(dm3/mol/min) ") if (modelo == 3): print("o valor da Constante de velocidade é "),k, ("(dm3/mol)2 * (1/min) ") print("")

if(variavel == 11): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente A(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do Componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if(((FAo == no and conco == no and x == no) or ((vo == no) and (conco ==no and FAo ==no))) or (CA == no and x == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): if(vo == no or FAo == no): if(CA!=no):

Página 19

Page 67: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR conco = CA/(1-x) else: repet = input("Não existe dados suficientes para estimar o volume,deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(x == no): if(CA != no): if(conco != no): x = 1-(CA/conco) else: if(vo == no or FAo == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: x = 1-(CA/conco) else: repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") if (k == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no):

Página 20

Page 68: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else:

Página 21

Page 69: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

PFR CC = 0 rA = k*(CA**(a))*(CB**(b))*(CC**(c)) print ("A Velocidade de Reação "),rA,("(mol/dm3/min)") print("")

Página 22

Page 70: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR# -*- coding: cp1252 -*-# encoding: utf-8# encoding: iso-8859-1# encoding: win-1252# CSTR.py"""Módulo de formatação de strings."""

def frmt_bytes(bytes): """Formata um inteiro enviado em "bytes" para um forma mais bonitinha, GB, MB, enfim. [1] """ if bytes < 1024: return '%dB' % (bytes) elif bytes < (1024 * 1024): return '%.1fKB' % (bytes / 1024.0) elif bytes < (1024 * 1024 * 1024): return '%.1fMB' % (bytes / 1024.0 / 1024.0) else: return '%.1fGB' % (bytes / 1024.0 / 1024.0 / 1024.0)

def strip_html(text): """Remove todo o html de uma determinada string. [2] """ import re s = re.sub('<[^>]*>', '', text) return s

import numpy as npimport matplotlib.pyplot as plt

no = 123456print("Digite os coeficientes estequiométricos dos reagentes")a = input("a ")b = input("b ")c = input("c ")modelo = input("Escolha o modelo de lei de velocidade: Ordem zero (0), Primeira ordem(1), Segunda ordem(2) ou Terceira ordem(3) ")estado = input ("Em qual estado a reação se processa?: Líquido(1) ou Gasoso(2) ")if(b!=0 and c!=0): variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Concentração do Componente B(5) \n" "Vazão-molar do Componente B(6) \n" "Concentração do Componente C(7) \n" "Vazão-molar do Componente C(8) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n"

Página 1

Page 71: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR "Velocidade de Reação (11) \n" "" )if(b ==0 and c!=0): CBo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Concentração do Componente C(7) \n" "Vazão-molar do Componente C(8) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n" "Velocidade de Reação (11) \n" "" )if(b!=0 and c==0): CCo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Concentração do Componente B(5) \n" "Vazão-molar do Componente B(6) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n" "Velocidade de Reação (11) \n" "" )if(b==0 and c==0): CBo = 0 CCo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Volume(1)\n" "Conversão(2)\n" "Concentração do Componente A(3)\n" "Vazão-molar do Componente A(4) \n" "Vazão Volumétrica(9) \n" "Constante de Velocidade(10) \n" "Velocidade de Reação (11) \n" "" ) if(variavel == 1): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente

Página 2

Page 72: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTRA(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do Componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if(((FAo == no and conco == no and x == no) or ((vo == no) and (conco ==no and FAo ==no))) or (CA == no and x == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): if(vo == no or FAo == no): if(CA!=no): conco = CA/(1-x) else: repet = input("Não existe dados suficientes para estimar o volume,deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(x == no): if(CA != no): if(conco != no): x = 1-(CA/conco) else: if(vo == no or FAo == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: x = 1-(CA/conco) else: repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ")

Página 3

Page 73: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR if(repet == 2): exit(0) repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") rA = input("Velocidade de Reação (mol/dm3/min) ") if (k == no and rA == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ")

Página 4

Page 74: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CC = 0 if(rA == no): rA = k*(CA**(a))*(CB**(b))*(CC**(c)) volume = (FAo*x)/rA print ('O volume do reator é'),volume,("dm3") print("") graf = input("Deseja avaliar o Volume conforme a Conversão Sim(1) ou Não(2) ") if(graf == 1): conv = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9] if (estado == 1): vol = [((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c)))) for X in conv] else: if(incomp == 1): vol = [((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c)))) for X in conv] else: vol = [((FAo*X)/(k*((((conco*(1-x)*P*To)/((1+E*X)*Po*T)))**(a))*(((conco*((CBo/conco)-((b/a)*X))*P*To)/((1+E*X)*(Po*T)))**(b))*(((conco*((CCo/conco)-((c/a)*X))*P*To)/((1+E*X)*(Po*T)))**(c)))) for X in conv]

plt.plot( conv, vol, 'go') # green bolinha plt.plot( conv, vol, 'k:', color='black') # linha pontilha orange plt.axis([0, 1, 0, int(volume*1.5)]) plt.title("Volume X Conversao")

Página 5

Page 75: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR

plt.grid(True) plt.xlabel("Conversao") plt.ylabel("Volume(dm3)") plt.show() plt.ion()

if(variavel == 2): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente A(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") FA = input("Vazão molar final do Componente A(mol/min) ") if((FAo == no and conco == no) or (vo == no and conco == no and FA == no) or (FAo == no and vo ==no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no and vo != no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(CA != no): if(conco != no): x = 1-(CA/conco) else: if((FAo != no and vo != no)): x = 1-(CA/conco) else: if (FA != no and (conco != no or vo != no)): x = 1 - (FA/FAo)

Página 6

Page 76: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR else: repet = input("Não existe dados suficientes para estimar a conversão,deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) print ('A conversão do Reator é '),x print("") graf = input("Deseja avaliar o Volume conforme a Conversão Sim(1) ou Não(2) ") if(graf == 1): repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") rA = input("Velocidade de Reação (mol/dm3/min) ") if (k == no and rA == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2) ") if(incomp == 1): if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else:

Página 7

Page 77: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR CC = 0 else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CC = 0 if(rA == no): rA = k*(CA**(a))*(CB**(b))*(CC**(c)) volume = (FAo*x)/rA conv = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9] if (estado == 1): vol = [((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c)))) for X in conv] else: if(incomp == 1): vol = [((FAo*X)/(k*((conco*(1-X))**(a))*((conco*((CBo/conco)-((b/a)*X)))**(b))*((conco*((CCo/conco)-((c/a)*X)))**(c)))) for X in conv] else: vol = [((FAo*X)/(k*((((conco*(1-x)*P*To)/((1+E*X)*Po*T)))**(a))*(((conco*((CBo/conco)-((b/a)*X))*P*To)/((1+E*X)*(Po*T)))**(b))*(((conco*((CCo/conco)-((c/a)*X))*P*To)/((1+E*X)*(Po*T)))**(c)))) for X in conv]

plt.plot( conv, vol, 'go') # green bolinha

Página 8

Page 78: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR plt.plot( conv, vol, 'k:', color='black') # linha pontilha orange plt.axis([0, 1, 0, int(volume*1.5)]) plt.title("Volume X Conversao")

plt.grid(True) plt.xlabel("Conversao") plt.ylabel("Volume(dm3)") plt.show() plt.ion() if(variavel == 3): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and conco == no) or x == no): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(estado == 1): CA = conco*(1-x) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): CA = conco*(1-x) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ")

Página 9

Page 79: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) print ('A Concentração final do Componente A é '),CA, ("(mol/dm3)") print("")

if(variavel == 4): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and FAo == no) or x == no): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo FA = FAo*(1-x) print ('A Vazão molar final do Componente A é '),FA, ("(mol/s)") print("")

if(variavel == 5): repet = 1

Página 10

Page 80: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") FBo = input("Digite o valor da Vazão molar inicial do Componente B(mol/dm3) ") FAo = input("Vazão molar inicial do componente A (mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and conco == no) or x == no or (CBo == no and FBo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(CBo == no): CBo = FBo/vo if(estado == 1): CB = conco*((CBo/conco)-((b/a)*x)) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): CB = conco*((CBo/conco)-((b/a)*x)) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n "

Página 11

Page 81: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) print ('A Concentração final do Componente B é '),CB, ("(mol/dm3)") print("")

if(variavel == 6): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") FBo = input("Digite o valor da Vazão molar inicial do Componente B(mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and FAo == no) or x == no or(vo == no and FBo == no) or (CBo == no and FBo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(CBo != no): FB = (FAo*((CBo/conco)-((b/a)*x))) repet = 0 else: FB = (FAo*((FBo/FAo)-((b/a)*x))) repet = 0 print ('A Vazão molar final do Componente B é '),FB, ("(mol/s)") print("")

Página 12

Page 82: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR

if(variavel == 7): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FCo = input("Digite o valor da Vazão molar inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do componente A (mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and conco == no) or x == no or (CCo == no and FCo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(FCo == no): FCo = CCo*vo if(CCo == no): CCo = FCo/vo if(estado == 1): CC = conco*((CCo/conco)-((c/a)*x)) else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): CC = conco*((CCo/conco)-((c/a)*x)) else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos")

Página 13

Page 83: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) print ('A Concentração final do Componente C é '),CC, ("(mol/dm3)") print("")

if(variavel == 8): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FCo = input("Digite o valor da Vazão molar inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if((FAo == no and conco == no) or (vo == no and FAo == no) or x == no or(vo == no and FBo == no) or (CCo == no and FCo == no)): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(CCo != no): FC = (FAo*((CCo/conco)-((c/a)*x))) repet = 0

Página 14

Page 84: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR else: FC = (FAo*((FCo/FAo)-((c/a)*x))) repet = 0 print ('A Vazão molar final do Componente B é '),FC, ("(mol/s)") print("")

if(variavel == 9): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") FAo = input("Vazão molar inicial do componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") if(vo == no): if(FAo == no or conco == no): repet = input("Não existe dados suficientes para estimar a conversão, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 else: repet = 0 if(vo == no): vo = FAo/conco else: v = vo

if(estado == 1): print("A vazão volumétrica final é "),v,("(dm3/s)") else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): print("A vazão volumétrica final é "),v,("(dm3/s)") else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ")

Página 15

Page 85: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) v = ((vo*(1+E*x)*P*To)/(Po*T)) print("A vazão volumétrica final é "),v,("(dm3/s)")

if(variavel == 10): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente A(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do Componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if(((FAo == no and conco == no and x == no) or ((vo == no) and (conco ==no and FAo ==no))) or (CA == no and x == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): if(vo == no or FAo == no): if(CA!=no): conco = CA/(1-x) else: repet = input("Não existe dados suficientes para estimar o volume,deseja colocar\n "

Página 16

Page 86: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(x == no): if(CA != no): if(conco != no): x = 1-(CA/conco) else: if(vo == no or FAo == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: x = 1-(CA/conco) else: repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) repet1 = 1 while(repet1 == 1): rA = input("Velocidade de Reação (mol/dm3/min) ") if (rA == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)

Página 17

Page 87: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR") if(incomp == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CC = 0 k = rA/(CA**(a))*(CB**(b))*(CC**(c)) if (modelo == 0): print("o valor da Constante de velocidade é "),k, ("(mol/dm3/min) ") if (modelo == 1): print("o valor da Constante de velocidade é "),k, ("(1/min) ") if (modelo == 2): print("o valor da Constante de velocidade é "),k, ("(dm3/mol/min) ") if (modelo == 3): print("o valor da Constante de velocidade é "),k, ("(dm3/mol)2 * (1/min) ") print("")

Página 18

Page 88: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR

if(variavel == 11): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") conco = input("Digite o valor da Concentração inicial do Componente A (mol/dm3) ") CA = input("Digite o valor da Concentração final do Componente A(mol/dm3) ") if(b!=0): CBo = input("Digite o valor da Concentração inicial do Componente B(mol/dm3) ") if(c!=0): CCo = input("Digite o valor da Concentração inicial do Componente C(mol/dm3) ") FAo = input("Vazão molar inicial do Componente A(mol/min) ") vo = input("Vazão volumétrica inicial(dm3/min) ") x = input("Conversão ") if(((FAo == no and conco == no and x == no) or ((vo == no) and (conco ==no and FAo ==no))) or (CA == no and x == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0 if(conco == no): if(vo == no or FAo == no): if(CA!=no): conco = CA/(1-x) else: repet = input("Não existe dados suficientes para estimar o volume,deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: conco = FAo/vo if(vo == no): vo = FAo/conco if(FAo==no): FAo = conco*vo if(x == no): if(CA != no): if(conco != no): x = 1-(CA/conco) else:

Página 19

Page 89: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR if(vo == no or FAo == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: x = 1-(CA/conco) else: repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") if (k == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 if(estado == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else: CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: incomp = input("O gás pode ser considerado incompressível? Sim(1) ou Não(2)") if(incomp == 1): if(CA == no): CA = conco*(1-x) if(b!=0): CB = conco*((CBo/conco)-((b/a)*x)) else:

Página 20

Page 90: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

CSTR CB = 0 if(c!=0): CC = conco*((CCo/conco)-((c/a)*x)) else: CC = 0 else: repet2 = 1 while(repet2 == 1): P = input("Digite a Pressão inicial ") Po = input("Digite a Pressão final ") T = input("Digite a Temperatura inicial ") To = input("Digite a Temperatura final ") print("Digite os coeficientes estequiométricos dos produtos") d = input("d ") e = input("e ") f = input("f ") yA = input("Digite a fração molar do Componente A no gás ") if (P == no or Po == no or T == no or To == no or yA == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0 E = yA*((d + e + f - a -b - c)/(a)) CA = ((conco*(1-x)*P*To)/((1+E*x)*Po*T)) if(b!=0): CB = (conco*((CBo/conco)-((b/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CB = 0 if(c!=0): CC = (conco*((CCo/conco)-((c/a)*x))*P*To)/((1+E*x)*(Po*T)) else: CC = 0 rA = k*(CA**(a))*(CB**(b))*(CC**(c)) print ("A Velocidade de Reação "),rA,("(mol/dm3/min)") print("")

Página 21

Page 91: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA# -*- coding: cp1252 -*-# encoding: utf-8# encoding: iso-8859-1# encoding: win-1252# BATELADA.py"""Módulo de formatação de strings."""

def frmt_bytes(bytes): """Formata um inteiro enviado em "bytes" para um forma mais bonitinha, GB, MB, enfim. [1] """ if bytes < 1024: return '%dB' % (bytes) elif bytes < (1024 * 1024): return '%.1fKB' % (bytes / 1024.0) elif bytes < (1024 * 1024 * 1024): return '%.1fMB' % (bytes / 1024.0 / 1024.0) else: return '%.1fGB' % (bytes / 1024.0 / 1024.0 / 1024.0)

def strip_html(text): """Remove todo o html de uma determinada string. [2] """ import re s = re.sub('<[^>]*>', '', text) return s

import numpy as npimport matplotlib.pyplot as pltfrom sympy import *init_printing()x,y,X,f, xf, z= symbols('x y X f xf z') #define x, y e f como variáveis simbólicas.

no = 123456print("Digite os coeficientes estequiométricos dos reagentes")a = input("a ")b = input("b ")c = input("c ")modelo = input("Escolha o modelo de lei de velocidade: Ordem zero (0), Primeira ordem(1), Segunda ordem(2) ou Terceira ordem(3) ")if(b!=0 and c!=0): variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Conversão(1)\n" "Tempo de operação(2)\n" "Número de Mols do Componente A(3)\n" "Número de Mols do Componente B(4) \n" "Número de Mols do Componente C(5) \n" "Constante de Velocidade(6) \n" "Velocidade de Reação (7) \n"

Página 1

Page 92: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA "" )if(b ==0 and c!=0): NBo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Conversão(1)\n" "Tempo de operação(2)\n" "Número de Mols do Componente A(3)\n" "Número de Mols do Componente C(5) \n" "Constante de Velocidade(6) \n" "Velocidade de Reação (7) \n" "" )if(b!=0 and c==0): NCo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Conversão(1)\n" "Tempo de operação(2)\n" "Número de Mols do Componente A(3)\n" "Número de Mols do Componente B(4) \n" "Constante de Velocidade(6) \n" "Velocidade de Reação (7) \n" "" )if(b==0 and c==0): NBo = 0 NCo = 0 variavel= input("Qual das variaveis a seguir você precisa descobrir?: \n" "Conversão(1)\n" "Tempo de operação(2)\n" "Número de Mols do Componente A(3)\n" "Constante de Velocidade(6) \n" "Velocidade de Reação (7) \n" "" ) if(variavel == 1): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") NAo = input("Digite o valor do Número de Mols inicial do Componente A (mols) ") if(b!=0): NBo = input("Digite o valor do Número de Mols inicial do Componente B(mols) ") if(c!=0): NCo = input("Digite o valor do Número de Mols inicial do Componente C(mols) ") t = input("Digite o Tempo de Operação (min) ") if(t == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n "

Página 2

Page 93: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: if(a == 1 and b == 0 and c == 0 and NAo == no): repet = 0 else: if(NAo == no or (b != 0 and NBo == no) or (c != 0 and NCo == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0

repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") if (k == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0

if(a == 1 and b == 0 and c == 0 and NAo == no): x = 1 - exp(-t*k) vol = 1.0 else: repet2 = 1 vol = input("Digite o Volume do Reator(dm3) ") if(vol == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: repet2 = 0

Página 3

Page 94: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA fx = (1-x) df = diff(fx,x) kt = (k*t/(NAo))*(NAo/vol)**(a)*(NAo/vol)**(b)*(NAo/vol)**(c)*vol eq = integrate(((1/(((f))**(a)*((NBo/NAo)+((b/a)*(f-1)))**(b)*(((NCo/NAo)+(c/a)*(f-1)))**(c)))*df),f ) eq1 = Eq(eq, kt) eq2 = solve(eq1,f) eq3 = sum(eq2)

x = 1 - eq3

print ('A conversão do Reator é '),x print("") graf = input("Deseja avaliar a Conversão conforme o Tempo Sim(1) ou Não(2) ") if(graf == 1): y1 = (np.linspace(0,0.1,10000)) y2 = (np.linspace(0,0.2,10000)) y3 = (np.linspace(0,0.3,10000)) y4 = (np.linspace(0,0.4,10000)) y5 = (np.linspace(0,0.5,10000)) y6 = (np.linspace(0,0.6,10000)) y7 = (np.linspace(0,0.7,10000)) y8 = (np.linspace(0,0.8,10000)) y9 = (np.linspace(0,0.9,10000)) y10 = (np.linspace(0,1.0,10000)) f1 = ((NAo)/(k*vol*(((NAo/vol)*(1- y1))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y1))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y1))))**(c)))) f2 = ((NAo)/(k*vol*(((NAo/vol)*(1- y2))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y2))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y2))))**(c)))) f3 = ((NAo)/(k*vol*(((NAo/vol)*(1- y3))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y3))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y3))))**(c)))) f4 = ((NAo)/(k*vol*(((NAo/vol)*(1- y4))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y4))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y4))))**(c)))) f5 = ((NAo)/(k*vol*(((NAo/vol)*(1- y5))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y5))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y5))))**(c)))) f6 = ((NAo)/(k*vol*(((NAo/vol)*(1- y6))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y6))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y6))))**(c)))) f7 = ((NAo)/(k*vol*(((NAo/vol)*(1- y7))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y7))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y7))))**(c)))) f8 = ((NAo)/(k*vol*(((NAo/vol)*(1- y8))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y8))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y8))))**(c))))

Página 4

Page 95: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA f9 = ((NAo)/(k*vol*(((NAo/vol)*(1- y9))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y9))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y9))))**(c)))) f10 = ((NAo)/(k*vol*(((NAo/vol)*(1- y10))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y10))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y10))))**(c))))

t0 = 0 t1 = sum(f1)*(0.1-0)/10000 t2 = sum(f2)*(0.2-0)/10000 t3 = sum(f3)*(0.3-0)/10000 t4 = sum(f4)*(0.4-0)/10000 t5 = sum(f5)*(0.5-0)/10000 t6 = sum(f6)*(0.6-0)/10000 t7 = sum(f7)*(0.7-0)/10000 t8 = sum(f8)*(0.8-0)/10000 t9 = sum(f9)*(0.9-0)/10000 t10 = sum(f10)*(1.0-0)/10000

conv = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0] tempo = [t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10]

plt.plot( conv, tempo, 'go') # green bolinha plt.plot( conv, tempo, 'k:', color='black')#linha pontilha orange plt.axis([0, 1, 0, int(t*1.5)]) plt.title("Tempo X Conversao")

plt.grid(True) plt.xlabel("Conversao") plt.ylabel("Tempo(min)") plt.show()

if(variavel == 2): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") NAo = input("Digite o valor do Número de Mols inicial do Componente A (mols) ") NA = input("Digite o valor do Número de Mols final do Componente A (mols) ") if(b!=0): NBo = input("Digite o valor do Número de Mols inicial do Componente B(mols) ") NB = input("Digite o valor do Número de Mols final do Componente B(mols) ")

Página 5

Page 96: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA if(c!=0): NCo = input("Digite o valor do Número de Mols inicial do Componente C(mols) ") NC = input("Digite o valor do Número de Mols final do Componente C(mols) ") x = input("Digite a Conversão ") if(x == no and (NAo == no or NA == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: if(a == 1 and b == 0 and c == 0 and NAo == no): repet = 0 else: if(NAo == no or (b != 0 and NBo == no) or (c != 0 and NCo == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0

if (x == no): x = 1-(NA/NAo) repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") if (k == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0

if(a == 1 and b == 0 and c == 0): t = (-log(abs(1-x)))/k vol = 1.0 else: repet2 = 1

Página 6

Page 97: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA vol = input("Digite o Volume do Reator(dm3) ") conco = input("Digite a Concentração inicial do componente A ") if(vol == no and conco == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: if(vol == no): vol = NAo/conco repet2 = 0 x1 = (np.linspace(0,x,10000)) eq1 = ((NAo)/(k*vol*(((NAo/vol)*(1- x1))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(x1))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(x1))))**(c)))) t = sum(eq1)*(x-0)/10000

print ('O Tempo de Operação é '),t,("min") print("") graf = input("Deseja avaliar a Conversão conforme o Tempo Sim(1) ou Não(2) ") if(graf == 1): y1 = (np.linspace(0,0.1,10000)) y2 = (np.linspace(0,0.2,10000)) y3 = (np.linspace(0,0.3,10000)) y4 = (np.linspace(0,0.4,10000)) y5 = (np.linspace(0,0.5,10000)) y6 = (np.linspace(0,0.6,10000)) y7 = (np.linspace(0,0.7,10000)) y8 = (np.linspace(0,0.8,10000)) y9 = (np.linspace(0,0.9,10000)) y10 = (np.linspace(0,0.999,10000)) f1 = ((NAo)/(k*vol*(((NAo/vol)*(1- y1))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y1))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y1))))**(c)))) f2 = ((NAo)/(k*vol*(((NAo/vol)*(1- y2))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y2))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y2))))**(c)))) f3 = ((NAo)/(k*vol*(((NAo/vol)*(1- y3))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y3))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y3))))**(c)))) f4 = ((NAo)/(k*vol*(((NAo/vol)*(1- y4))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y4))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y4))))**(c)))) f5 = ((NAo)/(k*vol*(((NAo/vol)*(1- y5))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y5))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y5))))**(c)))) f6 = ((NAo)/(k*vol*(((NAo/vol)*(1- y6))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y6))))**(b))*(((NAo/vol)*((NCo/NAo)-((

Página 7

Page 98: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADAc/a)*(y6))))**(c)))) f7 = ((NAo)/(k*vol*(((NAo/vol)*(1- y7))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y7))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y7))))**(c)))) f8 = ((NAo)/(k*vol*(((NAo/vol)*(1- y8))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y8))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y8))))**(c)))) f9 = ((NAo)/(k*vol*(((NAo/vol)*(1- y9))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y9))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y9))))**(c)))) f10 = ((NAo)/(k*vol*(((NAo/vol)*(1- y10))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(y10))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(y10))))**(c))))

t0 = 0 t1 = sum(f1)*(0.1-0)/10000 t2 = sum(f2)*(0.2-0)/10000 t3 = sum(f3)*(0.3-0)/10000 t4 = sum(f4)*(0.4-0)/10000 t5 = sum(f5)*(0.5-0)/10000 t6 = sum(f6)*(0.6-0)/10000 t7 = sum(f7)*(0.7-0)/10000 t8 = sum(f8)*(0.8-0)/10000 t9 = sum(f9)*(0.9-0)/10000 t10 = sum(f10)*(0.999-0)/10000

conv = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0] tempo = [t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10]

plt.plot( conv, tempo, 'go') # green bolinha plt.plot( conv, tempo, 'k:', color='black')#linha pontilha orange plt.axis([0, 1, 0, int(t*1.5)]) plt.title("Tempo X Conversao")

plt.grid(True) plt.xlabel("Conversao") plt.ylabel("Tempo(min)") plt.show() if(variavel == 3): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") NAo = input("Digite o valor do Número de Mols inicial do Componente A (mols) ") x = input("Digite a Conversão ") if(x == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ")

Página 8

Page 99: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA if(repet == 2): exit(0) else: repet = 0

NA = NAo*(1-x) print ('O Número de mols do componente A é '),NA,("mols") print("")

if(variavel == 4): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") NAo = input("Digite o valor do Número de Mols inicial do Componente A (mols) ") NBo = input("Digite o valor do Número de Mols inicial do Componente B (mols) ") x = input("Digite a Conversão ") if(x == no or NAo == no or NBo == no): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0

NB = NAo*((NBo/NAo)-(b/a)*x) print ('O Número de mols do componente B é '),NB,("mols") print("")

if(variavel == 5): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") NAo = input("Digite o valor do Número de Mols inicial do Componente A (mols) ") NBo = input("Digite o valor do Número de Mols inicial do Componente B (mols) ") x = input("Digite a Conversão ") if(x == no or NAo == no or NBo == no): repet = input("Não existe dados suficientes para estimar o volume,

Página 9

Page 100: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADAdeseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0

NC = NAo*((NCo/NAo)-(c/a)*x) print ('O Número de mols do componente C é '),NC,("mols") print("")

if(variavel == 6): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") NAo = input("Digite o valor do Número de Mols inicial do Componente A (mols) ") NA = input("Digite o valor do Número de Mols final do Componente A (mols) ") if(b!=0): NBo = input("Digite o valor do Número de Mols inicial do Componente B(mols) ") NB = input("Digite o valor do Número de Mols final do Componente B(mols) ") if(c!=0): NCo = input("Digite o valor do Número de Mols inicial do Componente C(mols) ") NC = input("Digite o valor do Número de Mols final do Componente C(mols) ") x = input("Digite a Conversão ") if(x == no and (NAo == no or NA == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: if(a == 1 and b == 0 and c == 0 and NAo == no): repet = 0 else: if(NAo == no or (b != 0 and NBo == no) or (c != 0 and NCo == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else:

Página 10

Page 101: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA repet = 0

if (x == no): x = 1-(NA/NAo) if(NAo == no): NAo = NA/(1-x) repet1 = 1 while(repet1 == 1): rA = input("Digite o valor da Velocidade de Reação(mol/dm3/min) ") if(rA == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2): exit(0) else: repet1 = 0 repet2 = 1 vol = input("Digite o Volume do Reator(dm3) ") conco = input("Digite a Concentração inicial do componente A ") if(vol == no and conco == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: if(vol == no): vol = NAo/conco repet2 = 0

k = rA /((((NAo/vol)*(1- x))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(x))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(x))))**(c))) if (modelo == 0): print("A Constante de velocidade é "),k,("(mol/dm3/min)") if (modelo == 1): print("A Constante de velocidade é "),k,("(1/min) ") if (modelo == 2): print("A Constante de velocidade é "),k,("(dm3/mol/min) ") if (modelo == 3): print("A Constante de velocidade é "),k,("(dm3/mol)2 * (1/min) ") print("")

if(variavel == 7): repet = 1 while(repet == 1): print("Digite as variáveis solicitadas a seguir com notação decimal,\n" "(Ex: 2.4, 1.0) caso não possua alguma digite \"no\" ") NAo = input("Digite o valor do Número de Mols inicial do Componente A

Página 11

Page 102: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA(mols) ") NA = input("Digite o valor do Número de Mols final do Componente A (mols) ") if(b!=0): NBo = input("Digite o valor do Número de Mols inicial do Componente B(mols) ") NB = input("Digite o valor do Número de Mols final do Componente B(mols) ") if(c!=0): NCo = input("Digite o valor do Número de Mols inicial do Componente C(mols) ") NC = input("Digite o valor do Número de Mols final do Componente C(mols) ") x = input("Digite a Conversão ") if(x == no and (NAo == no or NA == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: if(a == 1 and b == 0 and c == 0 and NAo == no): repet = 0 else: if(NAo == no or (b != 0 and NBo == no) or (c != 0 and NCo == no)): repet = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet == 2): exit(0) else: repet = 0

if (x == no): x = 1-(NA/NAo) if(NAo == no): NAo = NA/(1-x) repet1 = 1 while(repet1 == 1): if (modelo == 0): k = input("Constante de velocidade(mol/dm3/min) ") if (modelo == 1): k = input("Constante de velocidade(1/min) ") if (modelo == 2): k = input("Constante de velocidade(dm3/mol/min) ") if (modelo == 3): k = input("Constante de velocidade(dm3/mol)2 * (1/min) ") if (k == no): repet1 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet1 == 2):

Página 12

Page 103: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

BATELADA exit(0) else: repet1 = 0 repet2 = 1 vol = input("Digite o Volume do Reator(dm3) ") conco = input("Digite a Concentração inicial do componente A ") if(vol == no and conco == no): repet2 = input("Não existe dados suficientes para estimar o volume, deseja colocar\n " "os dados faltantes? Sim(1) ou Não (2) ") if(repet2 == 2): exit(0) else: if(vol == no): vol = NAo/conco repet2 = 0

rA = k*((((NAo/vol)*(1- x))**(a))*(((NAo/vol)*((NBo/NAo)-((b/a)*(x))))**(b))*(((NAo/vol)*((NCo/NAo)-((c/a)*(x))))**(c))) print("A Velocidade de Reação é "),rA,("(mol/dm3/min)")

Página 13

Page 104: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

reatores-programaprogram Reatoresimplicit nonereal::Reator, modelo, variavel, estado, conc, k, x, varvol, FAo, vo, s, conco, conc, volume, NAo,NA, t, vart,dx, f,n, i, NAfcharacter:: Aprint*,'Escolha seu reator: PFR (1),CSTR(2) ou BATELADA (3)'read(*,*)Reatorif (Reator.EQ.2) thenprint*,'Em qual estado a reação se processa?: Liquido(1) ou Gasoso(2) ' read(*,*)estado if (estado.EQ.1) then print*,'Qual das variaveis a seguir você precisa descobrir?: Volume(1), Conversao(2)' && // ' Concentração(3), Vazão-molar(4), Vazão volumétrica(5), constante de velocidade(6) ' read(*,*)variavel if (variavel .EQ. 1)then print*,'O volume será baseado na conversão(1), vazão molar(2) ou concentração(3)?' read(*,*)varvol if (varvol .EQ. 1)then print*,'Digite o valor da Concentração inicial(mol/dm3), Vazão molar inicial(mol/min), Constante de velocidade(1/min),' && // 'Vazão volumétrica inicial(dm3/min) e Conversão(separados por virgula)- Caso não possua algum valor, digite "0"' read(*,*)conco, FAo ,k, vo,x if (FAo .EQ. 0) then FAo = conco*vo end if if (conco .EQ. 0) then conco = FAo/vo end if print*,'Escolha o modelo de lei de velocidade: Ordem zero (0), Primeira ordem(1), Segunda ordem(2) ou terceira ordem(3) 'read(*,*)modelo if (modelo .EQ. 1) then conc = conco*(1-x) Volume = (FAo*x)/(k*conc) print*,'o volume do reator é',volume ,'dm3' print*,'Deseja avaliar o comportamento do Volume em função da Conversão? Sim (1)ou Não(2)' read(*,*)s if (s .EQ. 1)then open (9,file = 'dados.m') write(9,*)'x = 0:0.01:',x,';' write(9,*)'y=(',FAo,'*x)./(',k,'*',conco,'*(1-x));' write(9,*)'plot(x,y,',achar(39),'linewidth',achar(39),',4)' write(9,*)'xlabel(',achar(39),'Conversão',achar(39),',',achar(39),'fontsize',achar(39),',24)' write(9,*)'ylabel(',achar(39),'Volume (dm3)',achar(39),',',achar(39),'fontsize',achar(39),',24)'

Página 1

Anexo 2 - Código em Fortran

Page 105: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

reatores-programa write(9,*)'set(gca,',achar(39),'fontsize',achar(39),',20)' close(9) end if end if end if end if

end if end if

if (Reator.EQ.3) then print*,'Qual das variaveis a seguir você precisa descobrir?: Volume(1), Conversao(2)' print*, 'Número de mols inicial(3),Número de mols(4), Concentração (5), Constante de velocidade(6), Tempo de operação (7)' read(*,*)variavel if (variavel .EQ. 7)then print*,'O tempo será baseado no Número de mols(1), Conversão(2) ou Concentração(3)?' read(*,*)vart if (vart .EQ. 1)then print*,'Digite o número de mols inicial(mols), número de mols final(mols),constante de velocidade(1/min),' print*,'Volume do reator(dm3), Concentração inicial (mols/dm3), Concentração final (mols/dm3)' print*,' - Caso não possua algum valor, digite "0"' read(*,*)NAo,NAf, k, volume ,conco, conc if (NAo .EQ. 0) then NAo = conco * volume end if if (NAf .EQ. 0) then NAf = conc*volume end if print*,'Escolha o modelo de lei de velocidade: Ordem zero (0), Primeira ordem(1), Segunda ordem(2) ou terceira ordem(3) 'read(*,*)modelo if (modelo .EQ. 1) then dx = 0.001 t = 0

n = (NAo-NAf)/dx

Página 2

Page 106: DESENVOLVIMENTO DE SOFTWARE ACADÊMICO PARA ENGENHARIA …repositorio.roca.utfpr.edu.br/jspui/bitstream/1/10373/1/... · 2018-12-10 · Resumo LEANDRO, GEAN C. Desenvolvimento de

reatores-programado i= 1,n

NA = NAf + dx*i f = 1/(NA*k) t = t + f*dx

end do

print*,'O tempo de operação é',t ,'min' print*,'Deseja avaliar o tempo de operação em função do número de mols? Sim (1)ou Não(2)' read(*,*)s if (s .EQ. 1)then open (9,file = 'dados.m') write(9,*)'x = 0:0.01:',NAo-NAf,';' write(9,*)'y=(1/',k,')*(log (x+',NAf,'));' write(9,*)'plot(x,y,',achar(39),'linewidth',achar(39),',4)' write(9,*)'xlabel(',achar(39),'Consumo de NA (mols)',achar(39),',',achar(39),'fontsize',achar(39),',24)' write(9,*)'ylabel(',achar(39),'Tempo(min)',achar(39),',',achar(39),'fontsize',achar(39),',24)' write(9,*)'set(gca,',achar(39),'fontsize',achar(39),',20)' close(9) end if

end if end if end if

end if

print*,'Digite qualquer tecla para fechar o programa'read(*,*)Aend program Reatores

Página 3