单元删除功能本身是为了克服有限元本身的缺陷的一项方法,由于有限元本身就是基于连续介质力学的,而在连续介质理学中,所研究的物体需要是连续的,既物质域在空间中连续。在这样的理论假设框架下,单元本身是不会消失的。然而在实际情况下,由于损伤断裂的存在,势必会使得一些单元消失或者完全的失效,所以为了能够模拟这种情况,abaqus提供了单元失效功能。
我所知道的单元失效情况一般可以概括为三种情况
1)单元损伤失效,这种单元失效可以用来模拟材料由于损伤,或其他原因导致刚度减小的情况。
2)单元直接删除技术,这种技术可以用来模拟基坑,隧道开挖而导致的材料消失情况。
3)vumat,这种方法本质上讲与第一种相类似,但是它可以根据用户自己的情况来删除单元,但是属于很高级的操作,难度也较大
当然,cohesive也可以算作一种单元删除的方法,只是本身很少做断裂模拟,对于那方面不是很了解。
在这三种方法中,我想讲一讲前两种情况。
1首先来讲一下第二种方法。
这种方法很简单
他的使用方法就是在edit keyword中加一行关键字
*MODEL CHANGE, TYPE=ELEMENT, REMOVE
Set-1
Set-1为所定义的单元集合,这一集合需要事先定义,而这一关键字的位置一般位于step后,如果用回想要在哪一分析部删除单元,就在哪一分析部后添加。
但是使用这一方法是要注意的是由于这个单元是一下子从模型中删除,所以在standard下可能造成模型总体刚度奇异,导致计算不收敛,所以最好的方法就是能够在单元删除前,事先削减它的刚度,这一做法也很简单,就是利用温度变量作为一个独立的状态变量然后通过状态变量与单元刚度的对应关系,较小弹性模量。
2现在来谈一谈使用第一种方法来删除单元的过程;
这一方法使大家最为关心的,看到了论坛上总是有人问。其实以前的斑竹大人们已经将这一问题说明的很清晰了(比如我的偶像aba-aba斑竹大人)。后来想到原因可能是大家对于这一部分的理论与实际联系不上,所以还是有很多人不太明白。
其实我也是初学,只不过是对这方面比较有兴趣,所以和大家一起探讨一下吧,也算是抛砖引玉。
这种方法首先只能在explicit模块下使用,这一方法本身是为了描述损伤对于材料刚度衰减的影响而提出的,在help手册中,它是与复合材料断裂紧密联系的。
在这个方法中,abaqus设置了一个status(状态变量),通过它来控释单元的删除与否,当这一变量为1的时候,单元保留而为零0的时候单元删除,两者间没有中间量,只能为0或者1.
通过上面的阐述,我们可以了解到这样一个问题,单元的删除是与损伤相联系的,而损伤的机理一般可以概括为两种情况,及拉伸损伤和剪切损伤。我主要是针对于剪切损伤进行单元删除的。所以就在这一位置谈谈自己的感受吧。
要想使用这种方法进行单元删除,就必须定义损伤。所以在property中选择shear damage,这一选项中包括了三个参数,我一般是使用第一个,它的作用是衡量材料在何时开始进入损伤(即damage initial),它所表示的是损伤开始的时候对应的等效塑性应变值。而其他的都设为0,如果所要模拟的情况中包含率依赖,或者是采用Hill plasticity,则可以开启其后的选项和加温度状态变量。而我在计算中由于只是采用金属的mises,所以对于另外的选项不关心。另外需要注意的是shear damage要与plasitic共同使用。
上面的过程中只是定义了材料开始损伤的初始情况,而材料的最终失效是当材料的损伤值达到1的时候发生的。这是就需要用户自己来定义材料的损伤演化了(damage evolution),具体定义材料损伤演化的方式较多,可以在shear damage的suboption中看到,一般的类型包括displacement与energy,就是采用位移控制损伤画着能量控制损伤,我一般选择displacement。
而在下面的一个选项softening则是控制着具体位移(能量)与损伤对应关系。我一般是选linear,用起来比较方便(其他的具体可以参考Abaqus Analysis User's Manual19.2.3),见图1。接下来用户就要输入损伤最大为1的时候对应的塑性位移值了 ,它的表达式为(见图2)
这几个参数的含义分别为塑性位移率,单元特征长度(我理解为单元长度),等效塑性应变率。而损伤率采用(见图3)
来控制。但损伤率之和达到1的时候,单元失效。说白了就是一个单元的塑性应变称与单元长度,大于你规定的数值时单元就失效了。
当然这只是谈到了单元的失效,而具体的单元删除还有一些小技巧。
1)技巧1,由于材料在计算过程中引入了一个状态变量,所以在step下fieldoutput中材料参数选择的时候,选上status。
2)在abaqus6.5中单元删除好像不是默认显示,所以需要在后处理中自行设置。具体设置的方法是在visualization下选择状态变量输出,而后的点击create display group,在弹出的对话框中选择elements 与下面的set value。这时可以看到有一个位置让你输入min value与max value。由于删除但与的状态变量为0,所以在最小之中输入0.1,而最大值大于1就可以了。
另外需要注意的是单元选择不是选错了,有一回我没用explicit下的单元,结果在后处理当中就是没有状态变量。
以上为个人的经验,如果有什么问题也欢迎大家探讨。
附件是一个小例子的inp很简单,作为参考。
图1.JPG
图2.JPG
图3.JPG
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删