djaity 发表于 2006-8-22 11:18

共享:联系梁的影响线的例子

和大家分享一下,希望对大家有所帮助

如果用sap2000来画的画,实在是非常简单。但如果在ansys里面画,就实在是两个世界。以下是一个联系梁的影响线的例子(在别人中拿来,忘记是谁了,不好意思):


!!连续梁桥影响线的计算示例
!!日期:2005-11-12
!!计算单位:kN,m
!!!!********************************
!!!!初始化分析
FINI
/CLEAR
SPAN=3 !定义连续梁跨数
L=20 !定义单跨跨径
/FILNAME,MODEL
/TITLE,The %SPAN%*%L%M Continuous Bridge Analysis
/NOPR
/PREP7
*AFUN,DEG
/VIEW,1,0,0,1
!!!! 初始化结束
!!!!********************************
!!!!********************************
!!!!定义相关参数
SEGMENT=5 !每米单元个数
NMAX=SEGMENT*L*SPAN+1 !计算最大节点号
X0=0.0
Y0=0.0 !定义原点
SEC_H=L/20
SEC_W=L/10 !计算截面高、宽
!!!!定义相关参数定义结束
!!!!********************************
!!!!********************************
!!!!建立有限元模型
ET,1,BEAM3
MP,EX,1,3.5E7
MP,PRXY,1,0.167 !定义单元和材料属性
R,1,SEC_W*SEC_H,SEC_H**3*SEC_W/12,SEC_H !定义梁截面
N,1,X0,Y0
N,NMAX,X0+L*SPAN,Y0
FILL,1,NMAX !定义节点

TYPE,1
MAT,1
REAL,1
ESYS,0 !定义单元属性
*DO,I,1,NMAX-1
E,I,I+1
*ENDDO !生成单元
*DO,J,1,NMAX,SEGMENT*L
D,J,UY
*IF,J,EQ,1,THEN
D,J,UX
*ENDIF
*ENDDO !对节点施加约束
ALLS
/PBC,ALL,,1
EPLOT
SAVE !存储模型
!!!!模型建立结束
!!!!********************************
!!!!********************************
!!!!模型求解
/SOLU
*DO,I,1,NMAX
F,I,FY,-1
*IF,I,GT,1,THEN
FDELE,I-1,FY
*ENDIF !对节点施加单元荷载
LSWRITE,I !存储载荷步
*ENDDO
ANTYPE,0
OUTRES,ALL,LAST,
OUTPR,BASIC,ALL,
TIME,1
AUTOTS,-1
NSUBST,1, , ,1
KBC,0 !定义有关求解参数
ALLS,ALL
LSSOLVE,1,NMAX !求解所有载荷步
!!!!模型求解结束
!!!!********************************
!!!!********************************
!!!!进入后处理器计算影响线
/POST1
*DIM,NODE_X,ARRAY,NMAX !定义节点X坐标存储数组

