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. 对网格进行聚合操作,并生成polymesh文件?

对网格进行聚合操作,并生成polymesh文件?

已定时 已固定 已锁定 已移动 OpenFOAM
5 帖子 2 发布者 4.3k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • L 离线
    L 离线
    luofq-sysu
    写于 最后由 李东岳 编辑
    #1

    目标:调用GAMG-Agglomeration对网格进行聚合也就是加粗,并生成polymesh下的point、face等网格文件,最好是不覆盖原来的polymesh文件,最终能对新的网格进行计算。

    问题1:如何调用聚合网格的函数? 我发现application/test自带有一个Test-GAMGAgglomeration,但他只是在时间文件夹下生成一个volScalarField,没有生成实际的网格。

           // Write agglomeration
            {
                volScalarField scalarAgglomeration
                (
                    IOobject
                    (
                        "agglomeration",
                        runTime.timeName(),
                        mesh,
                        IOobject::NO_READ,
                        IOobject::AUTO_WRITE
                    ),
                    mesh,
                    dimensionedScalar(dimless, 0)
                );
                scalarField& fld = scalarAgglomeration.primitiveFieldRef();
                forAll(fld, celli)
                {
                    fld[celli] = cellToCoarse[celli];
                }
                if (normalise)
                {
                    fld /= max(fld);
                }
                scalarAgglomeration.correctBoundaryConditions();
                scalarAgglomeration.write();
            }
    

    问题2:如何生成新的polymesh文件,并且不覆盖原来的polymesh? 我在blockmesh源代码里面找write polymesh的代码,不知道是否mesh.write()就能实现。

    请各位前辈指导!

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    简单查看了一下pairGAMGAgglomerate.C,看起来并没有对网格进行操作而是直接操作的矩阵系数,这样的话需要做一些工作才能从矩阵系数反推成离散的网格。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    L 2 条回复 最后回复
  • L 离线
    L 离线
    luofq-sysu
    在 中回复了 李东岳 最后由 编辑
    #3

    @东岳 东岳老师您好!
    我翻了一下资料,据说PairGAMGAgglomeration的pair是一种聚合算法,主要是根据face weights从网格交界面开始聚合。
    OpenFoam支持几何多重网格和代数多重网格(faceArea和algebraic),其中faceAreaPairGAMG的操作对象是mesh和magSf,magSf处理一下好像就是所说的face weights。

    麻烦您看看聚合生成polymesh,是否可行,应该如何入手。

    faceAreaGAMGAgglomeration.C主要代码如下:

    Foam::faceAreaPairGAMGAgglomeration::faceAreaPairGAMGAgglomeration
    (
        const lduMesh& mesh,
        const dictionary& controlDict
    )
    :
        pairGAMGAgglomeration(mesh, controlDict)
    {
        const fvMesh& fvmesh = refCast<const fvMesh>(mesh);
    
        // agglomerate(mesh, sqrt(fvmesh.magSf().primitiveField()));
        agglomerate
        (
            mesh,
            mag
            (
                cmptMultiply
                (
                    fvmesh.Sf().primitiveField()
                   /sqrt(fvmesh.magSf().primitiveField()),
                    vector(1, 1.01, 1.02)
                    // vector::one
                )
            )
        );
    }
    
    
    Foam::faceAreaPairGAMGAgglomeration::faceAreaPairGAMGAgglomeration
    (
        const lduMesh& mesh,
        const scalarField& cellVolumes,
        const vectorField& faceAreas,
        const dictionary& controlDict
    )
    :
        pairGAMGAgglomeration(mesh, controlDict)
    {
        // agglomerate(mesh, sqrt(mag(faceAreas)));
        agglomerate
        (
            mesh,
            mag
            (
                cmptMultiply
                (
                    faceAreas
                   /sqrt(mag(faceAreas)),
                    vector(1, 1.01, 1.02)
                    // vector::one
                )
            )
        );
    
    1 条回复 最后回复
  • L 离线
    L 离线
    luofq-sysu
    在 中回复了 李东岳 最后由 编辑
    #4

    @东岳 东岳老师,您说的这个操作的矩阵系数是lduMesh吗?从矩阵系数反推成离散网格需要哪从哪方面入手呢?

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #5

    对,不过从矩阵系数反推成离散网格感觉不可能。从网格到矩阵倒是可以,又是有限体积法离散过程。反过来好像方程不封闭。:136: 你确认下

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

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