CFD大作业

发布 2020-02-25 08:32:28 阅读 8325

一、问题及要求。

一维对流扩散问题的有限体积法数值模拟求解。

控制方程:其中,, 1;

边界条件:

采用有限体积法计算在之间的分布;并与严密解通过作图做出比较。严密解:

二、有限体积法的推导。

首先,对于该问题,采用控制容积积分,可得:

由奥式公式可得:

即:以上公式的物理量是针对节点所在单元网格界面而言的,现在采用中心差分法将界面参数值,用相邻节点处的对应物理量表示:

为了简洁,可令。

由于是一维问题,所以,方程中的面积项可以约分掉。将所有离散结果代入上述积分后的方程中,并按节点处的物理量值来整理,可得:

即对一般节点(相对于第一个节点和第个节点之外的节点),方程的形式如下:

式中,第一个节点和第个节点由于边界划分不同于其他节点,并牵涉到边界条件,考虑在上述方程中引入一项。这样,所有节点的方程形式可以统一为:

以上所述,是对一般一维对流扩散问题的通用离散方式,在本题中,由于题设条件的特殊性,可以得到以下的一些简化:

1.由于,假设离散点的个数为,则可以得到,;

2.由于=1,所以;

3.由题目知,,则第个节点的坐标为,第个节点的西侧,东侧界面上的值则可写出:。

基于以上3条,就可以得到本题中第节点的方程。此时,有:

代入,的表达式,可得。

对于一般节点,以上三个系数就已经确定完整方程,也就是说,在通用形式中的项为零。接下来,考虑首尾两个节点。

对于节点1,我们知道,将以上条件代入离散方程,并整理,可得。

则可得到在节点1处,方程中的各参数值为:

同理,我们可以列出第个节点处的各个方程参数:

代入,可得离散方为。

各方程系数可以确定。

至此,所有节点的方程已经确定,我们得到一组对三角形式的方程组,可以通过tdma算法来进行方程的求解。

三、tdma算法的推导。

tdma算法所针对的方程组的通用形式为。

而节点是相邻的,故将离散方程组进行简单变形,就可以清楚看到各个系数之间的对应关系。

为了便于查看,将系数整理成**,如表1,表2所示:

表1:离散方程中的各个方程参数。

tdma算法求解离散方程组主要有向前消元和向后回代两个步骤,回代过程的通式为:

式中,表2 tdma解离散方程组中相关方程参数。

由边界条件可知,都是可以求出的,然后反复利用上边公式,即可求出所有方程的相关参数,现将其列表如表2。

在本题中,(因为)是可以计算出来的,如此即可回代,逐次求出所有方程的解。

四、利用fortran编程求解方程组。

利用fortran语句对tdma算法中的回代过程进行编程,在编程中取节点数,程序**如下。

program tdma

程序目的:用tdma算法来求解一维稳态对流扩散问题离散后的方程组。

implicit none强制显式声明变量,方便程序维护和修改。

变量词典。integer::i节点下标,也是方程组中方程的序号,所有数组的下标变量。

real::n=100.0节点个数在方程组中系数中会出现,为避免混合类型运算,定义为实型。

real,dimension(100)::phy待求解物理量构成的数组。

real,dimension(100)::a

real,dimension(100)::b

real,dimension(100)::a_

real,dimension(100)::c

real,dimension(100)::c_

real,dimension(100)::d声明方程组中各系数,中间系数所构成的数组。

根据边界条件,求出方程组中的各个系数。

b(1)=0.0

d(1)=3.0*n+20.0/n

a(1)=n-20.0/n

c(1)=2.0*n

a_(1)=a(1)/d(1)

c_(1)=c(1)/d(1第一个节点牵涉到边界条件,单独求解相关系数,并以其来递推其余节点的方程系数。

a(100)=0.0

b(100)=n+20.0*(n-1)/n

d(100)=3.0*n+20.0/n

c(100)=0.0最后一个节点相应边界条件。

do i=2,99

b(i)=n+20.0*(i-1)/n

d(i)=2.0*n+20.0/n

a(i)=n-20.0*i/n

a_(i)=a(i)/(d(i)-b(i)*a_(i-1))

c_(i)=(b(i)*c_(i-1)+c(i))/d(i)-b(i)*a_(i-1))

end do

a_(100)=a(100)/(d(100)-a_(99)*b(100))

c_(100)=(b(100)*c_(99)+c(100))/d(100)-b(100)*a_(99)) a_(100),c_(100)中要用到99节点相关信息,故在最后给出。

write方程组中的关键系数a_(i)和c_(i)'

write节点数 a_(i) c_(i)'

do i=1,100

write(*,i,a_(i),c_(i)

end do检验方程系数是否合理。

方程组已经确定,用tdma的回代过程求解方程组。

phy(100)=c_(100回代方程组的初始解。

do i=1,99

phy(100-i)=a_(100-i)*phy(100-i+1)+c_(100-i)

end do

writetdma求得的方程组'

do i=1,100

write(*,phy(i)

end do

open(12,file=''

do i=1,100

write(12,*)phy(i导出计算结果到文件中。

end do

close(12)

read没有实际意义,只是为了保证运行时,dos窗口能停留。

end program tdma

将以上**编译运行后,即可得到离散方程自的解。以下是程序运行结果的部分截图(图1所示):

图1 fortran程序运行结果截图。

五、离散结果的图像化以及与严密解的对比:

在前面**中,已经将方程的结果导入到文件之中,利用matlab即可做出对应的离散解图形,如图2所示。

图2 离散解的图像。

为了和严密解做出对比,利用matlab做出严密解的图像,相应**截图如图3:

图3 matlab求严密解的**。

求得的严密解的图像如图4所示:

图4 严密解的图像。

大致对比,两者的图像基本吻合,为了进一步说明离散结果的正确性,将两幅图做在同一坐标系之下,如图5所示。

图5 严密解和离散解的结果对比。

对比之下,可以得出结论:在节点数取100的时候,离散结果已经和严密解吻合程度相当高了,说明了本次利用有限体积法求解结果的正确性。通过此次完成大作业,我第一次接触并使用了fortran语句之后,便对它产生了浓厚的兴趣,觉得它是所有语句中最人性化的编程语言,我想在以后的学习工作中,我还会对它做更深入的研究学习的。

大作业CFD上机

计算船舶流体力学上机报告。学院 船舶工程学院 专业 船舶与海洋工程 指导教师 周军伟 学号 13s030099 姓名 李宏源 一 编程所涉及的方程。1 方程的守恒形式。2湍流模型。3无量纲化。3.1 二维不可压ns方程的无量纲化。省略表示无量纲量上标的 3.2旋转坐标系。3.3任意曲线坐标系下的变形...

CFD作业

流动换热模拟。一 提出问题。在cfx模拟流体流过与之温度不同的固体物质,二者之间发生热量传输现象称之为共轭传热,本报告以cfx来研究管道内气体与钢棒之间的共轭换热。二 计算模型。在气体管道中,有两根钢制固体加热棒,其表面保持500k高温,300k的气体从管道内通过,与钢棒之间发生热交换,钢棒对气体对...

CFD作业

班级 0903 姓名张xx学号 u 问题描述 冷水和热水分别自混合器两侧沿水平切向方向流入,在容器内混合后,经过下部渐缩通道流入等径的出流管,最后流入大气。大圆柱半径10 cm,高度8 cm,渐缩圆台上半径10 cm,下半径1 cm,高度5cm。冷水入口 速度 1 m s 温度 280 k 直径 2...