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获得某个区域面积的方法

请教OpenFOAM获得某个区域面积的方法

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

    如下图所示,模型被划分成很多个区域(每个区域包含很多个网格),我想知道每个区域的面积或者(体积),除了手算外,OpenFOAM是否有什么办法得到每个区域的面积(或体积)?最好是functionObject或者utility的办法。期待大佬们的回复,多谢!(备注:这些区域我是通过toposet划分的)

    MSFR-xz - 副本.png

    OpenFOAM初学者,希望和大家共同交流

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

    我在网上见到的代码,你试试:

    const cellList& cells  = mesh.cells();
    const vectorField& faceAreas = mesh.faceAreas();
    
    List<bool> outsideFaces(faceAreas.size(), false);
    
    forAll(mesh.cellZones(), zoneI)
    {
        const labelList& cellLabels = mesh_.cellZones()[zoneI];
        outsideFaces = false;
    
        // mark all faces that are NOT internal to the cellZone:
        forAll(cellLabels, i)
        {
            const cell& c = cells[cellLabels[i]];
            forAll(c, cFaceI)
            {
                const label faceI = c[cFaceI];
    
                // xor operation
                // internal faces get marked twice, outside faces get marked once
                if (outsideFaces[faceI])
                {
                    outsideFaces[faceI] = false;
                }
                else
                {
                    outsideFaces[faceI] = true;
                }
            }
        }
    
        // now calculate the area
        scalar zoneOutsideArea = 0;
        label  zoneOutsideNFaces = 0;
    
        forAll(outsideFaces, faceI)
        {
            if (outsideFaces[faceI])
            {
                zoneSurfaceArea += mag(faceAreas[faceI]);
                zoneOutsideNFaces++;
            }
        }
    
        Info<<"zone:" << zoneI
            << " nFaces:" << zoneOutsideNFaces
            << " area:" << zoneOutsideArea << endl;
    }
    

    https://www.cfd-online.com/Forums/openfoam-programming-development/69661-how-compute-cellzone-volume.html

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

    1 条回复 最后回复

  • 登录

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