5.2.2 二维导热算例-迭代计算

我们首先介绍温度场的求解吧,假设边界条件和初始条件已经设定。在贴代码之前,我们先谈谈这个类需要什么属性和行为:节点数组用于存储计算变量、网格大小、维度定义、计算函数,也就这么多了。如何计算某节点的温度?计算其东南西北方位相接节点对该节点的穿导热之和即可,读者这里可以考虑一下如何添加源相和对流换热进去。

1. packageSoong.Solver
2. {
3.  public class TSolver
4.    {
5.  public var Tlist:Vector.<Node>;
6.  
7.  private var xGridNum:uint = 1;//Number of GridAllocated in X Direction
8.  private var yGridNum:uint = 1;//Number of GridAllocated in X Direction
9.  
10.  public var dx:Number = 1;//Grid Size in XDirection
11.  public var dy:Number = 1;//Grid Size in YDirection
12.  
13.  public var Sx:Number = 0;//Area of HeatInterface in X Direction
14.  public var Sy:Number = 0;//Area of HeatInterface in X Direction
15.  
16.  public var cellVol:Number = 0;//Volume ofControl Volume
17.  
18.  public var Freezing:Boolean=false;//If Time toFreeze
19.  
20.  public functionTSolver(xGridNum:uint,yGridNum:uint,dx:Number,dy:Number)
21.       {
22.  this.xGridNum = xGridNum;
23.  this.yGridNum = yGridNum;
24.  
25.  this.dx = dx;
26.  this.dy = dy;
27.  
28.  this.Sx = dy * 1;
29.  this.Sy = dx * 1;
30.  
31.  this.cellVol = dx * dy * 1;
32.       }
33.  
34.  public functionStep(timeStep:Number):void
35.       {
36.  var col:uint = 0;
37.  var row:uint = 0;
38.  var node:Node = null;
39.  
40.  for (col = 2; col < xGridNum - 2; col++ )
41.          {
42.  for (row = 2; row < yGridNum-2; row++ )
43.             {
44.                node= Tlist[Index(col, row)] as Node;
45.  
46.                CalTnext(timeStep,node,col,row);
47.  
48.                node.T0=node.T;
49.             }
50.          }
51.       }
52.  
53.  public functionCalTnext(timeStep:Number,node:Node,col:uint,row:uint):void
54.       {
55.  var conner:Boolean=false;
56.  var node_Adj:Node = null;
57.  
58.  var conductionHeat:Number= 0;
59.  
60.  //For Node on/in Connor or Edge
61.  var SxFix:Number=1;//Area Fix Factor For Non-Interior Region in X Direction
62.  var SyFix:Number=1;//Area Fix Factor For Non-Interior Region in Y Direction
63.  
64.  var VolFix:Number=1;//Volume Fix Factor For Non-Interior Region in Y Direction
65.  
66.  if(((col==2)&&(row==2))||((col==2)&&(row==yGridNum-3))||((col==xGridNum-3)&&(row==2))||((col==xGridNum-3)&&(row==yGridNum-3)))
67.          {
68.             SxFix=1/2.0;
69.             SyFix=1/2.0;
70.  
71.             conner=true;
72.          }
73.  
74.  if((col==2)||(col==xGridNum-3))
75.          {
76.             VolFix/=2;
77.  
78.  if(!conner)
79.             {
80.                SyFix=1/2.0;
81.             }
82.          }
83.  
84.  if((row==2)||(row==yGridNum-3))
85.          {
86.             VolFix/=2;
87.  
88.  if(!conner)
89.             {
90.                SxFix=1/2.0;
91.             }
92.          }
93.  
94.          node_Adj= Tlist[Index(col+1, row)] as Node;
95.          conductionHeat+=node.eHeatExchangeFactor*(node_Adj.T0-node.T0)*Sx*SxFix;
96.  
97.          node_Adj= Tlist[Index(col-1, row)] as Node;
98.          conductionHeat+=node.wHeatExchangeFactor*(node_Adj.T0-node.T0)*Sx*SxFix;
99.  
100.         node_Adj= Tlist[Index(col, row+1)] as Node;
101.         conductionHeat+=node.nHeatExchangeFactor*(node_Adj.T0-node.T0)*Sy*SyFix;
102. 
103.         node_Adj= Tlist[Index(col, row - 1)] as Node;
104.         conductionHeat+=node.sHeatExchangeFactor*(node_Adj.T0-node.T0)*Sy*SyFix;
105. 
106. var dT:Number =conductionHeat * timeStep;
107.         dT/= cellVol * VolFix * node.Rho * node.Cp;
108. 
109.         node.T= node.T0 + dT;
110.      }
111. 
112. public functionLatentHeatRelease(node:Node):void
113.      {
114. 
115.      }
116. 
117. //Apply the Boundary Condition
118. public functionApplyBC():void
119.      {
120. 
121.      }
122. 
123. private functionIndex(col:uint=0,row:uint=0):uint
124.      {
125. return row * xGridNum + col;
126.      }
127.   }
128.}

