求教forAll循环内部场问题
-
神们,阅读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是一样的。
另外,也请牛们看下我代码的注释对不?
求教了, -
owner中不是包含所有面(包括边界面)对应的owner单元吗?
owner是内部面的label。不包括边界面。
赵老师最近研究的深啊,是亲自操刀了么。
-
@李东岳 在 求教forAll循环内部场问题 中说:
owner是内部面的label。不包括边界面。
但owner的size不是和faces一样吗?那遍历不是遍历所有面?哈哈,项目和科研压力大啊,必须卷起来。不像李老师,信手拈来,风轻云淡
-
@赵海盛
mesh.owner() 返回的是 内部面的 owner,跟 polyMesh 下面的owner 文件不一样,这个文件对应的是所有面的owner,对应的函数是 mesh.faceOwner() -
@xpqiu 牛,谢谢老兄,