• Nenhum resultado encontrado

Desempenho das formulações

No documento Universidade do Estado do Rio de Janeiro (páginas 97-143)

Figura 12 – Curva de ponto de bolha para abordagem gama phi usando coeficiente de atividade UNIFAC

Fonte: O autor, 2016.

Na Equação (286), é o número de pontos testados. Com base nestas expressões da Equação (286), os desvios entre os cálculos realizados e os dados experimentais foram analisados e podem ser vistos na Tabela 9.

Tabela 9 – Desvio percentual médio de cada algoritmo

Algoritmo ∆ % ∆ % Tempo de

execução (segundos) Igualdade de

fugacidades 0.109897 1.85742 6,891

Gama-phi: NRTL 0.157056 3.76116 13,516 Gama-phi: UNIFAC 0.0477739 1.32553 21,359

Fonte: O autor, 2016.

Avaliando a Tabela 9, percebe-se duas coisas: primeiro, a abordagem que utiliza o modelo NRTL para o cálculo do coeficiente de atividade apresenta um erro médio na composição maior que o dobro do que nos presentes nos algoritmos que empregam o modelo UNIFAC. Não só a composição, mas a temperatura de ponto de bolha também exibe maior desvio no NRTL.

Segundo, nota-se que a as abordagens gamma-phi exibiram um maior tempo de execução que a baseada na abordagem igualdade de fugacidades; assim, do ponto de vista de otimização, esta última demonstra ser uma função objetivo menos desafiadora para alcançar o mínimo global e permitir ao algoritmo finalizar a execução.

CONCLUSÃO

Este trabalho abordou métodos disponíveis para calcular as curvas de ponto de bolha e de orvalho na mistura água/etanol e realizou o cálculo das curvas de ponto de bolha. Para tal, formulou-se um arcabouço teórico no qual estes cálculos dão origem a um problema de otimização, que é resolvido utilizando um método de otimização global estocástica – o algoritmo Differential Evolution.

De forma a embasar a formulação desde seus princípios, o desenvolvimento passou pela termodinâmica clássica, pela teoria matemática subjacente e pelas suas ramificações na área do equilíbrio químico – tendo sido inclusive os seus primórdios abordados a partir do postulado da maximização da entropia. Este postulado é o que, em última instância, leva ao conceito de que haverá equilíbrio químico quando se atinge igualdade de potencial químico. O papel fundamental deste potencial enquanto determinante do equilíbrio químico foi exposto, bem como sua ligação com a energia livre de Gibbs e a fugacidade.

Os modelos então foram apresentados: formas de modelar fenômenos empíricos em correlações coerentes que fornecessem coeficientes de fugacidade, atividade e que melhor ajustassem equações de estado aos dados reais.

Apresentou-se a correlação virial para coeficiente de fugacidade e NRTL e UNIFAC para o coeficiente de atividade, bem como a correlação de Antoine para pressão de saturação e as regras de mistura de Wong Sandler.

Na primeira abordagem desenvolvida, foram empregadas equações de estado cúbicas no cálculo das fugacidades, enquanto que na segunda elas são dispensáveis: o cálculo de fugacidades se dá por meio de outras vias.

A formulação de como transformar um problema de equilíbrio em um problema de otimização foi exposta em detalhe, bem como o algoritmo de otimização empregado em ambos os casos testados. Na seção anterior de resultados foi possível comparar as abordagens entre si e constata-se através da Tabela 9 que a abordagem gamma-phi usando o coeficiente de atividade NRTL é a com maior acuidade, enquanto que a de mais veloz convergência é a formulação de igualdade de fugacidades.

Assim, a abordagem gamma-phi revela-se mais promissora para a mistura examinada. Um achado na Tabela 9 é que em ambas as abordagens na qual o

UNIFAC foi empregado, percebe-se um desempenho superior ao NRTL em acuidade. Isso, unido ao poder preditivo intrínseco do modelo, transforma-o no modelo de coeficiente de atividade mais interessante na simulação da mistura em questão.

