使用Crank-Nicolson法稳定求解 $\partial u/\partial t = D \cdot \partial^2 u/\partial x^2$。自由设置初始条件、边界条件并通过动画验证。
热工程(热传导分析):用于预测发动机缸体或制动盘内部温度分布随时间的变化。这是CAE分析中进行材料热应力和耐久性评估的基础数据。
化学工程·材料工程(物质扩散):应用于半导体制造工艺中掺杂物(杂质)的扩散预测、金属表面渗碳处理中碳浓度的渗透深度计算等。
环保工程:用于模拟地下水和土壤中污染物的扩散和迁移,帮助预测污染范围和制定净化方案。
金融工程:用于期权价格评估的Black-Scholes方程本质上是扩散方程的一种(对数收益率的扩散)。这个工具所学的数值解法是其理论基础。
刚开始用这个工具时,容易遇到几个问题。首先是"扩散系数D的现实感"。教科书经常用D=1.0进行计算,但现实中的数值跨度很大。例如,空气中水蒸气的扩散系数约为2.5e-5 m²/s,钢材的热扩散率约为1e-5 m²/s。如果在模拟器中设D=1,会看到扩散速度快得惊人,这是因为没有考虑"尺度感"。应用到实际问题时,要结合域的长度L和时间尺度,关注无量纲数傅里叶数 $F_o = D \Delta t / (\Delta x)^2$。Crank-Nicolson法虽然无条件稳定,但为了保证精度,应将 $F_o$ 控制在适度水平(例如不超过10)。
其次是"Neumann边界条件=0的真实含义"。表示绝热或物质无流动确实没错,但它的数学意义是"梯度为0",即分布曲线在边界处是平坦的。所以如果初始分布在边界处有值,那个地方就再也动不了。例如,金属棒中心加热,两端绝热,热量到达端部后无法散去,最终整体会达到均匀温度。别把它和Dirichlet条件(固定值)混淆了。
最后是"数值扩散和振荡"的陷阱。虽然这个求解器很优秀,但初始条件有急峻变化(如阶跃函数)时,计算上会有轻微的"模糊"或早期时间步的微弱振荡。这是离散化带来的不可避免的现象,但可以通过加细网格(减小Δx)来缓解。在工程实践中,养成"计算结果是不是太光滑?"的习惯,检查网格依赖性。
铜管(D=1.17×10⁻⁴m²/s)长度L=1.0m、格点数Ngrid=100的情况,用Crank-Nicolson法在dx=0.01m、傅里叶数Fo=0.45时可得到稳定解。初始条件u(x,0)=100sin(πx)时,t=10s(无量纲时间Fo≈4.7)时最大值u_max≈8.2℃。此时整个域的能量E(t)从初值下降约92%