|
本帖最后由 diyifan001 于 2011-4-20 18:54 编辑
开这个帖子是续http://meng.horse/thread-28834-1-1.html这个帖子
首先,选PR方程(SRK等立方型状态方程等思路一样)编程语言matlab(最后用.net 做个界面)
第一:函数getAB,计算PR方程整理成多项式后的AB值,顺便算出a、 b 阿尔法(用al表示)K的值
function y=getAB(p,t,x)
R=8.3145;
Pr=p./x(:,1);
Tr=t./x(:,2);
a=(0.45724.*R.*R.*x(:,2).*x(:,2))./x(:,1);
b=(0.0778.*R.*x(:,2))./x(:,1);
k=0.37464+1.54226.*x(:,3)-0.26992.*x(:,3).*x(:,3);
al=(1+k.*(1-sqrt(Tr))).*(1+k.*(1-sqrt(Tr)));
A=(a.*al.*p)./(R.*R.*t.*t);
B=b.*p./(R.*t);
y=[A B a b al k];
第二:求压缩性系数方法getZ,就是通过AB的值求出三次方程的三个根
function y=getZ(A,B)
temp=size(A);
x1=ones(temp(1),1);
x2=B-1;
x3=A-2.*B-3.*B.*B;
x4=B.*B.*B-A.*B+B.*B;
X=[x1,x2,x3,x4];
y=roots(X);
第三 :求混合物的压缩性系数,因为主要计算混合物的相平衡,因为昨晚跟个兄弟讨论hysys extension的东西,咬了会文档,所以写的有点乱,有空整理一下,慢慢来,一步一步来,免得出错
function y=HunHeZ(p,t,X,Kij)
R=8.31451;
AiBi=getAB(p,t,X(:,1:3));
% b
bi=AiBi(:,4);
tempb=bi.*X(:,4);
b=sum(tempb);
%zi*zj
HLtemp=X(:,4);
n=length(HLtemp);
HL1=repmat(HLtemp,1,n);
HL2=HL1';
Mix1=HL1.*HL2;
% a*al
a=AiBi(:,3);
al=AiBi(:,5);
aal1=a.*al;
aal2=repmat(aal1,1,n);
aal3=aal2';
Mix2=sqrt(aal2.*aal3);
%1-kij
Mix3=1-Kij;
Mixaal=Mix1.*Mix2.*Mix3;
Mixaal=sum(Mixaal);
Mixaal=sum(Mixaal);
A=(Mixaal.*p)./(R.*R.*t.*t);
B=b.*p./(R.*t);
Ztemp=getZ(A,B);
for index=1:3
if imag(Ztemp(index))~=0;
Ztemp(index)=0;
end
end
Z=Ztemp(find(Ztemp));
y=Z;
把这些文件黏贴到文本文档,改名和函数名同名的m文件,就是 "函数名".m ,都存到一个文件夹里以备后用。 |
评分
-
查看全部评分
|