您如何调试数字代码,此振荡错误的根源是什么?


16

可以从经验中获得很多见识,我只是想知道以前是否有人看到过类似的东西。该图显示了对流扩散方程的初始条件(绿色),然后是迭代200(蓝色),然后是迭代400(红色)的解。

震荡误差

对流扩散方程的解经几次迭代后就爆炸了。Peclet数,和CFL条件满足时,Ç 0.0015,所以方程式应该是稳定的。我希望我在数字代码中有一个错误。μ0.07C0.0015

背景。离散化是对流项和扩散项的主要区别。我相信这是平流的第一阶和扩散的第二阶。我已经使用有限体积的方法(第一次)实现了这一点,其中通过从单元格平均值进行线性插值找到了单元格面上的系数(速度和扩散系数)值。我在左右表面上应用Robin边界条件,并将边界处的通量设置为零。

您如何调试数字代码?以前有没有人出现过这样的场景,那么在哪里可以找到一个好地方?

更新资料

更新资料

解决方案再简单不过了!我只是在扩散项上犯了一个符号错误。很奇怪,我确定我还没有发布它,所以我不会发现错误!如果有人想分享有关如何调试数字代码的提示,我仍然很感兴趣。我没有方法,这有点碰运气,我一直在努力寻找线索,但是这个过程可能需要数周(有时)。

×

边界条件有限的对流扩散方程的有限体积法。


2
您正在使用哪种离散化?什么订购方法?您的边界条件是什么?
Geoff Oxberry

谢谢@GeoffOxberry,我已经更新了更多详细信息。尽管要真正了解我所做的事情,您可以阅读上面的github链接上的实验笔记。
boyfarrell

2
θ=00.51个

1
一种=0d<0
boyfarrell

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.