REFERÊNCIAS BIBLIOGRÁFICAS

ABBOTT, Michael M.; SMITH, Joseph M.; VAN NESS, Hendrick C. Introduction to chemical engineering thermodynamics.6th ed. Boston: McGraw-Hill, 2001.

BARUFATTI, Nelza E; HENDERSON, Nélio; SACCO, Wagner F. Sacco. The Least Dot Products method: A new numerical paradigm for phase stability analysis of thermodynamic mixtures. Chemical Engineering Science, [s. l.], v. 66, n. 22, p.

5684 – 5702, nov. 2011.

BERTSEKAS, Dimitri P. Nonlinear Programming. 2nd ed. Belmont: Athena Scientific, 1999.

BOERIO-GOATES, Juliana; OTT, J. Bevan. Chemical Thermodynamics: Advanced Applications. In: ______. Chemical Thermodynamics: Principles and

Applications. [S. l.]: Elsevier, 2000. V. 2

BRASIL. Secretaria de Educação à Distancia. Rede Interativa Virtual de Educação.

Algoritmo genético aplicado à P-medianas: aula 1. [Brasília?]: RIVED, [s.d.].

Fonte: Cruzamento de dois indivíduos num AG Simples. Disponível em

<http://rived.mec.gov.br/atividades/biologia/externos/AGPM/AGPMaula1.htm>.

Acesso em 19 jul. 2016.

BROWN, Sanborn C. Men of Physics: Benjamin Thompson–Count Rumford: Count Rumford on the Nature of Heat. Exeter: Pergamon Press, 1967.

CALLEN, Herbert. B. Thermodynamics and an Introduction to Thermostatistics.

2nd ed. Singapura: John Wiley, 1985.

CARNOT, Sadi. Reflections on the motive force of fire: and other papers on the second law of thermodynamics by E. Clapeyron and R. Clausius. 2nd reimpr. Mineola:

Dover, 1988.

CLAUSIUS, Rudolf. The mechanical theory of heat: with its applications to the steam-engine and to the physical properties of bodies. London: Macmillan, 1879.

CURL, R. F.; PITZER, Kenneth S. The volumetric and thermodynamic properties of fluids for the second virial coefficient. Journal of the American Chemical Society.

[s. l.], v. 79, n. 10, p. 2369 – 2370, mai. 1957.

DDBST - Dortmund Data Bank Software & Separation Technology GmbH.

Parameters of the Original UNIFAC Model. Disponível em:

<http://www.ddbst.com/published-parameters-unifac.html>. Acesso em: 16 jul. 2016.

DE AZEVEDO, Edmundo Gomes; LICHTENTHALER, Rudiger N.; PRAUSNITZ, John M. Molecular thermodynamics of fluid-phase equilibria. 2nd ed. Englewood Cliffs: Prentice – Hall, 1986.

DEFAY, R.; PRIGOGINE; i. Chemical thermodynamics. London: Longmans, 1954.

ESCANDELL, Joan; NEAU, Evelyne; RASPO, Isabelle. A generalized reference state at constant volume for the prediction of phase equilibria from low pressure model parameters: Application to size-asymmetric systems and to the Wong-Sandler mixing rule. Chemical Engineering Science. [s. l.], v. 66, n. 18, p. 4148 – 4156, set.

2011.

GIBBS, Josiah W. Elementary principles in statistical mechanics. New York:

Charles Scribner, 1902.

______. The scientific papers of J. Willard Gibbs. London: Longmans, 1906. 2v.

GMEHLING, Juergen; LOHMANN, Juergen; WITTIG, Roland. Vapor-liquid equilibria by UNIFAC group contribution. 6. Revision and extension. Industrial & engineering chemistry research, [s. l.] v. 42, n. 1, p. 183-188, 2003.

