当前位置: 首页 > 专利查询>河海大学专利>正文

基于python和c++模拟LNG船运输过程中液舱晃荡的方法技术

技术编号:38360346 阅读:9 留言:0更新日期:2023-08-05 17:29
本发明专利技术公开了一种基于python和c++模拟LNG船运输过程中液舱晃荡的方法,包括:搭建可供用户输入数据的交互界面;初始化模块,建立三维液舱模型;获取流体初始信息;设置边界虚粒子;进入迭代循环,更新临时网格设置,搜索邻近粒子;更新粒子信息;求出加速度及密度的变化率;更新粒子信息;导出用于后处理的计算数据;返回第二步,直至达到设定的循环次数后,退出循环;读取粒子信息制作动画;设置程序中结果图片显示的视角参数,得到相同视角的结果图片集,读取图片集合成视频并保存。本发明专利技术方便快捷,用户只需在交互界面输入相关信息,就可以输出液面高度、液体压强等数据,直观地观察液体晃荡形态,简明扼要,便于操作。便于操作。便于操作。

【技术实现步骤摘要】
基于python和c++模拟LNG船运输过程中液舱晃荡的方法


[0001]本专利技术属于船舶工程
,具体涉及一种基于python和c++语言模拟LNG船运输过程中液舱晃荡的方法。

技术介绍

[0002]进口天然气主要为海上运输,在运输过程中,往往需要特定的液化天然气(LNG)运输船,以应对复杂恶劣的海洋环境条件,安全问题不可忽视。在飓风、海浪等情况下,装载LNG的液舱将会剧烈晃荡,引起舱内LNG的晃荡,进而可能导致液舱内壁的破坏。因此,探索LNG的晃荡问题尤为关键。但LNG液舱往往体型较大,装载LNG进行破坏实验具有较高的危险性,且需要多次实验才可能得到可信赖的结果,浪费严重。
[0003]目前常见的研究液舱晃荡的方法主要为:
[0004](1)实验的方法,利用液舱晃荡试验装置进行实验,将浪高仪、压力传感器等装置在液舱内与计算机相连用并传输信息。但诸如此类的原型实验会造成时间和资源的浪费且具有一定危险性;而模型试验考虑到材料的物理、力学性能难以满足相似条件的要求,以及尺寸效应等现象带来的局限性,同样难以模拟大规模海上运输时的环境条件。
[0005](2)用算法模拟,包括有网格的或无网格的模拟方式。但市面上的模拟方法多为抽象的理论,理解并使用较为麻烦。

技术实现思路

[0006]本专利技术的目的在于提供一种基于python和c++模拟LNG船运输过程中液舱晃荡的方法,能够快速准确拟合并计算出LNG船运输过程中液舱晃荡引发的LNG的改变,从而判断液舱是否会存在发生危险的可能性
[0007]为解决上述技术问题,本专利技术采用如下技术手段实现:
[0008]基于python和c++模拟LNG船运输过程中液舱晃荡的方法,包括如下步骤:
[0009]S1:利用Pyqt5模块搭建可供用户输入数据的交互界面;
[0010]S2:通过交互界面输入LNG船的设定数据,基于sph无网格化方法建立LNG船三维液舱模型;
[0011]S3:获取LNG船中运输的液化天然气流体的初始信息,包括流体的初始密度初速度和液化天然气粒子间的初始距离Δρ;液化天然气由若干粒子组成,设定初始时刻液化天然气为均质流体,则Δρ为常数;
[0012]S4:设置边界虚粒子:具体为,将LNG船三维液舱模型简化为二维模型,获取液舱的矩形截面,根据步骤S2中的三维液舱模型的尺寸设置边界虚粒子间的相对位置,模拟液舱边界;
[0013]S5:更新临时网格设置,由链表搜索法搜索邻近粒子;所述临时网格设置包括网格的大小、位置及编号,邻近粒子是指以每个粒子为中心光滑核半径范围内的所有其他粒子;
[0014]S6:预测并更新粒子的位置信息;具体为,在每一个时间步长开始前,更新粒子位
置;
[0015]S7:通过动量方程求得各粒子的加速度,并通过连续密度法,求出流体密度的变化率;
[0016]S8:校正并再次更新粒子信息:具体为,在每一个时间步长结束时,更新粒子位置、速度和加速度;
[0017]S9:导出用于后处理的计算数据,包括位置坐标、速度、加速度和压力,每个时间步长导出一次;
[0018]S10:重复步骤S6

S9,直至达到设定的循环次数后,退出循环;
[0019]S11:后处理,利用Pyvista,读取粒子信息制作动画,即得到LNG船运输过程中液舱晃荡的模拟动画。
[0020]进一步优化,所述步骤S2中,通过交互界面输入LNG船的设定数据,包括:液舱的长度和高度,以及液体的初始位置。
[0021]进一步优化,所述步骤S5中,网格大小与光滑核函数支持域大小相等,记为2h,h为光滑核半径。
[0022]进一步优化,所述步骤S5中,由链表搜索法搜索邻近粒子,具体包括如下步骤:在整个计算域内建立网格,将全部粒子放入网格中;由粒子位置得出粒子间的距离,根据此距离确定每个网格对应的粒子,在每个小网格内部建立一个相应的链表,将网格内的粒子放入链表中,搜索其中一个粒子的周围粒子时,只需要对其周围的9个网格进行搜索,能够有效地节约计算时间,快速高效找到周围粒子。
[0023]进一步优化,所述步骤S6,具体为:采用SPH时间积分求解中的newmark法,预测并更新粒子位置信息:
[0024][0025]式中,Δt为时间步长,x
t
为t时刻粒子位置,为t时刻粒子速度,x
t+Δt
为t+Δt时刻粒子位置。
[0026]进一步优化,根据光滑粒子流体动力学中的密度求和法,得出加速度由外力、内力及人工粘滞力三个力的合力产生,通过在求解公式中补充人工粘滞力项以消除拉伸不稳定现象;求出参考压强动量方程的压力项由散射方程求出人工参数R
i
、R
j
,再通过动量方程求得粒子的加速度:
[0027][0028]并由连续密度法,求出密度的变化率:
[0029][0030]式中,下标i表示某粒子,下标j表示i粒子任意的邻近粒子,v
max
为粒子的最大速
度,取γ=7,R
ij
=R
i
+R
j
,ρ0为流体的初始密度,m为某粒子质量,r
ij
为粒子i和j的距离,Δρ为初始粒子间距,v
ij
=v
i

