1.1.1 海浪仿真
模拟海浪的常见方法主要基于以下4种模型:几何模型、物理模型、粒子运动模型和海浪谱模型[1]。其中,基于几何模型的建模方法是根据经验参数直接模拟海浪的高度场,包括凹凸纹理映射方法和基于 Gerstner-Rankine模型方法,此类模型具有实时模拟大场景海面的优点,但是生成的海浪波纹理特征真实感较差。而根据物理模型来模拟海浪需要从流体控制方程(Navier-Stokes方程)出发,结合初始条件和边界条件进行求解,该方法生成的海浪可以真实描述海浪的动力学特征,但是由于流体运动的复杂特性,方程求解的计算量巨大,仿真效率低,很难满足大场景海面仿真的需求。粒子运动模型则是假设水面由许多小粒子组成,根据粒子的运动规律对海面进行建模,粒子模型能够模拟海浪破碎波、泡沫和飞沫等,但是模拟的效果与粒子数量紧密相关,粒子数量过少则生成的海浪缺乏真实感,数量太多又会增加计算量,因此如何有效对实时大场景海面进行模拟仍然有待商榷。海浪谱模型是基于线性海浪理论,认为海浪是由一系列具有不同频率和传播方向的谐波经过线性叠加组成,常用的模拟方法主要是线性叠加法和线性滤波法。海浪谱模型引入随机变量来反映海浪的随机特性,同时利用色散关系,并考虑时间因子就能实现动态海面的实时模拟。其中线性滤波法在进行叠加操作时利用快速傅里叶变换(Fast Fourier Transform,FFT),可以高效地实现各种海况参数下的海面大场景模拟,在海洋动力学研究和海面的电磁散射研究中具有广泛应用。
海面可视为各个方向上不同频率不同相位的单频波浪线性叠加而成,各海浪成分在时间和空间上缓慢演变。依据该假设,对于无限深的稳态海洋环境,海面上任一点r=(x,y)在时刻t的几何高度zs由线性滤波法可表示如下:
式中,H(k,t)是依赖海谱的傅里叶振幅函数:
其中,F (k)是二维海谱函数,k=(km,kn)表示二维波矢量,km=mδkx,kn=nδky,m和n表示离散点,空间频率采样间隔δkx=2π/Lx,δky=2π/Ly,Lx× Ly表示模拟的海面场景大小,Υ(k)是符合标准正态分布的随机序列,符号“*”表示复数共轭,ω为波浪传播角频率。因为空间波高为实数序列,H (k)具有以下共轭对称特性:
利用线性滤波法仿真的海面波高如图1-2所示,分别给出了不同风速、风向以及随时间变化的海面。从图中可以看到,当风向从0°变化到45°时,海面的纹理发生了明显的变化。与此同时,随着风速的增加,海浪波的波长明显变大,波高起伏也增大。由于在处理中使用了FFT,同样模拟离散点为256×256的场景只需要不到1s 的时间。对于动态海面的模拟,时间间隔为0.5s,可以看到,海面的波形随着时间的推进呈现出规律的演化特征。
图1-3给出了海面波高的方差随风速的变化情况。从图中可以看到,当风速在17m/s以下时,对仿真的海面波高进行统计的结果与理论值能够很好地符合,而当风速再大时,统计的波高结果将趋于平缓,而理论值则无限增大,这是因为当风速过大时,会出现海浪破碎等非线性特征,在仿真过程中没有考虑到这一点。
图1-2 利用线性滤波法仿真的海面波高
图1-3 海面波高的方差随风速的变化情况