马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
- /filname,cable-stayed bridge,1
- keyw,pr_struc,1
- /prep7
- !定义单元类型
- et,1,beam4
- et,2,link10
- !定义材料属性
- mp,ex,1,3.5e10
- mp,prxy,1,0.17
- mp,dens,1,2500
- mp,ex,2,10e15
- mp,prxy,2,0
- mp,dens,2,0
- mp,ex,3,1.9e10
- mp,prxy,3,0.25
- mp,dens,3,1200
- mp,damp,3,0.5
- !定义实常数
- !定义实常数
- r,1,25.6,5.546.133,16,1.6
- r,2,16,29.417,15.394,3.4,4.7
- r,3,54,364.5,162,6,9
- r,4,40,213.3,83.3,5,8
- r,5,1,1/12,1/12,1,1
- r,6,0.012,0.012 !索的
- !创建节点和单元
- !建立主梁节点
- /view,1,1,1,1
- /angle,1,270,xm,0
- /replot
- *do,i,1,59 !此循环用于建立主梁的半跨节点
- x=-174*2+(i-1)*6 !最左端x=174*2,x=0左边的节点x坐标值,间距为6
- y1=-14 !桥面宽28米,故左边节点为-14
- y2=14 !桥面宽28米,故右边节点为-14
- n,3*(i-1)+1,x !建立主梁节点 3*(i-1)+1为节点号
- n,3*(i-1)+2,x,y1 !以下两行建立桥面两边节点
- n,3*i,x,y2 !能想出这种建模命令的绝对是编程高手,哈哈
- *enddo !完全可以先建立端部的三个节点,然后用这三个节点在x方向上复制59份,间距为6
- !建立主梁单元
- type,1
- real,1
- mat,1
- *do,i,1,58,1 !以下循环建立建立桥面中线主梁单元
- j=3*(i-1)+1
- e,j,j+3
- *enddo
- !建立鱼刺刚横梁
- type,1
- real,5
- mat,2
- *do,i,1,59,1 !以下循环用于建立桥面鱼刺横梁的节点
- j=3*(i-1)+1
- j1=3*(i-1)+2
- j2=3*i
- e,j,j1
- e,j,j2
- *enddo
- !建立半跨主塔
- i=59*3 !变量用于记录桥面的节点数,即至此已经建立了59*3个节点了,用于指导以后设定节点的编号
- n,i+1,-174,-10,-30 !以下两行记录塔脚节点
- n,i+2,-174,10,-30
- n,i+3,-174,-15 !以下两行用于建立与桥面齐高的主塔节点
- n,i+4,-174,15
- *do,j,1,5,1 !以下循环用于建立索塔在桥面以上的节点
- k=i+4+j
- n,k,-174,0,60+(j-1)*18
- *enddo
- !建立下索塔单元
- type,1
- real,4
- mat,1
- e,i+1,i+3 !以下用于建立主塔在桥面以下的两根塔柱单元
- e,i+2,i+4
- !建立中索塔单元
- type,1
- real,3
- mat,1
- e,i+3,i+5 !以下用于建立倒Y分叉点到桥面间的两根塔柱单元
- e,i+4,i+5
- !建立上索塔单元
- type,1
- real,2
- mat,1
- *do,j,1,4,1 !以下用于建立倒Y分叉点以上的塔柱单元
- k=i+4+j
- e,k,k+1
- *enddo
- !建立与塔的倒Y分叉点链接的索单元
- type,2
- real,6
- mat,3
- e,i+5,89
- e,i+5,90
- !建立主塔倒Y分叉点以上第一个张拉点连接的索单元
- *do,j,1,8,1
- !此循环用于建立主塔倒Y分叉点以上第一个张拉点连接的所有索单元,共32个
- e,i+6,89+3*j
- e,i+6,89-3*j
- e,i+6,90+3*j
- e,i+6,90-3*j
- *enddo
- !建立与主塔的其他三个张拉点连接的单元
- *do,k,1,3,1
- *do,j,1,7,1
- e,i+6+k,113+(k-1)*21+3*j !一共有28个索单元连接在每个张拉点上
- e,i+6+k,65-(k-1)*21-3*j
- e,i+6+k,114+(k-1)*21+3*j
- e,i+6+k,66-(k-1)*21-3*j
- *enddo
- *enddo
- !生成全桥模型节点
- i=i+9 !记录半跨的所有节点数
- nsym,x,i,all !用映射法直接建立另半跨节点
- esym,,i,all !用映射法直接建立另半跨单元
- nummrg,all !合并所有节点和单元
- !建立索塔连接横梁单元
- type,1
- real,5
- mat,2
- j=i
- i=i-9
- n,1000,-174
- e,1000,i+3
- e,1000,i+4
- n,2000,174
- e,2000,i+3+j
- e,2000,i+4+j
- !施加主塔的四个脚上的全约束
- nsel,s,loc,z,-30
- d,all,all
- allsel
- !在左桥端施加y,z约束
- nsel,s,loc,x,-348 !仅给左端主梁施加约束
- nsel,r,loc,y,0
- d,all,uy
- d,all,uz
- allsel
- !在右桥端施加y约束
- nsel,s,loc,x,348 !仅给右端主梁施加约束
- nsel,r,loc,y,0
- d,all,uy
- allsel
- numcmp,all
- !施加重力场
- acel,,,9.8
- !耦合节点,耦合跨中由于对称而重复的单元节点以及两主塔上塔横梁和主梁的重合节点,
- cpintf,uy
- cpintf,uz
- cpintf,rotx
- cpintf,rotz
- !成桥状态的确定
- !静力的初步计算
- !直接进行静力计算
- /solu
- solve
- finish
- !得到最大位移为1.288m,由于偏差太大需要重新计算(与事实不符)
- !修改实常数后重新计算:令r,6,0.012,0.012,即给索以预应变0.012
- /solu !为了将计算应力用于下面的动力分析,这里打开预应力和集中质量设置开关
- lumpm,on
- pstres,on
- solve
- finish
- !求得最大位移为0.0329m,说明已经达到成桥状态要求,(与事实不符)
- !模态分析
- !分析设置
- /solu
- antype,2
- !MODOPT,LANB,20
- !EQSLV,SPAR
- MXPAND,10, , ,0
- LUMPM,1
- PSTRES,1
-
- MODOPT,LANB,20,0,100, ,OFF
- UPCOORD,1,ON !更新模型计算坐标,目的是为了将预应力效应准确的应用能够到模态分析上来
- !分析设置完毕
- solve
- finish
- !激励耦合分析
- !恢复成桥静力计算结果
- RESUME, cable-stayedbridge,db, !路径:utility menu>file>resume jobname.db
- !生成地震激励向量,将记事本格式的地震波数据调入到工作目录下,并执行以下命令
- *DIM,aay1,ARRAY,2,50,1
- *DIM,aaz1,ARRAY,2,50,1
-
- *CREATE,ansuitmp
- *VREAD,aay1(1,1),'tjx','txt',' ',50
- (e9.3,e11.3)
- *END
- /INPUT,ansuitmp
-
- *CREATE,ansuitmp
- *VREAD,aaz1(1,1),'tjy','txt',' ',50
- (e9.3,e11.3)
- *END
- /INPUT,ansuitmp
- !输入车辆激励波,Z=1000*cos(10*t).车子跨越一个单元的时间为0.1秒(速度216公里/小时),全桥共696米,历时11.6秒,纵向共116个单元,117个节点
- n=117 !定义向量维数
- *dim,fcar,array,n !定义车载荷向量
- *do,i,1,n,1 !以下循环为生成车载荷数据,即向“farc”矩阵中写入数据
- tt=(i-1)*0.1
- fcar(i)=1000*cos(10*tt)
- *enddo
- !输入风载荷激励p=50*sin(1.5*t)。由于梁长6米,高3米,故每个节点的受力可表示为:
- *dim,fwind,array,n,n !定义风荷载向量,***注意要与车辆荷载步即时间相等***
- *do,i,1,n,1
- tt=(i-1)*0.1 !按不同时刻,每一次都是给列赋值,即各节点赋予荷载值,第a行第b列表示第b时刻第a个节点的荷载值
- p=50*sin(1.5*tt)
- fwind(1,i)=3*3*p !两端的每根梁的面积为6*3,两个节点上所受的力应为一半面积与压力的乘积:3*3*p
- *do,j,1,n-2
- fwind(j+1,i)=6*3*p !中间的每根梁的面积为6*3,两个节点上所受的力应为两个相邻梁各一半面积与压力的乘积:6*3*p
- *enddo
- fwind(n,i)=3*3*p
- *enddo
- !加载步耦合
- !由于瞬态分析是以荷载步为阶段来求解的,所以应该将117个载荷步分别写入荷载文件中
- finish !完成上一阶段的设置
- /config,nres,2000 !设置最大子步数为2000
- /solu
- antype,trans !定义分析类型为瞬态
- trnopt,full !求解方式为完全法
- m=n !m变量表示向量的需要存储的时间点数 m=n=117
- *do,i,1,m,1 !总循环开始,开始激励的耦合循环
- time,i*0.1 !给每个载荷步文件设置结束点时间
- auto,off !关闭自动时间步选项
- deltim,0.05 !设置子步求解的时间间隔
- kbc,0 !选择ramped选项
- outres,basic !选择基本结果输出
- cnvtol,f,,0.01 !选择力收敛准则,容差为0.01
- !施加地震激励
- *if,i,le,50,then !如果i小于等于50(le为little equal to)
- acel,,-aay1(2,i),10-aaz1(2,i) !其中最后一项 为重力加速度与地震竖向加速度的差值
- *else
- acel,0,0,10
- *endif
- !施加移动载荷激励
- *if,i,eq,1,then !如果力作用在最左端的主梁上时,单独定义施加的载荷,目的为了以下删除载荷的语句可以使用
- nsel,s,loc,x,-174*2
- nsel,r,loc,y,0
- nsel,r,loc,z,0
- f,all,fz,-fcar(i)
- allsel
- *else !如果力不是作用在最左端时
- nsel,s,loc,x,-174*2+i*6 !选择受力节点施加载荷
- nsel,r,loc,y,0
- nsel,r,loc,z,0
- f,all,fz,-fcar(i)
- allsel
- nsel,s,loc,x,-174*2+(i-1)*6 !删除前一节点上的载荷
- nsel,r,loc,y,0
- nsel,r,loc,z,0
- fdele,all,fz
- allsel
- *endif
- !施加风载荷,(子循环)
- *do,j,1,m,1
- nsel,s,loc,y,-14 !选择有风作用一侧的节点
- nsel,r,loc,x,-174*2+(j-1)*6
- f,all,fy,fwind(j,i) !给所选节点施加载荷
- allsel
- *enddo
- lswrite,i !写数据到载荷步文件i
- *enddo !总循环结束
- lssolve,1,m,1
复制代码 |