v
j
,w
ij
=w(r
i

r
j
,h)为光滑核函数,K为张量哑指标。
[0031]进一步优化,校正并更新流体位置、速度、加速度信息:
[0032][0033][0034][0035][0036][0037]其中,M为质量矩阵,C为阻尼矩阵,K为刚度矩阵,δ、β为参数,t为时刻,Δt为时间步长,为有效刚度矩阵,为t+Δt时刻的有效荷载列阵,为t+Δt时刻粒子的速度,为t+Δt时刻粒子的加速度、即步骤S7中的
[0038]进一步优化,所述步骤S11中,具体包括如下步骤:
[0039]S11.1:使用pyvista逐一读取结果文件目录中的粒子位置文件,同时读取另一个文件目录中粒子速度文件,以粒子对应点的速度作为参数,进行颜色绘制,得到位置—速度图;读取的粒子信息包括步骤S9中导出的位置坐标、速度、加速度和压力信息,粒子位置信息用于制作逐帧画面,粒子速度信息用于染色,并将画面连成动画。
[0040]S11.2:设置结果图片显示的视角参数,将其设置为二维视角,得到相同视角的结果图片集,并保存在结果文件夹中;
[0041]S11.3:读取图片集,通过cv2模块,设置合适的帧率与大小之后,合成视频,保存视频。
[0042]与现有技术相比,本专利技术具有如下有益效果:
[0043]采用本专利技术所述的基于python和c++模拟LNG船运输过程中液舱晃荡的方法,方便快捷,用户只需在交互界面输入相关信息本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于python和c++模拟LNG船运输过程中液舱晃荡的方法,其特征在于,包括如下步骤:S1:利用Pyqt5模块搭建可供用户输入数据的交互界面;S2:通过交互界面输入LNG船的设定数据,基于sph无网格化方法建立LNG船三维液舱模型;S3:获取LNG船中运输的液化天然气流体的初始信息,包括流体的初始密度初速度和液化天然气粒子间的初始距离Δρ;液化天然气由若干流体粒子组成,设定初始时刻液化天然气为均质流体,则Δρ为常数;S4:设置边界虚粒子:具体为,将LNG船三维液舱模型简化为二维模型,获取液舱的矩形截面,根据步骤S2中的三维液舱模型的尺寸设置边界虚粒子间的相对位置,模拟液舱边界;S5:更新临时网格设置,由链表搜索法搜索邻近粒子;所述临时网格设置包括网格的大小、位置及编号,邻近粒子是指以每个粒子为中心光滑核半径范围内的所有其他粒子;S6:更新粒子信息:具体为,在每一个时间步长开始前,预测并更新粒子的位置;S7:通过动量方程求得各粒子的加速度,并通过连续密度法,求出流体密度的变化率;S8:再次更新粒子信息:具体为,在每一个时间步长结束时,校正并更新粒子位置、速度和加速度;S9:导出用于后处理的计算数据,包括位置坐标、速度、加速度和压力,每个时间步长导出一次;S10:重复步骤S6

S9,直至达到设定的循环次数后,退出循环;S11:后处理,利用Pyvista,读取粒子信息制作动画,即得到LNG船运输过程中液舱晃荡的模拟动画。2.根据权利要求1所述的基于python和c++模拟LNG船运输过程中液舱晃荡的方法,其特征在于,所述步骤S2中,通过交互界面输入LNG船的设定数据,包括:液舱的长度、宽度和高度,挡板的宽度、高度、厚度、位置,以及LNG船的运行速度。3.根据权利要求2所述的基于python和c++模拟LNG船运输过程中液舱晃荡的方法,其特征在于,所述步骤S5中,网格大小与光滑核函数支持域大小相等,记为2h,h为光滑核半径。4.根据权利要求3所述的基于python和c++模拟LNG船运输过程中液舱晃荡的方法,其特征在于,所述步骤S5中,由链表搜索法搜索邻近粒子,具体包括如下步骤:在整个计算域内建立网格,将全部粒子放入网格中;由粒子位置得出粒子间的距离,根据此距离确定每个网格对应的粒子,在每个小网格内部建立一个相应的链表,将网格内的粒子放入链表中,搜索其中一个粒子的周围粒子时,只需要对其周围的9个网格进行搜索。5.根据权利要求4所述的基于python和c++模拟LNG船运输过程中液舱晃荡的方法,其特征在于,所述步骤S6,具体为:采用SPH时间积分求解中的newmark法,预测并更新粒子位置信息:式中,Δt为时间步长,x
t
为t时刻粒子位置,为t时...

【专利技术属性】
技术研发人员:徐奕蓝王瑾黄丹
申请(专利权)人:河海大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1