数值传热学第一次大作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cout<< " σ =" << c <<endl<<endl; for(j=0;j<=M;j++)
{ cout<< result[j] <<endl; //输出结果
} cout<<endl<<endl; } } }
3.3 计算结果
本非定常热传导问题设置不同取值时刻与不同时间步长取法来探究 ������ 与 ������
其中,各项系数: ������������ = 1 + 2������,������ = 1,2, … , ������ − 1 ������������ = ������,������ = 1,2, … , ������ − 2 ������������ = ������,������ = 1,2, … , ������ − 1 ������������ = ������������������ ,������ = 1,2, … , ������ − 2
//输入输出流头文件 //包含了许多数学函数的库文件 //使用 std 这个名字空间 //返回整形变量,若 void main 不用返回
//参数设定 //空间步长
double t=0.01;
//选定时刻
double deltaT=c*deltaX*deltaX; //时间步长
int const M=100;
//空间迭代
{
T[j]=result[j]+deltaT*(result[j+1]-2*result[j]+result[j-
1])/deltaX/deltaX;
}
if(i*deltaT==t)
{
cout<< "FTCS" <<" "<<endl;
cout<< "Time=" << t <<endl;
������Δ������ σ = Δ������ 2 = 0.1, 0.5, 1.0 差分格式:FTCS 格式,BTCS 格式,CNCS 格式。
2 问题初始化
问题为一维,要求网格点数 M=100,故 x 方向按空间步长: 1
Δ������ = M = 0.01 而根据 σ 规定时间步长 Δ������ 取为1 × 10−5,5 × 10−5 ,1 × 10−4;
构造 n+1 时刻的线性方程组: ������������ ������������ = ������������ ������������+1 + ������������ ������������−1 + ������������ , ������ = 1,2, … , ������ − 1;
端点条件: i = 1,������������ = 0 i = ������ − 1,������������ = 0
������
������
������
0.01
0.1
1
10
0.1 1 × 10−5 1 × 103 1 × 104 1 × 105 1 × 106
0.5 5 × 10−5
200 2 × 103 2 × 104 2 × 105
1.0 1 × 10−4
100 1 × 103 1 × 104 1 × 105

定解条件:
初始值:������ ������, 0 = ������ ������ ,即:
���������0��� = ������ ������ = ������ ������ ∙ Δ������ , ������ = 0,1,2, … ������ 边界条件同 FTCS 格式设为定值 0。
差分方程的求解:
图5 图6
4.1 离散差分方程
4 BTCS 格式
内部节点:
������������������
− ������������������−1 Δ������
Байду номын сангаас
=
������
������������������+1

2������������������ + ������ 2
������������������−1
������ 1, ������ = ������(������)
其中������ = 1,初值条件的具体取法为:
0
������ x =
1
− 10/3 ������ + (10/3)
0 < ������ < 0.3 0.3 ≤ ������ ≤ 0.7 0.7 < ������ < 1.0
取网格点数 M=100,要求计算 t = 0.01,t =0.1,t =1,t =10 时的数值解,计 算的时间步长取法为:
且要求计算 t = 0.01,t =0.1,t =1,t =10 时的数值解,故时间网格数 ������ = ������ ,表 1 为不同时间 t 与时间步长 Δ������ 所对应的网格数������分布。
������������
表 1 不同的计算时间 t 与时间步长 Δ������ 所对应的时间网格数������分布
//参数设定
double deltaX=0.01;
//空间步长
double t=0.01;
//选定时刻
double deltaT=c*deltaX*deltaX;//时间步长
int const M=100;
//空间网格数
int N=t/deltaT;
//时间网格数
double T[M+1],P[M],Q[M],A[M],B[M],C[M],D[M];
3.1 离散差分方程
3 FTCS 格式
内部节点:
������������������ +1 − ������������������ Δ������
=
������
������������������+1

2������������������ + ������ 2
������������������−1
//空间网格数
int N=t/deltaT;
//10s 内的时间网格数
double T[M+1];
//存放初始值和边界值
double result[M+1];
//存放结果
int i,j;
//初始化
for(i=1;i<M;i++)
{
if(i*deltaX<0.3)
{
T[i]=0;
}
else if(i*deltaX<0.7)
对数值解的影响。
图 1、2、3、4 显示不同时刻 t = 0.01,t =0.1,t =1,t =10 时的温度分布, 取 ������ 为定值 ������ = 0.1。
图1
图2 图3
图4
图 1、2、3、4 分别是一维非稳态导热随时间变化的过程。随着时间从初始 时刻到第 10s 时刻,温度分布是逐渐趋向于零的,且越远离边界,温度越高, 这些符合实际分度分布情况。
������ = 0,1,2, … , ������ − 1
1 + 2������ ������������������+1 = ������ ������������������++11 + ������������������−+11 + ������������������ ;
其中 σ =
������������ ������ 2
, ������ = 1,2,3, … ������ − 1;
������ = 0,1,2, … , ������ − 1
定解条件:
初始值:������ ������, 0 = ������ ������ ,即:
���������0��� = ������ ������ = ������ ������ ∙ Δ������ , ������ = 0,1,2, … ������ 由初始条件的取值函数������ ������ ,将边界条件设为定值 0,即:
再由 THOMAS 算法将三对角阵消为容易解的二对角阵。
4.2 计算程序
#include<iostream>//输入输出流头文件
#include <cmath>
//包含了许多数学函数的库文件
using namespace std;//使用 std 这个名字空间
int main()
{
double c=0.1;
非定常热传导问题
1 题目
求方程:
������������ ������������
=
������
������ 2 ������ ������������ 2
初边值问题的有限差分解。
������ ������, 0 = ������(������) 求解域为 ������, ������ ∈ 0,1 × [0, ∞],初始条件和边界条件为 ������ 0, ������ = ������(������)
int j,i;
//初始化
for(i=1;i<M;i++)
目录
1 题目..............................................................2 2 问题初始化........................................................2 3 FTCS 格式 .........................................................3 3.1 离散差分方程....................................................3 3.2 计算程序........................................................3 3.3 计算结果........................................................5 4 BTCS 格式 .........................................................9

������������������+1 − ������������������ Δ������
=
������ ������������������++11 −
2������������������+1 ������ 2
+ ������������������−+11 ,������
=
1,2,3, … ������ − 1;
������0������ = ������������������ = 0,������ = 0,1, … , ������
3.2 计算程序
#include <iostream> #include <cmath> using namespace std; int main() {
double c=0.1; double deltaX=0.01;
4.1 离散差分方程 ................................................9 4.2 计算程序 ...................................................10 4.3 计算结果 ...................................................11 5 BTCS 格式 ........................................................12 5.1 离散差分方程 ...............................................12 5.2 计算程序 ...................................................13 5.3 计算结果 ...................................................15
下图 5 是相同计算时间 t=0.01 时,时间步长取法 σ = 0.1、0.5 结果比较, 由图知,两个计算结果基本相同。说明模拟计算具有一定的稳定性。
下图 6 是计算时间 t=0.01 时,时间步长取法 σ = 1 的计算结果。由图可知 方程的解出现了振荡,是因为差分方程能得到稳定解的条件是方程中各项系数 大于零。当 σ = 1 时,������������������ 的系数 1 − 2σ = −1 < 0,所以会出现振荡。
{
T[i]=1;
}
else
{
T[i]=10/3*(1-i*deltaX);
}
T[0]=0;
T[M]=0;
}
//节点差分
for(i=1;i<=N+1;i++)
//时间迭代
{
T[0]=0;
T[M]=0;
for(j=0;j<=M;j++)
{
result[j]=T[j];
}
for(j=1;j<100;j++)
相关文档
最新文档