基于Grasshopper的参数化球鼻艏生成方法
2019-06-26黄亚南
黄亚南,罗 洲
(大连海洋大学 航海与船舶工程学院,辽宁 大连 116023)
0 引言
船体外形设计是一项重要而复杂的技术,是整个船舶设计的核心部分。设计者的设计能力对船舶整体航行性能、经济性能和产品竞争力有着重要影响。 如今,计算流体动力学一直蓬勃发展,对船体表现的预估能力得到了显著提升。CFD技术逐渐变得实用并完全融入到设计过程中,但目前它主要局限于船舶水动力特性的计算和预测(正向问题)仅部分取代和减少模型试验,没有系统地将CFD技术集成到优化设计过程(逆向问题)中,使其能够实现激发设计师创新理念的目的。
在依据CFD数值计算基础理论建立基于CFD船型优化设计问题的数学模型后,设计者需要解决CAD模型优化问题。 目前国内外求解方法主要有两种:设计参数梯度式改变的算法和随机生成若干不同设计参数数值的算法。 通过求解各种设计参数情况下的模型方案,可以获得在给定约束条件下具有最佳流体动力学性能的船型。 所以,为了获得该优化问题的最优解,必须解决船体的参数化建模。
在现代商船船体阻力的成分中,粘压阻力占比不小,而且有很大优化的空间(摩擦阻力虽然占比大但没有大的优化空间)。要减小粘压阻力,优化球鼻艏是公认的简单且高效的方法。因为改变球鼻艏形状不会对整个船舶浮心和重心产生大的影响,对已有船舶进行加装或改装球鼻艏切实可行且经济实惠,所以此次研究专注于球鼻艏的参数化建模。
在球鼻艏优化过程中,设计变量将根据优化算法进行相应调整,设计变量的调整将反映在球鼻艏几何形状的变化中。 如何通过尽可能少的设计变量变化获得尽可能宽的几何范围一直是球鼻艏几何重建技术所追求的目标,当然,这也是形状优化设计中的难点。
赵林岗等[1]在研究球鼻艏长度对阻力性能的影响时,通过手动建模实现对模型长度的修改。黄卫刚等[2]改变球鼻艏主尺度比手动建模得到各种不同的球鼻艏模型。刘成岗等[3]开发了一种仿射变换的方法,利用拉伸系数对球鼻艏部分型值进行改变。徐俊路等[4]基于CATIA软件,用VB语言编程开发了真正的球鼻艏参数化设计平台。此外,詹成胜等[5]通过融合多条不同船型,调节融合系数改变球鼻艏的型线。兰林强等[6]在2016年利用Friendship平台,利用算法表示球鼻艏主要特征曲线,然后通过改变各种参数来实现模型的自动修改。
参照国内外研究成果,实现球鼻艏建模的方法主要有以下四种:
(1)多项式补丁法[7]。 多项式补丁法将Bezier曲面像补丁一样叠加在初始球鼻艏的几何部分上,并利用Bezier曲面的变形来实现船体的几何重建。设计者可以通过曲面节点位置的更改来获取不同的曲面形状,并且可以在特定约束条件下增加直接使用的节点的数量。但是,随着节点的增加,计算量也以指数形式增加,从而需要大量的计算内存。
(2)Morphing方法[8]。Morphing方法(变形方法)基于两个或更多个初始船型的线性叠加,并且通过调整叠加系数来实现球鼻艏的几何重建。该方法的优点在于设计变量的数量很少并且易于满足对球鼻艏模型平滑度的要求,缺点是难以获得大量的不同的球鼻艏模型。
(3)编程语言方法。 RODRIGUEZ等[9]开发了一种基于编程语言的编程设计方法,以生成参数化船体。这种方法的优点是参数易于修改,可以得到大量不同形状的球鼻艏模型。但编程语言对很多优化设计者来说是一个很大挑战,而且参数相对复杂,计算量较大。
(4)CAESES方法。 CAESES软件是一个灵活的CAD(计算机辅助设计)软件和优化平台,广泛应用于参数化建模和优化设计研究。当在CAESES中生成参数化球鼻艏时,需要写一定的代码,这对于不了解代码的初学者或用户来说是较困难的。对于参数化球鼻艏生成的情况,当连接生成的球鼻艏和主船体时,用户应该创建3个或更多的过渡表面以获得光顺的船体。
本文利用Grasshopper生成参数球鼻艏并将生成的球鼻艏自动光顺地连接在固定的船体上。Grasshopper是一个免费的图形算法编辑器,它与犀牛软件的3D建模工具紧密集成。 与犀牛脚本不同,Grasshopper不需要编程或脚本知识,但仍然支持设计人员利用犀牛建成参数化的模型。 利用Grasshopper,生成可修改的参数化球鼻艏,并且球鼻和固定船体之间的过渡区域也将自动生成, 从而简化了模型生成过程,有效地缩短了整个球鼻艏优化过程。
1 建模方法说明
1.1 艏部划分
如图1所示,在这项研究中船体被分为三个部分:主船体、过渡区域、球鼻艏区域。 为了获得光顺的船体,过渡区域被设计成能够自由地改变形状的区域: 过渡区域的左侧部分是固定的,右侧连接到球鼻艏区域。 当球鼻艏随着长度、宽度或丰满度等设计参数改变形状时,过渡区域将随着球鼻艏一起改变,因此可以自动生成光顺的球鼻艏模型。
1.2 生成结构线
要生成参数化球鼻艏模型,第一步就是生成球鼻艏的基本结构线。 在本项研究中,仅需要四条基本线来产生球鼻艏:顶线、龙骨线、舭部曲线和固定边界线。 在这四条线中,固定边界线直接由NURBS曲线导入,其他三条线由五个顶点生成,见图2。图中,数字1~5表示输入点的编号。
图1 艏部划分方案
图2 球鼻艏基本结构线
图3展示了整个生成过程的输入参数:五个点和一个固定的边界曲线。 点2和点5是固定边界线的顶点,因此它们是不可改变的。 在球鼻艏优化循环过程中,可变参数应尽可能少,从而可以大大简化计算过程。 在本次研究中,可变参数包括三个顶点、六个正切值和四个丰满度值,这些值通过控制结构曲线的形状来改变球鼻艏的几何模型。
图3 输入参数(左)和Tancurve功能单元(右)
此次研究所有的结构线都是由图3中的Tancurve功能生成。由图可知,该功能单元包括四个输入值和三个输出值。输入参数方面:V表示顶点(Vertices);T表示切向量(Tangent);B表示控制生成曲线的丰满度的值(Blend);D表示生成曲线的度数(Degree)。输出方面:C表示生成的曲线(Curve);L表示曲线的长度(Length);d表示曲线的输出域(domain),即曲线的指定部分,d通常它被设置为0到1,这意味着输出整个曲线。 为了达到图1中说明的目的,由于两个部分的曲率是相同的,顶线被设计成第一部分和第二部分,见图2。 为了获得光顺的顶线,这两个部分的切线值必须在点1处相同。对于龙骨线,曲率是一致的,因此不需要将其分成两部分。
当把第一部分和第二部分的曲线连接在一起时,点1处的正切值必须合适,能使整条顶线平滑。正切值由矢量表示,包括三个值:X、Y、Z。根据矢量的特殊位置和方向,可以预设Y和Z,只改变X值。为了获得合适的切向量,X值必须能够连续地改变,见图4。获得光顺的顶线后,第2点和第3点的切向量也将被修改,以使顶线更加光顺。其他切向量的方向也可以被连续地修改。
图4 切向量改变方案示意图
1.3 生成横剖线
生成基本结构线之后,下一步要生成横剖线,以便可以构建球鼻状的曲面。 横剖点定位见图5。首先生成中心线,并将其分成10个站,中心线上有11个点。然后分别在3个方向上生成线组1、线组2、线组3。最后分别在顶线、舭部线、龙骨线上找到横剖点。为了找到顶线和龙骨线上的横剖点,用图6右侧所示的功能单元可以找到两条曲线的相距的最近点。由于最近点在两条曲线上各有两组,所以对于顶线和龙骨线上的横剖点,将取在顶线或龙骨线上。对于新舭部线上的横剖点,最近点将取在线组2上。线组2可以被设计为可绕轴旋转,因此新舭部线的位置可以改变,意味着球鼻艏可以随着舭部的位置不断调整形状。
然后用上述方法生成横剖线,见图7。 舭部曲线处的切向量的方向也应该是可变的,因此可以得到光顺的横剖线。图8显示修改切向量的方法与前文提到的相同(改变X、Y、Z值)。
1.4 生成曲面
在本项研究中,图9显示了由Grasshopper中名为netsurf(网线曲面)的功能单元产生的NURBS表面。 由于到目前为止仅产生了半个球鼻艏表面,因此图10给出了生成的曲面被镜像并连接成整个球鼻艏的过程。
图5 横剖点定位图
图6 横剖点锁定方案示意图
图7 横剖线图
图8 横剖线切向量修改示意图
图9 球鼻艏模型曲面
如图9所示,过渡区域在产生光滑的球根状弓形中起重要作用,并且当球形区域被修改时将保持球根状弓形光滑。
在图11中,前3张图片是通过改变球鼻长度和龙骨线与基线之间的角度改变球鼻艏形状的结果。
底部两个模型是通过改变横剖线曲线的丰满度来改变球鼻艏形状获得的模型。
图10 球鼻艏曲面生成方案示意图
图11 球鼻艏模型变换结果图
2 实船应用
将上述方法应用于一艘集装箱船(Kriso Container Ship,KCS)船体上,以检验该方法的实用性。
如图12所示,球鼻艏模型随着参数改变,自动较大幅度修改的同时,生成的球鼻艏模型仍可以光顺地连接在主船体上。
图12 球鼻艏模型变换结果图
3 结语
此方法无需生成其他曲面就可以将鼻艏连接到主船体,用户可以通过拖动某些按钮来更改参数,大大简化了生成过程,同时实现了球鼻与主船体的光顺连接。用于修改球鼻艏形状的每个参数都清楚地显示给用户,建模结果也可以在犀牛软件中实时显示。该方法成功被应用在一艘集装箱(KCS)船体上,表明该方法可以高效地应用于商业船舶的参数化球鼻艏建模。