GOLDBERG, David E.; HOLLAND, John H. Genetic algorithms and machine learning. Machine learning, v. 3, n. 2, p. 95-99, 1988.

HAYDEN, George J.; O’CONNELL, John P. A Generalized Method for Predicting Second Virial Coefficients. Industrial & Engineering Chemistry Process Design and Development, [s. l.], v. 14, n. 3, p. 209 – 216, jul. 1975.

HENDERSON, Nélio; PLATT, Gustavo M.; SACCO, Wagner F. Finding more than one root of nonlinear equations via a polarization technique: An application to double retrograde vaporization. Chemical Engineering Science, [s. l.], v. 88, n. 5, p. 551 – 561, may 2010.

HENLEY, Ernest J; SEADER, Junior D. Separation process principles. 2nd ed.

Hoboken: John Wiley, 2006.

HURON, Marie-José; VIDAL, Jean. New mixing rules in simple equations of state for representing vapour-liquid equilibria of strongly non-ideal mixtures. Fluid Phase Equilibria, Amsterdam, v. 3, n. 4, p. 255 – 271, 1979.

IKEDA, Michael. Numerical simulation of vapor-liquid equilibria of a water- ethanol mixture. 2010. 208 f. Dissertação (Mestrado em Engenharia Mecânica) - Escola de Engenharia Swanson, Universidade de Pittsburgh. Pittsburg (PA), 2010.

KHODAKARAMI, Behzad; LOTFOLLAHI, Mohammad Nader; MODARRESS, Hamid.

VLE Predictions of Strongly Non-Ideal Binary Mixtures by Modifying Van Der Waals and Orbey Sandler Mixing Rules. Iranian Journal of Chemistry and Chemical Engineering, [s. l.], v. 26, n. 3, p. 73 – 80, ago. 2007.

KIRKWOOD, John G; OPPENHEIM, Irwin. Chemical Thermodynamics. New York:

McGraw-Hill, 1961.

KOJIMA, Kazuo; KURIHARA, Kiyofumi; NAKAMICHI, Mikiyoshi. Isobaric Vapor – Liquid Equilibria for Methanol + Ethanol + Water and the Three Constituent Binary

Systems. Journal of Chemical and Engineering Data, Tokyo, v. 38, n. 3, p. 446 – 449, 1993.

KWONG, J. N. S.; REDLICH, Otto. On the thermodynamics of solutions. An Equation of state. Fugacities of gaseous solutions. Chemical Reviews, [s. l.], v. 44, n. 1, p.

233 – 244, fev. 1949.

LAMPINEN, Jouni A.; PRICE, Kenneth V.; STORN, Rainer M. Differential Evolution: a practical approach to global optimization. Berlin: Springer – Verlag, 2005.

LEWIS, Gilbert Newton et al. Thermodynamics and the free energy of chemical substances. New York: McGraw-Hill, 1923.

MENEGUZZO, Julio; RIZZON, Luiz Antenor; MANFROI, Vitor. Sistema de produção de graspa. Sistema de produção, Bento Gonçalves, RS, v. 14, dez. 2006.

Disponível em:

<https://sistemasdeproducao.cnptia.embrapa.br/FontesHTML/Graspa/SistemaProdu caoGraspa/alambique.htm>. Acesso em: 3 jul. 2016.

MORAN, Michael J. et al. Fundamentals of engineering thermodynamics. 7th ed.

Hoboken: John Wiley, 2011.

MÜLLER, Ingo; MÜLLER, Wolfgang H. Fundamentals of thermodynamics and applications: with historical annotations and many citations from Avogadro to Zermelo. Chennai: Springer, 2009.

NASRIFAR, Khashayar; MOSHFEGHIAN, Mahmood. Vapor – Liquid Equilibria of Binary Associating Fluids Using a Cubic Equation of State with Limited Data.

