计算水动力学报告

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

计算水动力学报告

一、计算水动力学概述

随着电子计算机的出现和现代计算机技术的飞速发展,计算流体力学作为新的流体力学分支,集合了数值模拟、数值计算和计算机实验等各方面的特性,主要针对我们日常水力学的数值求解问题。

目前,计算水动力学的发展,已经从一维、二维数值模拟进入三维数值模拟,从势流发展到漩涡运动,从层流发展到紊流模拟,从恒定流发展到非恒定流,从单相流发展到液、固两相流,再到液、固、气三相流,从大范围流动到水流内部机理等都有所研究。其中,对于非恒定流、渗流、自由面溢流、水利机械流动的水力计算、粘性流与紊流模拟的研究都有较大的进展。

二、计算水动力学原理和方法

在计算水动力学中,求解流体力学的方法一种是解析方法,一种是数值方法。对于解析方法,必须要面对基本方程的非线性性质和几何形状不规则这两个难题,这给解析求解带来了很大的困难。

随着电子计算机的发展,开始产生了适用于计算机求解的数值方法,如有限差分法、有限元法、边界积分方程法、快速变换、统计实验法等。它们主要的原理,就是将基本方程进行离散,然后通过各种优化算法,使得数值解尽量的逼近解析解的真值。

三、泊松方程的迭代求解

泊松方程为2222(x,y)u u

f x u

∂∂+=-∂∂,(x,y)∈Ω

其边界条件(x,y)1,(x,y)u =∈∂Ω,其中(){},0,1x y x y Ω=<<

3.1用菱形五点差分离散格式

如下图所示,用直角坐标系在Ω上打网格,令x y h ∆=∆=, xi=ih, yj=jh ,h=1/(N+1), i,j=1,2,……,N.

对泊松方程,在(),y i j x 上用五点差商格式进行二阶偏导离散,即

()()()()22

11221,y 2,y ,y i j i j i j u u x u x u x o h x h +-∂⎡⎤=-++⎣

∂ ()()()()2211221

,y 2,y ,y i j i j i j u u x u x u x o h y h +-∂⎡⎤=-++⎣

⎦∂ 将离散格式导入泊松方程,经过化简得到

2,1,1,,1,14i j i j i j i j i j ij u u u u u h f +-+-----=

即2,1,1,,1,11

4

i j i j i j i j i j ij u u u u u h f +-+-⎡⎤=++++⎣⎦,截断误差()2

o h 3.2、边界条件的处理

()()0,,01u j u i ==

3.3、代数方程组求解

各内节点菱形五点格式方程+各边界节点方程—代数方程 各方程统一形式:ij nb nb ij u a u b -=∑

其中:(i ,j )内部节点与边界节点的集合Ω; nb 代表与(i ,j )相邻的各结点,也属于集合Ω。 方程组的矩阵形式Au=b

迭代法求解设迭代初值()0ij u ,第一步迭代值()

1ij u ,第二步迭代值

()()()1*

1,0,1,2k k ij ij nb nb ij u w u w a u b k +=-++=∑……直至1max k k ij

ij u u ε+-< (1) J acobi 迭代法()()

1,0,1,2k k ij nb nb ij u a u b k +=+=∑ (2) G auss-Seidel 迭代法()1*,0,1,2k ij nb nb ij u a u b k +=+=∑

*

nb

u 为nb u 最新迭代值 (3) 松弛迭代法(SOR 法)

()()()1*1,0,1,2

k k ij ij nb nb ij u w u w a u b k +=-++=∑

松弛因子w>1,超松弛,加快收敛速度;w<1.欠松弛,放慢收敛速度,避免迭代的不稳定

四、结果分析

采用松弛迭代法

程序如下

!泊松方程菱形5点格式法迭代

program main

implicit none

integer ,parameter:: n=1000,m=100

real :: u(0:m,0:n) ,a(0:n),b(0:n),w,e

integer t,i,j

write (*,*) "输入松弛因子w"

read (*,*) w

write (*,*)"输入收敛精度e"

read(*,*) e

write(*,*)"初始值u(1,1),u(2,1)"

read (*,*) u(1,1),u(2,1)

a(0)=u(1,1)

b(0)=u(2,1)

t=0

!差分方程组

do i=0,n-1

a(i+1)=(1-w)*a(i)+w*0.25*(3+b(i))

b(i+1)=(1-w)*b(i)+w*0.25*(3+a(i+1))

end do

!记录迭代收敛次数

do while (abs(a(t+1)-a(t))>e)

t=t+1

end do

!输出结果

open(10,file="bosong.txt")

write(10,*)"输入松弛因子w" , w

write(10,*)"收敛精度e" , e

write(10,*)"初始值u(1,1),u(2,1)", u(1,1),u(2,1)

do i=0,t

write (10,*) i,a(i)

end do

stop

end

设置边界条件都为1,f(x,y)=0,两个待求解点u(1,1),u(2,1)的初始值都设为 2.1,收敛精度为0.00001,分别取松弛因子为0.8,1.2,1.5,1.7,1.9共5个不同的松弛因子。

相关文档
最新文档