当用到某个用户子程序时,用户所关心的主要有两方面:一是ABAQUS提供的用户子程序的接口参数。有些参数是ABAQUS传到用户子程序中的,例如SUBROUTINE DLOAD中的KSTEP,KINC,COORDS;有些是需要用户自己定义的,例如F。二是ABAQUS何时调用该用户子程序,对于不同的用户子程序ABAQUS调用的时间是不同的。有些是在每个STEP的开始,有的是STEP结尾,有的是在每个INCREMENT的开始等等。当ABAQUS调用用户子程序是,都会把当前的STEP和INCREMENT利用用户子程序的两个实参KSTEP和KINC传给用户子程序,用户可编个小程序把它们输出到外部文件中,这样对ABAQUS何时调用该用户子程序就会有更深的了解。
(子程序中很重要的就是要知道由abaqus提供的那些参量的意义,如下) 首先介绍几个子程序: 一
.
SUBROUTINE
DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
JLTYP,SNAME) 参数:
1. F为用户定义的是每个积分点所作用的荷载的大小;
2. KSTEP,KINC为ABAQUS传到用户子程序当前的STEP和INCREMENT值; 3. TIME(1),TIME(2)为当前STEP TIME和INCREMENT TIME的值; 4. NOEL,NPT为积分点所在单元的编号和积分点的编号; 5. COORDS为当前积分点的坐标;
6. 除F外,所有参数的值都是ABAQUS传到用户子程序中的。 功能:
1. 荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。 2. 用户可以从其他程序的结果文件中进行相关操作来定义积分点F的大小。
例1:这个例子在每个积分点施加的荷载不仅是坐标的函数,而且是随STEP变化而变化的。 SUBROUTINE DLOAD(P,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, 1 JLTYP,SNAME)
INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2),COORDS(3) CHARACTER*80 SNAME PARAMETER (PLOAD=100.E4)
IF (KSTEP.EQ.1) THEN !当STEP=1时的荷载大小 P=PLOAD
ELSE IF (KSTEP.EQ.2) THEN !当STEP=2时的荷载大小 P=COORDS(1)*PLOAD !施加在积分点的荷载P是坐标的函数 ELSE IF (KSTEP.EQ.3) THEN !当STEP=3时的荷载大小 P=COORDS(1)**2*PLOAD
ELSE IF (KSTEP.EQ.4) THEN !当STEP=4时的荷载大小 P=COORDS(1)**3*PLOAD
ELSE IF (KSTEP.EQ.5) THEN !当STEP=5时的荷载大小 P=COORDS(1)**4*PLOAD END IF RETURN END
UMAT 子程序具有强大的功能,使用UMAT 子程序:
(1) 可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。 (2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQUS 中的任何单元; (3) 必须在UMAT 中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量的变化率。 (4) 可以和用户子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元每一物质点上传递到UMAT 中场变量的数值。
由于主程序与UMAT 之间存在数据传递,甚至共用一些变量,因此必须遵守有关UMAT 的书写格式,UMAT 中常用的变量在文件开头予以定义,通常格式为:
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT, 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
INCLUDE 'ABA_PARAM.INC'
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS), 2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1), 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3) user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT RETURN END
UMAT 中的应力矩阵、应变矩阵以及矩阵DDSDDE ,DDSDDT ,DRPLDE 等,都是直接分量存储在前,剪切分量存储在后。直接分量有NDI 个,剪切分量有NSHR 个。各分量之间的顺序根据单元自由度的不同有一些差异,所以编写UMAT 时要考虑到所使用单元的类别。下面对UMAT 中用到的一些变量进行说明:
DDSDDE( NTENS, NTENS)
是一个NTENS 维的方阵,称作雅可比矩阵, , 是应力的增量, 是应变的增量, DDSDDE( I,J)表示增量步结束时第J 个应变分量的改变引起的第I 个应力分量的变化。通常雅可比是一个对称矩阵,除非在“*USER MATERIAL”语句中加入了“UNSYMM”参数。 STRESS (NTENS)
应力张量矩阵,对应NDI 个直接分量和NSHR 个剪切分量。在增量步的开始,应力张量矩阵中的数值通过UMAT 和主程序之间的接口传递到UMAT 中,在增量步的结束UMAT 将对应力张量矩阵更新。对于包含刚体转动的有限应变问题,一个增量步调用UMAT 之前就已经对应力张量的进行了刚体转动,因此在UMAT 中只需处理应力张量的共旋部分。UMAT 中应力张量的度量为柯西(真实)应力。 STATEV (NSTATEV)
用于存储状态变量的矩阵,在增量步开始时将数值传递到UMAT 中。也可在子程序USDFLD或UEXPAN 中先更新数据,然后增量步开始时将更新后的数据传递到UMAT 中。在增量步的结束必须更新状态变量矩阵中的数据。和应力张量矩阵不同的是:对于有限应变问题,除了材料本构行为引起的数据更新以外,状 态变量矩阵中的任何矢量或者张量都必须通过旋转来考虑材料的刚体运动。
状态变量矩阵的维数,等于关键字“*DEPVAR”定义的数值。状态变量矩阵的维数通过ABAQUS 输入文件中的关键字“*DEPVAR”定义,关键字下面数据行的数值即为状态变量矩阵的维数。
材料常数的个数,等于关键字“*USER MATERIAL”中“CONSTANTS”常数设定的值。 PROPS (NPROPS)
材料常数矩阵,矩阵中元素的数值对应于关键字“*USER MATERIAL”下面的数据行。 SSE , SPD , SCD
分别定义每一增量步的弹性应变能,塑性耗散和蠕变耗散。它们对计算结果没有影响,仅仅作为能量输出。 其他变量:
STRAN( NTENS) :应变矩阵; DSTRAN( NTENS) :应变增量矩阵; DTIME :增量步的时间增量; NDI :直接应力分量的个数; NSHR :剪切应力分量的个数;
NTENS :总应力分量的个数, NTENS NDI NSHR = + 。
使用UMAT 时需要注意单元的沙漏控制刚度和横向剪切刚度。通常减缩积分单元的沙漏控制刚度和板、壳、梁单元的横向剪切刚度是通过材料属性中的弹性性质定义的。这些刚度基于材料初始剪切模量的值,通常在材料定义中通过“*ELASTIC”选项定义。但是使用UMAT 的时候,ABAQUS 对程序输入文件进行预处理的时候得不到剪切模量的数值。所以这时候用户必须使用“*HOURGLASS STIFFNESS” 选项来定义具有沙漏模式的单元的沙漏控制刚度, 使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度。
几个关于子程序的问题及相应解答 Q: 本人在用umat作本构模型时, *static,
1,500,0.000001,0.1 此时要求的增量步很多,即每次增量要很小, *static
1,500 时,在弹性向塑性过度时,出现错误,增量过大,出现尖点.? A: YOU CAN TRY AS FOLLOWS:
*STEP,EXTRAPOLATION=NO,INC=2000000 *STATIC
0.001,500.0,0.00001,0.1。
Q: 在abaqus中,如果采用umat,利用自己的本构,如何让abaqus明白这种材料的弹塑性应 变,也就是说,如何让程序返回弹性应变与塑性应变,好在output中输出,我曾想用最笨 地方法,在uvarm中定义输出,利用getvrm获取材料点的值,但无法获取增量应力,材料常 数等,研究了帮助中的例子,umatmst3.inp,umatmst3.for,他采用mises J2 流动理论,我 在output history 显示他已进入塑性状态,但他的PE仍然为0!!? A: 用uvar( )勉强成功 。
Q: 偶在umat中调用求主应力函数
CALL SPRINC(STRESS,PS,LSTR,NDI,NSHR) 后,存储主应力得数组PS中 各个主应力排列顺序是什么? PS1>PS2>PS3 ? PS1 umat实现自己的本构没有固定的方法,对于不同的本构有可能必须采用不同的方法。这要 靠自己不断地摸索。有可能一种方法对于简单加载问题还行,但有可能对于复杂问题并不 收敛。最重要一点,就是umat中采用的算法必须consistent.再就是ddsdde必须正确,(如 果采用back_Euler 方法等一些算法,ddsdde错误有时不影响结果(对于简单加载问题没有 影响,能收敛,),但对于复杂问题不收敛。 uptonow,你这个算法对于Mises,hill,J2,J2d等一类的屈服函数是正确的,但具体的本构 还要灵活运用,这我也正学习,正在摸索。 有时,umat需要很强的有限元基础,并且对采用的本构要很熟悉,不要在一颗树上吊死才 好。首先要确认自己的umat没有错误,如果没有,但就是不收敛(在不断减小加载步长的 情况下,当然最好对步长不敏感,特别是对于粘弹性,粘塑性,内变量一类的材料,有的 本构取决于背应力的计算)。 那就应该考虑换一种算法。 一点体会,请大家探讨。 Q: abaqus-uamt的老问题,缺少 'ABA_PARAM.INC'文件 ? A: 在cvf6.5调试时,显示 缺少 'ABA_PARAM.INC'文件! 这个没有任何关系的,这个错误将在ABAQUS调用UMAT的时候自动会找到,仅仅有这个错误 将没有任何影响的。也就是说,ABAQUS中调用的时候,实际并不存在这个错误。FT,忘了 说一句了,你把ABA_PARAM.INC.dp或ABA_PARAM.INC.sp拷到你的程序工作空间后 ,应该将 把ABA_PARAM.INC.dp或ABA_PARAM.INC.sp的后缀.sp或.dp去掉,即将ABA_PARAM.IN C.dp或 ABA_PARAM.INC.sp改名为ABA_PARAM.INC。 呵呵,他的意思是在Visual Fortran中调试其子程序,我觉得这是一个好办法,我当时也 是这麽办的,毕竟在ABAQUS中调试是非常麻烦的,只有当你的UMAT没有语法或者明显的逻 辑错误,你在ABAQUS中调试才能事半功倍。 Q:uvarm可以输出到哪里?.odb可以么? 另外那个strav??就是自己定义用于umat的那个数组里的数可以输出到.odb里么? A:在umat中,statev是不能用在output中的,statev只是作为一个解的 状态变量,说来惭愧,我是在umat中定义peeq,(peeq)的求解一般在 弹塑性力学书上有(等效塑性应变),用write()写入一个临时文件, ((切记:这个文件unit号不要与abaqus中的重合,因为他有一些系统默认 的文件号,)) 然后在uvarm中读取,以uvarm输出,因为uvarm可以以odb的形式输出, 支持output,field,output,history Q:在本版看了一个一维固结的例子,其中含有用户子程序,如下 SUBROUTINE UFIELD(FIELD,KFIELD,NSECPT,KSTEP,KINC,TIME,NODE, COORDS,TEMP,DTEMP) INCLUDE 'ABA_PARAM.INC' DIMENSION FIELD(NSECPT),TIME(2),COORDS(3),TEMP(NSECPT), DTEMP(NSECPT) KFIELD=1 FIELD(1)=COORDS(2) RETURN END 我在VF6.5中进行调试,提示找不到ABA_PARAM.INC 请问大侠这如何解决。 还有我因为是初次接触用户子程序,我查阅了本版所有的相关贴子,都讲的不太详细,我将问题总结一下, 大侠们能不能详细的讲解一下, 1 子程序格式(程序后缀是.f; .f90; .for;.obj??) 2 CAE中如何调用,command下如何调用? 3 若有多个子程序同时存在,如何处理 4 我对VF不是很熟,是否可以用VC,C++编写子程序? A: 若要在vf中调试,那么应该根据需要把SITE文件夹中的ABA_PARAM_DP.INC(双精度)或ABA_PARAM_SP.INC(单精度)拷到相应的位置,并改名为ABA_PARAM.INC即可。 1。我试过,.for格是应该是不可以的,至少6.2和6.3版本应该是不行,其他的没用过,没有发言权。 在Abaqus中,运行abaqus j=jobname user=username时,默认的用户子程序后缀名是.for(.f,.f90应该都不行的,手册上也有讲过),只有在username.for文件没有找到的情况下,才会去搜索username.obj,如果两者都没有,就会报错误信息。 如果username包括扩展名for或obj,那么就根据各自的扩展名ABAQUS会自动选择进行操作。 2。cae中在creat job的job manager中的general中可以指定子程序;command下用命令:abaqus j=jobname user=userfilename (无后缀); 3。将其写在一个文件中即可,然后用一个总的子程序调用(具体参见手册) 4。据说6.4的将可以,6.3的你可以尝试着将VC,C++程序编译为obj文件,没试过。 在你的工作目录下应该已经存在ufield.obj和uvarm.obj这两个文件(这两个文件应该是你分别单独调试ufield.FOR和uvarm.FOR时自动编译生成的,你可以将他们删掉试试看),但是由于你的FOR文件中已经有了UVARM和UFIELD这两个subroutine,显然会造成重复定义,请查实。 Q: 假定采用mises屈服准则。 1 在调用UMAT之前,ABAQUS传递给UMAT本次增量开始时的应力sigma(0),总应变E,应变增 量delta(E)。 状态变量保存:弹性应变,塑性应变,等效塑性应变。 (请问,状态变量保存的弹性应变+塑性应变是否等于ABAQUS传递给UMAT的总应变??? ??) 2,然后在UMAT中利用上述的ABAQUS传递的量和状态变量得到DDSDDE矩阵,然后返回给 ABAQUS,ABAQUS根据delta(sigma)=ddsdde*delta(E),并且得到本次增量结束时的应力 sigma(1)=sigma(0)+delta(sigma)=sigma(0)+ddsdde*delta(E) 3 然后更新本次增量结束时的状态变量:弹性应变,塑性应变,等效塑性应变以供下次调 用UMAT 请问手册上UMAT必须更新应力,可是根据上述我的理解好像是ABAQUS根据UMAT提供的本 次增量的DDSDDE在ABAQUS中更新,请问到底是怎么回事?谢谢! A: 1 在调用UMAT之前,ABAQUS传递给UMAT本次增量开始时的应力sigma(0),总应变E,应.. : 量delta(E)。 : 状态变量保存:弹性应变,塑性应变,等效塑性应变。 2,然后在UMAT中利用上述的ABAQUS传递的量和状态变量得到DDSDDE矩阵,然后返回给 : ABAQUS,ABAQUS根据delta(sigma)=ddsdde*delta(E),并且得到本次增量结束时的应力 3 然后更新本次增量结束时的状态变量:弹性应变,塑性应变,等效塑性应变以供下 以上有些answers本人并没有亲自证实,如有问题请及时更正! abaqus学习经验 第一章 ABAQUS 简介 [1] (pp7)在[开始] →[程序] →[ABAQUS 6.5-1]→[ABAQUS COMMAND],DOS 提示符下输入命令 Abaqus fetch job = [2](pp15)快捷键:Ctrl+Alt+左键来缩放模型;Ctrl+Alt+中键来平移模型;Ctrl+Alt+右键来旋转模型。 ②(pp16)ABAQUS/CAE 不会自动保存模型数据,用户应当每隔一段时间自己保存模型以避免意外 丢失。 [3](pp17)平面应力问题的截面属性类型是Solid(实心体)而不是Shell(壳)。 ABAQUS/CAE 推荐的建模方法是把整个数值模型(如材料、边界条件、载荷等)都直接定义在几 何模型上。 载荷类型Pressure 的含义是单位面积上的力,正值表示压力,负值表示拉力。 [4](pp22)对于应力集中问题,使用二次单元可以提高应力结果的精度。 [5](pp23)Dismiss 和Cancel 按钮的作用都是关闭当前对话框,其区别在于:前者出现在包含只读数 据的对话框中;后者出现在允许作出修改的对话框中,点击Cancel 按钮可关闭对话框,而不保存 所修改的内容。 [6](pp26)每个模型中只能有一个装配件,它是由一个或多个实体组成的,所谓的“实体”(instance) 是部件(part)在装配件中的一种映射,一个部件可以对应多个实体。材料和截面属性定义在部件 上,相互作用(interaction)、边界条件、载荷等定义在实体上,网格可以定义在部件上或实体上, 对求解过程和输出结果的控制参数定义在整个模型上。 [7](pp26) ABAQUS/CAE 中的部件有两种:几何部件(native part)和网格部件(orphan mesh part)。 创建几何部件有两种方法:(1)使用Part 功能模块中的拉伸、旋转、扫掠、倒角和放样等特征来直 接创建几何部件。(2)导入已有的CAD 模型文件,方法是:点击主菜单File→Import→Part。网 格部件不包含特征,只包含节点、单元、 面、集合的信息。创建网格部件有三种方法:(1)导入 ODB 文件中的网格。(2)导入INP 文件中的网格。(3)把几何部件转化为网格部件,方法是:进 入Mesh 功能模块,点击主菜单Mesh→Create Mesh Part。 [8](pp31)初始分析步只有一个,名称是initial,它不能被编辑、重命名、替换、复制或删除。在初 始分析步之后,需要创建一个或多个后续分析步,主要有两大类:(1)通用分析步(general analysis step)可以用于线性或非线性分析。常用的通用分析步包含以下类型: —Static, General: ABAQUS/Standard 静力分析 —Dynamics, Implicit: ABAQUS/Standard 隐式动力分析 —Dynamics, Explicit: ABAQUS/ Explicit 显式动态分析 (2)线性摄动分析步(linear perturbation step)只能用来分析线性问题。在ABAQUS/Explicit 中 不能使用线性摄动分析步。在ABAQUS/Standard 中以下分析类型总是采用线性摄动分析步。 —Buckle: 线性特征值屈曲。 —Frequency: 频率提取分析。 —Modal dynamics: 瞬时模态动态分析。 —Random response: 随机响应分析。 —Response spectrum: 反应谱分析。 —Steady-state dynamics: 稳态动态分析。 [9](pp33)在静态分析中,如果模型中不含阻尼或与速率相关的材料性质,“时间”就没有实际的物 理意义。为方便起见,一般都把分析步时间设为默认的1。每创建一个分析步,ABAQUS/CAE 就 会自动生成一个该分析步的输出要求。 [10] (pp34)自适应网格主要用于ABAQUS/Explicit 以及ABAQUS/Standard 中的表面磨损过程 模拟。在一般的ABAQUS/Standard 分析中,尽管也可设定自适应网格,但不会起到明显的作用。 Step 功能模块中,主菜单Other→Adaptive Mesh Domain 和Other→Adaptive Mesh Controls 分别 设置划分区域和参数。 [11](pp37)使用主菜单Field 可以定义场变量(包括初始速度场和温度场变量)。有些场变量与分 析步有关,也有些仅仅作用于分析的开始阶段。使用主菜单Load Case 可以定义载荷状况。载荷状 况由一系列的载荷和边界条件组成,用于静力摄动分析和稳态动力分析。 [12](pp42)独立实体是对部件的复制,可以直接对独立实体划分网格,而不能对相应的部件划分 网格。非独立实体是部件的指针,不能直接对非独立实体划分网格,而只能对相应的部件划分网格。 由网格部件创建的实体都是非独立实体。 [13](pp45)Quad 单元(二维区域内完全使用四边形网格)和Hex 单元(三维区域内完全使用六 面体网格)可以用较小的计算代价得到较高的精度,因此应尽可能选择这两种单元。 [14](pp45)结构化网格和扫掠网格一般采用Quad 单元和Hex 单元,分析精度相对较高。因此优 先 选用这两种划分技术。使用自由网格划分技术时,一般来说,节点的位置会与种子的位置相吻 合。使用结构化网格和扫掠网格划分技术时,如果定义了受完全约束的种子,划分可能失败。 [15](pp45)划分网格的两种算法: 中性轴算法(Medial Axis): (1)中性轴算法(Medial Axis)更易得到单元形状规则的网格,但网格与种子的位置吻合得较差。 (2)在二维区域中,使用此算法时选择Minimize the mesh transition(最小化网格的过渡)可提 高网格质量,但更容易偏离种子。当种子布置得较稀疏时,使用中性轴算法得到的单元形状更规则。 (3)如果在模型的一部分边上定义了受完全约束的种子,中性轴算法会自动为其他的边选择最佳 的种子分布。 (4)中性轴算法不支持由CAD 模型导入的不精确模型和虚拟拓扑。 Advancing Front 算法 (1) 网格可以与种子的位置很好地吻合,但在较窄的区域内,精确匹配每粒种子可能会使网格 歪斜。 (2) 更容易得到单元大小均匀的网格。有些情况下, 单元均匀是很重要的, 例如在 ABAQUS/Explicit 中,网格中的小单元会限制增量步长。 (3) 容易实现从粗网格到细网格的过渡。 (4) 支持不精确模型和二维模型的虚拟拓扑。 [16](pp50)网格划分失败时的解决办法 网格划分失败的原因: (1) 几何模型有问题,例如模型中有自由边或很小的边、面、尖角、裂缝等。 (2) 种子布置得太稀疏。 如果无法成功地划分Tet 网格,可以尝试以下措施: (1) 在Mesh 功能模块中,选择主菜单Tools→Query 下的Geometry Diagnostics,检查模型中 是否有自由边、短边、小平面、小尖角或微小的裂缝。如果几何部件是由CAD 模型导入的, 则应注意检查是否模型本身就有问题(有时可能是数值误差导致的);如果几何部件是在 ABAQUS/CAE 中创建的,应注意是否在进行拉伸或切割操作时,由于几何坐标的误差,出 现了上述问题。 (2) 在Mesh 功能模块中,可以使用主菜单Tools→Virtual Topology(虚拟拓扑)来合并小的边 或面,或忽略某些边或顶点。 (3) 在Part 功能模块中,点击主菜单Tools→Repair,可以修复存在问题的几何实体。 (4) 在无法生成网格的位置加密种子。 [17](pp51)网格质量检查 在Mesh 功能模块中,点击主菜单Mesh→Verify,可以选择部件、实体、几何区域或单元,检查其 网格的质量,获得节点和单元信息。在Verify Mesh 对话框,选择Statistical Checks(统计检查) 可以检查单元的几何形状,选择Analysis Checks(分析检查)可以检查分析过程中会导致错误或 警告信息的单元。单击Highlight 按钮,符合检查判据的单元就会以高亮度显示出来。 [18](pp51)单元类型 ABAQUS 拥有433 种单元,分8 大类:连续体单元(continuum element,即实体单元solid element)、壳单元、薄膜单元、梁单元、杆单元、刚体单元、连接单元和无限元。 (1) 线性单元(即一阶单元);二次单元(即二阶单元);修正的二次单元(只有Tri 或Tet 才有 此类型)。 (2) ABAQUS/Explicit 中没有二次完全积分的连续体单元。 (3) 线性完全积分单元的缺点:承受弯曲载荷时,会出现剪切自锁,造成单元过于刚硬,即使 划分很细的网格,计算精度仍然很差。 (4) 二次完全积分单元的优点:(A)应力计算结果很精确,适合模拟应力集中问题;(B)一般 情况下,没有剪切自锁问题。但使用这种单元时要注意:(A)不能用于接触分析;(B)对 于弹塑性分析,如果材料不可压缩(例如金属材料),则容易产生体积自锁;(C)当单元发 生扭曲或弯曲应力有梯度时,有可能出现某种程度的自锁。 (5) 线性减缩积分单元在单元中心只有一个积分点,存在沙漏数值问题而过于柔软。采用这种 单元模拟承受弯曲载荷的结构时,沿厚度方向上至少应划分四个单元。优点:(A)位移计 算结果较精确;(B)网格存在扭曲变形时(例如Quad 单元的角度远远大于或小于90º), 分析精度不会受到明显的影响;(C)在弯曲载荷下不易发生剪切自锁。缺点:(A)需要较 细网格克服沙漏问题;(B)如果希望以应力集中部位的节点应力作为分析目标,则不能选 用此单元。 (6) 二次减缩积分单元不但保持线性减缩积分单元的上述优点,还具有如下特点:(A)即使不 划分很细的网格也不会出现严重的沙漏问题;(B)即使在复杂应力状态下,对自锁问题也 不敏感。使用这种单元要注意:(A)不能用于接触分析;(B)不能用于大应变问题;(C) 存在与线性减缩积分单元类似的问题,即节点应力的精度往往低于二次完全积分单元。 (7) 非协调模式单元可克服线性完全积分单元中的剪切自锁问题,仅在ABAQUS/Standard 有。 优点:(A)克服了剪切自锁问题,在单元扭曲比较小的情况下,得到的位移和应力结果很 精确;(B)在弯曲问题中,在厚度方向上只需很少的单元,就可以得到与二次单元相当的 结果,而计算成本却明显降低;(C)使用了增强变形梯度的非协调模式,单元交界处不会 重叠或开洞,因此很容易扩展到非线性、有限应变得位移。但使用这种单元时要注意:如 果所关心部位的单元扭曲比较大,尤其是出现交错扭曲时,分析精度会降低。 (8) 使用Tri 或Tet 单元要注意:(A)线性Tri 或Tet 单元的精度很差,不要在模型中所关心的 部位及其附近区域使用;(B)二次Tri 或Tet 单元的精度较高,而且能模拟任意的几何形状, 但计算代价比Quad 或Hex 单元大,因此如果能用Quad 或Hex 单元,就尽量不 要使用Tri 或Tet 单元;(C)二次Tet 单元(C3D10)适于ABAQUS/Standard 中的小位移无接触问题; 修正的二次Tet 单元(C3D10M)适于ABAQUS/Explicit 和ABAQUS/Standard 中的大变形和 接触问题;(D)使用自有网格不易通过布置种子来控制实体内部的单元大小。 (9) 杂交单元 在ABAQUS/Standard 中,每一种实体单元都有其对应的杂交单元,用于不可压 缩材料(泊松比为0.5,如橡胶)或近似不可压缩材料(泊松比大于0.475)。除了平面应力 问题之外,不能用普通单元来模拟不可压缩材料的响应,因为此时单元中的应力士不确定 的。ABAQUS/Explicit 中没有杂交单元。 [19](pp57)在混合使用不同类型单元时,应确保其交界处远离所关心的区域,并仔细检查分析结 果是否正确。对于无法完全采用Hex 单元网格的实体,还可采用以下方法:(A)对整个实体划分 Tet 单元网格,使用二次单元C3D10 或修正的二次单元C3D10M,同样可以达到所需精度,只是计 算时间较长;(B)改变实体中不重要部位的几何形状,然后对整个实体采用Hex 单元网格。 [20](pp60)三维实体单元类型的选择原则 (1)对于三维区域,尽可能采用结构化网格划分或扫掠网格划分技术,从而得到Hex 单元网格, 减小计算代价,提高计算精度。当几何形状复杂时,也可以在不重要的区域使用少量楔形单元。 (2)如果使用了自由网格划分技术,Tet 单元类型应选择二次单元。在ABAQUS/Explicit 中应选择 修正的Tet 单元C3D10M,在ABAQUS/Standard 中可以选择C3D10,但如果有大的塑性变形,或 模型中存在接触,而且使用的是默认的硬接触关系,则也应选择修正的Tet 单元C3D10M。 (3)ABAQUS 的所有单元均可用于动态分析,选取单元的一般原则与静力分析相同。但在使用 ABAQUS/Explicit 模拟冲击或爆炸载荷时,应选用线性单元,因为它们具有集中质量公式,模拟应 力波的效果优于二次单元所采用的一致质量公式。 如果使用的是 ABAQUS/Standard,在选择单元类型时还应该注意: (1) 对于应力集中问题,尽量不要使用线性减缩积分单元,可使用二次单元来提高精度。如果 在应力集中部位进行了网格细化,使用二次减缩积分单元与二次完全积分单元得到的应力 结果相差不大,而二次减缩积分单元的计算时间相对较短。 (2) 对于弹塑性分析,如果材料是不可压缩性的(例如金属材料),则不能使用二次完全积分单 元,否则会出现体积自锁问题,也不要使用二次Tri 或Tet 单元。推荐使用的是修正的二次 Tri 或Tet 单元、 非协调单元以及线性减缩积分单元。 (3) 如果模型中存在接触或大的扭曲变形,则应使用线性Quad 或Hex 单元以及修正的二次Tri 或Tet 单元,而不能使用其它的二次单元。 (4) 对于以弯曲为主的问题,如果能够保证在所关心的部位的单元扭曲较小,使用非协调单元 可以得到非常精确的结果。 (5) 除了平面应力问题之外,如果材料是完全不可压缩的(如橡胶材料),则应使用杂交单元; 在某些情况下,对于近似不可压缩材料也应使用杂交单元。 [21](pp61)壳单元类型及选择原则 如果一个薄壁构件的厚度远小于其典型结构整体尺寸(一般为小于1/10),并且可以忽略厚度 方向的应力,就可以用壳单元来模拟此结构。壳体问题可分两类:薄壳问题(忽略横向剪切变形) 和厚壳问题(考虑横向剪切变形)。对于单一各向同性材料,一般当厚度和跨度的比值小于1/15 时, 可以认为是薄壳;大于1/15 时,则可以认为是厚壳。对于复合材料,这个比值要更小一些。 按薄壳和厚壳分为:通用壳单元和特殊用途壳单元。前者对薄壳和厚壳均有效; 按单元定义方式可分为:常规壳单元和连续体壳单元。前者通过定义单元的平面尺寸、表面法向何 初始曲率来对参考面进行离散,只能在截面属性中定义壳的厚度,不能通过节点来定义壳的厚度。 后者类似于三维实体单元,对整个三维结构进行离散。 选择原则: (1) 对于薄壳问题,常规 壳单元的性能优于连续体单元;而对于接触问题,连续体壳单元的计 算结果更加精确,因为它能在双面接触中考虑厚度的变化。 (2) 如果需要考虑薄膜模式或弯曲模式的沙漏问题, 或模型中有面内弯曲, 在 ABAQUS/Standard 中使用S4 单元可获得很高的精度。 (3) S4R 单元性能稳定,适用范围很广。 (4) S3/S3R 单元可以作为通用壳单元使用。由于单元中的常应变近似,需要划分较细的网格来 模拟弯曲变形或高应变梯度。 (5) 对于复合材料,为模拟剪切变形的影响,应使用适于厚壳的单元(例如S4、S4R、S3、S3R、 S8R),并要注意检查截面是否保持平面。 (6) 四边形或三角形的二次壳单元对剪切自锁或薄膜自锁都不敏感,适用于一般的小应变薄壳。 (7) 在接触模拟中,如果必须使用二次单元,不要选择STRI65 单元,而应使用S9R5。 (8) 如果模型规模很大且只表现几何线性,使用S4R5 单元(线性薄壳单元)比通用壳单元更 节约计算成本。 石亦平ABAQUS 有限元分析实例祥解之读后小结 第 6 页共 6 页 (9) 在ABAQUS/Explicit 中,如果包含任意大转动和小薄膜应变,应选用小薄膜应变单元。 [22] 梁单元类型的选择 如果一个构件横截面的尺寸远小于其轴向尺度(一般的判据为小于1/10),并且沿长度方向的应力 是最重要的因素,就可以考虑梁单元来模拟此结构。ABAQUS 中的所有单元都是梁柱类单元,即可 以产生轴向变形、弯曲变形和扭转变形。Timoshenko 梁单元还考虑了横向剪切变形的影响。B21 和B31(线性梁单元)以及B22 和B32 单元(二次梁单元)是考虑剪切变形的Timoshenko 梁单 元,它们既适用于模拟剪切变形起重要作用的深梁,又适用于模拟剪切变形不太重要的细长梁。这 些单元的截面特性与厚壳单元的横截面特性相同。 ABAQUS/Standard 中三次单元B23 和B33 被称为Euler-Bernoulli 梁单元,它们不能模拟剪切变形, 但适合于模拟细长的构件(很截面的尺寸小于轴向尺度的1/10)。由于三次单元可以模拟沿长度方 向的三阶变量,所以只需划分很少的单元就可以得到很精确的结果。 选择原则: (1) 在任何包含接触的问题中,应使用B21 或B31 单元(线性剪切应变梁单元)。 (2) 如果横向剪切变形很重要,则应采用B22 或B32 单元(二次Timoshenko 梁单元)。 (3) 在ABAQUS/Standard 中的几何非线性模拟中,如果结构非常刚硬或非常柔软,应使用杂交 单元,例如B21H 或B32H 单元。 (4) 如果在ABAQUS/Standard 中模拟具有开口薄壁横截面的结构,应使用基于横截面翘曲理论 的两单元,例如B31OS 或B32OS 单元。 因篇幅问题不能全部显示,请点此查看更多更全内容