Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. openfoam中cyclic周期性边界的问题

openfoam中cyclic周期性边界的问题

已定时 已固定 已锁定 已移动 OpenFOAM
34 帖子 10 发布者 31.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • TongT 离线
    TongT 离线
    Tong
    在 中回复了 dzw05 最后由 Tong 编辑
    #22

    @dzw05
    最近在研究processorFvPatch,来挖个坟补充下~~
    对于并行耦合边界条件,在方程组迭代求解中的“耦合”过程在矩阵-向量乘法(Amul)中的实现如下:
    1、initMatrixInterfaces:只负责初始化边界数据,将耦合边界内侧(本地)的数据传送到外侧(相邻进程)。
    2、本地数据与向量相乘,参考程迪的描述。
    3、updateMatrixInterfaces:使用第一步初始化得到的数据来耦合外侧变量($C\cdot x_n $).
    并行边界条件中,对于一个本地进程来说耦合过程是单向的,只将外侧数据耦合到本地,但是对于一个耦合边界面来说耦合过程是双向的,即面两侧的进程都需要耦合外侧数据($C=C_L+C_U$ 一侧是$C_L$另一侧是$C_U$)。
    耦合边界类使用的接口是initInterfaceMatrixUpdate,updateInterfaceMatrix,这两个接口的实现在对应的子类边界条件中,如何想研究何以找找。

    MicroM 1 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 Tong 最后由 编辑
    #23

    @Tong 非常期待您的后续关于处理器边界的解读,我也正在关注OF中的处理器边界,想请问一下,您知道对于CL和CU这两个系数,他们分别存放在哪里吗?以及他们的索引是存放在哪里吗,我感觉程迪老师介绍的好像有些出入,想请教一下您,谢谢!

    TongT 1 条回复 最后回复
  • TongT 离线
    TongT 离线
    Tong
    在 中回复了 Micro 最后由 编辑
    #24

    @Micro
    好像我在知乎上你的PCG的文章下面回复过,嘿嘿~
    CL和CU对于耦合边界来说没有区分,都是interface上的系数,Amul()里为psi乘这个interface系数的方法是和interface绑定的,具体来说Amul()中的updateMatrixInterfaces会遍历所有的coupled interface 然后每个interface里都施行乘法操作,在doxygen里面顺着updateMatrixInterfaces一路查下去就找到了。

    MicroM 1 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 Tong 最后由 编辑
    #25

    @Tong 是的哈,系数CL和CU都存处在interface中的boundarycoeffs中,不过我现在没搞清楚局部索引和全局索引是储存在哪里,尤其是他们是怎么相互转化的。。我一直对AX=b感兴趣,如果能彻底弄清楚OF中的矩阵元素和他们索引的相关接口,我就可以把外部的线性代数库集成到OF中。这是我很想做的。。

    TongT 1 条回复 最后回复
  • TongT 离线
    TongT 离线
    Tong
    在 中回复了 Micro 最后由 编辑
    #26

    @Micro
    之前好像记得国防科大有人用PETSc来求解openfoam线性方程组的,文章里写了怎么把OF的ldu Matrix与边界条件的架构和PETSc的线性方程组求解器融合在一起的,你可以搜来看看。我感觉对于of的系数矩阵A是按照lduMatrix的方式存的,如果外部求解器稀疏矩阵格式也是类似lduMatrix的,可以不对数据格式进行转化,否则需要将lduMatrix和转化为外部线性库支持的求解格式。我最近在做重叠网格的并行,希望可以多交流~~。

    MicroM 1 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 Tong 最后由 编辑
    #27

    @Tong 好的!谢谢,您说的文章我也看过,不过涉及到具体细节他没有将,OF2006中已经实现了petsc2foam了。我正在看源码,在这个网址上:https://develop.openfoam.com/modules/external-solver/-/blob/develop/src/petsc4Foam/utils/petscLinearSolverContext.H
    我最终的想法是实现一个自己的预处理器或者矩阵求解器然后继承到OF中。

    TongT W 2 条回复 最后回复
  • TongT 离线
    TongT 离线
    Tong
    在 中回复了 Micro 最后由 编辑
    #28

    @Micro
    foam-extend 里面好像也有不少新的求解器,或许可以参考一下
    https://github.com/Shadow-fax/foam-extend-4.1/tree/93fffffdb7453736d95f5535f9c8eed1054e48f6/src

    最近发现对于全耦合求解的矩阵(foam-extend里的coupledMatrix)的确需要针对物理问题的新预条件器来加速收敛。

    MicroM 1 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 Tong 最后由 编辑
    #29

    @Tong 好的谢谢。我好好看一下你提到的foam-extend,您提到:“对于全耦合求解的矩阵(foam-extend里的coupledMatrix)的确需要针对物理问题的新预条件器来加速收敛”,您的意思是预处理(相比分离求解器来讲)对于耦合求解器来说更加重要吗?

    TongT 1 条回复 最后回复
  • TongT 离线
    TongT 离线
    Tong
    在 中回复了 Micro 最后由 Tong 编辑
    #30

    @Micro
    个人观点,线性方程组求解来说,感觉目前主要用的是克雷洛夫子空间方法+多重网格方法这两个大类,已经能在理论上比较好的解决求解方程组了(复杂度大概在O(N^2)~O(NlogN))。当然对于不同线性代数库对这些方法的实现效率有高有底(针对体系结构和并行的优化可能不同),但是感觉如果优化到位大概也就是到那个程度了,在同一套系统上不会有数量级的差距。
    我之前做实验发现,对于有些多物理量耦合在一起的分块矩阵,通用的预条件器好像对降低条件数作用比较有限(主要也是由于物理上的特殊性造成的),针对某一类物理问题,似乎需要一些特殊的预条件器来有效的降低条件数,听说预条件这方面的论文也挺多的,不过比较偏数学,我不太懂。

    MicroM W 2 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 Tong 最后由 编辑
    #31

    @Tong 好的,真知灼见。大概理解了下,您强调的是充分利用物理性质来构造预条件。。确实偏数学。。“针对体系结构和并行的优化可能不同”,的确如此。感觉如果是做优化的话,还是要针对特定的硬件架构去做实现层面的优化,想要在数学(算法)层面优化太难了。。。

    1 条回复 最后回复
  • W 离线
    W 离线
    w352405196
    在 中回复了 Tong 最后由 编辑
    #32

    @Tong 老师,您好。我想请教您一下,interface是针对周期边界、多求解域(如旋转机械)、并行边界这类复杂边界的吗,对于常规边界条件有影响吗,我理解的是边界条件的离散系数已经添加到lduMatrix中的对角线系数和源项中了。在测试中发现initMatrixInterfaces和updateMatrixInterfaces对于X和B都没有影响啊

    1 条回复 最后回复
  • W 离线
    W 离线
    w352405196
    在 中回复了 Micro 最后由 编辑
    #33

    @Micro 请问老师,您这边搞清楚interface并行边界如何处理的了吗

    1 条回复 最后回复
  • W 离线
    W 离线
    w352405196
    在 中回复了 dzw05 最后由 编辑
    #34

    @dzw05 请问老师,您这边清楚interface并行边界如何处理吗?我想从openfoam中拿到完整矩阵数据,但是并行的话只能拿到各个线程对应的子矩阵,如何知道并行边界的关系将其组装成一个完整的矩阵

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]