我正在使用我没有设计的用 Fortran 编写的 FEM 代码。对于特定问题,程序抱怨雅可比矩阵的行列式低于零。
我隐约明白雅可比矩阵与形函数有关,必须将其反转才能将形函数坐标映射到全局坐标。要反转矩阵,它必须计算行列式。因此我怀疑这是一个网格问题。
有人可以对此提供更多见解吗?有限元问题中的哪些条件通常会导致雅可比行列式小于零?为什么这是个问题?如何避免?
我正在使用我没有设计的用 Fortran 编写的 FEM 代码。对于特定问题,程序抱怨雅可比矩阵的行列式低于零。
我隐约明白雅可比矩阵与形函数有关,必须将其反转才能将形函数坐标映射到全局坐标。要反转矩阵,它必须计算行列式。因此我怀疑这是一个网格问题。
有人可以对此提供更多见解吗?有限元问题中的哪些条件通常会导致雅可比行列式小于零?为什么这是个问题?如何避免?
当应用列(或行)的奇数排列时,雅可比行列式作为行列式会改变其符号。
想象一下,为简单起见,参考元素是一个带有顶点的三角形的二维情况,和(逆时针选择)和基函数,和分别。这对参考坐标将被定义为:在哪里它由下式给出:
很明显,雅可比行列式是:
请注意,该雅可比行列式与三角形面积的两倍重合:.
相反,如果以顺时针方式选择顶点,雅可比将变为:
其他原因可能是由于顶点没有连续排序,导致边缘交叉,从而导致负面积(或 3D 中的体积)。