我想在三角形网格上模拟薄板(Kirchhoff-Love 模型)的振动。您能否就薄板 FEM 模拟的不同元素的入门级回顾提供建议?
我在考虑 Morley 元素,但它们似乎不合格(真的很糟糕吗?以前从未使用过不合格的 FEM)。然后我们有许多其他元素,以及混合公式,等等 - 我对有多少方法感到惊讶。理想情况下,我更喜欢在理解和开源 FEM 库方面不太先进的东西。
任何意见是极大的赞赏!
我想在三角形网格上模拟薄板(Kirchhoff-Love 模型)的振动。您能否就薄板 FEM 模拟的不同元素的入门级回顾提供建议?
我在考虑 Morley 元素,但它们似乎不合格(真的很糟糕吗?以前从未使用过不合格的 FEM)。然后我们有许多其他元素,以及混合公式,等等 - 我对有多少方法感到惊讶。理想情况下,我更喜欢在理解和开源 FEM 库方面不太先进的东西。
任何意见是极大的赞赏!
我通常建议先尝试 Morley,因为它很容易实现,并且在许多情况下,您只需像使用一致的有限元一样做所有事情。不合格将是错误分析中的一个因素,但在其他方面非常相似。
如果您想在这里尝试一下,这是一个可以运行的片段,例如,在运行后在 Google Colab 中!pip install scikit-fem==5.2.0。它正在解决与在边界上:
from skfem import *
from skfem.helpers import ddot, dd
from skfem.models import mass
from skfem.visuals.matplotlib import plot
@BilinearForm
def biharmonic(u, v, w):
return ddot(dd(u), dd(v))
m = MeshTri.init_lshaped().refined(4)
basis = Basis(m, ElementTriMorley())
# matrices
A = biharmonic.assemble(basis)
M = mass.assemble(basis)
# solve eigenvalue problem
D = basis.get_dofs()
x = solve(*condense(A, M, D=D))
nth = 4
x0 = x[1][:, nth]
ax = plot(basis, x0, nrefs=2, shading='gouraud', figsize=(4, 4))
上面的片段绘制了特征函数,但我使用一些额外的代码为您制作了第四种模式的动画,并且matplotlib.animation:
您真的不想使用符合要求的元素。改用惩罚方法。
此处详细描述了推理,以及基于开源库的实现(免责声明!我是主要作者之一):https ://dealii.org/developer/doxygen/deal.II/ step_47.html
可以在此处找到替代方法的实现,使用相同的库实现:https ://dealii.org/developer/doxygen/deal.II/step_82.html
Firedrake ( www.firedrakeproject.org ) 支持三角形(不合格的 Morley 加上合格的 Bell 和 Argyris),具有用于定义双线性形式的高级语法。我们在这里发现,与内部惩罚类型方法相比,使用这些元素可以提供更小、更稀疏、更好的条件线性系统。Morley 不合格的主要缺点是它只是一阶准确的,这也是内部惩罚方法的情况。妙语是,如果您可以访问元素,则没有更喜欢内部惩罚的主要原因,但如果您无法访问方法,IP 方法将完成这项工作。
如果您需要问题,情况会有所不同,因为我们没有实现好的元素(它们比 2D 复杂得多)。我想IP方法会很好用。
这是对已回答内容的简要总结。
粗略地说,有3个选项
符合元素,如 Argyris 三角形、Hsien-Clough-Ticher 三角形等。人们似乎对它们持怀疑态度,也许是因为每个元素的 DOF 数量很高(AT 为 21,HCT 为 12 - 请参阅https://defelement.com/
以莫利三角形为典型示例的不合格元素。MT 只有 6 个自由度。这种元素很难实现,尤其是在 3D 中。另一个缺点是 MT 只有一阶收敛(由于不一致)。但是,一旦这些元素可用,它们就会非常有效 - 请参阅@RobertKirby 的回复(包括一篇好论文!)。@knl 和 @lightxbulb 在 MT 上提供了有趣的示例。据我所知,MT 在www.firedrakeproject.org、FreeFEM、scikit-fem、FEniCS 中实现。
内罚和 DG 公式。它们实施起来相对简单 - 请参阅@WolfgangBangerth 的回复,其中包含带有 deal.II 包的 FANTASTIC 示例。只要您知道如何有效地求解由此产生的线性方程组鞍点系统,该策略几乎可以在任何 FE 包中实现。