雅可比矩阵的行列式

计算科学 有限元 网格生成
2021-12-06 21:08:06

我正在使用我没有设计的用 Fortran 编写的 FEM 代码。对于特定问题,程序抱怨雅可比矩阵的行列式低于零。

我隐约明白雅可比矩阵与形函数有关,必须将其反转才能将形函数坐标映射到全局坐标。要反转矩阵,它必须计算行列式。因此我怀疑这是一个网格问题。

有人可以对此提供更多见解吗?有限元问题中的哪些条件通常会导致雅可比行列式小于零?为什么这是个问题?如何避免?

1个回答

当应用列(或行)的奇数排列时,雅可比行列式作为行列式会改变其符号。

想象一下,为简单起见,参考元素是一个带有顶点的三角形的二维情况V1,V2V3(逆时针选择)和基函数1λμ,λμ分别。这对参考坐标将被定义为:F:(λ,μ)(x,y)在哪里F=[x,y]T=F(λ,μ)它由下式给出:

F(λ,μ)=V1(1λμ)+V2λ+V3μ

很明显,雅可比行列式是:

J=gradF=[V2V1,V3V1]

请注意,该雅可比行列式与三角形面积的两倍重合:det(J)=(y3y1)(x2x1)(x3x1)(y2y1).

相反,如果以顺时针方式选择顶点,雅可比将变为:

gradF=[V3V1,V2V1]
交换其列导致负行列式。

其他原因可能是由于顶点没有连续排序,导致边缘交叉,从而导致负面积(或 3D 中的体积)。