温度场有限容积法程序入门之三:2D温度场显式迭代计算(暂不考虑潜热)
2013-04-26 09:23
507 查看
我们首先介绍温度场的求解吧,假设边界条件和初始条件已经设定。在贴代码之前,我们先谈谈这个类需要什么属性和行为:节点数组用于存储计算变量、网格大小、维度定义、计算函数,也就这么多了。如何计算某节点的温度?计算其东南西北方位相接节点对该节点的穿导热之和即可,读者这里可以考虑一下如何添加源相和对流换热进去。
简单吧,需要注意的是不同位置的节点其传热面积以及控制体体积不尽相同,需要Fix一下。可以预见,如果将SxFix、SyFix,VolFix设置为Node类的成员变量,计算会更快。这里给出初步的计算结果(迭代100s的结果)。目前笔者没有贴出所有代码,这时按照笔者提供的程序是无法运行的,读者想想,还缺点什么?
将其对称得到整个界面:
有点样子了,这还不是最终的计算结果,凝固潜热还没有考虑进去,可以使用物理意义明确的温度回升法处理。另外,我们没有离散偏微分方程,但是我们的方法和离散偏微分方程殊途同归的。也许读者可以理解有限差分和有限容积的连续与区别了。
package Soong.Solver { public class TSolver { public var Tlist:Vector.<Node>; private var xGridNum:uint = 1;//Number of Grid Allocated in X Direction private var yGridNum:uint = 1;//Number of Grid Allocated in X Direction public var dx:Number = 1;//Grid Size in X Direction public var dy:Number = 1;//Grid Size in Y Direction public var Sx:Number = 0;//Area of Heat Interface in X Direction public var Sy:Number = 0;//Area of Heat Interface in X Direction public var cellVol:Number = 0;//Volume of Control Volume public var Freezing:Boolean=false;//If Time to Freeze public function TSolver(xGridNum:uint,yGridNum:uint,dx:Number,dy:Number) { this.xGridNum = xGridNum; this.yGridNum = yGridNum; this.dx = dx; this.dy = dy; this.Sx = dy * 1; this.Sy = dx * 1; this.cellVol = dx * dy * 1; } public function Step(timeStep:Number):void { var col:uint = 0; var row:uint = 0; var node:Node = null; for (col = 2; col < xGridNum - 2; col++ ) { for (row = 2; row < yGridNum-2; row++ ) { node = Tlist[Index(col, row)] as Node; CalTnext(timeStep,node,col,row); node.T0=node.T; } } } public function CalTnext(timeStep:Number,node:Node,col:uint,row:uint):void { var conner:Boolean=false; var node_Adj:Node = null; var conductionHeat:Number = 0; //For Node on/in Connor or Edge var SxFix:Number=1;//Area Fix Factor For Non-Interior Region in X Direction var SyFix:Number=1;//Area Fix Factor For Non-Interior Region in Y Direction var VolFix:Number=1;//Volume Fix Factor For Non-Interior Region in Y Direction if(((col==2)&&(row==2))||((col==2)&&(row==yGridNum-3))||((col==xGridNum-3)&&(row==2))||((col==xGridNum-3)&&(row==yGridNum-3))) { SxFix=1/2.0; SyFix=1/2.0; conner=true; } if((col==2)||(col==xGridNum-3)) { VolFix/=2; if(!conner) { SyFix=1/2.0; } } if((row==2)||(row==yGridNum-3)) { VolFix/=2; if(!conner) { SxFix=1/2.0; } } node_Adj = Tlist[Index(col+1, row)] as Node; conductionHeat+=node.eHeatExchangeFactor*(node_Adj.T0-node.T0)*Sx*SxFix; node_Adj = Tlist[Index(col-1, row)] as Node; conductionHeat+=node.wHeatExchangeFactor*(node_Adj.T0-node.T0)*Sx*SxFix; node_Adj = Tlist[Index(col, row+1)] as Node; conductionHeat+=node.nHeatExchangeFactor*(node_Adj.T0-node.T0)*Sy*SyFix; node_Adj = Tlist[Index(col, row - 1)] as Node; conductionHeat+=node.sHeatExchangeFactor*(node_Adj.T0-node.T0)*Sy*SyFix; var dT:Number = conductionHeat * timeStep; dT /= cellVol * VolFix * node.Rho * node.Cp; node.T = node.T0 + dT; } public function LatentHeatRelease(node:Node):void { } //Apply the Boundary Condition public function ApplyBC():void { } private function Index(col:uint=0,row:uint=0):uint { return row * xGridNum + col; } } }
简单吧,需要注意的是不同位置的节点其传热面积以及控制体体积不尽相同,需要Fix一下。可以预见,如果将SxFix、SyFix,VolFix设置为Node类的成员变量,计算会更快。这里给出初步的计算结果(迭代100s的结果)。目前笔者没有贴出所有代码,这时按照笔者提供的程序是无法运行的,读者想想,还缺点什么?
将其对称得到整个界面:
有点样子了,这还不是最终的计算结果,凝固潜热还没有考虑进去,可以使用物理意义明确的温度回升法处理。另外,我们没有离散偏微分方程,但是我们的方法和离散偏微分方程殊途同归的。也许读者可以理解有限差分和有限容积的连续与区别了。
相关文章推荐
- 节点离散温度场有限差分(有限容积)程序入门之三:2D温度场显式迭代计算(暂不考虑潜热)
- 温度场有限容积法程序入门之七:相变过程温度场的数值计算
- 温度场有限容积法程序入门之四:网格剖分.边界条件设置.迭代.导出后处理数据
- 温度场有限容积法程序入门之七:相变过程温度场的数值计算
- 温度场有限容积法程序入门之五:展望及问题
- 温度场有限容积法程序入门之六:后处理.isoline的绘制.基于Flash.Display.Graphics绘图API
- 温度场有限容积法程序入门之六:后处理.花絮.Contour Plotter and 3D Function Grapher Together - the Applet and the Souce Co
- 温度场有限容积法程序入门之一:综述
- 温度场有限容积法程序入门之二:程序设计.热阻.热导.类的概念.定解条件
- 温度场有限容积法程序入门之六:后处理.Contour的绘制.基于Adobe Flash Stage3D技术
- Mathcad 是一种工程计算软件,主要运算功能:代数运算、线性代数、微积分、符号计算、2D和3D图表、动画、函数、程序编写、逻辑运算、变量与单位的定义和计算等。
- java入门程序100例学习笔记(007车牌号计算)
- Mathcad 是一种工程计算软件,主要运算功能:代数运算、线性代数、微积分、符号计算、2D和3D图表、动画、函数、程序编写、逻辑运算、变量与单位的定义和计算等。
- 从《全球排名第一SETI@Home贡献者被学校开除》引发的网格计算程序的机制设计考虑
- 网易云课堂程序设计入门--C语言第一周 简单的计算程序学习笔记
- C#8—写一个测试标准身高体重的程序、输入日期年月日, 计算这一天是一年中的第几天(考虑闰年)
- c#入门:简单的数组,编写一个程序,接收每件商品的价格,计算应付的总金额并输出
- 格式对流温度场有限差分(有限容积)程序入门之五:展望及问题
- 阶乘之计算从入门到精通-程序运行时间的测量
- iOS入门开发计算器小程序,包括button、label、image的使用