ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Abaqus Cohesive单元实战:从双线性本构到收敛调试与失效判读

Abaqus Cohesive单元实战:从双线性本构到收敛调试与失效判读 做界面失效分析的朋友大概率都听说过Abaqus里有个Cohesive单元。但“听说过”和“用得好”之间隔着一整条从本构理解、参数标定到收敛调试的坎。最常见的场景是模型建好了一提交就报错“Time increment required is less than the minimum specified”要么就是算完了打开云图SDEG看起来乱七八糟根本不知道有没有真正“裂开”。这篇文章我会把这条链路完整走一遍从双线性本构的力学含义讲起再拆解Cohesive单元的建模方式、参数来源、混合模式损伤演化规则最后落到收敛性调试和失效结果判读上。适合刚接触Abaqus的初学者也适合那些已经能建出模型但结果总对不上实验、正在挠头的工程师。1. Cohesive单元不是万能的先搞清楚它该用在哪1.1 适用边界裂纹路径得先知道或者能预设很多人一提到断裂仿真就想到Cohesive其实这不太对。Cohesive单元建模的前提是裂纹扩展路径是预先确定的或者至少能预设出一条明确的界面/薄弱层。复合材料层合板的层间分层、胶接接头的胶层破坏、涂层与基体界面脱粘、焊点在热循环下的界面开裂这些场景本质上是“沿着已知界面失效”Cohesive单元天生就适合。反过来如果裂纹路径完全未知比如一块金属板从某个缺口起裂后往哪个方向扩展完全取决于应力场和材料微观结构那Cohesive单元用起来就非常尴尬。你要么预设一大堆可能的裂纹路径计算量爆炸要么就得转用XFEM扩展有限元、相场法或者VCCT这类更偏向断裂力学的工具。所以拿到一个问题第一步不是急着建材料、画网格而是先问自己这个模型失效时破坏面在哪如果答案是一个明确的几何界面或薄弱层那Cohesive单元是正确选择。如果答案不确定我建议先换个思路别在Cohesive上死磕。1.2 双线性牵引-分离本构到底在表达什么Cohesive单元和普通实体单元最大的区别在于它不基于应力-应变关系而是基于牵引力traction与分离位移separation之间的本构关系。你可以把它想象成一层“带强度的胶”在损伤开始之前界面是线弹性的牵引力随分离位移线性增加当牵引力达到界面强度最大允许应力时损伤开始萌生损伤萌生后界面刚度逐渐退化牵引力随分离位移增加而下降直到降为零这时界面完全开裂。这条“上升-下降”的曲线就是双线性牵引-分离本构。曲线下面包络的面积对应断裂能也就是撕开单位面积界面所需吸收的能量。这个能量在物理上对应着材料抵抗裂纹扩展的能力数值上就是断裂韧性的概念。为什么双线性就够用因为对绝大多数工程界面初始线弹性假设是合理的损伤后的软化行为用线性下降去逼近已经能很好匹配实验。更复杂的指数型、梯形软化本构当然也存在但参数更多标定更麻烦工程上先跑通双线性模型一般就够用了。1.3 材料卡片上的每一项对应什么在Abaqus里定义Cohesive单元的材料本质上是做三件事定义弹性刚度、定义损伤起始准则、定义损伤演化规律。先看弹性部分材料类型选择Traction牵引一般建议使用Uncoupled Traction也就是法向和两个切向的刚度相互独立分别用Knn、Kss、Ktt表示。Knn是法向界面刚度Kss和Ktt是两个切向的界面刚度。对大多数各向同性的胶层/界面Kss和Ktt取相同值即可。损伤起始准则里工程上最常用的有两个Maxe Damage最大名义应力准则当法向名义应力或切向名义应力达到对应强度时损伤开始Quade Damage二次名义应力准则综合考虑法向和切向应力的平方和当比值达到1时损伤开始。Quade能同时考虑混合加载下法向和切向应力的协同作用比Maxe更接近真实界面行为我在工程中基本都用Quade。损伤演化部分需要指定两个东西演化类型和混合模式。演化类型常用Energy能量输入法向断裂能G_IC和切向断裂能G_IIC混合模式则用BK准则或Power准则来控制法向和切向断裂能如何叠加。这部分参数直接决定了裂纹扩展的阻力是后面标定工作的重点。2. 两种建模路径有限厚度层与零厚度层的分水岭2.1 有限厚度层直接建模、方便校准如果你的界面是一层真实存在的“材料层”比如结构胶层、热障涂层、薄膜粘结层那直接建一层几何实体赋予Cohesive材料即可。操作上需要注意三个细节第一Cohesive单元需要专门的截面属性在Section模块中选择Category为Cohesive类型为Cohesive Section对话框中需要指定响应类型为Traction Separation同时设置Initial Thickness。如果单元几何有实际厚度可以选择From Geometry但如果你希望把本构直接建立在“应力-分离位移”上建议将Initial Thickness设为1.0这样名义应变在数值上等于分离位移后期处理载荷-位移数据更直观。第二三层结构上方被粘物-胶层-下方被粘物要保证网格节点对齐。最稳妥的做法是在Part模块里用Partition把整体切成三块这样划分网格时界面上的节点天然连续不需要额外处理。第三网格尺寸要合理。胶层厚度方向建议至少划分2层单元如果胶层很薄比如0.1mm网格尺寸可以到0.02mm左右但要留意这会导致整体单元数量上涨计算时间变长。我个人的经验是先做二维平面模型验证参数三维模型只在必要时上。2.2 零厚度层层合板分层和界面脱粘的标配复合材料层合板的层间是没有实际厚度的但分层恰恰发生在这些零厚度的界面上。这时候就引申出了Cohesive单元建模里最容易懵的一个问题怎么建立零厚度层。严格意义上Abaqus/CAE自带界面插入功能有限很多人拿到软件第一反应是在两层铺层之间画一条缝隙但几何上画不出零厚度的实体。工程上最常用、也最稳妥的做法是“薄层近似”在两层之间建一层极薄的材料层比如厚度0.001mm到0.01mm本质上把它当作零厚度处理。只要这层薄片比相邻实体单元的尺寸小一个量级以上它对整体应力场的影响可以忽略。另一个做法是在外部前处理工具或Abaqus Scripting Interface中把已有网格的共享节点split开在分离节点之间插入Cohesive单元。这个过程是真正的零厚度插入需要编程和网格拓扑操作适合批量建模但初次上手调试成本较高。我更建议刚入门的朋友先用薄层近似把流程跑通再考虑脚本插入。工程中还有一个常见用途是用Cohesive单元模拟多晶材料的晶界开裂。通过Voronoi图生成多晶几何后把所有晶界位置一次性插入零厚度Cohesive单元就能模拟沿晶断裂。这类建模在学术论文里很常见但本质上也是对固定界面的失效模拟吃透零厚度层的节点处理思路后上手VoronoiCohesive会快很多。2.3 单元类型与网格匹配Abaqus中Cohesive单元的类型不多二维常用COH2D4四节点三维常用COH3D8八节点六面体也可用COH3D6六节点楔形做过渡。选型逻辑只有一个和相邻实体单元的节点保持一致。比如三维实体用C3D8R那相邻界面就必须用COH3D8否则无法共节点连接。如果确实出现单元类型不匹配的情况只能用Tie绑定把Cohesive层的表面和实体表面绑定在一起但我不推荐一开始就这么干Tie会增加接触层面的不确定性收敛起来更麻烦。网格划分时还有一个隐藏的坑Cohesive单元厚度方向的尺寸决定了它和相邻单元共同构成“假塑性位移带”的长度如果太粗软化段位移会被人为拉长导致结构看起来非常“韧”如果太细刚度退化剧烈隐式分析极其容易崩。网格尺寸和断裂能参数的匹配我在第4章会专门展开讲。3. 参数标定的正确姿势不少坑都出在K值上3.1 界面刚度K被绝大多数人忽略的第一坑很多人拿到Cohesive材料第一件事就是查文献找强度、找断裂能然后把弹性刚度随便填一个“看起来差不多”的值。这是个很危险的习惯。界面刚度K不仅是本构模型里弹性段的斜率它还直接影响整体结构在损伤开始前的刚度。可以这样理解界面相当于一个弹簧结构和它串联如果界面弹簧刚度远低于结构材料的刚度那整个模型在受载时会先被界面“拉长”宏观上表现为结构整体变形偏大。反之如果K值远高于真实界面结构刚度的计算结果会被高估。对于有限厚度的胶层界面刚度和胶层的弹性模量、厚度之间存在直接关系K E / t。比如环氧胶弹性模量2GPa厚度0.2mm那么Knn大约是2e3 N/mm ÷ 0.2mm 1e4 N/mm³。对于零厚度界面没有物理厚度可用工程上通常取一个足够大但又不影响收敛的值。数值上可以这样估算保证在损伤起始应力下界面的弹性分离位移远小于结构特征尺寸比如法向强度20MPaK取1e5 N/mm³对应分离位移0.0002mm相对宏观尺寸足够小。但也不要盲目取到1e7以上K过大不仅让隐式分析的稳定时间步长缩短还会让损伤起始附近的切线刚度变化过于剧烈收敛难度直线上升。3.2 强度与断裂能实验数据优先文献值保底损伤起始强度决定了界面在什么载荷下开始出现损伤对应双线性曲线的峰值点。法向强度N代表界面抵抗剥离的能力切向强度S代表界面抵抗剪切的能力。这两个参数最靠谱的来源是实验DCB双悬臂梁实验测I型断裂能和法向强度ENF端部缺口弯曲实验测II型断裂能。如果没有实验条件同材料体系的文献数据也能先用起来但要注意测试标准、试件尺寸是否匹配。断裂能的值在Abaqus中使用的单位是N/mm等效于mJ/mm²而文献中常用kJ/m²两者换算关系是1 kJ/m² 1 mJ/mm² 0.001 N/mm。很多人就在这里栽跟头把MPa和N/mm的单位混在一起导致断裂能差了三个数量级。以碳纤维环氧复合材料层合板为例I型断裂能G_IC通常在0.2到0.8 kJ/m²之间II型断裂能G_IIC通常在0.5到2 kJ/m²之间界面法向强度大致在20到60MPa切向强度40到80MPa。这只是参考范围具体材料体系差异很大。3.3 混合模式损伤演化BK准则与Power准则的取舍现实中界面很少只承受单一法向或切向载荷更多是法向和切向同时存在。这时候就要靠混合模式损伤演化来描述。Abaqus中最常用的是BK准则Benzeggagh-Kenane公式上用总断裂能G_c G_IC (G_IIC - G_IC) × (G_shear / G_T) ^ η其中G_shear是切向断裂能分量G_T是总断裂能η是耦合指数。BK准则成立的前提是法向和切向断裂能存在一定关联它对复合材料层合板、结构胶这类材料适用性很好η一般在1到2之间具体值需要从实验曲线反推。Power准则用G1/G1C和G2/G2C的幂次和等于1来描述独立性更强但参数更多。工程上我建议默认先选BKη取1.5左右再通过仿真和实验的载荷-位移曲线对比来微调。如果实验数据显示法向和切向断裂能对混合程度非常敏感再考虑Power准则。还有一个常见误区是把Quade Damage二次应力准则的“二次”和Power准则、BK准则搞混。前者描述的是损伤什么时候开始后者描述的是损伤演化需要多少能量两者完全不是一回事。4. 收敛性调试从数值发散到物理失真4.1 隐式分析崩溃的根源软化段负刚度Standard隐式分析中Cohesive单元最常见的报错是“Time increment required is less than the minimum specified”或者“Negative eigenvalue”。根因都是同一个损伤演化进入软化段后单元切线刚度变为负值整体刚度矩阵不再正定Newton-Raphson迭代难以找到稳定解。面对这种崩溃第一个建议不是加无穷小的稳定系数而是先检查断裂能和网格尺寸的匹配。Cohesive单元的软化段位移可以由断裂能除以单元特征长度再除以强度来估算δ_f 2 × G_c / (T × l_e)其中l_e是单元特征长度。网格细了软化段位移就被压缩了更陡的软化段让隐式迭代更难收敛。这就是为什么在Cohesive问题上“网格越细越好”不成立网格密度需要在计算精度和收敛性之间找平衡。修改增量步控制有时有效但治标不治本。比如把Initial increment从0.01改到0.001只是让求解器更早发现问题并没有改变软化段本身的病态性质。4.2 黏性正则化和自动稳定两者别混用Abaqus针对Cohesive的软化段提供了两个工具来解决收敛问题效果不同黏性正则化Viscous Regularization在损伤演化方程中引入一个黏性系数让刚度退化在时间上被“延迟”和“平滑”本质是给软化段提供一个小阻尼。它只作用于Cohesive单元内部对结果的影响范围比较小自动稳定Automatic Stabilization对整个模型引入虚拟阻尼力所有单元都会受到影响稳定性更强但数值耗散也更大。在损伤演化的编辑窗口里可以直接设置Viscosity参数工程上建议从1e-5起步如果收敛失败再逐步增大到1e-4、1e-3。每增大一次都要检查一下能量输出中ALLSD黏性耗散能占ALLIE总内能的比例如果超过5%说明数值耗散已经大到可能影响物理结果需要回到模型本身的网格和参数层面找原因。自动稳定适用于“本来能算、偶尔跳一下”的模型不建议一开始就打开。我见过不少人把所有收敛问题都甩给自动稳定最后算出来的载荷-位移曲线贴着下方整个软化行为都被阻尼力“吃掉”了。4.3 显式分析也要注意时间步长Explicit显式分析一般不容易“崩”但容易被K值拖垮计算效率。显式分析的稳定时间增量大约与√(ρ/K)成正比界面刚度越大稳定时间增量越小整体步数就越多。如果模型里有一大片K1e7的Cohesive单元显式分析可能慢到让人怀疑人生。对于显式分析我建议从三个方向控制K值不要超过物理需要前面说的“损伤起始位移相对宏观尺寸足够小”就是判断标准使用质量缩放Mass Scaling提升稳定时间增量但缩放比例要克制过大的质量缩放相当于给结构“加重量”会人为延缓损伤出现时的动态响应加载速率不要设得太夸张。很多朋友做准静态问题非要每秒加载1000mm/s稳定时间步上去了但惯性效应也上去了Cohesive单元还没失效就已经被惯性力吹得面目全非。4.4 一套我常用的收敛调试流程如果你现在有一个怎么都不收敛的Cohesive模型可以按我下面的顺序排查每一步都有明确理由先关掉损伤只保存弹性模型跑一遍看看能不能收敛。如果弹性阶段都崩那问题和Cohesive本身无关先查网格质量、接触、边界条件打开损伤起始但不打开演化看模型是否能顺利进入损伤萌生阶段。这一步能确认强度值是否设置合理也能暴露网格局部应力集中问题打开损伤演化先不设置Viscosity直接跑记录第一个报错发生的大致增量步在报错前一步的收敛位置附近查看该区域的SDEG和单元应力确认是哪个单元的软化段导致发散加Viscosity1e-5如果还不收敛按3倍递增到1e-4、3e-4、1e-3每次调整后都记录载荷-位移曲线和ALLSD占比如果ALLSD占比超过5%说明只是靠数值阻尼“硬算”结果可信度要打个问号。这套流程虽然多花几次试算但每次调整都有针对性比盲试参数效率高得多。5. 看到结果别急着信SDEG、STATUS与失效判读5.1 关键输出变量SDEG、STATUS、DMICRTCohesive单元的结果解读集中在几个输出变量上SDEGScalar Stiffness Degradation刚度退化标量范围0到1。0表示未损伤1表示刚度完全退化单元已经失去承载能力。它是判断“损伤是否发生、发展到什么程度”的最直接指标STATUS单元状态标记默认为1存活0表示单元被删除或失效。在Field Output中必须手动勾选STATUS否则后处理看不到单元被删除的过程DMICRT损伤起始准则值通常以“DMICRT1”作为损伤萌生的临界点。它可以帮你精确判断损伤是从哪个位置开始的此外还有CSDMG等用户自定义损伤变量工程上用得少暂时不用管。需要特别提醒的是SDEG达到1和STATUS从1变0不是同一时刻。SDEG1意味着刚度退化到零但单元节点仍然存在于模型中STATUS0意味着单元被从计算中移除宏观上表现为“裂开了”。如果要提取裂纹长度应该以STATUS为0的连续区域为准。5.2 从载荷-位移曲线反推参数合理性结果输出后把加载点的反力RF和位移U导出画出载荷-位移曲线和实验曲线对比这比盯着云图判断有效得多。曲线峰值对应损伤起始强度峰值位置偏早说明强度偏低峰值偏晚说明强度偏高。曲线峰后的软化段下降斜率对应断裂能和网格尺寸的耦合结果下降越陡说明单位开裂面积耗散的能量越少下降越平缓说明模型“过于韧”。如果峰后出现一个很长的拖尾大概率是黏性正则化系数偏大正则化延迟了损伤演化。更严谨的做法是做一个能量校验。以DCB试件为例从载荷-位移曲线中积分面积再除以裂纹面积宽度×裂纹扩展长度得到的平均能量释放率应该接近材料的G_IC值。差一个数量级说明参数或结果解读有问题差30%以内可以认为模型可用。5.3 云图可视化别让单元厚度骗了你很多初学者第一次看Cohesive结果时很困惑这层单元几乎看不见云图里像是裂缝缺了一块。原因是Cohesive单元厚度可能只有0.001mm和实体单元相比太小默认变形显示下几乎不可见。解决办法是把显示放大倍数调成非均匀缩放在Visualization模块的Common Options里把Deformation Scale Factor调大或者直接隐藏相邻实体单元只显示Cohesive层的云图。用SDEG云图看损伤分布时建议配合Display Group只显示Cohesive单元云图颜色从蓝到红表示损伤从0到1一眼能看出损伤起始区和扩展路径。判定开裂前沿时看STATUS0的连续区域边界就行这个边界沿时间轴往前推就是裂纹扩展过程。最后提醒一点不要单独看某一个增量步的云图就下结论务必结合载荷-位移曲线和能量校验。数值仿真最终是要对物理负责的云图再漂亮曲线对不上实验模型都还没有真正“毕业”。这几年用Cohesive单元做界面失效项目我最大的体会是它本身的框架不难难的是把力学直觉、参数标定和数值调试三件事揉在一起。每次换一套材料体系、换一种厚度配置K值、断裂能、网格尺寸之间的配合关系都要重新验证一遍。建议你给自己建一个参数台账记录下每轮试算的K值、初始强度、断裂能、单元尺寸、Viscosity系数以及对应的载荷-位移曲线特征跑过三五个案例之后你会对这些参数之间的耦合关系建立起很强的直觉。下次再遇到不收敛就不会条件反射式地乱调参数了。
返回列表