标签:
openfoam杂谈 |
分类: OpenFOAM使用 |
很长时间没有写博文了,主要由于这学期事情太多。 今天和大家分享一下影响cfd计算量的众多因素。
影响 CFD 计算量的因素很多,大概可以归为一下几个部分
1)物理问题本身
物理问题本身的复杂程度直接关系到计算量。 一般而言,非线性模型的计算量要高于线
性模型,多相流计算量大于单相流动。 如果单纯从求解方程个数及其方程类型而言, 方程个
数越多计算量越大,比如提供例子中 square 需要解 3 个标量方程(标量 p 和向量 U (2d) ) ,
而 dambreak 需要求解 6 个方程(标量 p、向量 U(2d)、标量体积分率 alpha,标量湍流强
度 k 和标量湍流强度耗散率 epsilon)。因此 dambreak 的计算量要高于方块绕流 。湍
流模拟而言,大涡模拟的计算量要高于雷诺时均。
2)计算网格单元数目和维度
计算网格的单元数直接关系到最终代数方程组的个数(每个单元求解一个代数方程)。
计算单元的个数越多,代数方程组越难求解,计算量越大,因此在满足工程需求的情况下,
应尽量减少网格数目,以减低计算量。 当网格数目相同时,计算区域的维度越大,得到的代
数方程组越难求解。也就是说,网格数
标签:
openfoam研究教育 |
分类: OpenFOAM入门 |
今天探讨引起CFD计算过程中发散的一些原因。cfd计算是将描述物理问题的偏微分方程转化为代数方程组求解,从而得到离散空间上指定点上的值,而其他位置的值通过插值来完成。这本质是将非线性方程线性化并求解的过程,我是这样理解的,对于物理问题真解随时间的变化是一条曲线,而求解过程中不断的求解曲线的斜率,并实现时间的上的步进(可以理解为1阶导数)。如果在指定的时间步长内斜率变化很小,这种步进是可以满足方程要求的,并可以得到将来任意时刻的近似解。然而,如果变化比较大时,实际的变化过程将不能通过线性化方法来处理,这时候再使用这种方法就会出现问题。随着时间的推移,数值解越来越偏离真解,最终引起发散。对于我们求解的流动问题,有下面几种可能会引起计算过程的发散
1)时间步长过大
2)压力修正次数太少
标签:
openfoam研究教育 |
分类: OpenFOAM使用 |
在实际的流体模拟中通常以残差作为收敛的判据,有时候为什么残差永远降不下来呢?到底求得的数据是否可信呢?今天我们聊聊残差问题。
在CFD计算过程中有两种残差一种是外残差一种是内残差。残差是当前时刻的时刻的收敛数据带入到下一个时刻的方程中而引起的残差,而内残差是求解代数方程中引起的残差。
外残差: 对于方程f(x,t)=0在t_0时刻有收敛解x_0, 则f(x_0,t=t_0)=0; 当用t0时刻的结果代入到t1时刻的方程时,通常并不能满足方程,即 f(x_0, t = t_1) = r !=0; 这里的残差r称为外残差。
内残差:在cfd计算中通常将方程转化为代数方程Ax=b;当得到某个解A*x_0-b = r1; 这里的r1 ->0时,认为Ax=b收敛。 这里的r1为内残差。
对于稳态问题:只有当r->0时,才被认为收敛,也就是(x_1 - x_0)->0. 也就是我们在cfd计算中通常见到的那个残差,fluent及其pyFoam输出残差图就是这个r。r常被作为收敛判据。
对于非稳态问题,下一时刻的求解结果用于和当前的求解结果不一样(时变的,也就是非稳态),这时候r并不是很小,对于特定的问题,这个r永远不可能很小(因为是非稳态问题),所以对于非稳态问题外残差r不能作为收敛判据。
标签:
openfoam研究教育 |
分类: OpenFOAM使用 |
OpenFOAM-1.6\applications\utilities\postProcessing\sampling\sample。
下面简单的说一下sample的具体功能
1)取某条直线上的点
关键字:
标签:
openfoam研究教育 |
分类: 其他 |
蓝色流体社区有兄弟发表关于如何使用gnuplot来输出残差图,今天来探讨一下用pyFoam来完成残差图的。
pyFoam是控制OF运行的一个python 程序包,也就是将openfoam的运行部分包装了一下。 你可以通过svn下载最新版本的pyfoam,可以通过在控制台上输入下面命令。
svn co https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder/other/scripting/PyFoam/
下载了pyFoam以后,进入pyfoam文件夹,利用下面的命令安装
sudo python setup.py install
能够安装成功的前提是你的系统需要装有python.同时需要有gnuplot的支持。 如果你用的是ubuntu。可以直接通过下面命令下来gnuplot并安装
sudo apt-get install gnuplot。
安装过程比较简单,下面看看如果输出残差图
与openfoam残差有关的命令有
pyFoamRunner.py 他是对
标签:
openfoam研究教育 |
分类: OpenFOAM求解器说明 |
终于回国了,事情比较多,blog更新速度慢了些。
pimple的基本思想是:将每个时间步长内用simple稳态算法求解(也就是将每个时间步内看成稳态流动),时间步长的步进用piso算法来完成。
在有限容积离散中,时间项的离散仍采用的差分格式,这样做可以得到某个时间点的流场信息,而非某个时间步长的内的平均值。采用传统的piso算法求解变化较快的流动的时候,需要的时间步长较小(因为相邻两个时间点的流场不能差别太大,否则会发散),这样会造成求解的某种流动需要的耗时过长。 pimple算法将每个时间步长内看成一种稳态的流动(采用亚松驰来解决相邻两个时间段变化大的情况),当按照稳态的求解器求解到一定的时候,则采用标准的piso做最后一步求解。下面简单的将pimpleFoam流程
#include 'fvCFD.H'
#include 'singlePhaseTransportMode
#include 'turbulenceModel.H'
int main(int argc, char *argv[])
{
标签:
openfoam研究教育 |
分类: OpenFOAM类解析 |
标签:
openfoam研究教育 |
分类: OpenFOAM使用 |
标签:
openfoam研究教育 |
分类: OpenFOAM使用 |
标签:
openfoam研究教育 |
分类: OpenFOAM使用 |