众所周知,当我们在进行并行计算的时候,需要把网格进行剖分,OF中可以使用第三方库进行区域分解,可是我们知道,OF中的区域分解是不带重叠层的(或者说没有halo单元),也就是,同一个网格仅可能属于一个处理器。
那么问题来了,我现在想实现带有halo层的重叠型的区域分解,我该怎么实现呢?或者说,有没有那位大佬做过类似的工作或者相应的资料吗?跪谢了!
Micro
帖子
-
如果在OpenFOAM中进行重叠型区域分解? -
并行计算更新边界的问题?@samuel-tu =等号类似的操作都需要correctBoundaryConditions()
@李东岳 请问岳哥,为啥 = 号等类似的操作都需要显式更新下边条呢?能不能稍微解释下,感谢! -
关于OpenFOAM矩阵求解器@一二 为啥网格增加会增加求解的不稳定性呢?这是您测试得出的结果吧?请问有没有什么理论上的证明呢?谢谢!
-
关于OpenFOAM矩阵求解器@一二 好的啊,谢谢回复!我照您说的尝试下!
-
请问高阶格式的矩阵还能用LDU格式存储吗?@bestucan 太感谢了,非常有针对性的网址,谢谢!
-
OF中是怎么处理非线性的?@micro 自挖自填。
大家可以参考东岳老师关于icoFoam解析的文章,说的很正确的,一个时间步骤动量方程的系数是不变的,因为动量方程每个时间步中仅被组建了一次。但是每个时间步中,U可是被更新了好几次(在压力泊松循环中),两者并不矛盾!另外,我们同样可知,一个时间步中,我们反复求解压力泊松方程(一般是3次),压力泊松方程的系数同样是不变的,变化的是右端项(因为右端项是用速度组建的)。 -
为什么压力泊松方程离散后的矩阵是非对角占优的啊?@xpqiu 收到,还是非常感谢!!解释的已经很清晰了!
-
为什么压力泊松方程离散后的矩阵是非对角占优的啊?@李东岳 好的,谢谢李老师回复。“扩散项两个对角的元素是因为边界条件的作用”确实是这样!不过中间三个元素也满足对角占优啊
-
为什么压力泊松方程离散后的矩阵是非对角占优的啊?@xpqiu 好的!非常感激xpqiu教授的精彩细致的回复,那我可不可以根据您的回答总结这样一句话:单纯含有扩散项的方程离散后得到的矩阵性质并不好(因为不是严格对角占优的)。可是为什么下面的图片好像不太支持这样的结论呢?
您看,如果所示,这是一个一维对流扩散方程离散后的结果,其中,对流项对应的矩阵性质很不好(对角不占优且不对称),而扩散项离散后得到的矩阵确实严格对角占优的,具体网站:https://marinecfd.xyz/post/from-geometricfield-to-fvmatrix
请问为什么会出现相反的结果呢?希望您有时间能再稍微回复下!万分感谢!
-
为什么压力泊松方程离散后的矩阵是非对角占优的啊?对于泊松方程,由拉普拉斯算子离散而来,有两个特性,一个是离散后形成的矩阵对阵,另一个是非对角占优,正常来说,我们希望矩阵对称,并且对角占优,有利于在应用迭代法求解线性方程组过程中的收敛,此时称为矩阵的性质好?我想请教下,大佬们,有没有什么数学上或理论上的证明,或者说,什么条件下离散后的矩阵才具有对角占优的性质?为什么压力泊松方程是非对角占有的啊?谢谢!
附录:常见的求解变量的对上述两个条件满足状况如下压力方程 p(不可压缩非稳态流动) :对称矩阵,但对角相等,非对角占优,因此计算量较大。速度方程 U(不可压缩非稳态流动) :非对称矩阵,对角占优,计算量通常较 p 小。一般标量方程 k,epsilon,T 等(非稳态流动):非对称矩阵,对角占优,计算量较小。非稳态纯扩散方程(比如纯导热问题):对称矩阵,对角占优,计算量最小;因此,在计算过程中,可以对压力方程 p 选择“共轭梯度求解器+代数多重网格预条件器”而速度 U 和其他标量方程选择一般的共轭梯度求解器。
-
提取log文件中的一些信息很实用的提问,mark下!
-
请问高阶格式的矩阵还能用LDU格式存储吗?这里稍微自挖自填下吧,我感觉OpenFOAM中ldu的矩阵存储格式只能支持 对称矩阵的存储和寻址(对称指的是非零元的位置对称,大小可以不相等)。当然,还没有经过验证。对于(非零元)不对称的情况,我实在想不出来怎么用LDU去存储,难道说,OF就不只是一些高阶迎风格式吗?可是我看OF中好像也支持二阶格式啊,咋回事啊。。。。要是有大佬清楚麻烦稍微告知下!谢谢!
-
区域分解后polyMesh文件夹下的boundaryProcAddressing文件是什么含义?@bestucan 好的好的,非常合理的推断,我后面好好验证下。您关注过将PETSc继承到OpenFOAM中的工作吗,在那个工作中,就是涉及到要把每个进程上的矩阵矩阵(ldu格式)转换成PETSc所需要的全局CSR格式的矩阵,此时,就需要每个元素的全局索引,恩恩!
-
区域分解后polyMesh文件夹下的boundaryProcAddressing文件是什么含义?自挖自填,首先非常感谢 @bestucan 版主大佬 在另一篇帖子下的回答,答案在https://www.cfd-online.com/Forums/openfoam-programming-development/161366-global-index-cells-facess-parallel-computation.html网址下,其中九楼 解释了我的问题中 各个文件夹的用途,具体如下:
- boundaryProcAddresing - each element contains global index of patch that is present on current process, for "processor" boundaries this index is -1. Size of this array is equal to number of patches in global mesh plus number of "processor" patches in current processorj folder or processor.
- cellProcAddressing - each element contains global index of given local process cell. Size of this array is equal to number of cells in current processor
- faceProcAddressing - each element contains global index of given local process face. Size of this array is equal to number of face in current processor
- pointProcAddressing - each element contains global index of given local process point. Size of this array is equal to number of points in current processor
这样的话我在问题中展示的图片的含义就可以解释了。数组(0 1 2 -1 -1)的含义就是, 0 1 2代表全局网格中的3个patch。-1 -1 代表本地进程上有两个通信边界(interface)存在。
不过另一个问题来了,这样看来,这几个文件夹都是本地进程上的实体对应的全局索引,也就是说区域分解后的求解过程中,是需要利用上这些全局索引(信息)的,那么究竟要这些全局索引有什么用呢?或者说全局索引是怎么在通信中发挥作用的?有没有相关大佬能够解释下,或者指出对应的(拿着全局索引做事情的)代码也可以,谢谢大家!
-
进程间通信需要全局索引这类信息吗?@bestucan 好的哈!谢谢版主!我仔细看看您发的网址
-
进程间通信需要全局索引这类信息吗?@bestucan 聪明的办法!谢谢版主!顺便请教下
1。boundaryProcAddressing
2。cellProcAddressing
3。faceProcAddressing
4。pointProcAddressing
上面这几个文件夹中好像是不是也有一些全局信息啊? -
交界面上的通量F在公式中(在A_{N}的系数中) 是不是应该取相反数?@bestucan 好的哈,谢谢教授回复!不过您说“但是经过相邻面的速度也反了”,速度的方向是(绝对)唯一的吧,就是说该是多少就是多少。感觉还是从高斯定理出发,法向量永远取外侧为正
-
solve函数为啥不需要用对象去访问调用?@Yongbo 你说的两种方式是对的,我验证均通过编译了。东岳老师应该是笔误了
-
区域分解后polyMesh文件夹下的boundaryProcAddressing文件是什么含义?如题,当我们执行decomposePar后,在constant/polyMesh文件下新产生了如下四个文件 1。boundaryProcAddressing
2。cellProcAddressing
3。faceProcAddressing
4。pointProcAddressing
其中,想请教一下大佬们,boundaryProcAddressing文件的含义是什么?
以cavity算例为例,分区数目为4,方法为simple,对网格进行均分,我发现每个处理器上的boundaryProcAddressing文件内容均相同,为下图
有没有大佬,解释下文件内容(也即 (0 1 2 -1 -1))的含义啊?谢谢! -
OpenFOAM教程 初级入门建议@李东岳 好的!谢谢老师