3章相图的计算机分析与计算 重庆大学材料科学与工程学院 汤爱涛
3章 相图的计算机分析与计算 重庆大学材料科学与工程学院 汤爱涛
3.1概述 CALPHAD 计算机在相图研究中应用的主要 ■相图计算与绘制 相图库系统 ■计算机相图解析计算
3.1概述 CALPHAD 计算机在相图研究中应用的主要 ◼ 相图计算与绘制 ◼ 相图库系统 ◼ 计算机相图解析计算
3.2相图计算基本方法 ■热力学模型 ■基本概念 ■理想溶液模型 ■规则溶液模型 二元完全固溶相图的计算
3.2相图计算基本方法 ◼ 热力学模型 ◼ 基本概念 ◼ 理想溶液模型 ◼ 规则溶液模型 ◼ 二元完全固溶相图的计算
3.3相图计算软件简介 CALPHAD技术 Thermo-Calc(瑞典) F*A*C*T(加拿大) Lukas(德国) MTDATA(美国)
3.3相图计算软件简介 CALPHAD技术 ◼ Thermo-Calc(瑞典) ◼ F*A*C*T(加拿大) ◼ Lukas(德国) ◼ MTDATA (美国)
上机实验5 相图的模拟计算实践 口实验目的 ■了解相图计算基本原理 了解常用相图计算软件的特点 ■掌握采用理想溶液模型计算绘制二元相图的方法 ■实验内容 ■NiO-MgO二元相图的编程上机计算绘制 ■实验要求: ■实验报告要求
上机实验5 相图的模拟计算实践 ◼ 实验目的 ◼ 了解相图计算基本原理 ◼ 了解常用相图计算软件的特点 ◼ 掌握采用理想溶液模型计算绘制二元相图的方法 ◼ 实验内容 ◼ NiO-MgO二元相图的编程上机计算绘制 ◼ 实验要求: ◼ 实验报告要求:
Nio-Mgo二元相图计算程序 #include #include conio. h> #include #include #include #indlude #include extern int directvideo=O int ta=1960+273,TB=2800+273 int n float r=8.310DHA=52300DHB=77400; float dg(float dh, int t, int tb i if (ta<=t &&t<=TB return(dh *(tb-t)tb); else printf( the temperature is out of range\n") return o
NiO-MgO二元相图计算程序 #include #include #include #include #include #include #include extern int directvideo=0; int TA=1960+273,TB=2800+273; int n ; float R=8.310,DHA=52300,DHB=77400; float dg(float dh,int t,int tb) { if (TA<=t && t<=TB) return (dh*(tb-t)/tb); else printf("The temperature is out of range\n"); return 0; }
float xb2(int k) t float dgb, dga, xbl dgb=dg(DHB, K, TB); dga=dg DHA, K,TA) xbl=((exp(-dga/(R k))-1)*exp( dgb/(R*k)/exp( -dga(R*k))-exp(-dgb/(R*D); return Xbl; float xbl(int k d float dgb, dga, xbs; dgb=dg(, K,TB) xbs=b1(k) *exp(-dgb/(R*) return xbs
float xb2(int k) { float dgb,dga,xbl; dgb=dg(DHB,k,TB); dga=dg(DHA,k,TA); xbl=((exp(-dga/(R*k))-1)*exp(- dgb/(R*k)))/(exp(-dga/(R*k))-exp(-dgb/(R*k))); return xbl; } float xb1(int k) { float dgb,dga,xbs; dgb=dg(DHB,k,TB); xbs=xb1(k)*exp(-dgb/(R*k)); return xbs; }
initgrapher( d int gdriver=DETECT, graphmode, errorcode initgraph &driver, &graphmode,"D: TC30\\bgi); errorcode=graphresulto? if (errorcode!=grOk) printf("graphics error: %sngrapherrormsg(errorcode)) printf( "press any key halt: D; getcho exit(1; return o
initgrapher() { int gdriver=DETECT,graphmode,errorcode; initgraph(&gdriver,&graphmode,"D:\\TC30\\bgi"); errorcode=graphresult(); if (errorcode!=grOk) {printf("graphics error:%s\n",grapherrormsg(errorcode)); printf("press any key halt:"); getch() ; exit(1); } return 0; }
makemap10 d initgrapherO: setviewport(50, 50, get maxxo-50, getmaxyo- 50, textcolor (BlUe; settextstyle( 1, 0, 4) outtextxy (70, 100, software for outtextxy (60, 140, two phase diagram\n"); delay (5000) closegraph(: return 0
makemap1() { initgrapher(); setviewport(50,50,get maxx()-50,getmaxy()- 50,1); textcolor(BLUE); settextstyle(1,0,4); outtextxy(70,100,"software for"); outtextxy(60,140,"two phase diagram\n"); delay(5000); closegraph(); return 0; }
makemap(float solius, float 料 quids,int*p) d int rectangle(X1,Y1,X2, Y2) X1, X2, Y1,,i, u, V, w, Step ,ystep; setlinestyle(0, 1,1) char my[5], mx[5] for(=1;i<=9;++) initgrapher o: X1=getmaxX(/2- tine(X1+i*step Y1, X1 230;X2= getmaxX(/2+220 +i*step y2); Y1=getmaxy (/2 150; Y2=getmaxy o/2+150 line(X1+i*step Y1, Xl+ Step=(X2-x1)/ 10; step=(Y2 *STep, Y2) Y1)/10; setbkcolor(WHITe: setcolor(1; setlinestyle( 0, 1, 3)
rectangle(X1,Y1,X2,Y2); setlinestyle(0,1,1); for (i=1;i<=9;i++) {line(X1+i*xstep,Y1,X1 +i*xstep,Y2); line(X1+i*xstep,Y1,X1+i *xstep,Y2); } makemap(float *solius,float *liquidus,int *p) { int X1,X2,Y1,Y2,i,u,v,w,xstep,ystep; char my[5],mx[5]; initgrapher(); X1=getmaxx()/2- 230;X2=getmaxx()/2+220; Y1=getmaxy()/2- 150;Y2=getmaxy()/2+150; xstep=(X2-X1)/10;ystep=(Y2- Y1)/10; setbkcolor(WHITE); setcolor(1); setlinestyle(0,1,3);