一、问题及要求。
一维对流扩散问题的有限体积法数值模拟求解。
控制方程:其中,, 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...