大型铁路站房的快速建模技术研究

2019-02-22 09:46宇,张迅,韩锋,顾颖,古
铁道标准设计 2019年3期
关键词:梁柱站房轴线

赵 宇,张 迅,韩 锋,顾 颖,古 松

(1.西南交通大学土木工程学院,成都 610031; 2.中铁建设集团有限公司基础事业部,北京 100131; 3.西南科技大学土木工程与建筑学院,四川绵阳 621010)

作为铁路交通网络的交汇点,铁路客站伴随着客运铁路的发展而迅速发展。如今,高速铁路站房的结构形式日趋复杂多样。如何准确、高效地建立有限元模型已成为结构设计领域的热点问题[1-2]。

在大型特殊结构设计中,一般应采用多款软件进行对比分析[3]。沈磊等[4]利用C#语言结合面向对象编程的思想,编制了有限元模型转换程序,以实现MIDAS Gen和SAP 2000两种模型的相互转换。张月强等[5]通过自编程序,实现了ABAQUS和SAP 2000两种模型的相互转换,并将其应用到上海中心大厦的建模分析中。文献[6-8]对船舶、飞机等结构的快速建模技术进行了研究。文献[9-11]对建筑信息模型进行了探讨。

近年来,ANSYS凭借其功能强大的前后处理和分析能力在结构分析中得到广泛的应用[12]。对于大型铁路站房结构,在建立ANSYS模型时首先需要对梁柱进行定位,依次计算并记录各节点的坐标,然后确定单元节点编号以及截面编号,此过程极其繁琐费时,且难以保证精度。

本文提出一种基于Matlab[13]快速建立大型铁路站房结构ANSYS模型的方法。该方法以简便、直观的方式对梁柱进行定位,并将建立节点、单元编号、赋予截面等工作以电算形式完成,从而大幅度提高建模效率。此外,程序中的可视化窗口可实现快速纠错,并确保模型与图纸相匹配。

1 程序编制中的关键技术

基于Matlab编制的程序主要包含3个模块:CAD图纸信息识别和转换;单元交叉分割得到节点、单元、截面矩阵;生成ANSYS命令流。程序的总流程如图1所示,包括:(1)通过人工方式记录CAD图纸中梁柱的位置和截面信息;(2)读取梁柱信息,转换得到单元节点的绝对坐标;(3)对单元进行交叉分割,得到节点、单元、截面矩阵;(4)生成ANSYS命令流,程序结束。

图1 程序总流程

1.1 图纸信息的录入

对于梁柱,录入的主要内容包含端点的位置信息和截面信息。对于梁柱端点的定位,可利用图纸中的既有轴线和相对于轴线的偏移量予以实现。对于图纸中的任意位置,可由两条垂直的轴线以及与各轴线的偏移量来确定。

如图2所示,线段(a)的位置信息为:[(10,L1),(J,-M1),(11,-K1),(J,-N1)]。其中:前两组代表一个端点,后两组代表另一个端点;每一组的第一个参数为参考轴线的编号,后一个参数为相对于轴线的偏移量。线段(b)和(c)的位置信息分别为:[(10,L2),(H,M2),(11,-K2),(H,N2)]和[(11,-L3),(H,M3),(11,-K3),(H,N3)]。由于线段(b)和(c)平行于轴线,使得每个位置信息中都存在着两组相同的参数。考虑到站房结构中几乎所有的梁都平行于轴线,因此可将相同的参数放在首位作为两端点的共有参数。此时,线段(b)和(c)的位置信息变为[(H,M2),(10,L2),(11,-K2)]和[(11,-L3),(H,M3),(H,N3)]。

图2 单元位置信息示意

需要说明的是:在进行位置信息录入时,对于轴网平行的规则框架结构,可仿照线段(b)和(c)进行录入,个别不与轴网平行的梁柱可仿照线段(a)进行录入。对于异型轴网或无规则结构,直接采用人工进行定位。

1.2 绝对坐标的转换

通过“对号入座”的方式将位置信息中的轴线编号转化为轴线坐标,再叠加偏移量后得到梁柱端点的绝对坐标。具体流程如图3所示。部分程序代码如下(限于篇幅,代码中的“$”表示换行)。

for ii=1∶dygs

if isnumeric(dqz{ii})==0 %横轴对齐

R1=find(strcmp(HZZ,dqz{ii,1}));

zz=HZ(R1)+PY(ii);%两端点纵坐标

r1=find(ZZZ==qs{ii,1}); $ r2=find(ZZZ==zd{ii,1});

