CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

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

    OpenFOAM
    2
    5
    1041
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • L
      luofq-sysu 最后由 李东岳 编辑

      目标:调用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 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

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

        CFD高性能服务器 http://dyfluid.com/servers.html
        2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

        L 2 条回复 最后回复 回复 引用
        • L
          luofq-sysu @李东岳 最后由 编辑

          @东岳 东岳老师您好!
          我翻了一下资料,据说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
            luofq-sysu @李东岳 最后由 编辑

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

            1 条回复 最后回复 回复 引用
            • 李东岳
              李东岳 管理员 最后由 编辑

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

              CFD高性能服务器 http://dyfluid.com/servers.html
              2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

              1 条回复 最后回复 回复 引用
              • First post
                Last post