Industrial & Engineering Chemistry Reasearch, [s. l.], v. 53, n. 5, p. 2052 – 2061, jan. 2014.

O’CONNELL, John P.; POLING, Bruce E.; PRAUSNITZ, John M. The properties of gases and liquids. 5th ed. New York: McGraw-Hill, 2001.

PENG, Ding-Yu; ROBINSON, Donald B. A new two-constant equation of state.

Industrial & Engineering Chemistry Fundamentals, [s. l.], v. 15, n. 1, p. 59 – 64, fev. 1976.

PERAKIS, Christophoros et al. Thermodynamic modeling of the vapor-liquid

equilibrium of the water/etanol/CO2system. Fluid Phase Equilibria, [s. l.], v. 243, n.

1, p. 142 – 150, mar. 2006.

PEREIRA, Félix Monteiro. Equações de estado. Apostila. Disponível em:

<http://sistemas.eel.usp.br/docentes/arquivos/5817066/LOQ4087/EDE.pptx>.

Acesso em: 3 jul. 2016.

PRICE, Kenneth; STORN, Rainer. Differential evolution-a simple and efficient adaptive scheme for global optimization over continuous spaces. Berkeley:

International Computer Science Institute (ICSI), 1995. 12 p. Relatório técnico.

PSE - PROCESS SYSTEMS ENTERPRISE LTD. Advanced model library: GLC – Gas-Liquid Contactors. [s.d.] Disponível em:

<http://www.psenterprise.com/processbuilder/libraries/aml_glc.html>. Acesso em: 3 jul. 2016.

RENON, Henri; PRAUSNITZ, John M. Local compositions in thermodynamic excess functions for liquid mixtures. AIChE journal, [s. l.], v. 14, n. 1, p. 135-144, 1968.

SANDLER, Stanley I. et al. Chemical, biochemical, and engineering thermodynamics. 4th ed, Hoboken, NJ: John Wiley, 2006.

SANDLER, Stanley I. Microbial Growth Thermodynamics. Fluid Phase Equilibria, [s.

l.], v. 70, n. 2, p. 141 – 163, 1991.

SMITH, Richard; INOMATA, Hiroshi; PETERS, Cor. Introduction to supercritical fluids: a spreadsheet-based approach. Amsterdam: Elsevier, 2013.

SOAVE, Giorgio. Equilibrium constants from a modified Redlich-Kwong equation of state. Chemical Engineering Science, [s. l.], v. 27, n. 6, p. 1197 – 1203, jun. 1972.

TASSIOS, Dimitrios P. Applied Chemical Engineering Thermodynamics. New York: Springer-Verlag, 1993.

TSONOPOULOS, Constantine. An empirical correlation of second virial coefficients.

AIChE Journal, [s. l.], v. 20, n. 2, p. 263-272, mar. 1974.

VIDAL, Jean. Thermodynamics: Applications in chemical engineering and the petroleum industry. [s.l.]: Editions Technip, 2003.

WEINHOLD, Frank. Classical and geometrical theory of chemical and phase thermodynamics. Hoboken: John Wiley, 2009.

WHITTAKER, Edmund. A History of the Theories of Aether and Electricity.

London: Longman; Dublin: Hodges, Figgis & Co.,1910.

WONG, David S. H.; SANDLER, Stanley I. A theoretically correct mixing rule for cubic equations of state. AIChE Journal, [s. l.], v. 38, n. 5, p. 671 – 680, mai. 1992.

YAWS, Carl L. Thermophysical properties of chemicals and hydrocarbons. [s.l.]:

William Andrew, 2008.

APÊNDICE A – Arquivos do código fonte da abordagem “igualdade de fugacidades”

Arquivo main.cpp

Este arquivo é o responsável pela formulação da abordagem igualdade de fugacidades, que pode ser vista em na função real Fitness (vector<real>& _var); o vector<real> de argumentos _var recebe dados diretamente do algoritmo de otimização e devolve para ele, baseado na formulação desenvolvida, um valor que revela o quão próximas do equilíbrio as tentativas do algoritmo genético estão.

