- 积分
- 1
- 注册时间
- 2010-11-30
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 bambooli 于 2011-8-18 11:36 编辑
BEAM188单元的应力提取比较麻烦,结合论坛上一位仁兄的帖子以及王新敏的书,本人写了一段程序来提取时程分析后BEAM188单元的应力。共有16个单元的应力需要提取,一个思路就是每一个荷载步作用下,结构有一个应力响应,提取出最大值和最小值,然后在1000个荷载步里面找出最大最小值。
命令流如下:
/POST1
set,last !读取最后一个荷载步的解
*GET,NUM_SUB,ACTIVE,0,SOLU,NCMLS !获取荷载步的总步数,Cumulative number of load steps,提取后值为1000
*DIM,DMAX,ARRAY,NUM_SUB !存储1000个荷载步每步的最大应力
*DIM,S_MAX,ARRAY,16 !存储所有1000个荷载步中中某单元的最大应力,共16个单元
*DIM,DMIN,ARRAY,NUM_SUB !存储1000个荷载步每步的最小应力
*DIM,S_MIN,ARRAY,16 !存储所有1000个荷载步中某单元的最大应力
*DO,i,1,16
S_MAX(i)=0 !数组初始化为0
S_MIN(i)=0 !数组初始化为0
*ENDDO
*DO,i,1,16
*DO,j,1,NUM_SUB
SET,j !读取第j个荷载步的解
*GET,DMAX(j),SECR,DunTop(i),S,X,MAX ! SX最大应力值
!Duntop里面保存的是需要提取的单元之单元号
*GET,DMIN(j),SECR,DunTop(i),S,X,MIN ! SX最小应力值
*IF,DMAX(j),GE,S_MAX(i),THEN
S_MAX(i)=DMAX(j)
*ELSE
S_MAX(i)=S_MAX(i)
*ENDIF
*IF,DMIN(j),LE,S_MIN(i),THEN
S_MIN(i)=DMIN(j)
*ELSE
S_MIN(i)=S_MIN(i)
*ENDIF
*ENDDO
*ENDDO
运行完毕后,发现只有第一个单元即i=1时对应的单元有值提取出来,但是j只运行了一次。output窗口见附件。
附件:
请大神帮忙看看,若问题解决了,本人定当将修改好的命令流发到论坛与大家共享。
谢谢了! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|