Escolar Documentos
Profissional Documentos
Cultura Documentos
FRANCISCO BELTRÃO
2018
GEAN CARLOS LEANDRO
FRANCISCO BELTRÃO
2018
Ministério da Educação
Universidade Tecnológica Federal do Paraná
Campus Francisco Beltrão
Curso de Engenharia Química
PR
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
TERMO DE APROVAÇÃO
Trabalho de Conclusão de Curso – TCC2
Banca Avaliadora:
_________________________________
Prof. Dra. Michele Di Domenico
Professora do TCC2
Agradeço aos meus orientadores Prof. Dr. Jeconias Rocha Guimaraes e Prof. Dra Ana
Paula 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 imensamente
durante a produção deste trabalho, permitindo diversas vezes alterações de horário, para que eu
priorizasse esta atividade.
Também gostaria de lembrar do Professor Gustavo Yuji Sato que sempre que possível
me auxiliava em algumas questões bem específicas sobre a área de programação e que foram
cruciais para a finalização deste trabalho.
Gostaria de deixar registrado também, o meu reconhecimento à minha família, pois
acredito 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.
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ão
simples 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.).
Resumo
1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Acessibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Conhecimento Específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1 Acessibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Conhecimento Específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Fundamentação Teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1 Cálculo de Reatores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.2 Linguagens de Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2.1 Fortran x Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.1 Estudo Direcionado Sobre Cálculo de Reatores . . . . . . . . . . . . . . . . . 24
6.2 Estudo Direcionado Sobre as Linguagens de Programação . . . . . . . . . . . . 24
6.2.1 Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.2.2 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.3 Construção do Código do Programa . . . . . . . . . . . . . . . . . . . . . . . 27
7 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1 Exemplo de Exercício Para o Programa em Base Fortran . . . . . . . . . . . . 30
7.1.1 Resolução Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2 Resolução Pelo Software . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.2 Exemplo de Exercício Para o Programa em Base Python . . . . . . . . . . . . 32
7.2.1 Resolução Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.2.2 Resolução Pelo Software . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.3 Regras de utilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Anexos 44
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 exemplo
as 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 forma
dificultou o seu acesso, devido à falta de ferramentas práticas para sua difusão. Esta realidade
reflete no sistema educacional, principal responsável pela transmissão de conhecimento, que
busca facilitar o acesso à informação através de tecnologias (BENFATTI, 2010). No campo do
ensino, 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 do
computador, o quadro negro também compete espaço com as novas ”telas” que permitem maior
interação entre professor e aluno, com ferramentas que possibilitam espectros diferentes de
aprendizagem. (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 seja
absorvido 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 velhas
certezas. ” (KENSKI, 2001).
A engenharia química também é constantemente inovada e acompanha a tendência de
utilizaçã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áginas
web 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 que
o 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 a
formaçã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 em
disciplinas durante a graduação, é um interessante campo de pesquisa a ser trilhado.
11
2 Problema
2.1 Acessibilidade
3 Justificativa
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 pode
obter de forma gratuita a ferramenta, possibilitando o acesso a um número consideravelmente
maior 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-o
da maneira que lhe for viável e interessante.
4 Objetivos
5 Fundamentação Teórica
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 das
propriedades de qualquer reator é o balanço molar, não obstante (FOGLER, 2016) o considera
um dos pilares da engenharia das reações químicas (Figura 1).
Balanço Molar na
Reator Comentário Forma Algébrica Forma Integral
Forma Diferencial
BR
CSTR
aA + bB = cC + dD (5.4)
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 é fornecida
através de dados experimentais, porém também pode ser determinada através de análise das
propriedades específicas e etapas da reação (SCHMAL, 2017). Ainda utilizando como base a
reação genérica, na tabela 2, apresentam-se exemplos das unidades adotadas para a velocidade
específica de acordo com a ordem de reação (FOGLER, 2016).
L
2a Ordem −rA = kCA 2 k( molh )
L 2
3a Ordem −rA = kCA 3 k( mol ) h
Correlações -
∙ F A = CA * v ;
∙ F A0 = CA0 * v0 ;
NA
∙ CA = V (nos casos onde não existe variação de volume);
∙ F A = F A0 − (1 − x);
NA NB NC ND
= = = (5.6)
a b c d
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 cada
componente, baseando-se no número de mols de entrada (Ni0 ) e saída (Ni ), conforme a equação 5.7.
N i0 − N i
Xi = (5.7)
N i0
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ário
expressar 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 de
cada componente na tabela 3 (FOGLER, 2016).
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.
A CA0 −CA0 X
B CB0 − ab X(CA0 X)
C CC0 + ac X(CA0 X)
D CD0 + da X(CA0 X)
Tabela 4 – Relação da concentração final para cada espécie com variação de volume.
(1−X) T0 P
A CA0 (1+ξ X) T P0
CB0
!
CA0 −( ba )X T
B CA0 0 P
1+ξ X T P0
CC0
!
CA0 +( ac )X T
C CA0 0 P
1+ξ X T P0
CD0
!
CA0 +( da )X T
D CA0 0 P
1+ξ X T P0
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.
Capítulo 5. Fundamentação Teórica 21
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 de
conhecimento, 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 foram
criadas, 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 foi
crescente a utilização de liguagens como a C e Fotran denominadas linguagens procedurais e
ainda utilizadas atualmente (GUDWIN, 1997).
Destaca-se o avanço na área da computação, após a criação do IBM 704, possibilitando
a introdução de uma linguagem de alto nível a partir do desenvolvimento do Fortran (formula
translation). 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 programadores
migrassem para linguagens que possuíssem versões mais modernas. Foi então que em 1990 o
Fortran recebe uma estrutura modernizada que possibilitou novamente a exploração mais afinca
desta linguagem (FERNANDES, 2003).
(FERNANDES, 2003), ressalta ainda que a programação em Fortran é simples e que a
dificuldade 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 programador
utiliza do pensamento lógico e estrutura as ideias antes de formular seu código. Porém, por ser
considerada 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ço
entre os usuários e programadores, pois permitem uma integração maior de profissionais a área
de computação. A exemplo disso pode-se citar a linguagem Python, umas das mais utilizadas
na atualidade.
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, como
um 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 linguagem
mais próxima da realidade do usuário e facilita o pensamento lógico. (ZELLE, 2002), explica
de maneira interessante a utilização das linguagens interpretadas:
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, quais
as relações entre as grandezas envolvidas e de que forma é possível traduzir essas informações
para 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 linguagens
de programação e construção do código do programa.
de valores. Dessa maneira, o programa recebe as informações dadas pelo usuário e as compara
para a próxima tomada de decisão. Todavia, cada linguagem possui uma estrutura diferente da
outra, de maneira que se mostrou necessário um estudo detalhado de cada tipo de linguagem
para elaboração do software. Nos tópicos a seguir mostra-se um detalhamento dos comandos
que foram usados para cada linguagem:
6.2.1 Fortran
∙ 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, de
maneira que se a avaliação for verdadeira executa um tipo de ação, caso contrário executa
outra.
6.2.2 Python
∙ if (==) - Compara determinada variável com outra variável, valor ou caractere, de maneira
que se a avaliação for verdadeira executa um tipo de ação, caso contrário executa outra.
∙ While – Comando utilizado para criar laços de repetição, enquanto a condição de uma
variável não se altera.
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.
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.
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 a
inserção de dados ocorre de maneira simples. Testou-se os programas com exercícios genéricos
para avaliar a exatidão dos cálculos desenvolvidos e estes mostraram-se coerentes tanto para o
programa em Python quanto para o desenvolvido em Fortran.
Quando digitadas corretamente as informações solicitadas, o programa apresenta bom
funcionamento e retorna ao usuário a resposta ao parâmetro solicitado, caso contrário, este
solicita 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 programa
permite a reinserção de um conjunto de dados. É interessante destacar que as relações existentes
entre as propriedades estão inseridas no código, desta forma mesmo que o usuário não possua
ou 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 do
programa, elaborou-se exercícios para os três tipos de reatores trabalhados e também foi feita a
comparação entre a resolução manual e pelo software.
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 10
para 1, de uma espécie em um reator batelada. Onde a reação A → B é irreversível e a constante
1
de velocidade é de 0.023 ( min )”
O primeiro passo a ser tomado é identificar o balanço molar para o reator Batelada. No
exercício foi dado o número de mols de entrada e sáida, desta forma podemos calcular o tempo
de operação pela relação disponível na tabela 1.
dNA
= rAV (7.1)
dt
A velocidade de reação pode é descrita pela relação da equação 7.2.
NA
CA = (7.3)
V
Substituindo a equação 7.3 na equação 7.2 obtem-se:
kNA
−rA = (7.4)
V
Substituindo a equação 7.4 no balanço molar:
dNA kNA
= V (7.5)
dt V
Quando resolvido chegamos a seguinte equação:
NA0
ln NA1
t= (7.6)
k
Substituindo os valores fornecidos pelo problema na equação 7.6, chegamos na equação
final:
10mols
ln 1mols
t= (min) = 100, 11min (7.7)
0.023
O tempo necessário para reduzir o número de mols de 10 para 1 neste reator batelada é
de aproximadamente 100 min.
Figura 10 – Solicitação do tipo de reator pelo programa em base Fortran. Fonte: Autor.
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 programa
em base Fortran. Fonte: Autor.
Agora é necessário informar os dados do exercicío para que o programa possa estimar
a 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).
O valor obtido pelo programa está de acordo com o resultado obtido efetuando o cálculo
manualmente que é de aproximadamente 100 min de operação.
reação direta elementar é A → B. Estime o volume para um reator CSTR e depois para um PFR,
1
para atingir uma conversão de 80 %. Dados: k = 0.2( min ).”
O primeiro passo a ser tomado é identificar os balanços molares para o reator CSTR e
PFR. No exercício foi dada a conversão, desta forma podemos calcular o volume dos reatores
relações disponíveis na figura 6.
PRF:
dX −rA
= (7.8)
dV FA0
CSTR:
FA0 X
V= (7.9)
−rA
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)
FA0 X
V= (7.12)
kCA0 (1 − X)
Temos a seguinte correlação para o fluxo molar:
Substituindo a equação 7.13 na equação 7.12 obtem-se a seguinte expessão para o ba-
lanço molar:
CA0 v0 X v0 X
V= = (7.14)
kCA0 (1 − X) k(1 − X)
Capítulo 7. Resultados 34
dm3
10 * 0.8 min
V= 0.2
= 200dm3 (7.15)
min (1 − 0.8)
dX kCA0 (1 − X)
= (7.16)
dV FA0
Substituindo a equação 7.13 que correlaciona o fluxo molar com a concentração, na
equação 7.16 obtem-se a seguinte expessão para o balanço molar:
dX kCA0 (1 − X)
= (7.17)
dV CA0 v0
Resolvendo a equação 7.17:
v0
V= ln(1 − X) (7.18)
k
Substituindo os valores fornecidos pelo problema na equação 7.18, chegamos na equa-
ção final:
dm3
10 min
V= 0.2
ln(1 − 0.8) = 80dm3 (7.19)
min
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.
Não ocorre variação do volume para esta reação, logo podemos considerar que ocorre
no estado líquido (Figura 19).
Solicita-se a variável volume, conforme a figura 20 para determinar a propriedade re-
Capítulo 7. Resultados 36
Figura 21 – Inserção dos dados necessários para calcular a propriedade solicitada pelo usuário.
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 reator
CSTR com a conversão. Fonte: Autor.
Para o PRF o procedimento é o mesmo que para o CSTR, apenas o primeiro passo se
difere, pela escolha de outro modelo de reator. A figura 25 mostra o procedimento completo e
a figura 26 o gráfico que avalia o comportamento do volume de um PFR conforme a conversão.
Capítulo 7. Resultados 38
Figura 26 – Gráfico plotado pelo programa em base Python, relacionando o volume do reator
PFR com a conversão. Fonte: Autor.
40
8 Considerações Finais
Referências
SILVA, W. Um tutorial de programação em visual Fortran. [S.l.], 2008. Citado na página 21.
inicio = 1
while (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
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 s
from graphics import *
def main():
win = GraphWin("My Window", 700,500)
#win.setBackground(color_rgb(0, 0, 0))
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
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 np
import matplotlib.pyplot as plt
from sympy import *
init_printing()
X, y = symbols('x y') #define x e y como variáveis simbólicas.
no = 123456
print("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
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
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
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
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*((CB
o/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)))))
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
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("")
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.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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 np
import matplotlib.pyplot as plt
no = 123456
print("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
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
CSTR
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)
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
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
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.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
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("")
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
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)
if(variavel == 5):
repet = 1
Página 10
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
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
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
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
CSTR
else:
FC = (FAo*((FCo/FAo)-((c/a)*x)))
repet = 0
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
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
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
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
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
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
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
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 np
import matplotlib.pyplot as plt
from 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 = 123456
print("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
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
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
Página 3
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
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
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.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
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
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
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
BATELADA
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))))
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.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
BATELADA
if(repet == 2):
exit(0)
else:
repet = 0
NA = NAo*(1-x)
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)
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
BATELADA
deseja 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)
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
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
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
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)))
Página 13
Anexo 2 - Código em Fortran
reatores-programa
program Reatores
implicit none
real::Reator, modelo, variavel, estado, conc, k, x, varvol, FAo, vo, s, conco,
conc, volume, NAo,NA, t, vart,dx, f,n, i, NAf
character:: A
print*,'Escolha seu reator: PFR (1),CSTR(2) ou BATELADA (3)'
read(*,*)Reator
if (Reator.EQ.2) then
print*,'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',ach
ar(39),',24)'
write(9,*)'ylabel(',achar(39),'Volume
(dm3)',achar(39),',',achar(39),'fontsize',achar(39),',24)'
Página 1
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"'
dx = 0.001
t = 0
n = (NAo-NAf)/dx
Página 2
reatores-programa
do i= 1,n
NA = NAf + dx*i
f = 1/(NA*k)
t = t + f*dx
end do
write(9,*)'ylabel(',achar(39),'Tempo(min)',achar(39),',',achar(39),'fontsize',ac
har(39),',24)'
write(9,*)'set(gca,',achar(39),'fontsize',achar(39),',20)'
close(9)
end if
end if
end if
end if
end if
Página 3