简单吧,需要注意的是不同位置的节点其传热面积以及控制体体积不尽相同,需要Fix一下。可以预见,如果将SxFix、SyFix,VolFix设置为Node类的成员变量,计算会更快。这里给出初步的计算结果(迭代100s的结果)。目前笔者没有贴出所有代码,这时按照笔者提供的程序是无法运行的,读者想想,还缺点什么?

将其对称得到整个界面:

有点样子了,这还不是最终的计算结果,凝固潜热还没有考虑进去,可以使用物理意义明确的温度回升法处理。另外,我们没有离散偏微分方程,但是我们的方法和离散偏微分方程殊途同归的。

原文发布于微信公众号 - 传输过程数值模拟学习笔记(SongSimStudio)

原文发表时间:2018-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法与数据结构

PTA 7-2 列车调度(25 分)

7-2 列车调度(25 分) 火车站的列车调度铁轨的结构如下图所示。 ? 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平...

3109
来自专栏小樱的经验随笔

UESTC 1599 wtmsb【优先队列+排序】

题目链接:UESTC 1599 wtmsb 题意:给你一组数,每一次取出两个最小的数,将这两个数的和放入这组数中,直到这组数只剩下一个,求最后剩下那个数的大小!...

2746
来自专栏量化投资与机器学习

【精心解读】用pandas处理大数据——节省90%内存消耗的小贴士

本文我们讨论 pandas 的内存使用,展示怎样简单地为数据列选择合适的数据类型,就能够减少 dataframe 近 90% 的内存占用。

1.8K5
来自专栏ATYUN订阅号

PyTorch 4.0版本迁移指南

欢迎阅读PyTorch 0.4.0的迁移指南。在此版本中,我们引入了许多振奋人心的新功能和重要的bug修复,旨在为用户提供更好,更清晰的接口。在这个指南中,我们...

1652
来自专栏desperate633

[编程题] 猜数游戏分析代码

首先我们分析,dp[i]表示前i个数的合法个数 当第i个数是素数的时候,前面除了1都没有能除尽的,所以这个位置可以随便选Y或N,所以dp[i] = dp[i-...

1163
来自专栏阿凯的Excel

文本数字拆分技巧(第二弹!)

上期刚刚分享了简单的通过智能填充和Len与LenB函数实现的文本数字拆分! 感兴趣可以点我先看上一期的! 本期难度较上期略有提高,和您分享新的技巧。 ? 没...

3007
来自专栏aCloudDeveloper

大神洗礼第三讲——接上一讲

Author:bakari                 Date:2012.10.26 这一讲的主要内容和上一讲相同,是上一讲的深入分析。内存对齐涉及内存实...

2108
来自专栏小工匠技术圈

【小工匠聊密码学】--消息摘要--MD算法

1865
来自专栏java达人

哈希表

哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接...

1847
来自专栏take time, save time

你所能用到的BMP格式介绍(二)

一、可能你忽视的基础         在正式开始之前,我不得不从最基本的地方开始,因为这些地方大多数人会忽视的一干二净,如果不在开始进行说明,那么在后面一定会有...

2967

扫码关注云+社区

领取腾讯云代金券