您的位置:网站首页 > Ansys教程

ANSYS各种时间步求解方法比较

时间:2010-11-14 11:43:35 来源:未知

下面以一个弹塑性立方块求解为例.
基本建模
/prep7
Et,1,solid45
Mp,ex,1,3e4
Mp,nuxy,1,0.3
TB,BKIN,1,1,2,1
TBDATA,,20,10,,,,  
Block,,10,,10,,10
Esize,1
Vmesh,1
Asel,s,loc,y,0
Da,all,all


!求解部分共三种方法比较

方法1:采用do循环批处理
*DO,I,1,2                
/SOLU
TIME,I
nsel,s,loc,y,10
D,all,uy,-1*I  
allsel,all
Solve
*ENDDO

I=1时: 时间TIME从0 算到1
I=2时: 时间TIME从0算到2 ,都是基于初始构型计算的,不具有对前一步计算结果的继承性,相当于时间函数只有一个点(1,2)
最终循环计算的结果是number step= 1 ; time=2


方法2:step by step求解步
ALLSEL,ALL
/SOLU
TIME,1                      !一个时间对应一个荷载步,后一步是在前一步继承计算的
NSEL,S,LOC,Y,10
D,all,uy,-1
allsel,all
Solve
               
TIME,2
NSEL,S,LOC,Y,10
D,all,uy,-2
allsel,all
Solve
该方法是在前一步计算结果的基础上继承计算的,时间函数上有两个点(1,1),(2,2)
最终计算的结果是NUMBER STEP=2, TIME=2
!如果TIME=1计算顺利完毕,采用重启动是多余的,如果中途结束,需要重启动把TIME=1算完

方法3:
用lswire文件的方法,设置荷载步(在线性计算时相当于荷载工况)和时间,此方法对前一步结果有
继承性,计算结果同方法2

方法4:
对第一种方法,要具有继承性,采取重启动的方法:
/solu
RESCONTRL,DEFINE,ALL,1,1 !保存每一子步计算结果,用于重启动
*DO,I,1,2
   *IF,I,GT,1,THEN
     ANTYPE,,REST !重启动以后,变量I恢复到上一步了,新的荷载步需要I=I+1,重启动文件将变量也保存了
     !I=I+1
   *ENDIF             
   TIME,I
   nsel,s,loc,y,10
   D,all,uy,-1*I
   allsel,all
   Solve
   SAVE
*ENDDO
计算结果同方法2

方法5:是对方法4的一点补充,如果不明示TIME
/solu
RESCONTRL,DEFINE,ALL,1,1 !保存每一子步计算结果,用于重启动
*DO,I,1,2
   *IF,I,GT,1,THEN
     ANTYPE,,REST,I-1,LAST,0   !重启动以后,变量I恢复到上一步了,新的荷载步需要I=I+1,重启动文件将变量也保存了
     I=I+1
   *ENDIF             
   nsel,s,loc,y,10
   D,all,uy,-1*I
   allsel,all
   Solve
*ENDDO
计算结果,time的值自动+1,计算结果同上

注意:1. 每个时间输入的荷载,是荷载-时间曲线上的点,也就是荷载水平,不是荷载增量,这一点与ADINA相同
      2. 后继时间点一定1,3要大于前面的时间点,如果小于,则系统在前面时间自动+1
      3. NUMBER STEP(在线性分析中相当于荷载工况)的数目,是通过solve来确定的,每执行solve一次,就会有一个记录,与时间没什么关系
      4. 关于*do循环与Fortran语法的区别
      *do,i,1,3
        i=i-1 !这里的变量不参与循环,开始就把循环次数算完了,没有递归
      *enddo

     !即当:i=1, i=i-1=0,此时i=0没有返回循环结构*DO中
     !      i=2, i=i-1=1
     !      i=3, i=i-1=2
     但在FORTRAN中,这种写法会出现错误Error: An assignment to a DO variable within a DO body is invalid.   [I],循环体中不能出现