首页/文章/ 详情

Abaqus中刚体建模的方式

9天前浏览21

上几次说了一些我常用的单元:

我所常用的单元:连接单元

这次以Abaqus为例,继续说一说刚体。


Abaqus刚体建模一共有三种形式:离散刚体(Discrete rigid)、解析刚体(Analytical rigid)和Rigid body约束。


无论采用何种方式进行模拟,其计算精度和效率都是接近的。但不同的刚体建模存在差异性。

 

(1)离散刚体:离散刚体在几何上可以是任意的,三维、二维或轴对称模型均可。但是,需要注意的有三点:

a、画网格。离散刚体是需要画网格的,且接触处划分的网格要足够细。重点是:离散刚体在划分网格时是不能使用实体单元的,也就是说就算是实体也只需要实体的外表面,所以必须在part模块中将实体转换为壳面 part界面>> Shape >> Shell >> From Solid。

b、参考点。离散刚体需要在part模块下对刚体模型建立参考点:part界面>> Tools >> Reference Point (如果刚体不涉及旋转,则参考点建在刚体上的任意一点即可;若刚体涉及旋转,需要将参考点建在刚体的质心上) 注意:刚体的约束都加在参考点上。

c、不用赋材料属性和截面属性

 

(2)解析刚体:不能是任意的几何形状,要必须有光滑的轮廓线(解析刚体只能通过拉伸或是旋转建立壳体刚体),通常解析刚体的计算成本小于离散刚体。 需要注意以下四点:

a、解析刚体是不需要划分网格的。

b、参考点。参考点的建立同离散刚体。

c、不用赋材料属性和截面属性

d、解析刚体只能输出和参考点相关的结果

 

(3)Rigid body约束:Abaqus在Interaction模块中提供了Rigid Body 约束用于刚体性质。Rigid Body 约束实际上是将组装部件中某一区域运动强制约束到参考点(此参考点在建立rigid body约束的过程中添加的 或是在Assembly模块中添加)上,而在整个分析过程中不改变个点的相对位置。这个方式的定义相比前两者则更为灵活,可以随意的调整约束的方式,比如将一些点加入tie(刚接)中一些点加入pin中(铰接)。


所以Rigid Body约束和刚体部件的差别在于:刚体部件的整个部件都为刚体,但是Rigid Body可以是某一部件组装后实体的一某一区域,具有灵活性。且rigid body可以在材料属性都定义好后进行操作,且可以针对实体单元,操作流上更为简单。


最后说一下,所有的刚体内部算法都是基于运动学的约束方程(大转角下是非线性的),大家有兴趣可以继续分享这些。


来源:大狗子说数值模拟
ACTAbaqus非线性GID材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-12-13
最近编辑:9天前
大狗子说数值模拟
博士 传播国际一流的数值模拟算法
获赞 4粉丝 1文章 34课程 0
点赞
收藏
作者推荐

细节:稳健的数值计算代码

作为一名数值算法开发人员,今天想聊一聊开发中的一些细节问题,我以C++代码为例,说一下在数值算法开发中需要注意的一些代码细节问题,这些细节问题直接决定你的代码稳健程度。首先大家都知道,浮点数是有误差的,float的误差大概在6~9位有效数字,而double的误差大概在15~17位有效数字,由于这些误差的存在,就会造成一些数值上的问题,而有些不符合数学计算规则的异常数据的出现也会影响很多计算或判断流程。今天看看以下的情况:任何数字与NaN比较均返回False这段代码我们本来是想判断b是否在[-1,1]的区间内,然而由于sqrt(-1)返回NaN,所以最后我们会得出Heythisbisinthisrange的结果,这显然是不对,大概率这会导致其走上一条错误的路继续计算。一种更为成熟稳定的做法就是改变判断的方式,看如下的代码那么同样是判断b是否在区间内,上述代码则会返回HeythebisnotinthisrangeThisbis:-nan显然这是一种更为合理的方式。在有限元中编程、计算几何编程中,我们常常会有开根号、做除法的操作,当遇到异常数据的时候,第二种方法“将想要判断场景放在正向的判断中”往往可以更好的Debug,避免异常情况的进一步扩散。非常危险的情况就是除0假设我们要做如下计算当与向量是垂直的时候,那么就是一种除零的情况,而这个计算在计算线段与平面是否相交的时候应用广泛,比较好的做法就是在计算除法之前先判断一下doubletmp=Dot(n,B-A);if(IsSame(tmp,0.0)){if(onPlane(A,P)){reutrntrue;}returnfalse;}else{if0<=((d-Dot(n,A))/tmp)<=1{returntrue;}}//tnotin[0,1]returnfalse;这里其实可以看到基本计算并没有改变,无非是增加了对于与是否垂直的判断,由于为平面P的法向,则只需要判断AB线段是否有一个点在这个平面上,就可以判断AB线段是否完全在这个平面上。另外当不垂直的情况下,则通过t是否在区间[0,1]内进行判断。注意舍去误差请看下边这个例子:理论上b不为0,然而我们看一下输出的结果大家千万不要忽视这个,觉得自己工作中不会遇到这样的问题,比如铁的弹性模量大概是,一根铁桁架假设那么,数量级已经很大了,在多次计算后可能就会出现上述的问题。尽可能用相对误差比如下面的代码if(Abs(x-y)<=epsilon那么一般情况下来说更好的都是以下的这种相对误差的写法if(Abs(x-y)<=epsilon*Max(x,y))最后说一句,报错信息多点,总是好的!来源:大狗子说数值模拟

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