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;