从讨论和论文来看,OpenFOAM 似乎已经实施了偏度测量。这个答案不能解释为什么不同的偏度定义可能是等价的,我只是要证明为什么这是一种偏度的度量。考虑以下两个元素 - 为了简单起见 -

蓝色箭头是外表面法线fAreas[facei],红点是,从左到右ownCc,fCtrs[facei]和neiCc。现在,Cpf是从 指向 的向量ownCc,fCtrs[facei]是从指向d的向量。fCtrs[facei]neiCc
这就是我要提醒的地方,给定两个兼容的向量:其中和之间的角度。v,wv⋅w=∥v∥ ∥w∥ cos(θ)
θvw
让我们回到公式((fAreas[facei] & Cpf)/((fAreas[facei] & d) + ROOTVSMALL))。(fAreas[facei] & Cpf)只会给我们时间的范数,fAreas[facei]因为Cpf这两个向量指向相同的方向(在这个例子中,如果Own是梯形,它就不会)因此。可能会给我们各种不同的正值,但重要的是如果和指向同一方向,因此没有偏斜,这将是时代的常态,例如。这简化了θ=0(fAreas[facei] & d)fAreas[facei]dfAreas[facei]d[norm(fAreas[facei])*norm(Cpf)]/[norm(fAreas[facei])*norm(d)] = norm(Cpf)/norm(d)
sv = Cpf - ((fAreas[facei] & Cpf)/((fAreas[facei] & d) + ROOTVSMALL))*d;
进入
sv = Cpf - norm(Cpf)*d/norm(d); // Note that d/norm(d) is a unit vector pointing
// in the same direction as Cpf.
进入
sv = Cpf - Cpf; // e.g. zero vector
因此,如果网格没有倾斜,sv- 结果svHat- 将为零。如果它是倾斜的,如图所示,数学略有不同
sv = Cpf - ((fAreas[facei] & Cpf)/((fAreas[facei] & d) + ROOTVSMALL))*d;
变成
sv =
Cpf -
((norm(fAreas[facei])*norm(Cpf))/(norm(fAreas[facei])*norm(d)*cos(theta) + ROOTVSMALL))*d;
变成(忽略ROOTVSMALL)
sv = Cpf - (norm(Cpf)/(norm(d)*cos(theta) + ROOTVSMALL))*d;
是和theta之间的d角度fAreas[facei]。让我们重新组织(我再次无视ROOTVSMALL)
sv = Cpf - norm(Cpf)/norm(d)*d*(1/(cos(theta) + ROOTVSMALL));
这样就更清楚地知道这是如何衡量偏度的。对于没有退化元素的网格,theta可以取开区间中的值,并取区间中的值。在最后一步,归一化会生成一个单位向量并为您提供每个方向的偏度。0 表示在给定方向上没有偏斜,其他值将表示一些偏斜。我认为将是最偏斜的情况,并且对应于退化的相邻元素。(−π/2,π/2)1/cos(theta)[1,∞)svHat = sv/(mag(sv) + ROOTVSMALL);svHat−1
不同的偏度测量
正如 Maxim Umansky 在对问题的评论中提到的那样,有一篇维基百科文章讨论了skewness。这些是元素偏度的有效度量,但是,它们没有说明网格的偏度。除了基于等边体积的那个。例如,根据这些措施,菱形域与菱形元素的网格划分将被认为是倾斜的,但是,这不是您想要的。
我熟悉的另一个偏度定义是其中是两个相邻元素之间的面,是面的面积,是面的质心,是连接 Own 元素中心和相邻元素中心的线段的中点。在这种情况下,如果每对相邻元素的和。因此,这个偏度的定义以为界,但它可以是一个无限大的负数。1−||c−d|||F|,
F|F|cFdcd11
此定义与 OpenFOAM 度量之间的差异
- 我熟悉的那个给你一个标量,OpenFOAM 测量返回一个向量并告诉你偏度的方向
- OpenFOAM 度量在中(如果我没记错的话),另一个在中。[−1,0](−∞,1]
- 这个泛化到多边形和多面体(这是二手信息,即我前段时间听到的东西),我不确定 OpenFOAM 的。
由于这些原因,即使我相信它们是等价的定义,我也无法证明它们是等价的,例如如何将向量与标量进行比较?但是,两者都将以下两个元素描述为高度倾斜的,因此这是我证明它们等价的证据。