ijd=[ZZ(r1,1)+py1(ii),zz]; $ jjd=[ZZ(r2,1)+py2(ii),zz];

else $ R2=find(ZZZ==dqz{ii,1});

hz=ZZ(R2)+PY(ii);%两端点横坐标

r1=find(strcmp(HZZ,qs{ii,1}));

r2=find(strcmp(HZZ,zd{ii,1}));

ijd=[hz,HZ(r1,1)+py1(ii)]; $ jjd=[hz,HZ(r2,1)+py2(ii)];

end $ %记录截面信息

if decide(jmm,jm(ii,:))==0 $ jmm=[jmm;jm(ii,:)];

end $ jmbh=decide(jmm,jm(ii,:));%单元截面编号

dyzb(ii,:)=[ijd,jjd,jmbh]; $ end

图3 坐标转换流程

1.3 单元交叉分割

此模块可实现录入梁柱信息时,在每个交叉点进行单元分割,可减少工作量并保证单元间的正确连接。具体流程如图4所示。程序代码如下。

%单元相交,生成并记录新的节点

for ii=1:size(dyzb,1)-1 $ for jj=ii+1:size(dyzb,1)

[x1,y1]=xj(dyzb(ii,1∶4),dyzb(jj,1∶4));

if (x1~=0)&(y1~=0) $ if decide(jd,[x1,y1])==0

jd=[jd;x1,y1]; $ end $ end $ end $ end

dyfg=[];%分割后的新单元

%分割单元

for ii=1:size(dyzb,1) $ bhjd=[];%单元所包含节点

for jj=1:size(jd,1) $ if djxj(dyzb(ii,1∶4), jd(jj,1∶2))==1

bhjd=[bhjd,jj]; $ end $ end $ bh=[]; $ if dyzb(ii,1)==dyzb(ii,3)

for i=1:size(bhjd,2) $ bh=[bh,jd(bhjd(i),2)];%将单元中包含节点的y坐标合成一个向量 $ end $ else

for j=1:size(bhjd,2) $ bh=[bh,jd(bhjd(j),1)];%将单元中包含节点的x坐标合成一个向量 $ end $ end

[B,ind]=sort(bh);%对所包含节点按坐标排序

for i1=1:length(bhjd)-1%分割的单元数比节点数小1

dyfg=[dyfg;bhjd(ind(i1)),bhjd(ind(i1+1)),dyzb(ii,5)];

end $ end

图4 单元交叉分割流程

该模块中存在着两个技术难点:根据两个单元的端点坐标判断其是否相交;判定单元与节点是否相交。判断两单元交点坐标的流程如图5所示。判断单元与节点是否相交的流程如图6所示。

图5 判断单元相交流程

图6 判断单元与节点相交情况流程

值得注意的是,在存储节点坐标形成节点矩阵、存储截面信息形成截面矩阵、存储节点编号、截面编号形成单元矩阵等过程中,应先判断某个向量在矩阵中是否已经存在。如果已存在,则返回其索引;如未包含,则在矩阵末尾添加该向量。具体的流程如图7所示,代码如下。

function [c]=decide(a,b)

%判断矩阵a中是否已含有行向量b

%如果含有则返回其行数,否则为0

c=0; $ for i=1:size(a,1) $ if(sum(abs(a(i,:)-b))==0) $

c=i; $ break; $ end $ end $ end }

图7 判别函数流程

1.4 生成ANSYS命令流

按照ANSYS命令流格式[14]依次生成建立截面、节点、单元的命令流,并将其写入到文本中。

具体的代码如下:

fid=fopen('kmnz.txt','w');

%建立截面

for i1=1:size(jm,1)

fprintf(fid,'%s ',['sectype',',',num2str(i1),',beam,rect',',secc',…

num2str(i1)]);%以secc为前缀命令截面

fprintf(fid,'%s ',['secdata',',',num2str(jm(i1,1)),',',…

num2str(jm(i1,2))]);%赋予截面参数 $ end

%建立节点

for i2=1:size(jd, 1)

fprintf(fid,'%s ',['n,',num2str(i2),',',num2str(jd(i2,1)),',',…

num2str(jd(i2,2)),',',num2str(jd(i2,3))]); $ end

%建立单元

fprintf(fid,'%s ','type,1'); $ fprintf(fid,'%s ','mat,1');

for i3=1:size(dyfg,1)

fprintf(fid,'%s ',['secnum,',num2str(dyfg(i3,3))]);

fprintf(fid,'%s ',['en,',num2str(dyfg(i3,1)),',',…

num2str(dyfg(i3,2)),',',num2str(dyfg(i3,2))]); $ end

