FEM中非线性项的实现

计算科学 pde 有限元 非线性方程
2021-12-17 00:37:32

虽然有类似的问题,但我也在努力通过有限元方法在“我自己的代码”中实现以下术语,即, ϕϕ. 是一个状态变量,例如标量势。我认为这个术语的描述比 NS 方程中的平流项要困难得多。如果可能,请告诉我如何通过 FEM 描述和实施该术语。求解方程如下, ϕϕt=(ϕ)2+2ϕ.

2个回答

您应该考虑下一步需要什么,这可能是半离散方程的数值时间积分。

  1. 如果您要使用(半)显式时间步进方案,您只需要一个函数,对于给定的组装向量,其中是您的测试职能。在像这样的 FEM 封装中是直截了当的。ϕ0(ϕ0)2,vvFEniCS
  2. 如果您采用隐式方案,您可能会为给定的迭代点应用牛顿或皮卡德迭代,您将需要与 相关的形式或矩阵,其中是试用功能。这是一种易于使用标准 FEM 方法组装的线性形式。ϕ0ϕ0u,vu
  3. 至多一般性,您可以张量您的问题,通过并组装相关的线性形式(Kronecker 乘积中的线性)。例如,考虑 Navier-Stokes 方程中的对流项,请查看此python 函数(ϕ)2D(ϕϕ)(u)u

非线性微分方程实际上与您可以使用牛顿法求解的其他非线性方程没有什么不同。您可能想在这里查看讨论如何在典型的有限元代码中解决固定问题:http: //dealii.org/developer/doxygen/deal.II/step_15.html

该代码显示了如何针对固定问题执行此操作,但如果您使用完全隐式方法,则每个时间步的过程都是相同的。当然,如果您在时间步进方案中将非线性项视为显式,则该过程会变得简单得多。