【问题标题】:Best way to address outer mesh surfaces of a cylinder by FiPy ,FiPy 处理圆柱体外部网格表面的最佳方法,
【发布时间】:2021-03-07 22:43:06
【问题描述】:

我可以通过任何 FiPy 或 ... 模块来处理外部网格面中心吗? 对于半径为“R”的圆柱体,相关网格在其上创建为 O'grid 扫描。看起来,“R”大于最外面的网格面中心;所以它们之间有区别(图),不能用“R”轻松解决。

我需要提及圆柱壁周围的所有外部网格面中心(不是顶壁和底壁)。网格系统由“FiPy Gmsh”(FiPy 版本 = 3.1 和 Python 2.7)导入。 FiPy 'solver.mesh.getFaceCenters()' 得到一个简单的网格面中心数组。我认为外六角网格层的圆柱壁相关外表面可以通过以下代码解决:

reduce(numpy.logical_and, (FORMULAs))               # where FORMULAs are specifying mesh face center coordinates limits

我尝试使用以下代码,但如果公式适用,则需要对段“> R”进行一些更改。

x,y,z = solver.mesh.getFaceCenters()
np.sqrt(x ** 2 + y  ** 2) > R       #  as FORMULAs

如果有人能帮助我解决这个问题,我将不胜感激。 我认为最好的方法一定是使用 FiPy 和 numpy 模块。

【问题讨论】:

    标签: python-2.7 numpy mesh fipy numpy-ufunc


    【解决方案1】:

    这在the documentation for Gmsh2D 中进行了讨论。

    虽然可以参数化定义这些面,但由于离散网格的有限分辨率,必须允许一些位置误差。在抽象几何定义中定义您想要的面并直接引用它们要好得多,例如,您在 Gmsh 中的 GEO 文件会有类似

    Physical Volume("FORMULA") = {5, 6, 7};
    

    然后您的 FiPy 脚本将使用

    访问它们
    formula_faces = solver.mesh.physicalFaces["FORUMULA"]
    

    【讨论】:

    • 感谢 Dr.Guyer 的回答,问题中没有网格剖分源代码。我认为外边界​​不像内边界网格面中心确定那样容易,因为内点大小小于内圆柱壁半径但外边界点小于外圆柱壁半径,这使得它们很难解决,特别是当网格系统的网格尺寸不合适时。我已经解决了这个问题,方法是通过循环到边界网格的数量来解决边界点,以找到离圆柱壁半径最近的点。
    • 如果您能提出一个简单的代码或方法来自动查找外圆柱壁网格的数量,我将不胜感激。
    • @Ali_Sh 正如我已经说过的,这一切都在the documentation for Gmsh2D 中讨论。具体见NW的定义。
    • 如果您没有 GEO 定义,您如何让 Gmsh 首先生成网格?
    • 网格文件由他人从 OpenFOAM 软件中创建并导出,然后接收到转换后的文件,'.msh',由 FiPy 导入,只有结果点和数字,没有定义。
    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多