计算流体力学实验报告
计算流体力学实验报告——热传导方程求解
姓名:梁庆
学号:0808320126
指导老师:江坤
日期:2010/12/30
基于FTCS格式热传导方程求解程序设计
摘要
计算流体力学是通过数值方法求解流体力学控制方程,得到流场的定量描述,并以预测流体运动规律的学科。在CFD中,我们将流体控制方程中积分微分项,近似的表示为离散的代数形式,使得积分或微分形式的控制方程转化为离散的代数方程组;然后通过计算机求解这些代数方程,从而得到流场在空间和时间点上的数值解。
基于以上思路,我们利用FTCS格式差分,工程上常用的热传导方程,并编制计算机求解程序,解出其数值解。并通过Matlab绘制,求解结果,分别以二维,三维的形式,给出求解结果,本实验通过求解的数值解,制作了1秒内长度为1的距离内,热传导情况动画,以备分析所用。
关键词FTCS 有限差分热传导方程
一、 问题重述
编制一个可以有限差分程序,实现求解热传导方程。 非定常热传导方程:
22(0)
u u t t
γγ??=>??
初边值问题的有限差分求解。初始条件和边界条件为:
(,0)()
(0,)()0(1,)()0
u x f x u t a t u t b t =??
==??==? 其中1γ=,初值条件为:000.3()1
0.30.71010
0.7 1.0
3
3x f x x x ?
<?=<??-+ 取网格点数Mx=100,要求计算t=0.01,t=0.1,t=1,t=10,时的数值解。计算时间步长取
2
0.1t
x γσ=
=V V 。差分格式为:FTCS 格式。
本程序采用FTCS 格式为:
111
(12)n n n n k k k k u u u u σσσ++-=+-+
二、 程序设计规程
解决差分格式程序设计,主要解决初值初始化问题,差分求解问题,输出显示问题,
三大模块。本文通过函数设计,分别将这里的三个问题,用三个函数实现。
图1 设计总图
具体差分原理如下:
图2 差分模块
三、程序建立及各模块
1.初始化模块建立
本程序需实现有提示性的操作,因而需要有相应的文字输出,在主函数中,输出提示文字,输入界面如下:
图3 输入界面
2.差分模块的建立
差分模块函数体:
void deidai(double **num,double x,double t)
{ double dt=t/(N-1); double dx=x/100.0;
double ss=dt/(dx*dx);
cout<<"差分因子为:"< for(int i=1;i for(int j=1;j<100;j++) num[i][j]=ss*num[i-1][j+1]+(1-2*ss)*num[i-1][j]+ss*num[i-1][j-1];//差分格式 } 00.10.20.30.40.50.60.70.80.91 位置 X 热传导量u 热传导方程求解结果 3. 显示模块的建立 本程序在输入求解时间上,每次所取的差分空间步长,由题目中100网格数所定,时间步长由2 0.1t x γσ= =V V ,反求得到,故而,所求时间越长,所求得的结果越细,为了便于在 c++中输出显示,实验时只输出其中一部分结果。而在在后序图形化显示中,利用了求解出的全部结果。 四、 实验结果分析 利用C++求解程序,计算出题目要求的,时间分别为t=0.01,t=0.1,t=1,t=10;时数值解,老师可调阅所附文件夹中的“所有时间的数值解.txt ”文件,为了便于图形显示及说明,下面只说明T=1s 的过程的结果。(T=10s 时间过长,1s 后结果已经基本趋于0) 下图所绘即为,T=1s 时的结果,以时间间隔0.1s 输出,T=0s 时为初始条件 图4 1s 热传导过程 从结果中可以明显看出,0.1秒内,下降的最快,而后下降速度放缓,最终趋于0, 这符合经验的结果,因为边界条件热传导两边均为0,随着时间的递减,中间的热量也必将变为0 距离X 时间T 热传导U 下图为1s 内热传导立体图: 图5 1s 热传导三维立体图 更详细的结果,见所附文件,并有动画展示求解结果。