Nesse post é feito uma breve revisão sobre o fator de compressibilidade. Também apresenta-se um método iterativo para obtenção de seu valor numérico em dada temperatura e pressão. Um algorítimo de exemplo em USER RPL (HP50g-modo algébrico) é disponibilizado.
O fator de compressão
diz respeito ao desvio entre o comportamento de gases reais e ideais. O modelo
de gás ideal tende a falhar em temperaturas baixas ou altas pressões, necessitando
de correção.
Exemplo de desvio
de comportamento em relação a gases ideais (neste caso nitrogênio)
O fator de compressibilidade é
expresso pela relação:
Existem vários métodos para encontrar o fator de compressibilidade em determinadas condições de pressão e temperatura. O método clássico é buscar a informação em diagramas disponíveis na bibliografia especializada. Um outro método que se baseia numa modificação da equações de estado de Redlich-Kwong é apresentado. Trata-se de um método iterativo.
O algorítimo demonstrado é proposto por Tapan Kumar Sen, publicado por Breno Tresoldi Minzon e Fábio Malavazzi Santilio. O programa original que opera em notação polonesa reversa (RPN) está disponível em http://www.hpcalc.org/details.php?id=5806.
O algorítimo demonstrado é proposto por Tapan Kumar Sen, publicado por Breno Tresoldi Minzon e Fábio Malavazzi Santilio. O programa original que opera em notação polonesa reversa (RPN) está disponível em http://www.hpcalc.org/details.php?id=5806.
A abordagem proposta é iterativa,
tornando interessante a utilização de computadores programáveis. O método
consiste em chutar um valor inicial para “Z” e iterativamente alcançar a
convergência entre as formulas a seguir:
Como geralmente estou interessado em propriedades do ar (compressores, motores a combustão interna) o programa demonstrado está construído para tratar diretamente com esse gás.
Abaixo segue o exemplo em USER RPL, para ser utilizado com a calculadora em modo Algébrico.
<< HEAD(INFORM("fator de compressibilidade",{{"T:","Kelvin",0},{"P:","bar",0}},{1,0},{},{})) \-> L
<< L(1) -> T
<< L(2) -> P
<< 1|>Z ; P/37.71|>Pr ; T/132.65|>Tr ; .00001|>Ge ;
DO .08664*Pr/(Z*Tr)|>k ; 1/(1-k)-4.9339796/Tr^1.5*(k/(1+k))|>Zrk ; Z-Zrk|>E ; Zrk|>Z ;
UNTIL Ge>E
END ; PURGE({'E','Ge','Zrk','k','Tr','Pr'}) ; Z
>>
>>
>>
<< L(1) -> T
<< L(2) -> P
<< 1|>Z ; P/37.71|>Pr ; T/132.65|>Tr ; .00001|>Ge ;
DO .08664*Pr/(Z*Tr)|>k ; 1/(1-k)-4.9339796/Tr^1.5*(k/(1+k))|>Zrk ; Z-Zrk|>E ; Zrk|>Z ;
UNTIL Ge>E
END ; PURGE({'E','Ge','Zrk','k','Tr','Pr'}) ; Z
>>
>>
>>
O programa pode ser baixado no link: Fator de compressibilidade HP50g modo algébrico
Obrigado pelos créditos!
ResponderExcluirOpa, valeu! Fiquei feliz em ver que alguém lê esse blog. Até voltei a postar. Abraços.
ExcluirNo caso Zr é o fator de compressibilidade reduzido?
ExcluirEntendi assim:
1) chuto valor de Z e calculo k
2) na segunda equação, isolo o Zr e substituo o k´
3) vou chutando Z até q o chute fique igual ao valor calculado na 2ª equação?
Abraço.
Guilherme,
ResponderExcluirCreio que o termo Zrk se refira a origem do algoritmo, a equação de estados Redlich-Kwong.
Quanto ao processo você está correto nos passos 1 e 2. Porem, após achar o primeiro valor de Zrk, você deve encontrar o erro do chute, pela diferença entre o que você achou e o seu chute inicial ( E=Z-Zrk). Se esse erro for bem pequeno pode parar a conta. (quanto menor melhor, porem quanto menor maior o gasto computacional). Se o erro ainda estiver alto, você deve prosseguir com um novo chute, usando o valor que você encontrou no chute anterior Z(chute 2)=Zrk(chute 1) ou de forma geral Z(i)=Zrk(i-1). Com o novo Z em mãos retorna no passo 1. Repare que isso é um ciclo, mais conhecido em computação científica como "Loop". Repare que no meu programa eu adotei como critério de parada desse loop ( E=0.00001), mas isso é uma escolha que fica ao critério do programador.