24小时热门版块排行榜    

查看: 1322  |  回复: 2

flying_fay

铁杆木虫 (小有名气)


[交流] 【求助】求高手帮看一下程序(泡点温度计算)

使用SRK方程和wilson方程计算泡点温度和组成
m文件中,y(1)是组分1 的气相组成,y(2)是温度

m文件如下

function f=myfun(y,x1)
p=101325;
T1c=579.35;V1c=219E-06;Z1c=0.259;p1c=56.9E+05;w1=0.193;
ANTA1=36.6016;ANTB1=-2979.4;ANTC1=-10.104;ANTD1=1.1445E-09;ANTE1=3.2472E-06;
T2c=591.79;V2c=315.8e-06;Z2c=0.264;p2c=41.09e+05;w2=0.264;
ANTA2=34.0755;ANTB2=-3.0379e+03;ANTC2=-9.1635;ANTD2=1.0289E-11;ANTE2=2.7035E-06;
b=[4198.6  -3001.6];

x2=1-x1;

p1s=10^(ANTA1+ANTB1/y(2)+ANTC1*log10(y(2))+ANTD1*y(2)+ANTE1*y(2)* y(2))*133.322;
p2s=10^(ANTA2+ANTB2/y(2)+ANTC2*log10(y(2))+ANTD2*y(2)+ANTE2*y(2)* y(2))*133.322;

SRKa1=0.42748*8.31441*8.31441*T1c*T1c/p1c*(1+(0.480+1.574*w1-0.176*w1^2)*(1-(y(2)/T1c)^0.5))^2;
SRKb1=0.08664*8.31441*T1c/p1c;

SRKk1=-8.31441*y(2)/p1s;
SRKm1=SRKa1/p1s-SRKb1*8.31441*y(2)/p1s-(SRKb1)^2;
SRKn1=-SRKa1*SRKb1/p1s;

SRKp1=[1 SRKk1 SRKm1 SRKn1];
SRKV1=roots(SRKp1);
V1=max(SRKV1);

Z1=p1s*V1/8.31441/y(2);
fai1s=exp((Z1-1)-log(p1s*(V1-SRKb1)/8.31441/y(2))-SRKa1*log(1+SRKb1/SRKV1)/SRKb1/8.31441/y(2));


SRKa2=0.42748*8.31441*8.31441*T2c*T2c/p2c*(1+(0.480+1.574*w2-0.176*w2^2)*(1-(y(2)/T2c)^0.5))^2;
SRKb2=0.08664*8.31441*T2c/p2c;

SRKk2=-8.31441*y(2)/p2s;
SRKm2=SRKa2/p2s-SRKb2*8.31441*y(2)/p2s-(SRKb2)^2;
SRKn2=-SRKa2*SRKb2/p2s;

SRKp2=[1 SRKk2 SRKm2 SRKn2];
SRKV2=roots(SRKp2);
V2=max(SRKV2);

Z2=p2s*V2/8.31441/y(2);
fai2s=exp((Z2-1)-log(p2s*(V2-SRKb2)/8.31441/y(2))-SRKa2*log(1+SRKb2/V2)/SRKb2/8.31441/y(2));


Tc12=(T1c*T2c)^0.5;
Vc12=((nthroot(V1c,3)+nthroot(V2c,3))/2)^3;
Zc12=(Z1c+Z2c)/2;
pc12=Zc12*8.31441*Tc12/Vc12;
w12=(w1+w2)/2;

SRKa12=(SRKa1*SRKa2)^0.5;
SRKam=y(1)*y(1)*SRKa1+2*y(1)*(1-y(1))*SRKa12+(1-y(1))*(1-y(1))*SRKa2;
SRKbm=y(1)*SRKb1+(1-y(1))*SRKb2;

SRKkm=-8.31441*y(2)/p;
SRKmm=SRKam/p-SRKbm*8.31441*y(2)/p-(SRKbm)^2;
SRKnm=-SRKam*SRKbm/p;

SRKpm=[1 SRKkm SRKmm SRKnm];
SRKVm=roots(SRKpm);
Vm=max(SRKVm);

Zm=p*Vm/8.31441/y(2);

fai1=exp(SRKb1/SRKbm*(Zm-1)-log(p*(Vm-SRKbm)/8.31441/y(2))+SRKam*(SRKb1/SRKbm-2*(y(1)*SRKa1+(1-y(1))*SRKa12)/SRKam)*log(1+SRKbm/SRKVm)/SRKbm/8.31441/y(2));
fai2=exp(SRKb2/SRKbm*(Zm-1)-log(p*(Vm-SRKbm)/8.31441/y(2))+SRKam*(SRKb2/SRKbm-2*(y(1)*SRKa12+(1-y(1))*SRKa2)/SRKam)*log(1+SRKbm/SRKVm)/SRKbm/8.31441/y(2));


V1L=V1c*Z1c^((1-y(2)/T1c)^(2/7));
V2L=V2c*Z2c^((1-y(2)/T2c)^(2/7));

A12=(V2L/V1L)*exp(-b(1)/8.314/y(2));
A21=(V1L/V2L)*exp(-b(2)/8.314/y(2));
r1cal=exp(-log(x1+A12*x2)+x2*(A12/(x1+A12*x2)-A21/(x2+A21*x1)));
r2cal=exp(-log(x2+A21*x1)-x1*(A12/(x1+A12*x2)-A21/(x2+A21*x1)));


f=abs(y(1)*p*fai1-r1cal*p1s*fai1s*x1*exp(V1L*(p-p1s)/8.31441/y(2)))+abs((1-y(1))*p*fai2-r2cal*p2s*fai2s*x2*exp(V2L*(p-p2s)/8.31441/y(2)));

main文件如下

x1=[0.9643  0.9165  0.8322  0.7520  0.6696  0.6362  0.5576  0.4416  0.3864  0.3407  0.2988  0.2628  0.2271  0.1877  0.1482  0.0933  0.0586  0.0375];
n=18;

for i=1:n
x0=[1;355];
[x fval]=fminsearch(@(x) myfun(x,x1(i)),x0)
x1(i)=x(1);
x2(i)=x(2);
end;
x1;
x2;

运行提示Subscripted assignment dimension mismatch.

Error in ==> fminsearch at 205
fv(:,1) = funfcn(x,varargin{:});

[ Last edited by flying_fay on 2010-12-1 at 11:26 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smqh5207

金虫 (小有名气)


flying_fay(金币+5):已经找到问题所在了,谢谢了,x1是组分1的液相摩尔分数,除了r是活度系数和实际方程中的字母不一样外,其他都是原本方程里的变量 2010-12-08 08:40:02
楼上说清楚点该方程的大致意思,搞一堆压缩因子与逸度系数计算,x1代表什么?
最好描述清楚才能查错哦
2楼2010-12-07 09:18:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)


flying_fay(金币+5):谢谢了,已经找到问题所在了 2010-12-08 08:40:41
我有别人的一个泡点程序,估计跟你不是一个体系。
没有说明,让人只看字母呀。
3楼2010-12-07 10:40:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 flying_fay 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见