使用中点法则和有限差分求解一维平流方程

计算科学 龙格库塔 平流
2021-12-27 13:34:19

我想解平流方程(v0R)

ft+v0fx=0

使用二阶龙格库塔,如时间积分的中点规则和空间推导的逆风(向后有限差分)。

这是 python 中的一般 Runge-Kutta 实现

def rk2a( f, x0, t ):
    n = len( t )
    x = np.array( [ x0 ] * n )
    for i in range( n - 1 ):
        h = t[i+1] - t[i]
        k1 = h * f( x[i], t[i] ) / 2.0
        x[i+1] = x[i] + h * f( x[i] + k1, t[i] + h / 2.0 )

    return x

这是有道理的,如果我必须解决类似的问题y=f=x我会知道如何通过f但我很困惑,因为现在我们有了f=v0fx.

由于我想对空间导数使用迎风方案,我们有

fx|i1/2=qinqi1nxixi1

然而n表示n-th 时间步长和i表示i-th 网格点。

现在要实现这一点,我必须写下来f( x[i], t[i] )f( x[i] + k1, t[i] + h / 2.0 )回复。提供一个通用的f

现在虽然我认为我可以写下来f( x[i], t[i] ),但我不知道我会如何写下来f( x[i] + k1, t[i] + h / 2.0 )

所以问题是:如何在中点规则中使用迎风方案?

编辑:我假设等距网格。

0个回答
没有发现任何回复~