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