化工热力学气体p-V-T关系的编程计算论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
气体p-V-T关系的编程计算
摘要
本文运用c语言编程的方法,解决化工热力学中的气体p-V-T关系的计算。
在化热力学气体p-V-T关系的计算过程中,有很多复杂的计算,有些需要进行复杂的小数计算,还有谢问题需要通过反复迭代才能得到结果。在解决这些问题时通过编程计算成为大家选择的最佳途径之一。本文系统的对这些程序做了汇集、汇编、整理,得到了可以直接应用的程序。
本程序充分考虑了人机语言转换的障碍,在人机交流的过程中会自动提示使用者进行操作:在输入数据时,会有输入格式说明等提示;在结果输出时,会把运算公式、计算迭代过程以及运算结果一并输出,方便使用者解决问题。
程序中使用的是C语言做计算,程序中使用了if,for,switch语句等基础函数语句和函数调用的基本方法,函数之间结合比较简单,使用者也可以按自己的需求自行改动函数语句。
本程序的主函数部分如下:
#include
#include
void main( )
{
char fch,jg,sql;
float p,V,T;
int i,n;
printf("欢迎进入物质p-V-T关系计算环境,程序正在编写中,欢迎交流学习!");
printf("\n请输入所用方程和所求量。\n公式代号说明:1 理想气体状态方程;2 维里方程;3 范德华方程;4 RK方程;5 SRK(RKS)方程。\n所求量为p,V,T");
printf("\n请输入所选方程代号fch=");scanf("%s",&fch);
printf("\n请输入所求量sql=");
scanf("%s",&sql); xzfch(fch,sql);
}
本文运用本文成功的解决了计算中遇到的大部分题。在数值计算、迭代计算等复杂问题中得到了方便的应用。程序能解决的问题如表一:
表一:程序能解决的计算
1.符号说明
本程序在编写过程中使用了C 语言中通用的符号,在定义子函数及变量过程中使用的是汉语拼音中的生母标注法,具体标注如下:
变量定义:
p,V ,T,R--------气体的压强,体积,温度以及系数R ; sql--------------所求量; fch-------------使用的方程; 函数的定义:
shrp(),shrV (),shrT ()---------在已知p,V ,T 的时候的输入函数;
LX(),VL(),VDW(),RK(),SRK()--理想气体状态方程, 维里方程,范德华方程,RK 方程, SRK (RKS )方程。
2.程序汇编思路
在程序编写过程中,遵循下列路径:
3.使用要求及方法
要求电脑安装Microsoft Visual C++程序软件。
使用时直接打开程序,
依次点击运行按钮,按提示输入相关方程及数据即可。
运行界面如下:
4.补充说明
程序仍在开发编辑中,使用过程中如果发现任何问题,欢迎学习交流!
附件:
完整的程序如下:
#include
#include
float p,V,T,R;
R=8.314;
/*输入函数库*/
void shrp()
{
printf("\n请输入已知量V=");
scanf("%f",&V);
printf(" T=");
scanf("%f",&T);
}
void shrV()
{
printf("\n请输入已知量p=");
scanf("%f",&p);
printf(" T=");
scanf("%f",&T);
}
void shrT()
{
printf("\n请输入已知量p=");
scanf("%f",&p);
printf(" V=");
scanf("%f",&V);
}
/*计算函数库*/
/*理想气体状态方程*/
void LX(char sql)
{
switch(sql)
{
case'P':case'p':shrp();
p=R*T/V;
printf("\n计算公式为p=R*T/V\n所求量p=%f\n",p);
break;
case'V':case'v':shrV();
V=T*R/p;
printf("\n计算公式为V=T*R/p\n所求量V=%f\n",V);
break;
case'T':case't':shrT();
T=p*V/R;
printf("\n计算公式为T=p*V/R\n所求量T=%f\n",T);
break;
default:
printf("\n\n输入所求量错误\n");
}
}
/*维里方程*/
void VL(char sql)
{
float B,C,Z;
float f[20],g[20];
int i;
f[0]=1;
printf("\n请输入维里系数B=");
scanf("%f",&B);
printf("\n请输入维里系数(如果没有C请输入0) C=");
scanf("%f",&C);
if(C==0)
switch(sql)
{
case'P':case'p':shrp();
Z=1+B/V;p=Z*R*T/V;
printf("\n计算公式为\n Z=1+B/V;\np=Z*R*T/V;\n系数Z=%f\n所求量p=%f\n",Z,p);
break;
case'V':case'v':shrV();
Z=1+B*p/R/T;
V=Z*T*R/p;
printf("\n计算公式为\n Z=1+B*p/R/T;\nV=Z*T*R/p; \n系数Z=%f\n所求量V=%f\n",Z,V);
break;
default:printf("\n\n输入所求量错误\n ");
}
if(C!=0)
switch(sql)
{
case'P':case'p':shrp();
Z=1+B/V+C/V/V;
p=Z*R*T/V;
printf("\n计算公式为\n Z=1+B/V+C/V/V;\np=Z*R*T/V;\n系数Z=%f\n所求量p=%f\n",p);
break;
case'V':case'v':shrV();