基于带符号距离函数的海上围油栏运动模拟及离散方法与流程

文档序号:16264806发布日期:2018-12-14 21:50阅读:321来源:国知局
基于带符号距离函数的海上围油栏运动模拟及离散方法与流程

本发明属于计算机仿真领域、航海场景仿真技术领域,特别涉及一种航海模拟器中围油栏与海面溢油的交互方法。

背景技术

海上溢油模拟中,海上溢油与海上溢油应急设备之间的交互尤为重要。该交互涉及围油栏对海上溢油的围控,通常用于模拟围油栏对海上溢油的围控,阻止海上溢油的扩散。如何更加真实地体现溢油与溢油设备之间的交互是溢油交互过程中的一个难点。构建基于虚拟现实技术的海上溢油应急培训系统,可大大提高培训人员的应急能力,减少实际应急训练的成本。通过应急演练的开展可以对演练中暴露出的问题和不足进行总结,对应急预案进行修改和完善,使之更具有针对性、实用性、可操作性。

以往海上溢油交互通常采用碰撞检测方法或者采用基于几何的方法进行。其中基于几何的方法采用基于多边形裁剪算法实现溢油与围油栏的交互。该方法首先需要构建溢油多边形及围油栏轮廓裁剪多边形,而后采用围油栏的裁剪多边形进行海上溢油之间的交互。该方法是一种基于几何的方法,缺乏物理真实感,裁剪结果受到围油栏裁剪多边形的影响,且不便于并行化处理。

本发明涉及的的参考文献如下:

[1]梅玉龙,《应急演练计算机三维模拟系统研究》,中国安全生产科学技术,2012.8(4):第92-97页。

[2]余枫,《海上搜救模拟其中近海溢油的实时仿真与可视化[d]》(博士学位论文),大连海事大学,2010。

[3]余枫,尹勇,《海上溢油应急处理的仿真和三维可视化》,中国航海,2011.34(1):72-75。

[4]任鸿翔,金一丞,尹勇,《航海模拟器中海面溢油的三维可视化研究[j]》,系统仿真学报,2009.21(1):161-165。

[5]吕憧憬,田丰林,李勃等,《海上溢油可视化信息系统的设计与实现[j]》,地理空间信息,2012.22(5):21-23。

[6]邹长军,尹勇,刘秀文等,《海面溢油可视化新方法的研究与实现[j]》,重庆交通大学学报(自然科学版),2017,36(6):103-108。

[7]邹长军,尹勇,刘秀文等,《海面溢油可视化关键技术研究[j]》,系统仿真学报,2018,30(6):2109-2116。

[8]kimuram.《alevelsetmethodusingthesigneddistancefunction[j]》,japanjournalofindustrial&appliedmathematics,2002,19(3):415-446。



技术实现要素:

为解决现有技术存在的上述问题,本发明要设计一种交互处理更加便捷、便于并行化加速且具有更高的物理真实感的基于带符号距离函数(signeddistancefunction,sdf)的海上围油栏运动模拟及离散方法。

为了实现上述目的,本发明的技术方案如下:基于带符号距离函数的海上围油栏运动模拟及离散方法,包括以下步骤:

a、基于质点弹簧模型的围油栏运动模拟

采用质点弹簧模型进行围油栏运动的模拟,通过质点弹簧模型进行围油栏驱动。由于质点弹簧模型可能出现强烈的震荡,为此增加阻尼器提升质点弹簧模型的稳定性。所述的质点弹簧模型包括弹簧和阻尼器,所述的阻尼器与弹簧并联。

弹簧的形变视作线性弹性变化,并遵守胡克定律。对于质点i,连接质点j的弹簧产生的作用力为:

fsi=ks(|xij|-lij)xij/|xij|(1)

其中:xij=xi–xj为质点i和质点j之间位置差异向量;ks为弹性系数;lij为质点i和质点j之间的初始位移差。

阻尼器产生的阻尼的计算公式为:

fds=kd(νj-νi)(2)

其中kd为弹簧阻尼系数,νi和νj分别为质点i和j的速度向量。

b、基于带符号距离函数的围油栏离散,即基于sdf的围油栏离散

进行海上围油栏交互模拟时,需要对围油栏进行离散。采用sdf进行围油栏离散,具体离散公式如式(3)所示。首先将围油栏所在区域离散到背景网格中,然后根据式(3)分别计算每个网格节点的sdf值。

其中γ为围油栏所在区域;x、y、z分别为围油栏节点在三个坐标轴方向的坐标位置;为围油栏节点处的带符号距离函数即sdf;围油栏节点在边界内部的sdf小于零,围油栏节点在边界外部的sdf大于零,围油栏节点在边界上的sdf等于零。

