!(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