在 FVM 中计算面通量

计算科学 有限体积 数字
2021-11-27 20:59:11

在 FVM 中,我们必须计算细胞某个面的通量。有很多方法可以计算这个面部通量值,但最常见和最简单的方法是在面部进行一些简单的平均。但是,我对平均的最佳方法有点困惑。

我想知道的特殊情况是当你有一些材料属性乘以梯度时。例如,热传导方程为kdTdx

为此,我们要在一个面上计算通过使用简单的平均技术,我可以看到两种方法可以做到这一点。kdTdx

为了说明这两种方式,我们假设单元格和单元格是人脸的邻居。让我们假设细胞中心与面部中心的距离相等,以避免谈论加权平均值。LR

两种方式是:

(1)

0.5(kLdTdx|L+kRdTdx|R)

(2)

0.5(kL+kR)0.5(dTdx|L+dTdx|R)

在第一种情况下,我们计算每个单元中的热传导,然后对其进行平均以获得表面的热传导。在第二种情况下,我们平均每个单元的电导率,以及每个单元的温度梯度,然后我们根据平均电导率和平均温度梯度计算表面的热传导。

一种方法优于另一种方法吗? ,这两种方法是等价的,所以这个讨论假设它们是不同的。kL=kR

1个回答

您正在寻找谐波平均值。如果你想想两个细胞之间的脸,会发生什么样的奇特情况?

  1. 如果您的材料属性相同,您希望通量代表它。

  2. 如果您的其中一种材料是不可渗透的(在您的情况下热传导非常低),您希望通量为零!

  3. 在任何其他情况下,您都希望在相邻单元格的材料属性之间使用合理的值。

我认为,规范的方法是使用调和平均:

kinterface=1(1/kl)+(1/kr)

如果你眯着眼睛看那个平均值,你会看到将迫使你的界面通量为零。如果值远高于零,但不同,则平均值将给出两者之间的合理值。如果它们相等,您也将获得正确的平均值。kl=0kr=0

如果您的材料属性不是标量,即向量,或者,上帝禁止,扩散张量,它会变得更高级,但在您的情况下应该足够了。

对于您需要的导数,您必须考虑单元格中有多少自由度。如果您有一个以单元为中心的自由度的结构化四边形网格,那么您将在与相邻单元中的两个自由度的界面上离散导数。如果您碰巧每个单元格有更多自由度,则您有更多选择,但规范的 FV 方式是每个单元格一个自由度。

所以总的来说你会有这样的东西:

f=urulh kinterface A

使用离散导数、平均材料属性和面面积 A。kinterface

如果您想更深入地研究,为什么要使用谐波平均来查看以下链接中第 3 章(“交互量”)中的介绍。您可以适当地跳过大部分论文,但他们可能比我做得更好: Ivar Aavatsmark - Multipoint Flux approximation methods forquadrilateral grids