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. 求教forAll循环内部场问题

求教forAll循环内部场问题

已定时 已固定 已锁定 已移动 OpenFOAM
5 帖子 3 发布者 3.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 赵 离线
    赵 离线
    赵海盛
    写于2022年3月17日 03:10 最后由 李东岳 编辑 2022年3月17日 11:23
    #1

    神们,阅读cellLimited代码时遇到forAll循环的问题,具体见下面代码:

    const labelUList& owner = mesh.owner(); //owner单元列表
    const labelUList& neighbour = mesh.neighbour(); //neighbour单元列表
    Field<Type> maxVsf(vsf.primitiveField()); //定义一个场量,并只将vsf内部场值赋给它
    Field<Type> minVsf(vsf.primitiveField()); //定义一个场量,并只将vsf内部场值赋给它
    forAll(owner, facei) //facei从0到owner.size()增加,遍历owner单元
    {
    label own = owner[facei]; //facei对应的owner单元号
    label nei = neighbour[facei]; //facei对应的neighbour单元号
    const Type& vsfOwn = vsf[own];
    const Type& vsfNei = vsf[nei];
    maxVsf[own] = max(maxVsf[own], vsfNei);
    minVsf[own] = min(minVsf[own], vsfNei);
    maxVsf[nei] = max(maxVsf[nei], vsfOwn);
    minVsf[nei] = min(minVsf[nei], vsfOwn);
    }

    上面代码我知道什么意思,即求某个网格单元与其相邻的所有网格单元的某个量的最大值和最小值。但不明白的是为何上述forAll循环只是针对内部场的,owner中不是包含所有面(包括边界面)对应的owner单元吗?face文件和owner文件的size是一样的。
    另外,也请牛们看下我代码的注释对不?
    求教了,:143:

    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2022年3月17日 03:40 最后由 编辑
    #2

    owner中不是包含所有面(包括边界面)对应的owner单元吗?

    owner是内部面的label。不包括边界面。

    赵老师最近研究的深啊,是亲自操刀了么。:chouchou:

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

    赵 1 条回复 最后回复 2022年3月17日 04:17
  • 赵 离线
    赵 离线
    赵海盛
    在 2022年3月17日 04:17 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 在 求教forAll循环内部场问题 中说:

    owner是内部面的label。不包括边界面。

    微信图片_20220317121050.png
    但owner的size不是和faces一样吗?那遍历不是遍历所有面?:143:

    哈哈,项目和科研压力大啊,必须卷起来。不像李老师,信手拈来,风轻云淡:chouchou:

    X 1 条回复 最后回复 2022年3月17日 04:53
  • X 在线
    X 在线
    xpqiu 超神
    在 2022年3月17日 04:53 中回复了 赵海盛 最后由 编辑
    #4

    @赵海盛
    mesh.owner() 返回的是 内部面的 owner,跟 polyMesh 下面的owner 文件不一样,这个文件对应的是所有面的owner,对应的函数是 mesh.faceOwner()

    赵 1 条回复 最后回复 2022年3月17日 04:56
  • 赵 离线
    赵 离线
    赵海盛
    在 2022年3月17日 04:56 中回复了 xpqiu 最后由 编辑
    #5

    @xpqiu 牛,谢谢老兄,:146:

    1 条回复 最后回复
2022年3月17日 03:10

1/5

2022年3月17日 03:10

2022年3月17日 04:56
  • 登录

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