*DIM,N_QY,TABLE,NMAX,NMAX !定义QY 影响线存储表
*DIM,N_MZ,TABLE,NMAX,NMAX !定义MZ 影响线存储表
*DIM,QY_EXTR,ARRAY,4,NMAX !定义QY 影响线极值存储数组
*DIM,MZ_EXTR,ARRAY,4,NMAX !定义MZ 影响线极值存储数组
*DIM,TRANS_V,ARRAY,NMAX-1 !定义中间传递数据向量
ESEL,ALL
*DO,I,1,NMAX
N_QY(0,I)=I
N_MZ(0,I)=I
*ENDDO !给N_QY和N_MZ表的0行赋值(节点号)
*VGET,NODE_X,NODE,ALL,LOC,X !给NODE_X赋值(节点X坐标)
*ABSET,'Creating Efficacy Data ......',BAR !初始化状态条
*DO,I,1,NMAX
*ABCHECK,NINT(100*I/NMAX) !更新状态条
SET,I
ETABLE,QYI,SMISC,2
ETABLE,QYJ,SMISC,8
ETABLE,MZI,SMISC,6
ETABLE,MZJ,SMISC,12 !建立Beam3的单元表数据
N_QY(I,0)=NODE_X(I,1)
N_MZ(I,0)=NODE_X(I,1) !给N_QY和N_MZ的0列赋值(节点X坐
标)
*VGET,TRANS_V,ELEM,ALL,ETAB,QYI !从读取各单元I端剪力QYI赋予TRANS_V
*MFUN,N_QY(I,1),TRAN,TRANS_V !将TRANS_V中的值赋予N_QY的第一列
*GET,N_QY(I,NMAX),ELEM,NMAX-1,SMISC,8 !读取最后一个单元的J端剪力QY
*VGET,TRANS_V,ELEM,ALL,ETAB,MZI !从读取各单元I端弯矩MZI赋予TRANS_V
*MFUN,N_MZ(I,1),TRAN,TRANS_V !将TRANS_V中的值赋予N_MZ的第一列
*GET,N_MZ(I,NMAX),ELEM,NMAX-1,SMISC,12 !读取最后一个单元的J端弯矩MZ
*ENDDO
*ABFINISH !终止状态条(*ABSET *ABCHECK *ABFINISH须联用)
TRANS_V(0)=
!!!!QY和MZ的影响线建立结束
!!!!********************************
!!!!********************************
!!!!计算影响线的最大、最小值并决定其位置
*DIM,COLUMN_V,ARRAY,NMAX !定义中间临时数组
*ABSET,'Geting Extremum ......',BAR !初始化状态条
*DO,I,1,NMAX
*ABCHECK,NINT(100*I/NMAX) !更新状态条
*VCOL,1
*MFUN,COLUMN_V(1),COPY,N_QY(1,I) !从N_QY中读取第1列数据给COLUMN_V
*VSCFUN,INDEX,LMAX,COLUMN_V !从COLUMN_V中提取最大值所处位置序号
QY_EXTR(1,I)=NODE_X(INDEX) !根据序号从NODE_X中提取坐标值
*VSCFUN,QY_EXTR(2,I),MAX,COLUMN_V !从COLUMN_V表中提取QY最大值

*VSCFUN,INDEX,LMIN,COLUMN_V !从COLUMN_V中提取最小值所处位置序号
QY_EXTR(3,I)=NODE_X(INDEX) !根据序号从NODE_X中提取坐标值
*VSCFUN,QY_EXTR(4,I),MIN,COLUMN_V !从COLUMN_V表中提取QY最小值
*VCOL,1
*MFUN,COLUMN_V(1),COPY,N_QY(1,I) !从N_MZ中读取第1列数据给COLUMN_V
*VSCFUN,INDEX,LMAX,COLUMN_V !从COLUMN_V中提取最大值所处位置序号
MZ_EXTR(1,I)=NODE_X(INDEX) !根据序号从NODE_X中提取坐标值
*VSCFUN,MZ_EXTR(2,I),MAX,COLUMN_V !从COLUMN_V表中提取MZ最大值
*VSCFUN,INDEX,LMIN,COLUMN_V !从COLUMN_V中提取最小值所处位置序号
MZ_EXTR(3,I)=NODE_X(INDEX) !根据序号从NODE_X中提取坐标值
*VSCFUN,MZ_EXTR(4,I),MIN,COLUMN_V !从COLUMN_V表中提取MZ最小值
*ENDDO
*ABFINISH !终止状态条
COLUMN_V(0)=
!!!!计算影响线的最大、最小值结束
!!!!********************************
/eof !结束该宏的执行,以下可以选择执行
/AXLAB,X,Span_X
/XRANGE,0,SPAN*L
/GROPT,DIVX,12
/GROPT,CURL,1
/AXLAB,Y,VALUE
*VPLOT,N_QY(1,0),N_QY(1,1), 151
*VPLOT,N_MZ(1,0),N_MZ(1,1),51,101,151
!!!!利用图表画出影响线命令示例,
!!!!********************************
页: [1]
查看完整版本: 共享:联系梁的影响线的例子