#include <vector>

#include <fstream>

#include <iostream>

typedef double real;

using namespace std;

#define R 83.14 //unidades: (bar cc)/(mol Kelvin)

#define pi 3.14159265358979

#include <opt_DE.h>

#include <funcoes_com_vector.h>

#include <peng_robinson_ws_grs_cv.h>

real Fitness(vector<real>& _var);

vector<real> a_, b_; //coeficientes do termo polar do segundo coeficiente virial vector<real> Pc_;

vector<real> Tc_;

vector<real> omega_;

vector<real> x, y;

real T, P;

int main() {

string nome_arq_saida("output_UNIFAC.txt"); //string com o nome do arquivo que sera criado ofstream fluxo_saida; //fluxo de dados de saida

fluxo_saida.open(nome_arq_saida.c_str()); //gerando o arquivo Inicializar_UNIFAC(2,4);

unsigned evals(0);

real desvio_T, desvio_y;

vector<real> saida;

vector<real> param;

vector<real> ln_phi_L, ln_phi_V;

vector<real> data;

vector<real> eixo_x, eixo_y;

vector<real> x_in, y_in, P_in, T_in;

vector< intervalo<real>> limites;

intervalo<real> inter;

inter.Definir_intervalo(0, 1.0);

limites.push_back(inter);

limites.push_back(inter);

param.resize(5);

param[0] = 100; //população;

param[1] = 0.5; //perturbação;

param[2] = 1.0; //taxa de crossover;

param[3] = 300; //máximo de gerações (critério de parada) param[4] = 1E-6; //tolerância (critério de parada)

//indice 0: agua //indice 1: etanol

Pc_.push_back(220.64000); //bar Pc_.push_back(61.48000); //bar Tc_.push_back(647.29); //kelvin Tc_.push_back(513.92); //kelvin

omega_.push_back(0.344); //agua omega_.push_back(0.649); //etanol

//18 pontos a 14 psi

inter.Definir_intervalo(300, 500);

limites.push_back(inter);

x_in.push_back(0.056);

x_in.push_back(0.091);

x_in.push_back(0.189);

x_in.push_back(0.286);

x_in.push_back(0.323);

x_in.push_back(0.331);

x_in.push_back(0.419);

x_in.push_back(0.512);

x_in.push_back(0.62);

x_in.push_back(0.704);

x_in.push_back(0.715);

x_in.push_back(0.798);

x_in.push_back(0.843);

x_in.push_back(0.847);

x_in.push_back(0.849);

x_in.push_back(0.884);

x_in.push_back(0.908);

x_in.push_back(0.922);

y_in.push_back(0.366);

y_in.push_back(0.448);

y_in.push_back(0.539);

y_in.push_back(0.582);

y_in.push_back(0.6);

y_in.push_back(0.605);

y_in.push_back(0.627);

y_in.push_back(0.666);

y_in.push_back(0.712);

y_in.push_back(0.759);

y_in.push_back(0.764);

y_in.push_back(0.818);

y_in.push_back(0.851);

y_in.push_back(0.854);

y_in.push_back(0.856);

y_in.push_back(0.886);

y_in.push_back(0.907);

y_in.push_back(0.92);

T_in.push_back(362.19);

T_in.push_back(359.26);

T_in.push_back(356.33);

T_in.push_back(354.89);

T_in.push_back(354.46);

T_in.push_back(354.41);

T_in.push_back(353.59);

T_in.push_back(352.85);

T_in.push_back(352.16);

T_in.push_back(351.74);

T_in.push_back(351.7);

T_in.push_back(351.41);

T_in.push_back(351.37);

T_in.push_back(351.37);

T_in.push_back(351.36);

T_in.push_back(351.34);

T_in.push_back(351.33);

T_in.push_back(351.33);

for(unsigned i = 0; i < 18; i++) {

P_in.push_back(14.69232345679478);

}

x.resize(2);

y.resize(2);

desvio_T = 0;

desvio_y = 0;

fluxo_saida << "x_in y_in y[1] T(Kelvin) T_in[1]"; //escrevendo dados do grafico for (unsigned i = 0; i < x_in.size(); i++)

{

//indice 0: agua //indice 1: etanol x[1] = x_in[i];

x[0] = 1.0 - x[1];

P = P_in[i] * 6894.757; //conversao: PSI para Pascal P /= 1E5; //conversao: Pascal para bar

saida = Opt_DE(Fitness, param, limites, 1983, 1); //problema de ponto de bolha y[0] = saida[0];

y[1] = saida[1];

T = saida[2];// - 273.15;

evals += saida[3];

//P /= 6894.757;

//P /= 1000; //conversao: Pascal para kiloPascal

fluxo_saida << "\n" << x_in[i] << ", " << y_in[i] << ", " << y[1] << ", " << T << ", " << T_in[i]; //escrevendo dados do grafico //fluxo_saida << "\n" << x[0] << ", " << x[1] << ", " << y[0] << ", " << y[1] << ", " << T; //escrevendo dados do grafico

cout << "iteracao atual: " << i << endl;

cout << y_in[i] << " " << y[1] << " " << T << " " << evals << " y[0]+y[1]="<< y[0]+y[1] << endl;

desvio_y += abs(100.0*(y_in[i] - y[1])/y_in[i]);

desvio_T += abs(100.0*(T_in[i] - T)/T_in[i]);

}

desvio_T /= y_in.size();

desvio_y /= y_in.size();

fluxo_saida << "\n\nDesvio de temperatura na curva de bolha: " << desvio_T << endl;

fluxo_saida << "\nDesvio de composicao na curva de bolha: " << desvio_y << endl;

fluxo_saida << "\nNumero de evaluacoes da funcao objetivo: " << evals << endl;

fluxo_saida.close(); //fecha o arquivo

printf("\nDesvio na temperatura: %lf", desvio_T);

printf("\nDesvio na composicao: %lf", desvio_y);

printf("\nNumero de evaluacoes da funcao objetivo: %d\a", evals);

}

