sexta-feira, 17 de maio de 2013

Fator de Compressibilidade para o AR (exemplo de programção naHP50g)


      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.
       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:


       Onde Pr é a pressão reduzida, dada por Pr= P/Pc. Tr é a temperatura reduzida, dada por Tr=T/Tc. As constantes Pc e Tc são a pressão critica e a temperatura critica do gás. Os valores para alguns gases são apresentados na tabela abaixo.




       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
    >>
  >>
>>

O programa pode ser baixado no link: Fator de compressibilidade HP50g modo algébrico

4 comentários:

  1. Respostas
    1. Opa, valeu! Fiquei feliz em ver que alguém lê esse blog. Até voltei a postar. Abraços.

      Excluir
    2. No caso Zr é o fator de compressibilidade reduzido?
      Entendi 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.

      Excluir
  2. Guilherme,

    Creio 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.

    ResponderExcluir