本帖最后由 wufan3924 于 2015-12-11 15:02 编辑
在二楼放一个例子吧
先是step by step 在abaqus中建模,用xfem方法进行断裂分析的。然后是实现这个例子的完整的python代码,这个例子是abaqus帮助文档中,I,II型混合裂纹的例子。我做了一些中文注释。
用python脚本创建一个完整的扩展有限元模拟断裂问题的算例。 本算例的示意图如下图所示,一个平板边缘有一个裂缝,高H=6m,长L=3m,裂缝长Lc=1.5m。 材料参数见下表:
先在Abaqus cae中建模,过程如下: 1. 创建模型,删除原有模型 【Model】-【Creat】 Name: mixed_mode_2d,【ok】 【Model-1】-【右键】-【Delete】见下图。 2. 创建平板部件 {Part} 【Part】-【Creat】-【2D Planar】-【Deformable】-【Shell】 Name:plate,Approximate size:6.0。【Continue】,画一个矩形,两端点为(0,-3),(3,3),见下图【Done】。 3. 创建裂缝部件 {Part}【Part】-【Creat】-【2D Planar】-【Deformable】-【Wire】 Name:crack,Approximate size:6.0,【Continue】,画一条线,两端点为(0,0.05),(1.5,0.05),见上图【Done】。
4. 创建一些集合 {Part 或 Property} 【Tool】-【Set】-【Creat】 Name:All,【Continue】,选择整个平板部件 {Part 或 Property} 【Tool】-【Set】-【Creat】 Name:bottom,【Continue】,选择平板部件的下面的边 {Part 或 Property} 【Tool】-【Set】-【Creat】 Name:top,【Continue】,选择平板部件的上面的边
5. 定义材料和截面属性 先定义材料: {Property} 【Material】-【Creat】 Name:elas 【Mechanical】-【Elasticity】-【Elastic】输入杨氏模量和泊松比 【Mechanical】-【Damage for traction-spearation law】-【Maxps Damage】,输入最大主应力。 【Suboption】-【Damege Evolution】,输入损伤演化准则 【Suboption】-【Damege Stabilization cohesive】,输入粘性正则化参数 创建截面属性: {Property} 【Section】-【Creat】-【Solid】-【Homogeneous】,name:solid,-【continue】
6. 赋给材料和方向 {Property} 【Assign】-【Section】,选择平板,【Done】 {Property} 【Assign】-【Material Orientation】,选择平板,【Done】-【Use Default Orientation or other Method】
7. 划分网格 {Mesh}【Mesh】-【Control】-【Quad】-【Structured】 {Mesh}【Mesh】-【Element Type】- CPE4,选择平面应变4节点单元 {Mesh}【Seed】-【Edge】,选择下面的边,布置30个单元 {Mesh}【Seed】-【Edge】,选择右面的边,布置60个单元
8. 装配模型 {Assembly} 【Instance】-【Creat】,装配plate 同理装配crack。 创建参考点,以用于建立约束关系并施加边界条件。 【Tools】-【Reference Point】,选择右下角的点,创建参考点RP-1。在模型树中将参考点改名为db。
9. 建立约束关系 {interaction} 【Constraint】-【Creat】-【Equation】,name:ce_bot。设置参考点和平板底边的约束关系。 10. 创建分析步,设置输出 采用一般静态分析步。 {Step}【Step】-【Creat】-【Static,General】,name:Static,进入edit step对话框,设置总的分析时间为1s,设置初始时间增量,时间增量,最大时间增量等参数。
11. 施加载荷和边界条件 这里只需要施加位移边界即可。 {Load} 【BC】-【Creat】,命名,选择分析步和边界条件类型,【Continue】,在弹出的界面中输入对应的位移边界条件的数值。三个边界条件的类型相同,设置方法也相同。设置的界面如下图所示:
12. 定义扩充区域和初始裂缝 这是扩展有限元法的比较重要的一步。 {Interaction} 【Special】-【Crack】-【Creat】,命名,选择类型为【XFEM】-【Continue】,选择扩充区域为整个平板,选择【Crack Location】为裂缝部件,定义接触属性(里面可以什么都不设置)并指定给裂缝。
13. 创建Job并提交计算 {Job} 【Job】-【Creat】
与Abaqus cae中相对应的建模及提交计算的python 脚本如下:(#后面是注释的语句) 1、导入必要的模块,设置一些参数
2、创建模型和视图设置
3、创建平板部件和裂缝部件
4、创建一些基于几何部件的set
5、定义材料和截面属性并赋给部件 定义材料,设置材料参数,定义截面属性,将材料赋给部件,定义材料方向 材料的定义对于使用扩展有限元法也很重要,因为我们要计算的是断裂问题,所以除了一般线弹性计算的杨氏模量和泊松比外,还需要设置断裂准则。
6、网格控制和单元划分 设置网格类型,单元剖分技术,网格种子等 Crack部件不需要划分网格,因为它不是计算的求解区域,只是提供了初始裂缝的位置信息,用于计算其他节点的levelset值。
7、装配部件 创建参考点和基于装配体的set,以用于施加边界条件。
8、创建约束方程 创建参考点和几何之间的约束方程,从而可以用参考点来控制几何部件。
9、创建分析步,设置输出变量 创建一般静态分析步,由于扩展有限元方法收敛较困难,更改分析步设置以调整收敛的要求,主要是将原本的5次迭代不收敛即结束计算更改为20次迭代不收敛再退出计算。 设置输出变量,为了后处理显式的观察裂缝,需要输出节点的level值,也就是输出变量中的PHILSM,STATUSXFEM输出可以观察扩展有限元的单元状态(是否扩充),这两个变量的输出对扩展有限元计算是很有必要的。
10、设置边界条件 边界条件为平板的上下两边沿相反的方向运动,上面的边向左上方运动,下面的边沿右下方运动。
11、定义初始裂缝和扩充 这个是使用扩展有限元法的关键步骤,需要设置扩充区域——即裂缝可以扩展的区域,以及裂缝面的接触和初始裂缝面的位置等。
12、创建Job并提交计算 拷贝上面的代码,保存到一个.py为后缀的文件中,保存。在abaqus的界面中,【File】-【Run Script】,运行代码,可以直接建模并提交计算,计算完成后可以通过abaqus viewer查看计算的结果。
13、通过python脚本控制后处理的显示 可以通过python脚本文件可以控制显示的参数设置,下面是几个简单的设置。保存代码到一个文件中,在abaqus cae中运行这个脚本文件既可以查看上面的模型的结算结果。
计算结果如下: 下面是不同时刻(载荷历程,与载荷成正比)的mises应力云图和裂缝的扩展云图。
|