//problema de ponto de bolha real Fitness(vector<real>& _var) {

vector<real> ln_phi_L, ln_phi_V;

real nc, soma_ln, soma_y, L, V, p, k;

nc = Pc_.size();

y[0] = _var[0];

y[1] = _var[1];

T = _var[2];

ln_phi_L = Ln_phi_PR_WS_GRS_CV(Pc_, Tc_, omega_, x, P, T, 0);

ln_phi_V = Ln_phi_PR_WS_GRS_CV(Pc_, Tc_, omega_, y, P, T, 1);

soma_ln = 0;

for(unsigned i = 0; i < nc; i++) {

L = ln_phi_L[i] + log(x[i]);

V = ln_phi_V[i] + log(y[i]);

soma_ln += ((L - V)*(L - V));

}

soma_ln *= 10.0;

soma_y = Somatorio(y) - 1.0;

soma_y = 100.0*soma_y*soma_y;

k = pi/(2.0*0.01);

p = abs(atan(k*(x[0] - y[0]))*atan(k*(x[1] - y[1])));

return (soma_ln+soma_y)/p;

}

Arquivo peng_robinson_ws_grs_cv.h

Este arquivo segue a formulação termodinâmica desenvolvida por Escandell, Neau e Raspo (2011) com a equação cúbica de estado de Peng e Robinson e com isso fornece energia de Gibbs de excesso molar , fatores de compressibilidade , e coeficientes de fugacidade líquido e gasoso .

#include <vector>

#include <cmath>

typedef double real;

#include <raiz_z_cubica.h>

#include <unifac_agua_etanol.h>

