基于切比雪夫网格的自由曲面网格自适应及杆长优化
2020-07-21陈元坤陈晓强陈礼杰熊政超朱爱珠
黎 佳,陈元坤,陈晓强,陈礼杰,吴 雄,熊政超,朱爱珠
(1. 武汉城市铁路建设投资开发有限责任公司,湖北 武汉 430071;2. 中南建筑设计院股份有限公司,湖北 武汉 430071;3. 华中科技大学 土木工程与力学学院,湖北 武汉 430074)
空间结构在注重建筑美学效果及需要大跨度空间的公共建筑等领域具有明显的优势,在国内外得到了非常广泛的应用[1,2]。传统空间结构的建筑表面均为可用解析函数表达的平面或简单规则曲面,但难以满足人们对优美建筑的追求。随着计算机科学技术的进步、建筑施工工艺的发展和建筑审美的提高,尤其是进入21世纪以来,自由曲面结构以其优美的造型越来越多地出现在人们的视野当中[3,4]。国内外学者对自由曲面结构进行了大量研究。Bletzinger等[5]将传统的逆吊试验与皂泡法结合,运用结构优化技术对曲面进行优化,结果表明三者结合具有较好的应用前景。高博青等[6]对自由曲面网格划分进行了一系列研究:利用弹簧质点法对自由曲面四边形网格进行平面化处理,高度平面化四边形网格有利于降低工程造价;通过边界曲线分段并连线的办法,生成适应于不同边界及不同曲率曲面的自适应性网格[7];将复杂自由曲面离散为三角形面片,在面片上进行Delaunay三角剖分[8];并开发了自由曲面网格划分专用软件ZD-mesher[9]。李承铭等[10]编制智能化网格设计程序,并应用于上海阳世博轴阳光谷设计,其自由曲面建筑的网格划分中不仅要考虑建筑师对建筑网格的流畅性、均匀性等要求,也要考虑到网格作为承重骨架的力学性能要求。冯若强等[11]同时考虑了自由曲面索支撑空间网格结构的力学、几何、经济指标,进行多目标优化。
本文基于Rhino软件及其参数化设计插件Grasshopper,实现切比雪夫网格在该平台的应用。
1 切比雪夫网格及其实现
切比雪夫网格是一种自由曲面上等距化网格生成方法。由切比雪夫(Chebyshev)在1878年提出。切比雪夫网格最初被应用于纺织业,旨在具有高度不均匀性的织物曲面上布置具有平面特征的四边形图案[12]。后因其简单、实用、高度均匀性、可控性等特点在自由曲面网格划分领域得到较广泛的应用[13]。
切比雪夫网格(图1)最突出特点为:
(1)网格等距化。切比雪夫网格中每个网格的边长均等于预设网格边长。
(2)网格方向可控。网格按从预定起点开始,沿着引导线生成。
(3)网格流畅、均匀。通过调整引导线和网格边长,可以达到较好的网格流畅性和均匀性。
图1 切比雪夫网格
1.1 平面切比雪夫网格的生成
平面切比雪夫网格生成的主要步骤概述如下:
(1)确定起点O和引导线U和V;
(2)根据预设的边长Length为半径,以点O为圆心,作圆过点1,2,3,4;
(3)以点2为圆心,作圆过点6和O,以点1为圆心,作圆过点5和O,由此可得两个圆的交点7,易得L72=L71;
(4) 在引导线U,V上和新生成的交点上不断重复步骤(3),可以生成平面切比雪夫网格,如图 2所示[12]。
图2 平面切比雪夫网格生成示意
1.2 空间切比雪夫网格的生成
在空间自由曲面上生成切比雪夫网格,需要用空间球代替前述步骤的平面圆进行求交,如图3所示[14]。两个空间球的交线为一个圆,该圆与自由曲面交于两点P和P3,P3即为所求的交点。由空间球特性可知四边形PP1P3P2每一边长均等于球的半径。
图3 空间切比雪夫网格生成图示
沿着引导线UO和VO,不断在新的交点上作空间球并求交。由此可以得到自由曲面上切比雪夫网格。
1.3 基于Grasshopper平台的实现
根据上述两节的算法,基于参数化设计插件Grasshoppper进行了C#二次开发。如图4,其主要输入参数为:(1)曲面S;(2)开始点P,其默认值为曲面参数域中点;(3)预设长度L,其默认值为3000 mm;(4)网格x轴与曲面参数域u方向的夹角R1,其默认值为45°;(5)网格x,y轴间夹角R2,其默认值为90°。可以通过调节主要参数来控制网格形状及长度,达到参数化设计的目的。
图4 输入参数
2 网格自适应
如图5,前述方法生成的切比雪夫网格在曲面边界附近存在空缺,其主要原因为在求交过程中交点超出原曲面范围。为适应更多曲面类型及边界形式,下文将介绍自动识别边界并将曲面延伸,在延伸后的曲面上生成切比雪夫网格,最后利用边界曲线进行裁剪的算法。
图5 边界空缺
2.1 边界曲线识别及曲面延伸
首先利用Grasshopper自带Python函数DuplicateSurfaceBorder提取曲面S的边界线B,然后用Extend命令将曲面S沿边界线B向外延伸一定距离,最后使用上文中的切比雪夫组件在延伸后曲面上进行网格划分,如图6所示。
图6 延伸后曲面及边界
2.2 边界裁剪
在曲面边界处由于曲面曲率较大,延伸后的网格并不会与边界线B相交。如图7,红色部分代表延伸部分曲面,在延伸部分曲面的切比雪夫网格不会与原边界线B相交。要对网格进行裁剪则必须求出切比雪夫网格与边界线B的交点。本文提供两种算法进行边界裁剪。
图7 边界裁剪二维平面示意
算法一:使用Grasshopper插件中Project命令,把所有网格边投影到曲面S上,并与边界线B进行求交运算。此算法的基本步骤为空间曲线对空间NURBS曲面的投影以及空间曲线的求交。此算法要求对网格的每条边均进行投影及曲线求交运算,对于大曲率复杂曲面及网格杆件数较多的自由曲面网格结构,单次及整体运行效率较低,难以满足实际参数化设计要求。
算法二:将空间切比雪夫网格的节点投影到二维参数域,在二维平面内找到边界B外的网格节点,并将该节点对应网格边与边界B的交点投影回空间曲面,得到裁剪后的网格。该算法具体步骤如下:
(1)将网格节点投影到延伸后曲面的二维参数域,得到二维参数域点阵{Pi}。
(2)将曲面边界B对应的二维曲线离散为平面多边形。如图8,部分比较复杂的曲面具有两条及以上的曲面边界,此时需考虑所有曲面边界,边界可分为多条内边界与一条外边界。二维曲线离散为平面多边形时的离散点数应根据离散点的空间距离划分。可按离散点的空间距离为空间切比雪夫网格的边长L控制,进行二维边界曲线的离散。此法可保证后续算法简洁高效运行。
图8 具有多条边界的建筑曲面
(3)对点阵{Pi}的每个二维点进行多边形包含判断。使用经典的象限环顾法判断二维点是否包含在多边形内。对于每个二维点,若其包含在外边界离散的多边形内,且不被任意一个内边界离散的多边形包含,即标识为内部节点;否则该节点为外部节点。
(4)标识边界杆件。网格中存在三类杆件,如表 1所示。
表1 杆件分类
(5)处理杆件。根据(4)中的杆件分类,删除外部杆件,保留内部杆件。将边界杆件与二维边界曲线的交点投影回空间曲面,代替被删除的外部节点。
经过(1)~(5)的步骤,即可得到裁剪完成的空间切比雪夫网格。该算法的底层步骤为空间点的投影、平面点的多边形包含判断及二维边界杆件的求交运算。相较于算法一的空间曲线投影,该算法仅对空间点投影。在二维平面内进行少量的直线-曲线求交运算后,将交点投影回空间曲面(该步骤为NURBS的正向计算,计算所需时间可忽略不计)。整个过程相较于算法一效率较高,能够节约大量的计算资源和缩短计算时间。但算法二实现难度比算法一高。
3 杆长优化研究
采用边界裁剪算法可以使空间切比雪夫网格适应多种曲面形态及边界条件,网格整体流畅均匀。内部杆件的长度高度一致,但可以看到,在曲面边界处,有大量杆件长度不一致。由于曲面边界的随机性,很难通过调整第一节中的输入参数来控制曲面边界附近杆件长度。本节将结合弹簧质点法讨论边界附近杆件杆长优化算法。弹簧质点法[6]基本思想为将网格杆件等效为具有原长和弹簧刚度的弹簧,将网格节点等效为理想质点,对等效后的弹簧质点系统进行迭代优化。该方法对于四边形网格的杆长和流畅性均有明显提升,即弹簧质点系统中,弹簧倾向于恢复到其预定原长,而同属于一个质点的弹簧倾向于恢复到一条直线。使用弹簧质点法进行杆长优化,其关键在于如何确定杆件原长及弹簧刚度。本文提出杆件分组的办法确定杆件原长,然后根据杆件原长与杆件实际长度的差值确定杆件弹簧刚度。
3.1 杆件原长
对于一组杆件长度向量{l},定义其长度变化比为:
(1)
对于进行边界裁剪后的杆件长度向量{l}进行分组,首先需要确定长度变化比限值Rl。该值可根据需要取值为3%到15%。Rl越大,分组数越少,杆件变化率越大;Rl越小,分组数越多,杆件变化率越小。
分组策略:从最大的一个杆件开始,逐步向下搜索杆件,并计算均值和最大长度变化比。当长度变化比R大于限值Rl时,视为一组。从下一个杆件开始,重新搜寻,直到遍历所有杆件吗,得到多组杆件。
经过分组后,将各组的均值取为该组内每根杆件的原长。此方法可保证每一组的杆件均向原长优化,且最大杆长变化率不超过Rl,保证了切比雪夫网格经过杆长优化后不会偏离以前的几何形状太多。
3.2 弹簧刚度
不同的弹簧刚度决定了杆件之间恢复到原长的恢复力大小。相对于弹簧刚度小的杆件,弹簧刚度较大的杆件更能够恢复到原长,并将其长度保持在原长附近。因此如何确定杆件的弹簧刚度是一个关键问题,本文采用对数方法确定杆件弹簧刚度:
ΔLi=|li-ReLi|
(2)
(3)
式中:ReLi为3.1方法确定的每根杆件的原长;ΔLi为杆件长与原长的绝对差值;Sti和Stbench分别为杆件弹簧刚度和弹簧刚度基数;a和b为参数。式(3)中,Stbench,a,b可以根据情况确定。一般情况下a需取小于1的值,这样保证与原长接近的杆件刚度相对较大。若a取大于1的值,则与原长差距较大的杆件刚度较大,接近原长的杆件刚度较小,与杆长优化目标相违。
3.3 杆长优化
确定了杆件长度和杆件弹簧刚度后,利用Grasshopper中的Springs组件,将裁剪后的切比雪夫网格等效为弹簧质点系统。
利用Grasshopper平台中的Kangaroo组件,进行迭代优化。优化过程中还需用CurvePull组件和PullToSurf组件,将边界上的网格点和曲面上的网格点约束在边界和曲面上。
4 算 例
4.1 算例一
图9为利用本文介绍算法生成的切比雪夫及杆长优化后的网格,曲面外轮廓尺寸85.1 m×61.1 m。
图9 算例一曲面及切比雪夫网格
在切比雪夫网格的划分过程中,各参数均取默认值。
在杆长优化中,Rl,a,b,Stbench分别取为10%,0.1,0.03,50,杆件数量为1266。经过杆长优化后,杆件种类由原来的121种大幅下降为43种。可以看到杆长优化后的切比雪夫网格仍然能在边界处保持其均匀流畅的特点。
整个划分包括杆长优化过程仅需7.9 s(64位Windows 7系统,英特尔i7-6700 CPU,3.40 GHz,24.0 GB内存)。
4.2 算例二
如图10,该网格划分过程中所有参数取值与算例一相同。曲面外轮廓尺寸97.1 m×73.3 m,杆件数量为1503。经过杆长优化后,杆件种类从189种大幅下降为36种。体现了杆长优化的有效性。
图10 算例二曲面及切比雪夫网格
整个划分包括杆长优化过程所需时间为120.1 s(64位Windows 7系统,英特尔i7-6700 CPU,3.40 GHz,24.0 GB内存)。
5 结 语
本文采用Rhino软件及其参数化设计插件Grasshopper,实现参数化划分自由曲面切比雪夫网格。由于自由曲面网格结构有曲面边界的特点,利用边界剪裁算法能使空间切比雪夫网格适应多种曲面形态及边界条件。但曲面边界处,有大量杆件长度不一致。针对此问题,本文利用弹簧质点法研究边界附近杆长优化算法。该方法能够在切比雪夫内部网格可控、均匀、流畅性的基础上尽可能减少杆长分组,能方便切比雪夫网格的结构设计与施工,同时使得网格布置更美观。