如何求解对流-扩散方程

计算科学 pde 平流扩散
2021-12-26 16:13:32

我需要求解以下形式的对流扩散方程:

ut=1xux+2ux2

用 MATLAB。请你指导我好吗?Crank-Nicolson 方法是这个方程的正确方法吗?

2个回答

是您的域的一部分,您将遇到问题变得奇异。特别是,将存在接近的单元,其中单元佩克莱特数非常大,因此您将处于平流主导状态。您将需要稳定离散化。x=0u=1/xx=0

好吧,你可以在这里使用 Crank-Nicolson,但是你必须为每个时间步构建和求解一个线性系统。这很容易做到,但使用 MATLAB 中提供的 ODE 积分器会容易得多。由于 RHS 中的扩散算子,隐式积分器 ode23tb 在这里似乎是一个不错的选择,但尝试不同的积分器会有所帮助。需要的是(1)通过在 x 中的网格上的有限差分来离散您的 PDE,(2)在每个网格点您将有一个用于时间演化的 ODE ,(3)编写一个函数,比如,表示这些 ODE 的整个集合,每个网格点一个,(4) 在 MATLAB 手册中查找所选 ODE 积分器的使用示例,并用xiui(t)myrhs()myrhs作为参数(其他参数将是时间步长、时间限制等)。而已。