原创#基于python二次开发的围线积分+网格重划分+结果映射联合使用的裂纹随机扩展

基于python二次开发的围线积分(contour integral)+网格重划分(remeshing)+结果映射(map solution)联合使用的裂纹随机扩展

前面帖子已经详细介绍了如何使用围线积分(contour integral)+网格重划分(remeshing)来模拟裂纹的任意路径扩展,并提取裂纹扩展路径上的应力强度因子。那么在这个帖子上我们进一步升级原理算法,使得模拟与实际实验过程更加符合,具体内容如下:

首先,我们对之前的裂纹扩展原理进行大体的回顾,程序设计的总体原理图如下,

 

a1.jpg

旧裂纹:

a2.jpg

裂纹扩展一个增量步:

a3.jpg

这个裂纹扩展分析过程与看到的几乎所有文献是一样的,是一个常规的裂纹扩展分析过程:提取分析步末(或者取第一次应力强度因子大于临界值的那个时刻)的应力强度因子,根据最大周向拉应力开裂准则计算复合I型应力强度因子,如果裂纹扩展,进行新裂纹的计算,在原来模型的基础之上,根据新的裂纹角度及裂尖坐标,sketch出新的裂纹,然后重新进行网格划分,但是,分析步、载荷都并进行任何改变,而是将整个载荷又重新加载一遍,再次得到载荷分析步末(或者取第一次应力强度因子大于临界值的那个时刻)的应力强度因子,再进行裂纹是否扩展的判断,这相当于把离散的不同裂纹长度单独计算模型整合成了考虑裂纹扩展角度的连续性裂纹扩展。这样的裂纹扩展过程只能得到裂纹扩展路径与实验大体一致,在考虑时间的分析中,不能得到裂纹随时间的扩展过程,反而,(例如薄板中心裂纹)因为裂纹长度越大,应力强度因子越大,所以得到更长的裂纹对应更短的开裂时间,这与实验过程是相悖的。

那么,问题来了:实际实验中裂纹是在加载过程中连续扩展的,而并不是裂纹扩展后载荷归零又重新从零加载了,而是裂纹在某时刻开裂后,在剩余载荷的进一步的加载过程中裂纹进一步扩展。

 

通过前面的分析我们知道,利用前面的裂纹扩展原理,通常对于一些静力结构分析来说,可以得到相对合理的裂纹扩展路径,但是,每次裂纹扩展分析都是全部载荷重新施加一遍,并不能取到裂纹长度随时间的变化曲线,而且对于与时间相关的分析而言,裂纹长度随时间的变化就尤为重要了,那么,我们的优化就是解决这一个问题,解决办法:在前面的理论基础上,利用ABAQUS的inp文件中的关键词*map solution来将旧网格的结果映射到新网格,施加剩余载荷,进行下一次的裂纹扩展。这个裂纹分析过程似乎看起来很容易,但是实际实施起来困难重重,我们经过长时间的探索终于克服了重重困难,实现了整个裂纹动态扩展过程。下面介绍裂纹扩展分析的整体原理,

a4.jpg

初始模型建立分析步后要设置重启动输出(*map solution的计算需要重启动文件),如果裂纹扩展,计算新的裂纹尖端,提取odb开裂时刻的几何变形模型,裂纹扩展一个增量,再次重新分配材料属性,建立独立实体,创建新的分析步,时间长度为上次开裂后的剩余时间段,重新建立接触,重新施加约束,重新网格划分,重新施加载荷(载荷是对应上次开裂后的剩余载荷段),输出inp文件,在inp文件中添加*map solution命令,然后使用命令行提交新的inp文件。

需要注意的是:

1 从odb提取几何变形模型后,原来完整的模型边缘会变成由很多小的线段组成(小线段的多少与提取特征角度featureangle和网格密度有关),小线段的多少也影响了后续的载荷及约束的施加;

2 由于1中小线段的生成,所以载荷和约束的施加变的尤为困难,主要是因为边的选取通过findat命令也很难选择到,对于不同的模型,我们要视情况而定;

3 每次裂纹扩展的增量不要太大,因为,如果增量太大,新的裂纹尖端生成后,旧的网格结果映射到新的网格上,会导致裂纹尖端应力出现较大偏差,导致不合理的结果。

介绍了整个分析原理后,我们通过编制的二次开发程序分析一个例子来验证程序的正确性,采用薄板边缘裂纹,施加了位移载荷。

 

初始几何模型,约束,载荷,网格:

a5.jpg
a6.jpg

