如何通过激活材料仿真制造工艺

Mats Danielsson 2018年 11月 7日

材料沉积是焊接和增材制造等制造工艺的重要组成部分。对这类制造工艺进行仿真时,你可能会面临这样一个难题:如何在零应力状态下添加并沉积材料。在本文中,我们将介绍 COMSOL Multiphysics® 软件中的激活 特征及其在材料沉积仿真中的应用。

材料为什么需要激活或失活?

想象一下你正在模拟初始熔融,然后凝固的结构材料,或者初为固体,而后熔化的材料。电弧焊、选择性激光熔化和选择性激光烧结等制造工艺的仿真往往会涉及这种需求,而后两者是常见的增材制造方法。

A photograph of a 3D printer.
“材料激活”是模拟增材制造工艺的一个有用工具。3D 打印机图片由 Jonathan Juursema 提供。在 CC BY-SA 3.0 许可下使用,通过 Wikimedia Commons 分享

利用激活 节点,你可以在仿真中轻松地将材料激活或失活。在 COMSOL Multiphysics® 5.4 版本及以上版本中,附加的“结构力学模块”和“MEMS 模块”均提供了激活 节点。

激活材料:原生法

模拟结构中并不存在的材料的一种方法是简单地将其弹性刚度降低到可忽略不计的程度。这样一来,结构的其余部分可以自由变形,而不会“感觉到”那些弱结构材料。只要我们不希望激活材料,就可以采取这个可行的办法。

在仿真过程中,如果我们试图通过在某一点上将材料刚度恢复为标称水平,以使弱结构材料变为激活状态,必然造成一个问题。刚度恢复后,被激活材料的任何应变将导致应力突然产生。大多数情况下,这不是激活材料的期望效果。相反,我们应该在零应力状态下使材料被激活。因为我们通常模拟的是沉积或凝固的材料,所以后一种情况更加符合物理学。

无应力状态下激活材料

激活 节点避免了上述人为造成的应力问题。此节点可以降低非活性材料的刚度,但更重要的是,它还能消除任何在被激活瞬间产生的弹性应变。简单地说,材料在零应力状态下被激活。

如下图所示,激活 节点位于线性弹性材料 节点下,固体力学 接口均可以添加此节点。

A screenshot of the Activation feature settings used to activate material.
激活功能及其 设置窗口

设置 窗口的激活 面板包含两个设置:

  • 激活表达式
  • 激活比例因子

激活表达式 设置是你定义的逻辑表达式,它的作用是判断材料是否处于被激活状态,是根据网格单元的积分点定义的。举例来说,如果表达式逻辑为真(温度 T 小于凝固温度 T_s),则读取 T<T_s 的激活表达式将指示材料处于被激活状态,否则为非激活状态。

激活比例因子 设置定义了弹性刚度的权重,借此模拟不存在的材料。因子的默认值为 10-5,你可以根据需要进行修改。但是,过小的值会使刚度矩阵变得病态。

软件提供了两个内置变量来描述激活/非激活状态:

  • isactive
  • wasactive

变量 isactive 指示材料当前处于激活/非激活状态,而变量 wasactive 指示在仿真过程中,材料在之前的任何时间点上是否曾处于激活状态。在包含 solid 标记的固体力学 接口中,描述材料当前状态的变量则写作 solid.isactive。在某些情况下, wasactive 变量可用于简化激活表达式的公式,我们将在下文详述。

注意:如果材料经历过多次激活/失活事件,则在每一个被激活瞬间,弹性应变都会被消除。这意味着无论之前如何经历激活或失活,材料始终在无应力状态下被激活。非弹性应变,例如塑性应变,则不会被消除。

我们来看一些如何使用激活 节点的案例。

案例 1:逐点激活

我们假设一个简单的二维示例。你希望使材料随时间 t 的推移逐渐沿 y 方向激活。想象的“激活前沿”以速度 vel 向前推移,因此被激活材料的区域由公式 Y<vel\times t 给出。我们将它输入到激活表达式栏中,如下图所示。

A screenshot of the expression used for pointwise material activation in COMSOL.
逐点材料激活的激活表达式。

为了解释这一点,想象一个包含四个积分点(高斯点)的实体四边形单元,如下图所示。我们可以通过计算上文的激活表达式,使每个积分点单独被激活。在实践中,这意味着如果单个网格单元拥有多个积分点,那么它可以实现部分激活。

A schematic showing individual integration points activated in a mesh element.
对网格单元中的各个积分点进行激活。

案例 2:逐单元激活

现在考虑另一种情况:使整个网格单元激活,但并非基于单个积分点。为此,你需要修改激活表达式,改成在每个网格单元中对每个积分点进行同等计算。这一操作可以利用质心 运算符来完成。我们修改了上一个案例中的激活表达式,如下图所示。现在,我们在网格单元质心上计算 Y 坐标,这意味着对于网格单元中的所有积分点,激活表达式将获得相同的值。

A screenshot of the expression used for elementwise material activation.
逐单元材料激活的激活表达式。

在下图中的网格单元内部,我们对单元质心运算了激活表达式,所以四个积分点均处于被激活状态。

A schematic showing all integration points activated in a mesh element.
通过使用质心运算符对网格单元中的所有积分点进行激活。

案例 3:使用之前的激活状态

假设你需要模拟激光熔覆工艺,在工艺过程中,填充材料随着时间的推移熔化并沉积。激光束位置随时决定材料的沉积位置。工艺过程开始后,激光束的整个轨迹限定了之前被激活材料的区域。(关于模拟激光束运动的详细信息,请阅读介绍移动载荷与约束建模的博客文章。)借助变量 wasactive,我们不必以通过数学方式描述激光束轨迹。这类情况的激活表达式可以表述为:

(描述激光束当前位置的逻辑表达式)|| solid.wasactive

该表达式规定,如果“描述激光束当前位置的逻辑表达式”为真,或者 如果材料在仿真的任何之前时间(或参数步骤)曾处于被激活状态,则材料处于激活状态。如果激活表达式没有使用 wasactive 变量,那么激光束经过后,材料将变成失活状态,这很可能与预期效果相反。

结果可视化

假设你模拟过了材料随时间沉积的时间依赖性工艺,那么仅显示域中被激活部分的结果这一功能或许会吸引你的兴趣。如下图所示,在过滤器 节点下的包含逻辑表达式 中添加变量 isactive,即可实现这项操作。请注意,根据选定的运算类型,与定义在网格单元的积分点上的基础变量 isactive 相比, isactive 的过滤结果可能稍有不同。

A screenshot of the Filter node Settings window.
使用 过滤器节点仅显示域中被激活部分。

关于激活节点的结语

在本篇博客文章中,我们描述了在仿真过程中使用激活 节点实现材料激活的不同方法。利用激活 节点,我们可以轻松地模拟不同类型的制造工艺(例如焊接和增材制造)的材料沉积过程。如果你想要查看使用激活 节点的模型,请单击下方按钮,查看“案例下载”中的“层合板的热预应力”案例。请注意,你必须拥有 COMSOL Access 帐户和有效的软件许可证,才能下载相关的 MPH 文件。


加载评论……

博客分类


博客标签