有限元的向后欧拉时间步长

计算科学 有限元
2021-12-11 16:33:42

对于时间上的后向 Euler 离散化:

(u(k)u(k1)Δt,v)+a(u(k),v)=(v)

在哪里a(,)是与空间离散化相关的双线性算子。我正在考虑二维线性椭圆问题。所以我重新排列了上面的等式:

(1Δtu(k),v)+a(u(k),v)=(v)+(1Δtu(k1),v)
自从u(k1)是上一个时间步的已知量。对于非时间相关问题,空间收敛性通常为O(hp+1), 和p作为基础学位。现在,如果我有上面给出的时间相关问题,我的时间步长必须有多小才能测试空间收敛性?如果我采取较大的时间步长,该方法是稳定的,但会产生很大的误差,大约为103.

将我的时间步长设为极小会产生适当的收敛速度,但我认为这并不能告诉我任何事情,因为对于小Δt,时间相关项将占主导地位,我基本上是在解决

(1Δtu(k),v)=(1Δtu(k1),v)
如果时间步长很小,我们很可能会期望u(k)u(k1),因此求解系统将产生“正确的解决方案”。

我只是想知道我的 Backwards euler 的实现错误是否不正确。我知道通常我们解决线性系统:

(M+ΔtK)u(k)=Mu(k1)+Δtf

MK是质量和刚度矩阵和f作为源项。但是我上面给出的实现不正确吗?我最初实现了我列出的第一种方式,然后尝试了第二种方式进行比较,但它们在两种情况下都产生了相同的结果,所以我猜这不是问题所在。

1个回答

请记住,后向欧拉在时间上是一阶的,因此您的错误将类似于:

uuh,Δt=c1hp+1+c2Δt+
如果你想测试空间精度,那么需要比在最好的网格上小一个阶数,反之亦然。如果您获得制造解决方案的理论订单,则确认实施是正确的。c2Δtc1hp+1