资源描述:
《一维传热铸件凝固数值计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、西安交通大学材料凝固实验#===========================================================================================#▉一维传热铸件凝固数值计算#作者:王永平2011-11-25#转载请注明来源#============================================================================================begin说明:本程序采用ruby语言编写,算是一个处理“一维传热铸件凝固问题”的范例吧使用方法示例:s=
2、Simulation.new(20)#只有一个参数,即要计算的时限s.run运行结果会输出是否完全凝固,完全凝固所用时间,任意时刻铸件内部的温度场及总体温度场因为是针对特定情形的求解,涉及众多计算条件,因而程序未提供更多参数控制接口网格划分为45格,求解时比较方便。若改变网格数,则需手动改动一系列范围,不建议更改此项当然也可以提供控制网格参数接口,把一系列范围写成诸如0...@n,@x1/@delta_x之类的形式不过实在没必要这么做=endclassSimulation#初始化,各参数及初值在此定义definitialize(tmax=20)@n=46#网格划分@del
3、ta_x=0.5#网格步长@a=[@n]#存储t时刻各点温度的数组@b=[@n]#存储t+delta_t时刻各点温度的数组@tc=Array.new(@n,0)#存储各点累加补偿温度值的数组@k=Array.new(@n,0.00627)#存储各点导热系数的数组,数值全部初始化为铸模物性,在循环中再更改@rou=Array.new(@n,1.55)#存储各点比热的数组,数值全部初始化为铸模物性,在循环中再更改@cp=Array.new(@n,0.8987)#存储各点密度的数组,数值全部初始化为铸模物性,在循环中再更改@kw=[@n]#存储当量导热系数调和系数1的数组@ke
4、=[@n]#存储当量导热系数调和系数2的数组@m1=[@n]#存储差分系数1的数组@m2=[@n]#存储差分系数2的数组@flag=Array.new(@n,0)#铸件内部各点状态标志,0为液态,1为固态@total_flag=0#统计铸件内部各点凝固状态@delta_t=0.015#时间步长,满足条件delta_t<=rou*cp*(delta_x**2)/(kw+ke)@tmax=tmax#计算时限@time=0#计时用@finished_time=0#凝固所用时间@Ts=660.0#凝固温度@delta_t_s=365.1#凝固阶段所需补偿的温度值,计算式:凝固潜热
5、/比热end#主程序defrun#赋初值西安交通大学材料凝固实验set_valueloopdo#更新物性参数及计算温度场refresh#潜热处理latent_heat#更新所有点,为下一循环做准备foriin0...46ifi==0ori==45#边值处理@a[i]=10else@a[i]=@b[i]endend@time+=@delta_tbreakif@time>@tmax#达到计算时限便退出循环end#输出结果out_putend#定义方法set_value,用于赋初值defset_valueforiin0...46ifi>=17andi<=28#铸件内部点@a[i
6、]=700else@a[i]=10endendend#定义方法refresh,用于更新物性参数及计算温度场defrefreshforiin1...45ifi>=17andi<=28#铸件内部点if@flag[i]==1#如果凝固,采用固态物性参数@k[i]=2.28@cp[i]=1.17@rou[i]=2.702else#否则采用液态物性参数@k[i]=10.0@cp[i]=1.09@rou[i]=2.38endend西安交通大学材料凝固实验@kw[i]=2.0/(1.0/@k[i]+1.0/@k[i-1])@ke[i]=2.0/(1.0/@k[i]+1.0/@k[i+1
7、])@m1[i]=@kw[i]*@delta_t/(@rou[i]*@cp[i]*(@delta_x**2))@m2[i]=@ke[i]*@delta_t/(@rou[i]*@cp[i]*(@delta_x**2))@b[i]=@m1[i]*@a[i-1]+@m2[i]*@a[i+1]+(1-@m1[i]-@m2[i])*@a[i]#计算温度场变化endend#定义方法latent_heat,用于处理凝固潜热deflatent_heatforiin17..28if@b[i]<@Ts@tc[i]+=(@Ts-@b[i])#累加补