自由曲面网格结构风荷载拟合计算
2018-08-15颜书纬杜新喜程晓燕林士凯
颜书纬 杜新喜 程晓燕 林士凯 刘 武
(武汉大学土木建筑工程学院 湖北 武汉 430072)
0 引 言
随着钢结构在建筑工程领域的不断创新,越来越多造型新颖的结构屋面出现了。风荷载作为主要控制荷载,在进行结构设计时必须着重考虑风荷载的作用。《建筑结构荷载规范》[1]对许多类型的屋面及建筑结构形式给出了风荷载的计算方法,一般的网架及网壳结构可根据规范计算出各节点的风荷载。但是对于一些较为复杂的结构无法通过规范现有公式计算得到,需要采用风洞试验及数值模拟等方法分析考虑风荷载作用[2-4]。对于风洞试验来说,风压测点有限,无法测得结构所有节点处的风压,需要对风压分布结果进行处理。甘泉等[5]结合MATLAB与VB混合编程,可实现较短时间内对大量风洞试验数据进行准确、有效的处理。但一般设计过程中,近似认为风压测点处周围节点的风压数值与该测点一致,得到的节点风荷载与结构实际承受的风荷载有一定的差异,对风洞数据需要进行拟合处理[6-7]。楼文娟等[8]提出了大跨度屋面结构风压分布的二维几何平面拟合方法及公式,并进一步考虑了风向角提出三维拟合方法及公式。张慎等[9]采用混合编程技术,利用MATLAB三维插值算法拟合风压的分布。但对于自由曲面网格结构,采用一般的插值算法难以得到平滑的风荷载拟合曲面。
本文基于自主开发的通用钢结构设计软件USSCAD,利用AutoCAD生成放样曲面的相关函数,直接在程序中读入测点风压,并根据测点风压采用三次样条插值或线性插值拟合得到结构所有节点的基本风压,通过计算得到各节点的等效节点风荷载值。
1 功能设计
通用钢结构设计软件USSCAD是基于ObjectARX技术,采用面向对象的C++程序设计语言对AutoCAD进行二次开发[10]。USSCAD的用户界面采用MFC对话框程序,与AutoCAD应用程序兼容良好,人机互动灵活。在USSCAD中可对空间自由曲面结构进行参数化建模[11],增加风荷载拟合模块,为处理自由曲面网格结构风荷载计算提供了途径。
如图1所示的对话框,用户导入风荷载文件后,选择合适的插值拟合算法即可实现风荷载拟合功能。
图1 风荷载拟合对话框
生成拟合曲面的目的是供用户对拟合结果进行检查,以确保拟合结果跟预期相符,可用erase命令直接删除。该功能流程如图2所示。
图2 风荷载拟合流程
1) 借助ObjectARX工具读入结构模型的所有坐标节点和输入的风压文件。风压文件中每个点包含两个数据,分别是结构模型对应测点的节点编号和基本风压,风压单位为kN/m2。
2) 利用插值算法,算出结构各个节点的基本风压值。
3) 计算各节点的承载面积,得到等效节点风荷载。
程序提供两种插值拟合方式,分别是三次样条插值和线性插值[12-13]。采用风荷载样条插值可以光滑地插值得到自由曲面网格各个节点的风压,但其原理是将所有节点投影到XY坐标平面,在XY平面上生成放样曲面与进行风压的插值。对于双曲线冷却塔这类沿Z方向延伸的网格结构,节点投影到平面上时相互之间的距离比扭曲,无法采用样条插值拟合方式,为解决这类网格结构的风洞试验数据处理问题,提出了线性插值方法。
2 插值机制
2.1 生成放样曲面
USSCAD参数化建模功能强大,根据用户提供的控制曲面造型的几何元素,包括边界曲线、边界点、中部控制线等,即可实现自由曲面网格建模[14]。放样曲面的控制元素是经向曲线和纬向曲线。由于风荷载拟合时形成的曲面,在CAD图纸空间中不存在经向曲线和纬向曲线,因而采用点构成样条曲线,从而生成曲面。拟合曲面程序实现如下:
1) 读入控制点坐标,每行的控制点形成曲面经线。将每条曲面经线的首尾控制点分别存储在对象标识符容器。利用曲面经线的首尾点,形成两条曲面纬线并存入对象标识符容器中。
2) 声明AcDbLoftedSurface类(放样曲面类)对象。根据给定的经向曲线与纬向曲线调用createLoftedSurface()函数形成空间放样曲面。
3) 加厚曲面形成三维实体AcDb3dSolid,用getSubentPathsAtGsMarker()函数获得子实体路径。
4) 声明AcBrFace类对象,调用set()函数指向子实体所代表的曲面。实体的第一个曲面就是用于拟合的曲面。
5) 调用getSurface()函数获得实体相关的曲面对象。
2.2 风荷载样条插值
对于自由曲面来说,风洞试验得到的测点风荷载通过样条差值拟合可以得到一个平滑的荷载曲面,通过荷载曲面可以得到自由曲面各点风荷载,且各点风荷载方向平滑转变。
进行风荷载样条插值的关键在于根据风洞试验测得的测点风压值,生成覆盖整个结构的风压拟合曲面,然后根据节点的X、Y坐标值获取其风压值。拟合曲面利用AutoCAD绘制放样曲面的函数生成。程序进行风荷载样条插值的关键代码如下:
//赋予节点读取的风压
pNode->windPress();
//将第i行j个数据存入临时数组
TemPt.z= windPress*1000;
temparNodePt[i].append(TemPt);
//生成经线
AcDbSpline *pPoline=new AcDbSpline(temparNodePt[i]);
//生成纬线
guidPtAr1.append(temparNodePt[i][0]);
AcDbSpline *pPoline=new AcDbSpline(guidPtAr1);
功能实现流程如图3所示。
由于风压值一般以kN/m2为单位,而结构的长度以mm为单位,因此在进行拟合时将风压值放大1 000倍,待拟合完成后再缩小1 000倍恢复原样,以消除舍入误差。基于生成的拟合曲面,由每个节点的X、Y坐标值可以确定各个节点的Z坐标值(即风压值),乘上每个节点的承载面积得到等效节点风荷载,当风压值为负(吸力)时,其方向为节点周边辅助面[15]的法向的矢量和;风压值为正(压力)时,其方向为节点周边辅助面平均法向的反向。为了使生成的拟合曲面能够完全覆盖整个结构,在布置风压测点时,应包含边界发生改变的位置。
2.3 风荷载线性插值
对于沿Z方向延伸的网格结构的风洞试验数据处理问题,采用线性插值实现。在进行线性插值之前,需确保Z坐标轴位于结构的内部,且结构的高度可以用Z坐标值表示。风荷载线性插值的方法和流程如下:
1) 求出每一个节点与Z坐标轴的垂线和X坐标轴之间的夹角θ,如图4所示。
图4 节点θ示意图
2) 将风压为零的节点存储为无风压节点集,风压不为零的节点储存为有风压节点集,以夹角θ和Z坐标值来表示所有节点的坐标。对无风压节点集中的所有节点进行循环,将所有有风压节点的坐标(θ和Z)减去该无风压节点的坐标,得到各个有风压节点的相对坐标。
3) 如图5所示,根据各个有风压节点的相对坐标,将其分成四个象限节点集。
图5 节点象限示意图
4) 求出各个象限中与该无风压节点距离最近的有风压节点,并且储存其距离与该有风压节点的风压值。按式(1)至式(3)计算得到该无风压节点的风压值,并将该节点存入有风压节点集中。
5) 由各节点的基本风压值乘以节点承载面积,算出等效节点荷载。
(1)
d=d1+d2+d3+d4
(2)
(3)
式中:
w无风压节点的风压值(kN/m2);
wi第i象限距离最近的有风压节点的风压值(kN/m2);
di第i象限距离最近的有风压节点与该无风压节点的距离(mm)。
采用风荷载线性插值能够实现对沿Z方向延伸的网格结构进行风荷载数据处理,拟合出节点的等效风压,各点风荷载方向平滑转变。
3 算 例
以某单层空间网壳为例,横向网格数12,纵向网格数16,共有213个节点,选取如图6所示的26个节点作为风压测点,运用风荷载样条插值生成光滑的风压拟合曲面如图7所示。
图6 某单层网壳风压测点分布
图7 拟合曲面示意图
如图8所示,单层空间网壳上各点通过拟合曲面上对应点的Z值得到所有节点的等效风压,再计算得到各节点荷载。且风荷载方向平滑转变,无不合理的方向突变,拟合效果良好,如图9所示。
图8 某单层网壳风荷载分布示意图(单位:kN)
图9 风荷载作用方向示意图(单位:kN)
4 结 语
本文针对自由曲面网格在通用钢结构设计软件USSCAD中的风荷载计算问题,提出一种基于风洞试验数据的风荷载拟合算法。对沿XY方向上延伸的网格结构,提出样条插值方法,生成风压拟合曲面,从而通过拟合曲面计算得到所有节点的风压值;对于沿Z轴方向上延伸的网格结构,采用线性插值算法,拟合得到所有节点的基本风压。该算法得到各节点风荷载方向能够平滑转变,可有效得到合理的自由曲面网格结构整体风压分布,完成结构设计。