首页/文章/ 详情

我所常用的材料:摩尔库伦塑性的计算

11月前浏览560
书接上文,上次讲到了MC模型的基本准则
我所常用的材料:Mohr-Coulomb塑性
这次接着将其数值计算中的内容完善了,包括多屈服平面的定义与如何确定塑性流动方向,如果忘了塑性流动方向是啥的,可以回看
我所常用的材料:Mises塑性2

上次讲屈服准则的时候其实假设了,而在主应力体系下完整的表示MC准则的屈服面其实也可以用以下的方式进行表示(不进行上述假定):

通过这样的方式,我们定义了空间中6个屈服面,完整的MC屈服面长这样: 

然后我们就可以根据屈服面的定义来,确定流动方向,跟上次讲到的Mises模型类似,如果采用associative 的流动方向 (屈服函数与塑性势能函数取同一个),我们可以得到如下的流动方向:

 

其他的几个屈服面依此类推,得到     ,那么对应相应的屈服面,我们塑性应变的变化率,或者说     就可以表示为:

 

那么这么做有啥问题没有?答案是有问题的,因为呢由于上面式子中     且     ,那么上述的流动方向就会造成体积应变的增加,大家可以看到,式子中存在的

 

都会造成塑性分量的trace(迹)的增加,也就是存在体积应变的增加,这种体积应变的增加往往会使得膨胀过量 (与真实值严重不符),那科学家们就想到一个办法(我也不知道怎么想到的,可能是猜到的),那就是将上面的式子中的摩擦角     替换为膨胀角      ,这就是一套这个不行就换一个的原则,but it works. 因此呢也就形成了一套non-associative的塑性理论,也就是流动方向是由塑性势函数得出,而塑性势函数并不等于屈服函数,那么现在我们的塑性流动方向就变成了

 

一般来说膨胀角     会取得比摩擦角    小很多,这样    , 也就解决了过度膨胀的问题。这也就是为啥Abaqus中会需要大家输入膨胀角(Dilation Angle)的原因。 

那么确定了流动方向,我们就可以像Mises塑性一样得其应力增量与应变增量的关系:

 

其中      与      分别对应着塑性势函数对应力的偏导,与屈服函数对应力的偏导,也就是前边的    与    , 然后确定了这些后,大家就可以利用与Mises塑性中同样的方式得到切线刚度矩阵,进行非线性求解。但这里值得注意的一点是由于    , 所以现在的切线刚度矩阵也并不对称,需要切换成不对称矩阵的求解器,也就是别再用ldlt,pcg这类求解器了!

最后大家可能会有个疑问,那屈服面现在是个棱锥,那流动方向在边上、在角上咋求(那里也不可微啊!),我们今天先到这,下次继续补充这部分的内容。

Note:计算材料是我非常讨厌的一个领域,公式复杂不说,还有各种前人提出来的小技巧,为了好算、为了能算,你说有逻辑吧也有,但不多。后续我可以开个专栏,专门评论一下材料计算中的诸多“近似”与前人们的“奇淫巧计”。


来源:大狗子说数值模拟
Abaqus非线性理论材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-09-17
最近编辑:11月前
大狗子说数值模拟
博士 传播国际一流的数值模拟算法
获赞 13粉丝 33文章 91课程 0
点赞
收藏
作者推荐

接触基础知识:从四叉树八叉树到K-d tree

上次说到了 接触基础知识:从二分到四叉树与八叉树说到了四叉树、八叉树与二分的关系,其实呢就是高维上的均匀二分法,那么其实在此之上还有一种变形,那就是K-D tree。K-D tree的问题其实主要是为了解决以下的问题:假设蓝框框是需要划分的几何空间,为了快速搜索,假定我们待检测的几何或者网格在一个维度上分布很广,而在另外一个维度上基本空间位置没啥变化,那么传统的四叉树与八叉树就会造成一定的问题。比如看下边这个图,虚线将空间划分为4等分(典型的2D空间中的四叉树),那么左边2个小三角型分别横跨左边上下两个,右边的两个也是横跨右边上下两个,这个时候如果有个接触检测的物体进入这些盒子都需要进行接触检测,显然不是我们想要的。 那么我们来看看改进的K-d tree是咋做的呢,K-d tree 顾名思义,他的意思就是 的树结构, 为空间维度,对于2D来说, , 对于3D来说, ,其实也是在各个维度上进行二分,这里乍一看,跟上述四叉树八叉树也没啥区别,但这里他有两个比较重要的特点(起码我认为重要):不一定均分不一定每个维度方面都分一般来说在三维中,按x→y→z→x循环选择分割维度,然后可以选择图形在该维度上的中位数作为分割点,确保树平衡,而且也并不一定每个维度都分割,比如像上述的结构,我们可以采用下边的方法 这样我们进行x方向的分割,并略过y方向的分割,因为如果像上述四叉树一样也进行y方向的分割无非是让格子变得更多,且每个格子里面物体的数量又不会减少(如上述四叉树),增加了存储又没带来啥好处。所以这里可以看到K-d tree 提供一种比传统四叉、八叉树更为灵活的方式,可以分别在各个维度上剖分,可以认为是四叉树八叉树的改进型,不过编码方面会稍微麻烦一点,下一次我会结合编码直接来说一下,然后大家怎么选用看自己的选择。另外,K-d tree还有一个大好处,因为他并不是对空间的均匀剖分,所以对于空间分布不均匀的情况也会效果更好一点,下图这个分布很不均匀的情况 用左边的四叉树,四个格子分别的单元数量(按照但凡有部分在就算属于这个格子的原则):左上:5右上:2左下:4右下:2换成K-d tree 后:左上:3右上:2左下:2右下:3可以看到存储的数量减少了很多,更重要的是后续在格子中做局部的接触检测的数量会减少,提高计算效率。最后总结一下:K-d tree和四叉、八叉树在查询效率和构建复杂度方面基本一致,但是K-d tree 可能更省内存,各个区域的划分可能更均衡,虽然理论上并不会改变计算复杂度的级别,但是实操起来对于一大堆数据的情况(特别是接触、动态的、不均匀的),往往能效率更高一些。来源:大狗子说数值模拟

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