#include <funcoes_com_vector.h>

//energia de Gibbs de Excesso molar, em forma adimensional

real g_E_UNIFAC(vector<real> _x, //frações molares da mistura na fase líquida real _T) //temperatura da mistura

{ real gE;

vector<real> ln_gama;

ln_gama = Ln_coef_atividade_UNIFAC(_x, _T);

gE = 0;

for(unsigned i = 0; i < _x.size(); i++) {

gE += _x[i]*ln_gama[i];

}

gE *= (R*_T);

return gE;

}

//Fatores de compressibilidade (adimensional) segundo o modelo Generalized Reference State - Constant Volume usando regras de mistura de Wong Sandler

vector<real> Zs_PR_WS_GRS_CV (vector<real>& _Pc, //pressoes criticas vector<real>& _Tc, //temperaturas criticas

vector<real>& _omega, //fatores acentricos vector<real>& _x, //frações molares real _P, //pressão da mistura real _T, //temperatura da mistura

bool _LV) //seletor de fase: 0 == líquido, 1 == vapor {

real nc = _Pc.size(); //numero de componentes da mistura

vector<real> m; //vetor que guarda a expressão envolvendo omega;

vector<real> Tr; //temperatura reduzida;

vector<real> alfa_; //termo de Peng Robinson que depende da temperatura e fator acentrico vector<real> a_; //termo para o calculo da eq. de Peng Robinson

vector<real> b_; //termo para o calculo da eq. de Peng Robinson vector<real> raizes; //raizes do polinomio cubico

vector<real> maximos; //ponto de maximo e minimo do polinomio cubico em Z vector<real> Z; //coeficientes de compressibilidade - o objetivo da funcao toda

vector< vector <real>> Q_; //matriz usada na regra de mistura // real a, b, c, D; //termos para o calculo da eq. de Peng Robinson // real gE; //energia de Gibbs de Excesso molar

// real soma_r; //soma dos volumes moleculares r de acordo com o modelo UNIFAC // real soma1, soma2; //auxiliares para o calculo de D

real A, B; //termos usados no calculo dos coeficientes da equacao de estado cubica em Z real alfa, beta, gama; //coeficientes da equacao cubica z^3 + alfa*z^2 + beta*z + gama = 0 //real Z; //coeficiente de compressibilidade - o objetivo da funcao toda

//calculo de m, Tr, alfa_, a, b;

m.resize(nc);

Tr.resize(nc);

alfa_.resize(nc);

a_.resize(nc);

b_.resize(nc);

//gama_.resize(nc);

for(unsigned i = 0; i < nc; i++) {

m[i] = 0.37464 + 1.54226*_omega[i] - 0.26992*_omega[i]*_omega[i];

Tr[i] = _T/_Tc[i];

alfa_[i] = 1.0 + m[i]*(1.0 - sqrt(Tr[i]));

alfa_[i] *= alfa_[i];

a_[i] = (0.457235*alfa_[i]*R*R*_Tc[i]*_Tc[i])/_Pc[i];

b_[i] = (0.077796*R*_Tc[i])/_Pc[i];

//calculo de A e B

A = (a_[i]*_P)/(R*R*_T*_T);

B = (b_[i]*_P)/(R*_T);

//calculo dos coeficientes da eq. cubica alfa = B - 1.0;

//beta = A - 2B -3BB;

beta = A - B*(2.0+3.0*B);

//gama = -AB -BB +BBB gama = B*(-A+B*(-1.0+B));

// //coeficiente de compressibilidade raizes = Raizes_z_cubica(alfa, beta, gama);

if(raizes.size()==1) {

maximos = Pontos_de_maximo_e_minimo(alfa, beta);

if(maximos.size()==0) //o polinomio pode nao possuir maximos, apenas um ponto de inflexao {

Z.push_back(raizes[0]);

}

else //senao, usar no lugar das raizes um dos maximos/minimos do polinomio {

if(_LV) //se a mistura for um vapor...

{

Z.push_back(Maior_elemento_de(maximos));

} else {

Z.push_back(Menor_elemento_de(maximos));

} } } else {

if(_LV) //se a mistura for um vapor...

{

Z.push_back(Maior_elemento_de(raizes));

} else {

Z.push_back(Menor_elemento_de(raizes));

} } }

