GC在参数化拱坝三维设计中应用研究
2019-02-21赵凯华张璐琦张建宏
赵凯华,张璐琦,余 军,张建宏
(1.黄河勘测规划设计有限公司,河南 郑州 450003;2.黄河流域水资源保护局,河南 郑州 450004)
GenerativeComponents(以下简称GC)是Bentley公司开发的一款基于MicroStation平台的关联参数化建模系统,其最早提出是在2003年,后来由于其工程实践的突出表现(尤其是伦敦的瑞士再保险塔)逐渐进入了公众视野,2007年商业版本GC正式发布。
其优点是能够灵活地创建各类几何形体,支持各种几何和逻辑可能性,为工程师提供了全新的设计方式。GC采用图形方式展示元素及相互关系,支持有效展示与重用设计方案。使用GC,工程师既可完全采用图形方式工作,也可适时将图形与脚本和编程结合使用。GC的参数化规则和关系式用户自定义的,通过界面图形操作和脚本编程的混合方法,设计师能够使用GC模拟出各类几何结构,并且每一个对象都能记录自己的创建方式。
在水利工程中,对于拱坝、蜗壳、尾水管、叉管等异形结构众多,设计计算和绘图复杂,工作量、出图量大,利用GC技术研究水利工程异形结构具有良好的应用价值,可以方便地完成三维建模,并且更改参数便可方便快速完成方案修改。
1 拱坝设计介绍
拱坝是一种建筑在峡谷中的拦水坝,做成水平拱形,凸边面向上游,两端紧贴着峡谷壁,是一种经济性和安全性都很好的坝型。其主要参数有:拱弧的半径、中心角、圆弧中心沿高程的迹线和拱厚。按照拱坝的拱弧半径和拱中心角,可将拱坝分为单曲拱和双曲拱。
双曲拱是拱坝中最具有代表性的坝型,其水平向弯曲可以发挥拱的作用,竖直向弯曲可实现变中心、变半径以调整拱坝上下部的曲率和半径。一般情况,上部半径大些,可使拱座推力更指向岸里;下部半径小些,可适当加大下部中心角以提高拱的作用。因此,双曲拱坝一般均采用变中心、变半径布置。这样结构设计更合理,但建模时体形计算很复杂,特别在施工详图设计阶段,各种参数的计算和图形绘制工作非常繁杂,有时甚至是手工无法完成的。利用计算机进行参数化三维设计可大大减少工作量,提高设计精度[1]。
GC在拱坝三维设计上,国内已经有人做了一定应用研究[2-3],但是研究的深度和适用的坝型有限,本文中研究的拱坝类型具有代表性,由于其特殊的要求,设计更复杂,有必要利用GC对其进行研究建模以更好地对设计提供技术支持。
2 典型抛物线双曲拱坝参数化建模
2.1 技术路线
对于抛物线双曲拱坝来说,其水平及竖向截面都是曲线形。因此,可以需要通过创建各层水平面上曲线,根据水平面上的曲线分别拟合出上下游的拱面,在根据上下游拱面生成坝体。所以,利用GC进行参数化建模的技术路线如下。
(1)定义参数,提取出拱坝的一些特征参数,包括坝顶高程、坝底高程以及相邻特征拱圈的距离、每一个拱圈上特征点的个数,以及拱冠厚度、左右拱端厚度、弦长、大坝分缝的控制参数等。
(2)根据坝体高程范围,高程进行离散。每个高程的拱圈根据公式,计算每层拱圈上特征点的坐标。
(3)根据(2)中得到的拱圈上特征点的坐标,生成每层拱圈的特征点。
(4)根据(3)生成的特征点,分别拟合出拱坝上游面和下游面。
(5)根据(4)拟合的上下游拱面,生成坝体。
(6)将坝体进行分区。
(7)完成表孔、中孔、闸墩、交通桥等坝上建筑物建模。
2.2 坝体部分建模及分区
对于双曲拱坝,其体型通过上下游坝面形状来控制,而上下游坝面的控制点要通过每一层拱圈上的特征点来确定;上下游坝面的拱圈数目、每层拱圈上特征点数目越多,则坝面控制越精确;但是拱圈个数及拱圈上特征点的增加,必将造成计算量的增大,造成绘图效率的降低。因此,在工程误差允许范围内,应选择合适的拱圈个数及每层拱圈上特征点的个数。表1和表2为确定典型拱坝体型的控制参数,保存在Excel表格以便GC直接调用。
定义完特征参数后,需在坝体高程范围内对高程进行离散。然后根据设计文件,对于每一个特定高程拱圈中心线按照式(1)确定其特征点位置。表1中给出了拱冠厚度为Tc、左拱端厚度为Tar、右拱
端厚度为Tal、左拱中心线拱冠处曲率半径为Rcr、右拱中心线拱冠处曲率半径为Rcl的插值参数。表2给出了右拱圈弦长Xr,为左拱圈弦长Xl及拱冠厚度为Tc在各个高程上的取值。拱圈形状及各几何参数说明如图1所示,各几何参数插值系数按表1取值,插值公式按式(2)计算。
图1 拱圈形状及参数说明示意图
(1)
式中,R—拱冠处曲率半径,对于左拱段R取Rcl,对于右拱段R取Rcr,m;Yc—y轴截距,m。
F0(Z)=α0+α1Z+α2Z2+α3Z3
(2)
式中,F0(Z)—高程为Z拱圈的几何参数,m;Z—相应拱圈所在的相对高程,按式(3)计算,m;α0,α1,α2,α3为表1中对应的插值系数。
Z=Z顶-z (3)
表2 拱圈体型参数表 单位:m
式中,z—拱圈所在的绝对高程,m;Z顶—拱坝坝顶绝对高程,m。
确定拱冠处厚度Tc后,式(4)为平面拱圈各部位厚度与弧长的关系。根据拱圈各部位的厚度,计算得到上下游拱圈上特征点,然后根据所有的特征点来拟合得到上下游拱面,从而生成坝体。
Ti=Tc+(Tai-Tc)(Si-S)2
(4)
式中,Ti—拱圈任意位置厚度,m;Tc—对应拱圈拱冠厚度,m;Tai—拱端的拱冠厚度,对于左拱端Tai取Tal,对于右拱端Tai取Tar,m;S—左侧段或右侧段拱圈中心线总长度,m;Si—拱圈中心线上任意点至坐标原点的中心线弧长,m。
据此,在高程上每隔一定高程按式(1)生成足够多控制点,如图2(a)所示;然后用B样条曲线拟合每一条抛物线,如图2(b)所示;根据式(4)计算得到控制点处的拱圈厚度Ti,以控制点为起点,分别向拱圈中心线内法向和外法向生成长度为Ti/2的线段作为上下游拱面的控制线,如图2(c)所示;利用控制线的起点和终点分别生成上下游拱面,生成图2(d)所示坝体。
图2 利用GC生成各层拱圈中心线抛物线
根据设计需要,大坝须设置横缝,横缝为铅直面,按接近径向布置。设置依据为y轴截距B和横缝与y轴交角φ,数据见表3。在图1中依据B和φ确定横缝所在平面,如图3(a)所示,从左
图3 模型横缝设置示意图
2.3 坝体上部建筑物建模
拱坝上部的建筑物包括泄洪表孔、中孔、中孔门、交通桥等,由于涉及的细节数量多需要创建大量的Transactions去实现,这些Transactions记录下了整个模型的点、线、面、体的生成过程,以及求交线,拉伸成体、布尔运算等过程。图4(a)为GC的Transactions窗口,生成的拱坝及其上部建筑物如图4(b)、4(c)所示。
图4 GC生成的拱坝模型
2.4 方案修改
参数化设计要求模型具有数据驱动能力,在这方面GC具有从数据库、Excel表格读写的模块,能够方便的实现和数据库、Excel之间的数据交换,为参数化建模提供了便利。本文采用Excel表格对
表3 大坝横缝位置表
参数进行统一管理,在GC中读入这些参数,再通过脚本编程来实现参数化建模;要实现方案修改,只需在Excel中修改相应参数即可,提高了三维设计的效率。
对于拱坝,设计方案修改一般会涉及孔数、孔宽以及孔中心线的偏移等影响坝上建筑物布置的参数,以及拱冠中心店坐标、拱冠厚度、左右拱端厚度、左右拱中心线拱冠处曲率半径、左右弦长、分区用到的夹角、截距等影响拱坝形体的参数。
以拱冠厚度和左右弦长为例,对设计方案进行修改。在表1中拱冠厚度Tc对应的参数进行调整,α0取值增加到7.002872,左右弦长均增加2m,然后重新生成模型如图5所示。
图5 拱坝体型调整
3 石门坎拱坝建模中应用
3.1 应用背景
石门坎水电站位于云南省思茅市墨江县和普洱县交界的把边江上,为云南省李仙江流域水电梯级开发7个梯级电站中的第2级,引水式电站。水库正常蓄水位756m,死水位740m,总库容为1.97亿m3。电站已于2007年1月17日开工,2008年11月14日大江截流,2010年5月下闸蓄水,2010年6月投产发电。石门坎坝体为圆弧形双曲拱坝[4],最大坝高111m,拱坝体形采用抛物线双曲拱坝。
3.2 应用实例
设计时从650m高程到758m高程,每隔2m做一个特征拱圈,用变量z表示拱圈所在高程,用Z表示对应相对高程,在GC中可以通过如下脚本语句实现:
feature User.Objects.zBentley.GC.Features.GraphVariable
{Value=Series(650, 758, 2);}
feature User.Objects.ZBentley.GC.Features.GraphVariable
{Value=758-z;}
设计参数存放在Excel表格中,然后用GC从Excel中获取相应参数。但是,这之前需要装载Excel库,然后才能用ExcelRange特征。GC获取Excel中参数可通过如下脚本语句实现:
feature User.Objects.excelRange01 Bentley.GC.Features.ExcelRange
{
RangeAddress =″B2∶E7″;
SheetName =″Sheet1″;
WorkbookFileName =″E:GCSMK.xlsx″;
}
每层拱圈中心线的左半拱和右半拱分别取50个控制点,用B样条曲线拟合拱圈中心线抛物线方程,确定拱圈中心线特征点坐标GCScript函数为:
feature User.Objects.graphFunction02 Bentley.GC.Features.GraphFunction
{
Definition=Point function(out Point leftPts, out Point rightPts, out Point centerPts)
{
double count=Z.Count;
double maxX=graphFunction01(); // 获取左右弦长范围
double xPos, yPos; // 记录拱圈中心线点坐标x、y坐标
double xRStep, xLStep; // 左右拱圈部分横坐标变化的步长
leftPts={};rightPts={}; centerPts={} //左右拱圈控制点
for(int i=0;i < count; i++){
xLStep=maxX[i][1]/(numPt-1); //获得右侧弦长离散的步长
leftPts[i]={}; //右侧拱圈特征点初始化
for(int j=0 ; j < numPt; j++){
xPos=j*xLStep;
yPos=-xPos*xPos/2/Rcr[i]+Yc[i];
leftPts[i][j]=new Point();
leftPts[i][j].ByCartesianCoordinates(baseCS,xPos, yPos, Z[i]);
}
rightPts[i]={}; //左侧拱圈特征点初始化
xRStep=maxX[i][0]/(numPt-1); //获得右侧弦长离散的步长
for(int j=0 ; j < numPt; j++){
xPos=-j*xRStep;
yPos=-xPos*xPos/2/Rcl[i]+Yc[i];
rightPts[i][j]=new Point();
rightPts[i][j].ByCartesianCoordinates(baseCS,xPos, yPos, Z[i]);
}
centerPts[i]=RemoveAt(Union(Reverse(leftPts[i]),rightPts[i]), numPt);
}
};
}
需要利用特征点坐标,用B样条曲线拟合得到拱圈中心线近似抛物线方程,GCScript函数实现语句为:
feature User.Objects.graphFunction03 Bentley.GC.Features.GraphFunction
{
Definition=function (int index)
{ int count=Z.Count;
BSplineCurve childBSpline={};
for(int i=0; i < count; i++){
childBSpline[i]=new BSplineCurve(this);
childBSpline[i].ByPoints(leftPts[i]);
}
return childBSpline;
};
}
做出上下游拱面控制线后,利用控制线的起点和终点获得拱面,通过如下脚本语句实现:
feature User.Objects.bsplineSurface01 Bentley.GC.Features.BSplineSurface
{ Points =line09.StartPoint; }
feature User.Objects.bsplineSurface02 Bentley.GC.Features.BSplineSurface
{ Points =line09.EndPoint; }
利用上下游拱面生成坝体,通过如下脚本语句实现:
feature User.Objects.solid01 Bentley.GC.Features.Solid
{ Surface0=bsplineSurface01; Surface1 =bsplineSurface02; }
坝上建筑物部分设计众多细节,主要也是通过类似的点、线、面、体进行实现,不再一一说明。
在方案修改后,包括坝体、上部建筑物在内整个模型更新共用时12min 40s,能够较快实现设计变更。
4 结语
以典型抛物线双曲拱坝为例,介绍了GC三维建模的技术思路,能够适用于大多数拱坝的三维设计。在石门坎拱坝的实例应用表明,GC能够很好地支持异形结构体建模,支持设计方案重用,适用于水利工程、特别适用于异形结构体的三维建模。