fclose(fid);

2 工程应用实例

铁路昆明南站(图8)位于呈贡新区吴家营片区,是采用“桥建合一”结构形式的大型高铁站房。昆明南站设计总规模为16站台30条到发线(含正线),铁路车场布置渝昆场、沪昆场、云桂场。昆明南站建筑是新建昆明南站工程中的核心项目,它包括了客运站房(约12万m2)、站台雨棚(约8万m2)、北侧轨行区下部架空停车场及换乘空间(约7万m2)。

昆明南站站房为地上三层,地下一层。首层为地下一层,地面高程为-10.500 m,主要为地下停车场、出站厅、地铁入口。二层为站台层,站台面高程为0.000 m,主要柱网尺寸为10.75 m×22 m。三层(高程9.500 m)为高架候车室。站房顺轨方向为226 m,垂直于轨道方向为430.5 m,主要柱网尺寸为21.5 m×22 m[15]。

图8 昆明南站效果图

以B2区高程-2.276 m的K~L,8~9轴范围(图9)为例,以下详细介绍其建模过程。

图9 B2区高程-2.276 m部分的局部(单位:mm)

以“先横梁后纵梁”、“从上到下”、“从左到右”的顺序,依次将梁单元位置信息和截面信息录入到Excel表格中,如图10所示。其中:A列为分区和高程信息;B~G列为梁的位置参数;B、C两列为平行轴线的编号与偏移量;D~G列为垂直轴线的编号与偏移量;H、I两列为截面参数。显然,2~4行为横梁,5~11行为纵梁。

图10 录入信息部分示意

利用程序的绘图功能绘制出各梁的位置,并以录入的先后顺序对其编号,同时将编号标记在各梁的中心位置处便于检查,如图11所示。

图11 初次运行程序得到的结果

从图11可以看出,编号为6的梁有误。此时,根据其编号可快速返回到Excel中找到其对应位置,再根据其位置信息返回到CAD图纸纠错。纠错后的程序运行结果如图12所示。

图12 程序更正后的结果

按照此过程依次在Excel中记录每个分区的信息,此过程中很可能出现公共边重复录入的情况。因此,先利用程序检查并输出重复单元的编号,再返回到图纸和表格中进行检查,以删除重复单元。

最后,在生成的命令流中添加材料信息以及板单元的建模命令,得到如图13所示的ANSYS模型,该模型有24 157个节点、54 277个梁单元、9 011个板单元。

将程序中生成命令流的模块按照MIDAS软件的命令流格式进行修改[16],即可得到MIDAS有限元模型,如图14所示。

图13 ANSYS有限元模型

图14 MIDAS有限元模型

利用两个软件分别计算站房结构的自振特性,对比结果见表1。此外,图15和图16给出了振型图。

表1 两种软件计算得到的自振频率对比 Hz

图15 ANSYS有限元模型得到的振型

图16 MIDAS有限元模型得到的振型

从表1以及图15~图16可以看出,利用本文方法建立的ANSYS模型和MIDAS模型的自振特性及振型基本一致,证明了该程序的准确性。

从建模效率上来看,以建立一根梁为例,所需要进行的工作仅为人工识别并且在Excel表中输入6个位置参数和2个截面参数,其工作量远远小于直接在软件中进行交互式建模。

3 结论

(1)本文提出的方法使建模过程中的多个环节得到简化。利用定位轴线和偏移量的方法使得定位工作直观、高效,并且方便检查;节点编号、截面编号以及匹配单元节点编号的工作由电算来完成,省时省力,并且避免了人为疏忽造成的错误。

(2)该程序具有良好的纠错能力,在建模过程中可以随时检查并更正错误(例如重复单元),保证了模型的正确性。

(3)本文提出的方法仅需对生成命令流的模块稍加修改后,即可得到其他有限元软件(如ABAQUS等)的命令流,以方便对多个软件的计算结果进行对比。

猜你喜欢
梁柱站房轴线
利用轴线交错修整砂轮凸度曲线的方法探讨
多方向梁与型钢混凝土梁柱连接节点的性能设计分析
中老铁路国内段站房“颜值”初显 全部11座客运车站装饰装修接近尾声
一种数控钻铣机床翻转夹紧工作台的设计与仿真∗
复杂建筑群项目的建筑轴线相关性分析
营改增对公路站房工程造价影响研究
空铁联运+城市轴线,广州北“珠江新城”崛起!
大咖妙语论道!于轴线之上开启广州城央最宜居的大未来!
大截面钢管劲性柱梁柱节点施工技术的要点分析
青岛西站站房主体封顶