return Z;

}

//Fator de compressibilidade (adimensional) segundo o modelo Generalized Reference State - Constant Volume usando regras de mistura de Wong Sandler

real Z_PR_WS_GRS_CV (vector<real>& _Pc, //pressoes criticas

vector<real>& _Tc, //temperaturas criticas vector<real>& _omega, //fatores acentricos vector<real>& _x, //frações molares real _P, //pressão da mistura real _T, //temperatura da mistura

bool _LV) //seletor de fase: 0 == líquido, 1 == vapor {

real nc = _Pc.size(); //numero de componentes da mistura

vector<real> m; //vetor que guarda a expressão envolvendo omega;

vector<real> Tr; //temperatura reduzida;

vector<real> alfa_; //termo de Peng Robinson que depende da temperatura e fator acentrico vector<real> a_; //termo para o calculo da eq. de Peng Robinson

vector<real> b_; //termo para o calculo da eq. de Peng Robinson vector<real> raizes; //raizes do polinomio cubico

vector<real> maximos; //ponto de maximo e minimo do polinomio cubico em Z

vector< vector <real>> Q_; //matriz usada na regra de mistura real a, b, c, D; //termos para o calculo da eq. de Peng Robinson

real A, B; //termos usados no calculo dos coeficientes da equacao de estado cubica em Z real gE; //energia de Gibbs de Excesso molar

real soma_r; //soma dos volumes moleculares r de acordo com o modelo UNIFAC real soma1, soma2; //auxiliares para o calculo de D

real Z; //coeficientes de compressibilidade - o objetivo da funcao toda

real alfa, beta, gama; //coeficientes da equacao cubica z^3 + alfa*z^2 + beta*z + gama = 0 //real Z; //coeficiente de compressibilidade - o objetivo da funcao toda

//calculo de m, Tr, alfa_, a, b;

m.resize(nc);

Tr.resize(nc);

alfa_.resize(nc);

a_.resize(nc);

b_.resize(nc);

for(unsigned i = 0; i < nc; i++) {

m[i] = 0.37464 + 1.54226*_omega[i] - 0.26992*_omega[i]*_omega[i];

Tr[i] = _T/_Tc[i];

alfa_[i] = 1.0 + m[i]*(1.0 - sqrt(Tr[i]));

alfa_[i] *= alfa_[i];

a_[i] = (0.457235*alfa_[i]*R*R*_Tc[i]*_Tc[i])/_Pc[i];

b_[i] = (0.077796*R*_Tc[i])/_Pc[i];

}

//Calculo de Q_

Q_.resize(nc);

for(unsigned i = 0; i < nc; i++) {

Q_[i].resize(nc);

for(unsigned j = 0; j < nc; j++) {

Q_[i][j] = 0.5*(b_[i] - a_[i]/(R*_T) + b_[j] - a_[j]/(R*_T));

} }

//Calculo de soma_r soma_r = 0;

for(unsigned j = 0; j < nc; j++) {

soma_r += _x[j]*r[j];

}

//calculo de D soma1 = 0;

for (unsigned i = 0; i < nc; i++) {

soma1 += (_x[i]*a_[i])/(b_[i]*R*_T);

}

soma2 = 0;

for (unsigned i = 0; i < nc; i++) {

soma2 += _x[i]*log(r[i]/soma_r);

}

gE = g_E_UNIFAC(_x, _T);

c = 0.56;

No documento Universidade do Estado do Rio de Janeiro (páginas 97-143)

Documentos relacionados