计算流体力学---报告

计算流体力学---报告
计算流体力学---报告

计算流体力学

——计算机编程报告

班级: 09083201

学号: 0908320125

: 马海涛

一.题目:非定常热传导方程

?u

?t =γ

?2u

?x 2

(γ>0)

初值问题的有限分差求解。求解域(x,t)∈[0,1]×[0,∞],初值条件和边

界条件为

{u (x ,0)=f (x )u (0,t )=a (t )u (1,t )=b (t )

其中,γ=1。处置边界条件具体取法为 F(x)= {0 0

1 0.3≤x ≤0.7?103

x +10

3

0.7≤x ≤1.0

取网格点数M x =101,要求计算t=0.01,0.1,1,10时的数据。计算中时间

步长的取法为x =

γ?t ?x 2

=0.1,0.5,1。

差分格式:FTCS 格式,BTCS 格式

二.分析:编制通用过程,给定参数由手动输入获得,将给定参数带入相应方

程得到不同格式不同参数下的数值解,再将数据输出进行处理。程序

三.编程过程:

(1)FTCS 格式:根据FTCS 格式解法第一步利用边界条件置n=0,为差分格式赋初值,编程步骤为:

For i = 1 To 100 '赋初值

x(i) = x(i - 1) + 0.01

u(1, i) = 0

u(0, i) = 0

Next

For i = 0 To 100 '求函数 If x(i) < 0.3 Then

f(i) = 0

ElseIf x(i) >= 0.3 And x(i) <= 0.7 Then

f(i) = 1

ElseIf x(i) > 0.7 And x(i) < 1 Then

f(i) = (-10 / 3) * x(i) + 10 / 3

End If

Next

For i = 0 To 100 '为数组u赋初值 u(i, 0) = f(i)

Next

第二步:利用循环求解点数值解,并将相应边界条件带入,在计算t 值大于等于输入t值时停止循环,因为迭代循环的一个数据只与它的前一个数据有关,为了节省存在编程时循环当中不断地用本次得到的数据赋给上一个变量,以达到释放前n-2个变量所占用的存。具体方式为:

Do '迭代循环

u(0, 1) = 0

u(100, 1) = 0

for k = 1 To 99 '迭代方程 u(k, 1) = c * u(k + 1, 0) + (1 - 2 * c) *

u(k, 0) + c * u(k - 1, 0)

Next

For k = 0 To 100

u(k, 0) = u(k, 1) ‘变量替换

Next k

t = t + c * 0.01 * 0.01

Loop While t < z

第三步:将所得数据输出,利用Excel作出相应图像。其图像如下:

(2)BTCS格式:

第一步:赋初始值,置n=0,用循环带入初始条件得到u k0的值

程序如下:

For i = 1 To 100 '赋初值

x(i) = x(i - 1) + 0.01

Next

For i = 0 To 100 '求函数

If x(i) < 0.3 Then

f(i) = 0

ElseIf x(i) >= 0.3 And x(i) <= 0.7 Then

f(i) = 1

ElseIf x(i) > 0.7 And x(i) < 1 Then

f(i) = (-10 / 3) * x(i) + 10 / 3

End If

u(i, 0) = f(i)

u(0, i) = 0

u(1, i) = 0

Next

For i = 2 To 100 '为矩阵元素赋初值

b(i) = -1 - 2 * w

c(i) = w

a(i) = w

Next

For i = 1 To 99 '为矩阵元素中间变量赋初值

d(i, 0) = -u(i, 0)

Next

第二步:同样采用循环迭代,并利用FTCS中变量替换的方式节省存,

同时以相应步长对t从零开始累加,直到大于等于输入t值时为止,程序如下:

Do '迭代循环 u(0, 1) = 0

u(100, 1) = 0

For i = 1 To 99 '迭代方程

v(i) = c(i) / (b(i) - v(i - 1) * a(i))

u(i, 0) = (d(i, 0) - u(i - 1, 0) * a(i)) / (b(i) - v(i - 1) * a(i))

Next

For i = 99 To 1 Step -1

u(i, 1) = u(i, 0) - v(i) * u(i + 1, 1)

Next

For k = 0 To 100 '为矩阵元素赋初值

d(k, 0) = -u(k, 1)

u(k, 0) = u(k, 1)

Next k

z = z + w * 0.01 * 0.01

Loop While z < t

第三步:将数据输出并作图表进行数据分析。图表如下:

四.总结:

计算参数的选择对结果的影响:向前差分法相对于向后差分法对数的要求较高,当σ=1时向前差分法只有在t=0.01时收敛,其他的t值均不收敛,而对于向后差分法则没有出现这种现象在给定的12组参数下均收敛。对于σ=0.1,,05时两种方法均可以。

相关主题
相关文档
最新文档