版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
前言
一个载荷步是指边界条件和载荷选项的一次设置,用户可对此进行一次或多次求解。简单来说就是在不同时间段,对模型不同空间位置进行一次不同的加载和约束。
ANSYS中有3种方法可以用于定义和求解多载荷部问题:
(1)多次求解法,每一个载荷步运行一次求解
(2)载荷步文件法,通过LSWRITE命令将每一个载荷步输出为载荷步文件,然后通过LSSOLVE命令一次求解所有的载荷步;
(3)矩阵参数法,通过矩阵参数建立载荷-时间列表,然后再加载求解;
一、有关命令

1、TIME命令

使用功能:为载荷步设置时间
TIME,TIME
其中,TIME:指定载荷步结束的时间,其默认值为已使用的TIME+1.0。
使用提示:将一个特定的TIME值赋给载荷步结束的边界条件,其中TME的值必须是一个正的、非零的、沿着输入过程单调增加的量。时间的单位应与其他所使用物理量的单位相一致。

2、NSUBST命令

使用功能:指定载荷步中所需要的子步数。
NSUBST,NSBSTP,NSBMX,NSBMN,Carry
NSBSTP:在载荷步中使用的子步数(如时间步长的大小或频率数)。若使用了自动时间跟踪,NSBSTP 就是第1子步的大小。
NSBMX:如果使用自动时间跟踪,则为最大的子步数。若“SOLCONTROL, ON".ANSYS将根据分析问题的类型来确定其默认值;
NSBMN:如果使用自动时间跟踪,则为最小的子步数。若“SOLCONTROL, ON”,ANSYS 将根据分析问题的类型来确定其默认值;
Carry:时间步长继续选项。若为OFF,使用NSBSTP作为每个载荷步开始的时间步长;若为ON,如果使用了自动时间跟踪,则将从以前载荷步中得到的最后时间步长作为时间步长的开始。

3、KBC命令

使用功能:指定载荷步为阶跃方式还是递增方式。.
KBC,KEY
其中
KEY:递增载荷关键词,它的值有:
0:每个子步的值是通过对前一个载荷步的值到本载荷步的值之间进行线性插值而得到,即用递增的方式,如图b所示,它们的值会以线性插值的方式在每个子步骤中逐步应用,在负载步骤结束时达到全部值。
1:载荷在该载荷步的第一个子步被逐步改变(步进)到该载荷步的值(即,所有子步都使用相同的值)。 仅适用于与速率相关的行为(例如,蠕变、粘塑性等)或瞬态载荷步。如下图c所示,黑点就是载荷子步的位置,其值在第一个子步骤中完全应用,并在负载步骤的剩余部分保持不变。
使用提示:在载荷步中,指定中间子步载荷增加的方式是阶跃型还是递增型。当命令“DELTIM”中DTIME的值小于时间间隔,或者在命令“NBSUBST”中NSBSTP的值大于1时,必须指定。默认值为递增方式。

4、OUTRES命令

使用功能:控制写人到数据库中的结果数据。
OUTRES,ltem,FREQ,Cname
其中:
Item:写人到数据库和文件中的内容控制,它的值有下列选项。
ALL:写入除了SVAR和LOCI记录以外的所有内容(默认设置)。
CINT:J积分结果。
ERASE:恢复命令的默认设置。
STAT:列表出命令的当前设置。
BASIC:将NSOL、RSOL、NLOAD、STRS、FGRAD和FFLUX记录写入到结果文件和数据库里。
NSOL:节点的DOF结果。RSOL:节点反作用载荷。
v:节点速度。
A:节点加速度。
ESOL:单元结果,包含有NLOAD、STRS、EPEL、EPTH、EPPL、EPCR、FCRAD、FFLUX、LOCI、SVAR(状态变量,仅适用于USERMAT)、MISC。
FREQ:写入内容的频率。它有下列选项:
FREQ =n:将载荷步中每隔n个子步的内容写人到数据库或文件中。
FREQ= 一n:对于自动载人时,将第n个载荷步的内容写入到数据库或文件中。
FREQ= NONE:禁止写入这个载荷步的任何内容。
FREQ= ALL:写人每个子步的内容,当执行命令“ANTYPE,HARMIC”和“EXPASS,ON”时,为默认状态。
FREQ= LAST:写人每个载荷步的最后一个子步内容,对于命令“ANTYPE,STATTC或TRANS”,是默认设置。
FREQ = % array%:其中array是一个nx1x1大小的数组参数名,定义了n个主要时间,对于指定内容的数据按照这些主要时间进行写人。
Cname:为“CM”命令创建的元件名,用来存放所选单元或节点。如果为空( blank),为所有的实体,若ltem =ALL、BASIC或RSOL等标签,不能使用元件名。
二、需要获得结果的几种情况

1.获取不同加载情况下的结果

可以通过设置多个载荷步,对每个载荷步进行不同的加载,如;
/solu time,T1 f,1,fy,1000!对1号节点y方向施加1000N的力 solve time,T2 sfa,3,,pres,1000!对面3施加1000N的压力 solve ......
结果是不同时间段上不同情况下加载的计算结果,因为他们都只有一个子步,所有结果文件只包含T1、T2时刻的解。
如果载荷呈递增或阶跃式变化,为了提高计算精度。
1、可以通过nsubst设置载荷子步以及kbc设置载荷递增方式。
2、使用“DELTIM”命令
使用功能:在本载荷步中指定时间步长大小。
DELTIM,DTIME,DTMIN,DTMAX,Carry
其中:
DTIME:时间步长值。若使用了自动时间跟踪,DTIME就是子步的开始时间。
DTMIN:如果使用自动时间跟踪,则为最小的时间步长。
DTMAX:如果使用自动时间跟踪,则为最大的时间步长。
Carry:时间步长继续选项。若为OFF,使用 DTIME作为每个载荷步开始的时间步长;若为ON,如果使用了自动时间跟踪,则将从以前载荷步中得到的最后时间步长作为时间步长的开始。
如果DTIME =0.9和TIME = 1.0,将生成一个时间步长,因为1.0除以0.9其值最多等于1。
如果想要按10个增量以1.0的总时间来间隔加载,那么就要使DTIME=0.1和TIME= 1.0。
为了得到一个有效的结果,建议本命令的所有输入域都要指定。

2、获取加载情况不变,但需要很多时间点的瞬态结果

通常在瞬态分析中,有时候加载情况不变,为了解它的整个变化过程,每隔一段时间就要输出一个状态值。例如,在(0,1)秒的瞬态分析中,每个0.001s计算一个值,一个就需要1000个结果,如果按上诉方法一个一个设置,那也太傻了,这时候,可以利用*do命令来求。
/solu *do,i,1,1000 T=0.001*i time,T f,1,fy,1000 solve i=i+1 *enddo
这样就计算完(0,0.001,1)的所有结果,1是总时长,0.001是求解间隔。当然,还有更简单的方法就是使用deltim或nsubst命令,这时的kbc=1,默认情况是0(递增荷载)。
/solu time,1 deltim,0.001 f,1,fy,1000 solve

3、加载情况呈某种规律,同样需要许多瞬态结果

这种情况,我们可以运用do(循环)命令或者do(循环)命令与*if(条件)命令相互配合,把载荷的施加规律给表达出来,最后循环求解。