理想溶液二元相图计算
实验四 理想溶液二元相图计算
一. 实验目的
1.了解相图在材料科学和工程中的意义及理想溶液二元匀晶相图的计算方法。
2.学会使用C 语言或其它语言编程计算理想溶液的二元匀晶相图。
3.了解当前国内外相图计算软件的现状。
二.实验原理
1.理想溶液相图计算理论
理想液态混合物中任意一组分B 的化学势为:μB =μB *+RTlnx B
对于1mol 理想液态混合物来说,结合化学势的定义,上式可以写成: μB *=G m, +RTlnx B (1) B
设指定的温度、压力下,B 物质有α、β两相存在,达到平衡时,则有: μB α=μβ(2) B
在我们研究的系统中,有A 、B 两组分存在,对于组分A ,将式(1)代入(2)式得:
G m , A (α) +RT ln x A =G m , A (β) +RT ln x A
x A
x A
x B
x B βαβα*α*β *多项整理得:=exp 1RT [G m , A (β) -G m , A (α)]=exp (*1RT ∆G m , A ) (3) *同理可得:=exp 1RT [G m , B (β) -G m , B (α)]=exp (**1RT ∆G m , B ) (4) *
利用(3)和(4)式即可计算理想溶液平衡两相的组成。
2.相图计算软件简介
目前集成热化学数据库和相图计算软件的系统主要包括瑞典皇家工学院材料科学与工程系为主开发的 Thermo-Calc 系统和加拿大蒙特利尔多学科性工业大学计算热力学中心为主开发的 FACT(Facility for the Analysis of Chemical Thermodynamics )系统。这些软件的共同特点是集成了具有自洽性的热化学数据库和先进的计算软件。
Pandat 合金相图软件与热力学计算软件是美国CompuThermLLC 公司开发的用于
计算多元合金相图和热力学性能的软件包。可用于计算多种合金的标准平衡相图和热力学性能,用户也可使用自己的热力学数据进行相图与热力学计算。
三.问题描述
NiO-MgO为液、固相连续互溶二元体系。已知 NiO和MgO 的熔点分别为1960℃和800℃,熔化热分别为52.3kJ/mol和77.4kJ/mol,以纯液态NiO 作为NiO 的标准态,纯固态MgO 作为MgO 的标准态,用C 语言或其它高级语言编程计算该二元体系相图。
四.问题分析
1.计算模型
在上述问题中分别以纯液态NiO 作为NiO 的标准态,纯固态MgO 作为MgO 的标准
**态,则∆G m 和∆G m 近似计算式为: , MgO , NiO
* ∆G m , MgO =77400⨯(1-T 3073
T ) ∆G m , NiO =52300⨯(1-*2233)
将(3)和(4)式用于NiO-MgO 系,设液相(l )为β,固相(s )为α,则有: x M g O =x M g O exp (s l ∆G m , MgO RT *) (5) 同理可得:x N i O s =x N i O exp (
s l ∆G m , N i O RT l *) (6) l 又因为1—
s x M g O =x N i O s ,1—x M g O =x N i O *,则(6)式可写成: 1—x M g O =(1—x M g O )exp (l ∆G m , N i O RT ) (7) 联立(5)和式(7)得:
1—exp (
x M g O =
exp (l ∆G m , N i O RT *) *∆G m , M g O
RT * (8) ) ) —exp (
*∆G m , N i O RT *
[1—exp (
x M g O =
exp (s ∆G m , N i O RT *)]exp (∆G m , M g O RT *) ∆G m , M g O
RT (9) ) ) —exp (∆G m , N i O
RT
由(8)和式(9)即可计算得到NiO-MgO 的完全固溶体相图。
五.实验内容
程序流程图
源程序代码
#include"process.h"
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"dos.h"
#include"math.h"
#include"graphics.h"
#define TN (1960+273)
#define TM (2800+273)
#define T_CH 2
#define NUM (int)((TM-TN)/T_CH)+5
float R=8.3145,H_chN=52300.0,H_chM=77400;
int n,X1,X2,Y1,Y2;
float e_x(float H_ch,int t,int t_fus)
{
if(TN
else printf("The temperature is out of range\n");
return 0;
}
float x_L(int t)
{
float exN,exM,x_L;
exM=e_x(H_chM,t,TM);
exN=e_x(H_chN,t,TN);
x_L=(1-exN)/(exM-exN);
return x_L;
}
float x_S(int t)
{
float x_S;
x_S=x_L(t)*e_x(H_chM,t,TM);
return x_S;
}
coord_sys()
{
int i,dx,dy;
char y_interval[5],x_interval[5];
X1=getmaxx()/2-150;X2=getmaxx()/2+150;
Y1=getmaxy()/2-200;Y2=getmaxy()/2+150;
dx=(X2-X1)/10;dy=(Y2-Y1)/10;
setbkcolor(WHITE);
setcolor(LIGHTRED);
setlinestyle(0,1,3);
rectangle(X1,Y1,X2,Y2);
setlinestyle(0,1,1);
for(i=1;i
line(X1+i*dx,Y1,X1+i*dx,Y2);
line(X1,Y1+i*dy,X2,Y1+i*dy);
}
for(i=1;i
{
gcvt((3.0-0.2*i)*1000,4,y_interval);
gcvt(0.2*i,2,x_interval);
outtextxy(X1-40,Y1+2*i*dy-40,y_interval);
outtextxy(X1+2*i*dx-10,Y2+10,x_interval);
}
settextstyle(1,1,1);
outtextxy(X1-70,80,"T(Centigrade)");
settextstyle(1,0,2);
outtextxy(210,Y2+40,"Binary Phase Diagram");
outtextxy(X1-25,Y2+10,"NiO");
outtextxy(X1+300,Y2+10,"MgO");
}
makecurve(float *sol_x,float *liq_x ,int *t)
{
int i,u,v,w;
coord_sys();
for(i=1; i
{
t[i]=t[i]-273;
u=((t[i]-1900))/1000.0*(Y2-Y1);
v=(int)(sol_x[i]*(X2-X1));
w=(int)(liq_x[i]*(X2-X1));
putpixel(X1+w,Y2-u,BLUE);
putpixel(X1+v,Y2-u,BLUE);
delay(20);
}
outtextxy(220,220,"L L+S S");
while(!kbhit());
}
void main()
{
float sol_x[NUM],liq_x[NUM];
int i,t[NUM],gdriver=DETECT,graphmode=0;
initgraph(&gdriver,&graphmode,"c:\\tc\\bgi");
n=abs((TM-TN)/T_CH);
printf("\n\nCalculating,Please wait...");
for(i=1; i
{
if(TM>TN) t[i]=(TN-T_CH)+(i*T_CH);
else t[i]=(TN+T_CH)-(i*T_CH);
sol_x[i]=x_L(t[i]);
liq_x[i]=x_S(t[i]);
}
clrscr();
makecurve(sol_x,liq_x,t);
closegraph();
}
六、实验小结
在这次的理想溶液二元相图的实验中,相对来说还是比较难的一个实验。首先我们花了大量的时间去复习物理化学中的关于吉布斯函数的计算,化学势的定义、计算以及过程中的化学判据。在做实验之前老师还给我们讲解了这一块的知识以及运用的原理和分析。对于我们来说,最头疼的还是编程。在输入了书上的程序,中间还是出现了好多的错误。在TC++中修改了多次,出现函数没定义,在函数库中找不到图形函数等的问题。最后终于程序运行成功,得到了结果。不过由于个人的能力有限,我们按照书上的程序得到运行结果,后面通过查资料稍微修改了一些程序,也得到了同样的运行结果。在这次的实验过程中,我们不但温习了有关相图的一些知识,还对于过往学习到的知识运用于数据处理分析。