• 沒有找到結果。

1.本实例的分析宏文件中的程序

!(1)环境初始化 FINISH

/CLEAR !清除 ANSYS 内存

/FILENAME, suspendome !定义工作文件名 /TITLE, the model of suspendome !定义工作标题

!(2)设置优化变量参数

P1=4.88E+05 !定义第 1 圈环索的初始虚预应力值

p2=4.57E+05 !定义第 2 圈环索的初始虚预应力值

p3=3.65E+05 !定义第 3 圈环索的初始虚预应力值

p4=8.16E+05 !定义第 4 圈环索的初始虚预应力值

*DIM,numnode,,Nx,1 !定义单层网壳每圈节点个数数组

*DO,i,1,Nx,1

*SET,numnode(i),Kn*i !计算单层网壳每圈的个数并赋值给数组

*ENDDO

*DIM,num,,Nx+1,1 !定义每圈节点的最大编号数组,其中心点单独作为一圈

*SET,num(1),1 !定义第 1 圈(即中心点)的最大节点编号为 1

*DO,i,2,Nx+1,1

*SET,num(i),num(i-1)+numnode(i-1)

!计算第 I 圈的最大节点编号并赋值给数组 num EA=1.8e11*2809e-6

/PREP7 !进入前处理模块

!(5)定义单元类型、材料属性和杆件实常数

ET,1,BEAM4 !单层网壳杆件的单元类型为 BEAM4

ET,2,LINK8 !定 义索撑体 系中径向 拉杆和竖 向撑杆的单 元类型 为

LINK8

ET,3,LINK10 !定义索撑体系中环向拉索的单元类型为 LINK10

MP,ex,1,2.06e11 !定义钢管的材料的弹性模量

TBDATA,,345e6,0,,,, !定义钢管的屈服强度为 345MPa

MP,ex,2,1.9e11 !定义拉索的材料的弹性模量

MP,dens,2,7850 !定义拉索的材料的密度

MP,alpx,2,1.2e-5 !定义拉索的材料的线膨胀系数

R,1,37.13e-4,1803.07e-8,1803.07e-8,0.203,0.203 !定义钢管 P203×6 的实常数 R,2,46.62e-4,2622.04e-8,2622.04e-8,0.219,0.219 !定义钢管 P219×7 的实常数 R,3,52.34e-4,3709.06e-8,3709.06e-8,0.245,0.245 !定义钢管 P245×7 的实常数 R,4,66.60e-4,5851.71e-8,5851.71e-8,0.273,0.273 !定义钢管 P273×8 的实常数 R,5,73.14e-4,7747.42e-8,7747.42e-8,0.299,0.299 !定义钢管 P299×8 的实常数

R,6,2809e-6,p1/EA !第 1 圈环索的实常数

R=(Span*Span/4+f*f)/(2*f) !根据矢高和跨度计算曲面半径 R DPha=Atn(Span/2/Sqrt(R*R-Span*Span/4))/Nx

!计算相邻两圈环杆对应的球心夹角 Dpha

N,1+Kn*(i-1)*i/2+j,x,y,z !依次计算并定义节点的编号和位置

*ENDDO

E,1+Kn*(i-1)*i/2+j,1+Kn*(i-1)*i/2+j+1 !连接相邻两节点生成单元

*ENDDO

E,1+Kn*(i-1)*i/2+1,1+Kn*(i-1)*i/2+Kn*i !连接最后一对称区的环杆

*ENDDO

E,1+Kn*(j-1)*j/2+1,1+Kn*(j+1)*j/2+(k-1)*(j+1)+i

!第 1 个节点和最后一个节点的连杆

*ELSE

E,1+Kn*(j-1)*j/2+(k-1)*j+i,1+Kn*(j+1)*j/2+(k-1)*(j+1)+i

!一般区内的最后一根连杆

*ENDIF

*ELSE

E,1+Kn*(j-1)*j/2+(k-1)*j+i,1+Kn*(j+1)*j/2+(k-1)*(j+1)+i !一般正向连杆

*ENDIF

*ENDDO

*DO,i,1,j