第一次裂纹扩展后,提取的裂纹扩展时刻的几何变形图及旧裂纹尖端与新生成的seam裂纹图示如下:

a7.jpg

分析步的重新建立(第一次开裂后的剩余时间段)

a8.jpg

载荷及约束的施加(剩余载荷段,总体载荷位移为0.05mm)

a9.jpg

重新划分后的网格模型:

a10.jpg

修改的inp文件:

a11.jpg

命令提交job:

a12.jpg

裂纹扩展过程:

a13.jpg
a14.jpg

裂纹经过40次扩展后即将扩展到模型边界,从图中可以看出,在裂纹扩展过程中,已经张开的裂纹面附近可能出现个别mises应力较大的区域,这是由于map solution映射结果导致的,这并不影响裂纹的扩展,因此可以忽略。

每次裂纹扩展时的K1与裂纹扩展对应的总时间的关系:

a15.jpg

从图中可以看出,裂纹扩展过程中只要裂纹尖端应力强度因子达到临界值,裂纹便发生扩展,值得注意的是裂纹扩展过程中裂纹尖端的K1并不会逐渐递增,这是因为裂纹尖端的k1值并不是提取的每次裂纹扩展加载末的K1,下面我们给出裂纹扩展过程中每次夹杂末时刻的裂纹尖端应力强度因子值与裂纹长度的关系,

每次裂纹扩展后加载末的K1与裂纹长度之间的关系:

a16.jpg

从图中可以看出,每次裂纹扩展过程中完全加载末时刻的应力强度因子是随着裂纹长度的增加不断增加的,这与大部分的文献中没有使用map solution的结果是一致的。

对于倾斜裂纹,也附上一个例子图:

1.jpg
10.jpg
20.jpg
30.jpg

倾斜角度更大一点的:

1.jpg
5.jpg
10.jpg
15.jpg
20.jpg

最后附上裂纹第一次扩展后的新提取的几何模型及inp文件,后续的模型不再附上:

原创#基于python二次开发的围线积分+网格重划分+结果映射联合使用的裂纹随机扩展的图26初始裂纹第一次扩展后的新模型及inp文件.rar

对于两个水平裂纹的扩展如下图:

0.jpg
1.jpg
2.jpg
3.jpg
5.jpg

6.jpg

对于两个斜裂纹而言:

0.jpg
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg

6.jpg

7.jpg
8.jpg
9.jpg

10.jpg

非对称的任意裂纹:

初始未扩展裂纹.jpg
裂纹第一次扩展.jpg
裂纹第三次扩展.jpg
裂纹第五次扩展.jpg
裂纹第七次扩展.jpg
第十次扩展.jpg
第十二次扩展.jpg
第十四次扩展.jpg
第十六次扩展.jpg

再上一个双孔边裂纹的随机扩展结果:

0.jpg
5.jpg
10.jpg
15.jpg
20.jpg
25.jpg
k.jpg

围线积分+网格重划分+结果映射技术与围线积分+网格重划分的结果对比:

不同方法结果对比.jpg
两种方法结果对比.jpg

两种方法结果对比2.jpg

两种方法结果对比.jpg

****************************************************************************************************

裂纹扩展45次.jpg

****************************************************************************************************

围线积分+网格重划分+结果映射技术相比于围线积分+网格重划分技术而言它的一个优点是可以提取裂纹随时间的变化,知道裂纹在哪个时刻扩展到什么地方,对于施加热循环载荷而言,可以确定在当前循环次数下裂纹扩展到了哪里,另一个很重要的优点是对于复合结构材料而言,如果其余非裂纹扩展层不是纯弹性的,它依然可以很准确地评估裂纹扩展路径(前面的例子都是单一纯弹性材料),这在下面详细讲述:

模型介绍(包含有三层材料)

a.jpg

1 如果各层考虑为纯弹性,裂纹尖端的K1和K2随时间的变化如下:

b.jpg

K1和K2明显随着时间是线性变化的

2 如果考虑BC和TGO层的塑性,TC层纯弹性,裂纹尖端的K1和K2随时间的变化如下:

c.jpg

K1和K2明显随着时间是非线性变化的

下面给出两种情形下裂纹扩展角随时间的变化曲线:

d.jpg

从图中明显可以看出,对于纯弹性而言,cpd是随时间恒定不变的,这是因为K1和K2都是随着时间线性变化的,根据最大周向拉应力准则下的裂纹扩展角度的计算公式:

e.jpg

