理论 | 数值流形法(NMM)模拟裂纹扩展的算法解释
1 引言
数值流形法(NMM)模拟裂纹扩展时,需要解决以下问题:为了解决以上问题,需要熟悉石根华前辈开源代码的数据结构,后续很多讲解都跟数据结构有关。在mc程序的主函数最后有一个mf1_change_structure()函数,用于改变原来的数据结构,原来的节点序列中,单元和单元都是连续排列的数据,这里将单元和单元之间的编号都分开,不是连续的。单元和单元编号预留的位置用于后续裂纹扩展时,预留改单元内部的节点编号增加的节点,这样就为裂纹扩展单元边界的变化提供基础。如上图所示,假如一个区域,2点为裂纹尖端,1点和3点重合,为了能够看的清楚分开画,在我的程序中,初始的裂纹都是闭合的,即1点和3点重合。这样在原来的程序中判断边界数组中相邻的三个点坐标,按照1和3重合,2点为裂纹尖端就可以找到裂纹了。MF程序中mc_liejiandian()函数用于寻找裂纹相关信息,以及判断裂纹尖端附近有哪些单元都记录下来。【2】裂纹扩展准则有很多,这里不展开,可参考相关资料或者我的博士论文,其中有很详细的解释,基本上就是判断应力,在MF程序中liejian_yingli()函数是回答第二个问题的函数,里面涉及两种裂尖应力判断,一种是数量平均,一种是面积平均。【3】下面回答第三个问题,也是程序算法上最麻烦的过程。基本思路为,判断裂纹扩展后,块体的状况,一种是,块体没有被完全分开,一种是块体被完全分开。整体思路如下:内裂纹和边裂纹。mc_liewen_gengxin_file()函数判断了裂纹到底是下面哪些情况。根据上面不同的情况,需要更新的边界情况不一样,具体可以参考每个部分的程序。需要提醒的是,在NMM中一个单元被裂纹分开,还要增加覆盖,覆盖增加也需要判断增加的覆盖影响哪些单元,这是非常重要的基础算法才能实现裂纹扩展。
上面的每个问题的解释是从程序层面解答,需要对照相应的论文部分来理解程序代码。
中国学者还在孜孜不倦地使用NMM输出论文,但大部分还停留在实验室阶段,没有应用到真实的工程项目中,因此需要有人把这些理论转化为实用的分析工具,进一步推动NMM的应用。
下面列出的是迄今为止,2023年发表的NMM(numerical manifold method)方面的论文。
[1] Investigation of slope stability based on strength-reduction-based numerical manifold method and generalized plastic strain[2] A new strategy for 3D non-persistent crack propagation by the numerical manifold method with tetrahedral meshes[3] A Novel Numerical Manifold Method and its Application in Parameterized Lsm-Based Structural Topology Optimization[4] Fracturing failure simulations of rock discs with pre-existing cracks by numerical manifold method[5] An improved meshless numerical manifold method for simulating complex boundary seepage problems[6] The MLS-based numerical manifold method for Darcy flow in heterogeneous porous media[7] The LSPIM-based numerical manifold method (NMM) for modeling transition elements[8] Preconditioned numerical manifold method for linear elastic fractures