D-A-K方法求天然气偏差系数 以及等温压缩系数、天然气体积系数、天然气黏度的计算。牛顿迭代法。

D-A-K方法求天然气偏差系数 以及等温压缩系数、天然气体积系数、天然气黏度。牛顿迭代法。

这是第一次发文章,由于对该方法原理了解不是很透彻,没有考虑很多条件,仅给大家提供一些思路。

#include<stdio.h>
#include<math.h>
double Fcount(double a,double b,double pc,double tc,double pp ,double tt,double pg,double mg,double G,double B[])
	{
	    double P=G;
		double S,T,U,M,Z,Cp,Cg,Bg,Ug,K,X,Y;
		S=-0.27*a/b+P+(B[0]+B[1]/b+B[2]/pow(b,3)+B[3]/pow(b,4)+B[4]*pow(b,5))*pow(P,2)+(B[5]+B[6]/b+B[7]/pow(b,2))*pow(P,3)-
			B[8]*(B[6]/b+B[7]/pow(b,2))*pow(P,6)+B[9]*(1+B[10]*pow(P,2))*(pow(P,3)/pow(b,3))*exp(-B[10]*pow(P,2));
		T=1+2*(B[0]+B[1]/b+B[2]/pow(b,3)+B[3]/pow(b,4)+B[4]/pow(b,5))*P+3*(B[5]+B[6]/b+B[7]/pow(b,2))*pow(P,2)-6*B[8]*(B[6]/b+
			B[7]/pow(b,2))*pow(P,5)+(B[9]/pow(b,3))*(3*pow(P,2)+B[10]*(3*pow(P,4)-2*B[10]*pow(P,6)))*exp(-B[10]*pow(P,2));
		U=P-S/T;
		if(fabs(U-P)<0.0001)
		{
            Z=(0.27*a)/(P*b);
			M=(B[0]+B[1]/b+B[2]/pow(b,3)+B[3]/pow(b,4)+B[4]/pow(b,5))+2*(B[5]+B[6]/b+B[7]/pow(b,2))*P-5*B[8]*(B[6]/b+
				B[7]/pow(b,2))*pow(P,4)+2*B[9]*(P+B[10]*pow(P,3)-B[10]*B[10]*pow(P,5))/pow(b,3);
			Cp=1/a-0.27*(M/(1+b*M/Z))/(Z*Z*b);
			Cg=Cp/pc;
			Bg=3.458*0.0001*Z*tt/pp;
			K=(22.650+0.0388*mg)*pow(tt,1.5)/(209.2+19.26*mg+1.8*tt);
            X=3.448+548/tt+0.01*mg;
			Y=2.447-0.224*X;
            Ug=0.0001*K*exp(X*pow(pg,Y));
            printf("偏差系数Z的值=%lf\n天然气黏度Ug的值=%lf\n天然气气体系数Bg的值=%lf\n等温压缩系数Cg的值=%lf\n",Z,Ug,Bg,Cg);
		}
		else
			Fcount(a,b,pc,tc,pp,tt,pg,mg,U,B);
		return 0;
}
		
void main()
{

	double tr,pr,pc,tc,pp,tt,pg,mg;   
	double A[11]={0.3265,-1.01,-0.5339,0.01569,-0.05165,0.5475,-0.7361,0.1844,0.1056,0.6134,0.7210};
	printf("请输入拟对比压力pr:");
		scanf("%lf",&pr);
	printf("请输入拟对比温度tr:");
	    scanf("%lf",&tr);
	printf("请输入拟临界温度tc:");
	    scanf("%lf",&tc);
	printf("请输入拟临界压力pc:");
	    scanf("%lf",&pc);
	printf("请输入温度tt:");
	    scanf("%lf",&tt);
	printf("请输入压力pp:");
	    scanf("%lf",&pp);
    printf("请输入混合气体密度pg:");
	    scanf("%lf",&pg);
    printf("请输入混合气体视相对分子质量mg:");
	    scanf("%lf",&mg);
    double R=0.27*pr/tr;
    Fcount(pr,tr,pc,tc,pp,tt,pg,mg,R,A);


	
}

下面是简单的参数验证:
大家可以
大家可以根据具体的条件继续修改。

有错误也请大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值