有很多方法可以做到这一点。您的“预测校正”方法是一种方法。一个更好的概念框架是先做一个时间离散化,然后看看你有什么样的问题。例如,如果你想做一个隐式欧拉方案,你必须在每个时间步解决以下问题:
忽略其他变量。这是一个要在中解决的非线性问题,现在解决非线性问题的所有技术都已摆在桌面上。例如,您可以进行牛顿迭代,试图找到一个序列 (是ρn−ρn−1Δt=−∇⋅(ρnu)+∇⋅(D(ρn,T)∇ρn)+ρs,
ρnρn,kknth time step) 你需要从一些开始。一个好的第一个猜测是,牛顿最终迭代在 st 时间步。一个更好的牛顿迭代将是。另一种选择是从开始,其中后一项是时间步的显式欧拉解。ρn,0ρn,0=ρn−1,∗(n−1)ρn,0=ρn−1,∗+Δtρn−1,∗−ρn−2,∗k≈ρn−1,∗+Δt∂ρ(t)∂tρn,0=ρn,ee
许多方案可以被视为任何这些想法的变体。也许他们对这些初始猜测中的任何一个都进行了一次牛顿迭代,或者他们对这些初始猜测中的任何一个进行了一次定点(“Picard”)迭代。但最终,如果您想隐式解决问题,首先将其写成的非线性问题会有所帮助。ρn