CFD Python · 有限差分入门

CFD程序项目展示

我用 Python、NumPy 和一阶迎风差分,分别计算固定波速的线性对流和波速随解变化的非线性对流。下面可以直接运行同样的离散过程,并查看完整源代码与程序实际输出。

2
个完整程序
81
个空间网格点
1st
一阶迎风格式
2/2
自动检查通过
01 线性对流

固定速度搬运方块波

先从最简单的输运问题开始:波形以常数速度 c 向右移动,形状理论上保持不变。

控制方程 ∂u/∂t + c ∂u/∂x = 0
迎风离散 uᵢⁿ⁺¹ = uᵢⁿ − c Δt/Δx (uᵢⁿ − uᵢ₋₁ⁿ)

浏览器实时演示

线性对流数值推进

计算暂停

完整源文件 · 88 行

Python 代码

打开源文件
正在读取完整代码…

程序实际输出

三张结果图

CFL0.500
理论位移0.500
数值范围[1, 2]

只改一个位置,方程性质就变了

传播速度从常数变成未知量本身

02 非线性对流

波速由 u 自身决定

把常数速度 c 换成未知量 u,高值区域移动更快,原来的方块波会发生明显变形。

控制方程 ∂u/∂t + u ∂u/∂x = 0
迎风离散 uᵢⁿ⁺¹ = uᵢⁿ − uᵢⁿ Δt/Δx (uᵢⁿ − uᵢ₋₁ⁿ)

浏览器实时演示

非线性对流数值推进

计算暂停

完整源文件 · 50 行

Python 代码

打开源文件
正在读取完整代码…

程序实际输出

波形演化结果

最大 CFL0.400
最小值1.000
最大值1.999