对于纯弹性模型而言,因为K1和K2随时间都是线性变化的,所以,如果施加增加a倍,则K1也增加a倍,K2也增加a倍,带入计算公式,裂纹扩展角度是不变的。

对于考虑了BC-TGO塑性的模型而言,裂纹扩展方向不再随时间呈现出线性变化,而这个时刻出现非线性变化的时刻正是模型开始进入塑性阶段的时刻,从TGO的PEEQ随时间变化图可以看出:

f.jpg

因此,当模型进入塑性阶段,裂纹的扩展方向随时间不再是线性的,对于围线积分+网格重划分技术是每次裂纹扩展的方向是采用的整个加载阶段最后时刻的裂纹扩展方向,那么对于考虑了某层塑性的复合结构中的裂纹扩展而言,这个技术显然对于裂纹扩展路径的评估是不准确的,那么,反观围线积分+网格重划分+结果映射技术,它的裂纹扩展方向提取的是刚达到开裂准则时刻的裂纹扩展方向,因此这种技术对于复合结构考虑某层塑性的情况下的裂纹扩展更为准确。

g.jpg

ABAQUS断裂模拟收徒 ,保证快速学会各种ABAQUS断裂模拟方法    1200/人(将享有各种插件以及程序,价值3000+、专门定制视频、全程亲自教学、各种模型调试及解答问题等等,倾囊相教)

如果有需要或者需要讨论的可以站内联系,或者qq1057593923;

CAE二次开发PYTHON

原创#基于python二次开发的围线积分+网格重划分+结果映射联合使用的裂纹随机扩展的评论8条

  • aixiaokunku
    1
    大佬你好,我看到后面重新施加载荷是加载的位移边界,如果我的初始模型是加载的压力,然后计算了一定时间,在进行重划分网格计算,那个载荷该怎么施加?
  • 阿壮
    2
    请问有类似三维的吗?谢谢

原创#基于python二次开发的围线积分+网格重划分+结果映射联合使用的裂纹随机扩展的相关案例教程

1. 基本程序 (Basic Procedures) 从Moldex3D充填/保压/冷却/翘曲分析获得模拟结果之后,可以用FEA接口将结果输出至结构软件。 步骤1:单击FEA接口启动FEA接口选项。 步骤2:选择应力求解器 (Stress Solver):ABAQUS/ANSYS/MSC.Nastran/LS-DYNA/MSC.Marc/NX Nastran/Optistruct。 步骤3:选择元
基于的二次开发对于很多新手来说都是一个神秘的,感觉是高难度的问题,致使很多新手对二次开发的研究都处于初级了解阶段,或完全不感冒阶段。 其实二次开发很简单,某种意义上讲,常用的ABAQUS二次开发方式有两种 (1)直接修改inp文件,这种方式需要对inp文件中大量的节点和单元进行操作,一般不建议采用inp文件进行二次开发(除非有特殊的关键字或标识符,其实关键字也可以用python语言来进行二次开发,
基于的二次开发对于很多新手来说都是一个神秘的,感觉是高难度的问题,致使很多新手对二次开发的研究都处于初级了解阶段,或完全不感冒阶段。 其实二次开发很简单,某种意义上讲,常用的ABAQUS二次开发方式有两种 (1)直接修改inp文件,这种方式需要对inp文件中大量的节点和单元进行操作,一般不建议采用inp文件进行二次开发(除非有特殊的关键字或标识符,其实关键字也可以用python语言来进行二次开发,
1原由 我们知道,不管是利用ABAQUS或是ANSYS软件进行建模分析来说,在仿真分析过程中,我们经常会遇到需要多次对模型进行修改的过程,笔者在一个做金刚石磨粒切削硬脆材料的案例中发现,为了研究在不同磨粒切深下的工件损伤情况,需要大量重复设置磨粒的切深,这样的重复操作大约需要30多组。不仅耗费操作时间,同时耗费大量的计算机运行时间,为此,通过直接写入参数化的命令语言,集中批量的操作是最有效的计算途
ABAQUS 的后处理功能不能完全提供我们在分析过程中所需的数据,为更好的扩展后处理功能,查看和分析结果数据,本文提出了使用Python 语言对ABAQUS 进行二次开发来达到这一目的的方法。文中讨论了ABAQUS 的脚本接口和对象模型在二次开发中的作用和调用流程,以及文件的读写与复制、数据读取与处理、结果输出与查看等关键技术。以共轨管锥面密封性的分析为例,使用Python 语言提取了分析结果数据
博士/博士生
影响力
粉丝
内容
获赞
收藏
    项目客服
    培训客服
    12 14