化工热力学气体p-V-T关系的编程计算论文

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

相关文档
最新文档