二维平面即xy平面中,取z=0,围油栏的sdf计算根据式(4)进行,先将围油栏进行网格离散,然后计算所有网格到边界障碍的最短距离来实现sdf的计算。

围油栏sdf计算方法包括以下步骤:

b1、设s_min为网格节点p(i,j)到围油栏的最短距离,其中i、j分别为网格节点的横向和纵向网格索引号,s_ij为网格节点到围油栏线段s的距离。

b2、计算开始时先将s_min赋初值;然后遍历所有网格点,分别比较网格节点p(i,j)到围油栏线段的距离。如果s_min小于等于s_ij说明当前的最短距离比到线段s的距离s_ij更小,则最短距离保持不变。否则,如果s_min大于s_ij,则说明网格节点到围油栏线段s的距离更短,则更新网格点到围油栏的最短距离,直到完成所有网格节点的遍历,最后得到围油栏的sdf。

c、如果模拟结束则转向步骤d,否则转向步骤a继续进行模拟。

d、结束。

进一步地,所述的弹簧阻尼系数kd为(0.01-0.03)fsi。

进一步地,所述的最短距离s_min的初值为107-109

与现有技术相比,本发明提出采用带符号距离函数进行交互处理,具有以下有益效果:

1、交互处理更加便捷

本发明采用基于sdf方法进行溢油交互模拟时更加直观。在进行交互处理时,只需要查询当前位置处的sdf值即可判断当前位置是否需要进行交互处理。比传统的碰撞检测方法或者基于几何的方法更加便捷、更加直观。

2、便于并行化加速

本发明采用基于sdf方法的海上溢油交互方法,具有天然的并行性,便于移植到gpu中进行并行加速。在进行围油栏sdf计算的过程中,可以根据需要将每个网格节点的计算分配给一个gpu内核,这样非常便于进行并行加速。

3、可以结合基于质点弹簧模型的围油栏进行

以往的围油栏模型往往是基于几何驱动,缺乏物理真实感。本发明采用基于质点弹簧模型进行围油栏运动建模,可以模拟围油栏拖带运动效果,具有更高的物理真实感。

附图说明

图1是本发明围油栏运动模拟及离散流程图。

图2是本发明阻尼器示意图。

图3是本发明围油栏模拟结果。

图4是本发明sdf计算示意图。

图5是本发明sdf计算方法流程图。

图6是本发明围油栏sdf离散结果。

图中:1、弹簧,2、阻尼器。

具体实施方式

下面结合附图对本发明做进一步详细地描述。

1、基于质点弹簧模型的围油栏建模算法

如图2所示,本发明的质点弹簧模型包括弹簧1和阻尼器2,所述的阻尼器2与弹簧1并联。本发明根据围油栏各个节点所在位置及各节点受力进行受力更新。并根据动量定理进行位置更新。如式(1)所示,根据各个节点的长度变化来计算节点受力。同时为了增加质点弹簧模型的稳定性,增加阻尼器2,阻尼力的计算如式(2)所示。

本发明可以通过调节阻尼系数来控制阻尼力的大小。通过将围油栏的受力和阻尼器2的阻尼力进行叠加可以得到围油栏每个节点所受的合力。由于每个节点的质量已知,通过动量定理便可以得到每个节点的运动速度。通过速度对时间的积分可以更新节点的位置。详细流程图见图1。图3为本发明模拟围油栏的运动序列结果。

2、围油栏sdf离散求解

通过质点弹簧模型进行围油栏节点更新后,需要通过进行围油栏sdf离散。sdf定义如式(3)所示。具体计算方法如图4-5所示。

step1.初始化网格及围油栏模型;

step2.根据两端受力采用质点弹簧模型更新围油栏各分段顶点位置;将更新后的顶点位置传输到设备端;

step3.遍历所有网格,计算每个网格到围油栏的最短距离;

step3.1遍历围油栏每段线段,分别计算当前网格到当前围油栏分段的距离;

step3.2如果当前距离小于到下一分段距离,则将下一段距离设置为最短距离;否则最短距离保持不变,直到遍历完围油栏所有分段;

step4.循环执行step2-step3直到程序退出。

在step2中需要将更新后的围油栏顶点更新到设备中。在step3中,每个设备线程负责一个网格到围油栏顶点最短距离的计算,也就是说,当所有网格节点的最短距离计算完成之后,就得到了此时该围油栏的sdf。图6为某序列围油栏离散后得到的sdf等值线结果。

本发明不局限于本实施例,任何在本发明披露的技术范围内的等同构思或者改变,均列为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1