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

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 文件。


评论 (17)

正在加载...
琦 王
琦 王
2019-01-13

此功能非常实用,但是如果想模拟材料固结/固化过程中的应力应变情况,即材料不是瞬间完成激活,而是材料属性不断变化为激活状态,应如何模拟呢?

蕾 曹
蕾 曹
2019-01-21 COMSOL 员工

“激活” 节点是为激活或停用材料提供一个简单实用的方法,例如材料沉积或移除。但对于仿真模拟其中渐进过程及细节来说,用此方法较难实现。建议参考其他相关案例。

Yong Chen
Yong Chen
2019-01-21

针对铺粉形式的3D打印,粉材颗粒和凝固材料转变有没有相关的案例呢?这个方面的应用需求也很大的~

雪 全
雪 全
2019-12-11

Yong Chen
你好,感谢你的评论!
有关的3D打印的相关案例,你可以打开 Comsol 中国的官网:http://cn.comsol.com/ ,然后在首页的右上方查找框内输入你想查找的关键词 ,如 3D打印,就可以找到相关的所有案例了。

承隆 吴
承隆 吴
2019-12-10

有没有相关焊接的案例呢

雪 全
雪 全
2019-12-11

吴承隆
你好,感谢你的评论!
有关焊接的相关案例,你可以打开 Comsol 中国的官网:http://cn.comsol.com/ ,然后在首页的右上方查找框内输入你想查找的关键词 ,如 焊接,就可以找到相关的所有案例了。

Shouyan Guan
Shouyan Guan
2021-08-16

请问有没有碳纤维增强热塑性复合材料3D打印的相关案例?

Liwen Yang
Liwen Yang
2021-08-27 COMSOL 员工

目前案例库没有3D打印相关案例。但是关于激活节点的使用,您可以参考案例 http://cn.comsol.com/model/thermal-stresses-in-a-layered-plate-273

Zhengyu Shi
Zhengyu Shi
2022-08-03

您好,关于 http://cn.comsol.com/model/thermal-stresses-in-a-layered-plate-273 有两个问题
1. 对于激活部分的热膨胀参数T_ref是否应该设为Tepoxying,而不是Tdeposition?
2. 如果我想对激活的部分添加 initial stress 应该如何实现呢?根据以上说明,激活后的初始状态应力为零,及没有考虑initial stress。
谢谢!

化斌 张
化斌 张
2022-11-02

针对3D打印的多道多层怎么设置材料的激活呢

Kaixi Tang
Kaixi Tang
2022-11-09 COMSOL 员工

您好,可以考虑定义一个参数并添加多个活化节点,之后通过不同的活化表达式和对参数辅助扫描来实现分段或分层顺序激活。

诗瑶 贾
诗瑶 贾
2023-07-11

您好,这个多层多道的激活有没有相关的案例呢

Hui Zhao
Hui Zhao
2023-05-23

您好,请问comsol6.1版本下的激活功能做了什么改动吗?会出现报错“在这个情景中不能创建本操作-运算:过滤器”,源文件在之前版本(v5.6)运行都是正常的。

Anran Wei
Anran Wei
2023-06-02 COMSOL 员工

您好,感谢您的评论。这个问题需要您更为详细的介绍才能判断原因,建议您联系COMSOL的技术支持团队。
在线支持中心:cn.comsol.com/support
Email: support@comsol.com
谢谢!

永恒 薛
永恒 薛
2023-10-20

您好请问圆形轨迹的增材制造怎么定义初始位置和函数呢,我定义好后一直显示错误,显示的是在这个情景中不能创建本操作:运算过滤器

Liwen Yang
Liwen Yang
2023-10-20 COMSOL 员工

6.1.252版本中使用瞬态研究计算活化时会出现这种报错,在后续的小版本中已经修正了,因此建议您将软件更新至最新版本。

佳朋 冉
佳朋 冉
2024-02-21

有没用激光熔覆的模型

浏览 COMSOL 博客