E,1+Kn*(j-1)*j/2+(k-1)*j+i,1+Kn*(j+1)*j/2+(k-1)*(j+1)+i+1 !一般负向连杆

*ENDDO

ESEL,s,,,num_elem_b,num_elem_e,1 !选择第 I 圈的所有环向杆

EMODIF,all,real,area(i) !修改第 I 圈的环向杆单元的实常数

ESEL,all !选择所有单元

num_elem_b=num_elem_b+i*Kn !定义第 I 圈环向杆的起始编号 num_elem_e=num_elem_e+(i+1)*Kn !定义第 I 圈环向杆的末尾编号

*ENDDO

sum_num=Nx*Kn+Nx*(Nx-1)/2*Kn !计算环向杆单元总数,并赋值给变量 sum_num

!修改径向杆截面属性

num_elem_b=sum_num+1 !定义第 1 圈径向杆的起始编号 num_elem_e=sum_num+6 !定义第 1 圈径向杆的末尾编号

*DO,i,1,Nx,1 !径向杆 1~16 圈循环

ESEL,s,,,num_elem_b,num_elem_e,1 !选择第 I 圈的所有径向杆

EMODIF,all,real,area(i+16) !修改第 I 圈的径向杆单元的实常数

ESEL,all !选择所有单元

num_elem_b=num_elem_b+6+12*(i-1) !定义第 I 圈径向杆的起始编号 num_elem_e=num_elem_e+6+12*i !定义第 I 圈径向杆的末尾编号

*ENDDO

!(9)建立下部索撑体系的节点

*SET,nodeinc,NDINQR(0,14) !提取当前节点定义的最大数目

*DO,i,1,7,1 !弦支穹顶下部索撑体系第 1~7 圈循环

NGEN,2,nodeinc,num(2*i)+1,num(2*i+1),2,0,0,-numcg(i)

!利用复制上部单层网壳的方法建立下部第 I 圈索撑体系的节点

*DO,j,num(2*i)+1,num(2*i+1),2

E,j,j+nodeinc !建立撑杆单元

E,i+nodeinc,i+2+nodeinc !建立环索单元

*ENDDO

E,num(2*j)+1+nodeinc,num(2*j+1)-1+nodeinc !建立环索单元

*ENDDO

E,num(2*j)+1+nodeinc+2*j*(i-1),num(2*j+2)+1+(2*j+2)*(i-1)

!建立径向拉杆单元

*ENDDO

*ENDDO

*DO,j,1,7,1

*SET,m,0

OUTRES,all,last !控制写入到数据库中的数据

OUTPR,all,last !控制结果的输出

NSUBST,10 !指定子步数

*GET,F1,ELEM,2521,SMISC,1 !获取 1 号索拉力

*GET,F2,ELEM,2527,SMISC,1 !获取 2 号索拉力

*GET,F3,ELEM,2539,SMISC,1 !获取 3 号索拉力

*GET,F4,ELEM,2557,SMISC,1 !获取 4 号索拉力

*GET,F5,ELEM,2581,SMISC,1 !获取 5 号索拉力

*GET,F6,ELEM,2611,SMISC,1 !获取 6 号索拉力

*GET,F7,ELEM,2647,SMISC,1 !获取 7 号索拉力

ESEL,s,REAL,,1,5 !通过单元实常数选择上部单层网壳的所有单元

SET,last !读入最后一个荷载步的结果文件

ETABLE,smax_i,nmisc,1 !将单元 i 端的最大应力生成一个单元列表 ETABLE,smax_j,nmisc,3 !将单元 j 端的最大应力生成一个单元列表 ESORT,etab,smax_i,1,1 !对单元列表 smax_i 按照绝对值进行升序排序

*GET,smaxi,sort,,max !提取上一个单元列表排序的最大值

ESORT,etab,smax_j,,1 !对单元列表 smax_j 按照绝对值进行升序排序

*GET,smaxj,sort,,max !提取上一个单元列表排序的最大值

smax=max(abs(smaxi),abs(smaxj)) !比较 smaxi 和 smaxj 的大小,并赋值给 smax FINISH

相關文件