找回密码
 注册
Simdroid-非首页
查看: 294|回复: 2

[二次开发] Abaqus 脚本 python建模 -网格划分以及单元类型选择

[复制链接]
发表于 2017-12-21 06:47:26 | 显示全部楼层 |阅读模式 来自 法国
本帖最后由 YangXue-Jade 于 2018-1-28 18:44 编辑

单元类型选取:
在本例中,除了board用solid单元外,stud和固定板都用shell单元(通过厚度和特征长度的比值<1/10确定是否可以使用shell单元),以减小计算量。
shell单元类型的选择,取决于板厚和特征长度的比值,以1/15为界,大于1/15为厚板应用S8R 和 S8RT,小于1/15为薄者应该选取STRI3, S4R5, STRI65, S8R5, S9R5, SAXA1n, 和 SAXA2n 这些单元类型,但是一般来说还有同时满足两者情况的单元类型:S3/S3R, S3RS, S4, S4R, S4RS, S4RSW, SAX1, SAX2, SAX2T, SC6R, 和 SC8R。大多数情况下都使用第三类单元类型。(当然多层复合板肯定要做厚板处理,此时应该考虑横向切应力)。

此例中的shell单元类型选用第三类中的 S3/S4 单元类型。

至于board选用solid单元类型,情况更为复杂,取决于几何特征和大变形特征。对于力学分析案例,应该尽量避免使用三角形这类单元,这类单元类型往往比实际情况更加不易变形,同时不利于计算收敛。
一般来说,quadratic单元类型在几何形状相对简单的弯矩计算下能提供非常准确的计算结果,但是对有很多接触和大变形的结构,这类复杂度也很高的单元不再适用。
为保证大强度计算的正常进行,往往必须选用比较简单的单元类型。
Shear locking:表示单元内部有过多的能量消耗,用于整体弯曲的能量减少,计算所的弯曲较小。往往出现在full-integrated的线性单元。

实际变形(图片来源于abaqus手册)

full-integrated的线性单元变形(图片来源于abaqus手册)
可以看出,相较于实际变形,虚线所保持的九十度夹角,full-integrated的线性单元多了σ12这一应力分量,占用部分变形能量。故此此类型单元在弯矩情况下偏‘硬’。

Hourglass mode:指计算点存在应力应变为零的状态,往往存在与reduced-integration的线性单元中。还是以平面单元为例:

因为reduced-integration单元只在平面中心有一个计算点,因此位于中心线上,变形为零,故此此种情况出现时,单元变形量不可控制,因为能量无法抵消。但往往来说,abaqus内部为了避免这种情况出现,给该单元类型人为添加了强度,不至于太‘软’。 事实上,这类单元如果运用妥当,避免零应力应变点的出现,其计算精度非常可观。为了避免该现象产生,在较薄的厚度方向上,应使用多个单元,至少多于4个单元以上即可保证相关精度。同时,单元格数以偶数为佳,这样可以避免中心线在单元格中间。
此处为stud定义shell单元类型实例:
        str1=S4
        str2=S3
        p = mdb.models[Name].parts['Stud']               
        elemType1 = mesh.ElemType(elemCode=str1, elemLibrary=STANDARD,
                secondOrderAccuracy=OFF)
        elemType2 = mesh.ElemType(elemCode=str2, elemLibrary=STANDARD)
        
        f = p.faces
        faces = f.getByBoundingSphere( (0,0,0), 2*L)
        pickedRegions =(faces, )
        p.setElementType(regions=(pickedRegions,), elemTypes=(elemType1, elemType2))

网格划分:
网格的划分的精细取决于结构的设计。一般接触部分网格较细,同时slave面要比master面的网格要细。当然,网格也不是越细越好,当网格过细,应力会无限大,所以在选取判断网格是否合适的标准时,一定要有其他判断条件共同决定。
本例中网格是大小是通过控制单元大小实现的:
        e = p.edges
        pickedEdges = e.findAt(((x1, y1 , z1),),((x1t, y1t , z1t),),((x2 , y2 , z2),),((x2t , y2t , z2t),),((x2b,y2b,z2b),),((x2bb,y2bb,z2bb),),
                ((x3 , y3 , z3),),((x3t , y3t , z3t),),((x4 , y4 , z4),),((x4t , y4t , z4t),),
                ((x4b,y4b,z4b),),((x4bb,y4bb,z4bb),),((x5 , y5 , z5),),((x6 , y6 , z6),))   ##提前选取各个边上的坐标点,通过findAt找到经过该点的边进行操作
        p.seedEdgeBySize(edges=pickedEdges, size=Mesh_joint, deviationFactor=0.1,
                constraint=FINER)
基于三点弯曲仿真模型确定弯曲应力方向单元数:
由于本次实习建模中,instance包括solid shell两种类型。Shell在厚度方向可以直接定义thickness不作多说。而solid在厚度方向选取的网格数量则需要进行仔细斟酌。如上篇所言,为了避免shear locking 应力状态,选取reduced integrated 线性单元。而此时也提出了,在力矩作用方向上的网格单元数也应该满足一定的条件。避免奇数个单元,可以保证平板弯曲变形的中心线和单元格的计算点重合(中心线上应力变形为0,如果与单元格的计算点重合,那此点势必是处于Hourglass mode)。基于上述情况,那么除了避免奇数单元,同时划分多少个单元格在厚度方向也值得考虑,比较薄板厚度有限,划分太细大大增加计算负担,划分太少,满足不了精度需求。
故此,一个简易的三点弯曲仿真模型可以代替原本很复杂的热应力弯曲变形模型来探索合适的厚度方向单元格数。
如图,将长薄板三处受力的地方分别partition,分别定义参考点与三处partition后的横截面做约束,然后对中间参考点施加单元位移,两边参考点保证纵向位移为零。细心的网友应该可以发现,这整个结构还处于没有完全约束的状态下,那就是垂直于屏幕平面和水平方向的位移还没有约束。此时最好的约束方式就是继续对薄板进行中心面划分,比如垂直于屏幕方向,可以在薄板宽度方向中心面partition,然后定义此横截面垂直于屏幕方向位移为零,对水平方向的自由度也同理定义。此时模型就已经建立好了。

在对照实验组设置方式中,本次选用quadratic单元计算出的结构为参考标准,因为此模型为简化模型,quadratic单元非常适用且准确度很高。为寻找合适的线性reduced单元格数,特此设置其余四组线性reduced单元分别在厚度方向有1468个网格单元。并对最后计算时间已经计算精度进行对比总结。
基于以上结果表明,如果线性单元想达到quadratic单元的精度,厚度方向得设置6个单元格。对实习模型,计算量巨大的情况下,我们还是选择牺牲部分计算精度,保留了4个单元格设置,大大降低了计算时间。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2017-12-21 09:30:15 | 显示全部楼层 来自 广东广州
Simdroid开发平台
感谢楼主分享,希望能加好友学习
回复 不支持

使用道具 举报

发表于 2019-3-8 09:31:24 | 显示全部楼层 来自 北京
好文,顶一下
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-3 04:36 , Processed in 0.031296 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表