OpenFoam自带三个造波程序,即Boussinesq孤立波程序、McCowan孤立波程序和Grimshaw造波程序。其中McCowan造波程序和Grimshaw造波程序存在bug。下图给出了相对波高0.2的孤立波。子图(4, 7)显示的波形与期待波形明显不符。
Grimshaw造波程序的bug在计算数值点速度w的语句,源程序忘记考虑速度的垂向分布。在现有w的基础加入以下语句:
w *= sqrt(3.0*eps) * z/h * q.
McCowan造波程序的bug在求MN时,把*改换成了+,后续计算Jacobian矩阵的公式全部错误,用该方法得到的波形也更差。