在设计换热器时,必须考虑传热速率、水力阻力和效率,对于某些应用,考虑结构完整性也很重要。然而,如果没有经济可行的制造方法,花费时间和资源来研究这些组件将是徒劳的。在整个设计过程中考虑设计和制造成本使换热器的开发成为一项艰巨的任务。这篇博客文章,我们将探讨使用形状优化和拓扑优化来应对这这类设计挑战的可能性。
形状优化的过程与物理场无关,因此比拓扑优化更容易实施。需要注意的是,形状优化和拓扑优化均涉及大量设计变量,无论采用哪种方法,都必须使用梯度优化算法。当涉及大量设计变量时,基于梯度的优化方法显著快于无导数方法,因为它能高效利用敏感性信息指导每次迭代,而不是依赖耗时的采样或穷举所有可能解来寻找最优解的确定性优化方法。本文中示例采用的是移动渐近线(MMA)优化算法以及自动梯度计算方法。
首先,我们来看一个板式换热器的形状优化,然后探讨管壳式换热器中管道的尺寸设计。
对形状优化的更详细介绍感兴趣的读者,可查阅博客:电磁学中的形状优化:第 1 部分。
对于给定的驱动流率,可以通过对压降施加约束来限制换热器的水力阻力,但优化将倾向于对压降的最大允许值进行相应的设计,因此实际应用中的泵送功率和水力阻力是固定的。或者,可以施加压力驱动的流量,让优化过程选择泵送功率和水力阻力,这种方法计算成本更低,我们将重点探讨此选项。
考虑一个层流状态的板式换热器示例,其中通过改变板的形状使传热速率最大化,如下方动画所示。相较于初始的平板设计,优化后的设计将传热效率提高了30%。
优化后的板式换热器迫使流体绕流腔体角落,如根据温度着色的流线所示。请注意,在设计的灰色表面中,变形被放大了两倍。
现在,我们来看第二个示例,湍流状态下的管壳式换热器。同样,使传热速率最大,但这次允许管的尺寸和位置发生变化。在这个示例中,优化只能将传热速率提高 5%,这可能是由于设计自由度比前一个示例低所致。
用根据直径着色的管表示的优化后的管壳式换热器。靠近中心的直径较小的管使管与管之间的流率变化减少。
使用密度方法进行拓扑优化,通过为每个计算单元指派一个设计变量来实现。在结构力学中,0 对应于空缺,1 对应于固体。
希望对拓扑优化有更深入了解的读者,可阅读博客文章:使用密度方法进行拓扑优化。
换热器拓扑优化的任务是确定哪个区域应该属于哪种流体,因此通常设计变量等于 0 对应一种流体,而 1 对应另一种流体(见参考文献1)。该策略可避免两种流体混合,前提是最终设计中不存在灰度值,即设计变量仅取 0 或 1,不包含中间值。该策略可以扩展用于考虑流体间的固体域,但本文将省略此部分。无滑移边界条件通过达西惩罚项施加,类似于其他流体拓扑优化应用中使用的策略:
式中, 和
分别表示热域和冷域的流速,通过不同的偏微分方程(PDE)求解。
表示抑制流速的最大阻尼系数,用于确保两个流速在同一时刻不会同时过大。
决定了设计变量场
中间值的阻尼系数,较小的值通常与灰度设计最优相关,而较大的值则会产生更多离散的明确分离的区域,从而获得物理上可实现的设计。
能量守恒通过对流-扩散方程求解,其中对流项取决于总速度场,由 的和给出。尽管该和式不明确依赖于设计变量,但在实际中,每个速度场在其对应的流体区域内占主导地位,因此流速仅在流体之间的过渡区域内具有可比性。
换热器通常在湍流状态下运行,但本文展示的拓扑优化结果仅限于层流状态,因为湍流模型需要解析边界层,而对于拓扑优化中使用的均匀网格,这会导致计算成本极高。
大通道具有较低的流体阻力,小通道则能提供良好的热交换效果。因此,理想的换热器拓扑结构应由交错排列的管道组成,这些管道在实际热交换发生的狭小区域内分支为细小管道。但是由于混合约束有效地固定了拓扑结构,这种结构在二维空间中无法实现。
在二维拓扑优化中,通过使两种流体之间的热交换最大,可以得到两根弯曲的平行管道。
在三维中进行拓扑优化的计算成本很高,因此在本文最后的示例模型中,通过施加镜面对称性将设计域缩小至原来的二分之一。此外,对流场施加旋转对称性,这样只需计算其中一种流体的流动。最后,目标函数同时考虑了传热速率和水力耗散。这两个变量均需最大化,因为对于压力驱动的流体,最大化水力耗散将使水力阻力最小。目标函数可通过极大极小值公式组合,但该方法计算成本过高,因此改用 p-范数代替:
式中,权重 用于控制各目标函数的相对重要性,
用于控制近似精度。这里展示的结果未将效率纳入目标函数(因为它会妨碍离散化设计),但初期可引入效率参数以引导设计趋向效率更高的极值点。
通过五个截面切片动态演示原始设计变量场,用于说明随着设计变量 的增加,优化结果逐渐趋向离散化的过程。
对优化后的结果进行平滑处理,以便能够通过显式几何表示对设计进行验证。如下方动画所示。相机位置固定,但设计结构略微透明,因此可以观察到结构内部的细节。 或者,您也可以探索下方的交互式模型文件,其中设计结构固定,相机位置可自由调整。图中仅显示了设计结构的一半,以便更清晰地观察内部的复杂细节。
优化后的换热器由两个相互交错的流体域构成,通过分支管道实现高强度热耦合,同时避免引入过大的水力阻力。
这篇博客重点讨论了稳定流态换热器的优化设计,但其底层功能具有高度灵活性——基于梯度的优化方法同样适用于其他物理场问题,甚至可以将不同的物理现象结合起来,同时自动计算梯度以满足自定义的目标和约束条件。形状优化和拓扑优化接口可用于设置设计变量,探针可以简化约束和目标的设置。然而,约束和目标函数高度取决于具体的应用场景,因此建模过程的这一部分可能需要进行一些调试。最后,也可以执行考虑特征频率或瞬态问题的梯度优化。
对特征频率优化示例感兴趣的读者,可查阅博客文章: 通过形状和拓扑优化实现特征频率最大化。
想要了解更多关于如何使用优化技术自动生成高性能的换热器和流体流动系统设计吗?欢迎参加 COMSOL 即将举行的热管理系统优化网络研讨会。此次网络研讨会将于美国东部时间 9 月 3 日星期三 15:00-15:45 举行。
许多资深用户可能已经十分熟悉,在使用 COMSOL® 开发多物理场仿真模型和仿真 App 时,可以通过编写代码自动运行模拟过程、为仿真 App 添加功能,以及与外部工具进行集成。在COMSOL Multiphysics® 6.3 版本中,新增的 Chatbot 窗口为用户提供了全新的人机交互功能,可以连接到 OpenAI™ 公司的大语言模型——GPT 模型,帮助用户生成或调试运行 COMSOL® 所需要的代码。这项新功能可以帮助用户通过 AI 工具大幅简化建模和分析过程中的工作。例如,将重复性的任务自动生成循环代码(如 for 循环),或者检测模型方法中的逻辑错误,等等。此外,用户还可以在 Chatbot 窗口中与 AI 进行对话,咨询通用仿真建议。
在这篇博客文章中,我们将通过几个简单直观的示例来展示如何使用这一新功能为建模过程提供助力。
使用 COMSOL Multiphysics® 软件 Chatbot 窗口中的人机对话功能非常简单,用户无需外部 AI 工具就可以在软件内获取与建模和仿真相关的内容,还可以通过附加方法来检查信息是否存在错误,或运行 AI 模型建议的 API 代码,并在模型开发器和 图形 窗口中查看运行结果。
COMSOL 6.3 版本还新增了一个 Java Shell 窗口功能,用于交互式运行 Java 代码,用户可以在 Java Shell 窗口中运行由 Chatbot 连接的 AI 工具生成的代码。在接下来的示例中,我们将向您演示如何操作。
如果您想进一步了解如何使用 COMSOL API 和 Java Shell 窗口,请查看 COMSOL 官网【学习中心】栏目中的 COMSOL API 概述一文,文中 “在 Java Shell 窗口中运行代码” 部分对此项功能有较为详细的介绍。
Chatbot 窗口适用于 COMSOL Multiphysics® 的 Windows® 版本,包含在 COMSOL 平台产品中,但默认情况通常没有安装。(有关如何安装和设置 Chatbot 窗口的说明,请参阅这篇学习中心文章。)
请注意:
创建几何结构
在使用 COMSOL API 时,掌握一些 Java 的基础知识可能会有所帮助。但是,在使用 Chatbot 窗口时,这些知识并不是必需的,因为其中已经包含帮助处理 Java 语法和代码结构的功能。
首先,让我们来看下 Chatbot 窗口如何帮助创建一个圆柱体几何。点击 空模型 按钮,这样就可以使用 API 接口从头开始创建模型的各个方面。
接下来,打开 Chatbot 窗口:在 主屏幕 选项卡上,转到 窗口 菜单并选择 Chatbot。
在 Chatbot 窗口中,有三个聊天主题选项:常规、 编程 和 建模。本例中选择了 编程。
接下来,输入提示语 Create a geometry of a cylinder。
这个提示语将生成创建任意半径和高度的圆柱体的代码,但不会运行代码。如果要运行此段代码,用户需要将它发送到 Java Shell 窗口。
右键单击代码块,选择 发送到 Java Shell。
单击 Java Shell 窗口底部的 运行 按钮,将生成圆柱体。
// Create a 3D geometry
model.geom().create("geom", 3);
// Add a cylinder to the geometry
model.geom("geom").feature().create("cyl", "Cylinder");
// Set cylinder properties: radius and height
model.geom("geom").feature("cyl").set("r", 1); // radius
model.geom("geom").feature("cyl").set("h", 5); // height
// Build the geometry
model.geom("geom").run();
不过,请注意,由于 Chatbot 窗口的回应具有一定的随机性,因此每次生成的代码可能会略有不同。
生成标注
虽然与 Chatbot 功能交互的 AI 模型并不一定全面了解 COMSOL API, 但是通过使用 App 开发器中的 录制代码 或 录制方法 功能,可以引导它生成有用的代码建议。在接下来的示例中,我们将演示如何为模型添加标注,然后在此基础上向 Chatbot 窗口寻求帮助。如果您准备和我们一起开始学习,请从软件案例库中的 COMSOL Multiphysics >电磁 目录下打开“起搏器电极”的教程模型。
接下来,使用软件内置的代码录制功能学习如何添加标注。在功能区中,转到 开发工具 选项卡,然后单击 录制方法 开始录制。
系统会提示您将录制一个名为 method1 的方法,这对于本文示例来说没有问题(当然,您也可以根据需要重命名此方法)。现在,模型开发器将以红色轮廓显示,表明录制正在进行中。
在模型树中,右键单击 三维绘图组 3 并选择 标注。
在 标注 节点的 设置 窗口,在 文本 框中输入 eval(V) ,这将计算并显示电势场的局部值。然后,在 位置 设置中,分别在 x 坐标、y 坐标和 z 坐标输入 0.001, 0.002, 0.003 。
接下来,单击 App 开发器按钮,然后双击树中的 method1 节点,在方法编辑器中将显示已录制的代码。
在使用 Chatbot 窗口自动创建 标注 节点之前,您需要删除刚刚生成的 标注 节点,以避免冲突。在模型树中,右键单击 标注 节点并选择 删除 。
接下来,在 Chatbot 窗口中选择 编程 主题选项,然后输入以下指令,并粘贴从方法编辑器中复制的代码:
This is how you create an annotation in COMSOL Multiphysics:
model.result(“pg3”).create(“ann1”, “Annotation”);
model.result(“pg3”).feature(“ann1”).set(“posxexpr”, 0.001);
model.result(“pg3”).feature(“ann1”).set(“posyexpr”, 0.002);
model.result(“pg3”).feature(“ann1”).set(“poszexpr”, 0.003);
model.result(“pg3”).feature(“ann1”).set(“text”, “eval(V)”);
Can you create a for loop that places these annotations at 10 locations along a line from (x,y,z)=(0,0,-0.02) to (x,y,z)=(0,0,0).
按回车键或点击 提交 按钮。
右键单击已生成代码的区域,然后选择 发送到 Java Shell 。
现在,让我们试试更高级的方法。首先删除所有生成的 标注 节点,即按住 Shift 键选择多个节点,然后右键单击并从上下文菜单中选择 删除。
Instead, create annotations in a helix pattern centered along the same line with helix radius 0.0025.
接下来,重复之前的步骤。右键单击生成的代码,将其发送到 Java Shell 窗口,然后单击 运行 ,以绘制标注。
接下来,我们来增加标注内容的密度。首先,删除已创建的 10 个 标注 节点。然后,在 Chatbot 窗口中使用以下提示语:
Now, make the frequency twice as high and create 20 annotations.
再次右键单击生成的代码并将其发送到 Java Shell 窗口,将显示如下内容。
通过上述示例,您已经深入了解了如何在 COMSOL 中使用 Chatbot 功能快速解决复杂的自动化任务。通过结合使用 录制方法(或 录制代码)和 Chatbot 窗口提示语,您可以引导 Chatbot 做出响应,从而快速增加代码的复杂性。对于需要重复使用相同代码的情况,可以在方法编辑器中的方法中输入代码,而无需使用 Java Shell 窗口。另外请注意,我们也可以记录删除 标注 节点的操作过程,并将这部分流程自动化。
调试代码
Chatbot 功能的另一个用途是查找代码中的细微错误,而不仅仅是简单的语法错误。为了说明这一点,我们以案例库中 COMSOL Multiphysics > App 下的“音叉” 模型为例(此案例不需要任何附加产品)。
转到 App 开发器,在 方法 分支中双击 setMaterial 。
要查找语法错误,可以单击 方法 选项卡上的 检查语法 按钮。该功能不使用 Chatbot 窗口,而是编译器级别的检查;通过内置的 Java 编译器,方法编辑器会在离开窗口或保存 App 或模型时自动编译方法。
要查找代码中与语法无关的错误,Chatbot 窗口可以提供帮助。
让我们在代码中引入一个错误来演示如何使用这一功能。在方法 setMaterial 中,用 mat3 替换材料 mat4 的引用。现在,当用户选择标记为 mat4 的铁材料时,程序将改为使用标记为 mat3 的铜材料属性。
现在,该方法中的代码已附加到 Chatbot 窗口,并带有预定义提示语:I need help finding potential bugs in setMaterial, ignoring any code style issues(注意,发送至 Chatbot子菜单中的其他两个选项,即 关于 setMaterial 的对话 和 对 setMaterial 的改进建议,有不同的预定义提示语。)
按回车键或点击提交 按钮。
**Duplicate Material Selection for Copper and Iron:**
– Both “copper” and “iron” are setting the selection for `mat3`. This might be intentional, but if different materials are expected, this is a bug.
它还指出了其他两个潜在问题。不过,在这种情况下,这些都是误报,因为 Chatbot 窗口并没有获得关于该 App 的其他方法和功能的所有信息。
在这种情况下,即使没有 Chatbot 窗口的帮助,这个错误也相对容易被发现。但试想一下,如果该 App 支持的不只是 5 种材料, 而是 40 或 50 种材料,对于这种情况,当处理较长的代码块时,使用 Chatbot 窗口可以大大加快代码调试过程。
您还可以在 Chatbot 窗口中询问建模技巧。假设我们是静电仿真领域的新手,想知道对于此类模型而言,哪些边界条件更为重要。为此,可以在 Chatbot 窗口中选择 建模 主题选项,并输入提示语:
Which are some of the most important boundary conditions for electrostatics?
Chatbot 窗口给出了很好的答案。不过,请注意它提到了“混合边界条件”类型。虽然 COMSOL® 软件中提供了这种边界条件,但需要 AC/DC 模块,并且有一个不同的名称:分布电容。
一般来说,对于入门级建模问题,Chatbot 窗口可以提供一个有用的起点。但是,对于更高级的主题,建议您同时查阅 COMSOL 文档 (也可通过软件中的 帮助 窗口获取)以及相关主题的教科书。如果选择 常规 主题选项而不是 编程 或 建模,您可以提交任何主题的提示语,包括与 COMSOL Multiphysics® 无关的主题。
查找模型的设置错误
您还可以使用 Chatbot 窗口查找建模设置中的简单错误。虽然 Chatbot 功能并不了解建模和仿真的所有方面,但它仍然可以提供帮助。例如,它可以识别模型开发器中使用的表达式中的错别字。
要试用此功能,请从案例库中 COMSOL Multiphysics > 传热 下打开“硅晶片激光加热”教程模型。该模型演示了激光在硅晶片上移动的瞬态仿真,不需要任何附加产品。
现在,让我们人为地在一个变量定义中引入一个错别字。定义焦点距离的表达式正确的写法是:
sqrt((x-x_focus)^2+(y-y_focus)^2)
我们将把它改成下面这个错误的表达式,其中第二项错误地使用了x_focus 而不是 y_focus:
sqrt((x-x_focus)^2+(y-x_focus)^2)
然后,从 文件 菜单中选择 另存为,并选择 Java 模型文件(.java) 选项来保存文件。
这将创建一个扩展名为 .java 的文本文件,可以被编译成 Java .class 文件,用作独立的 Java 组件。这种方法无需使用 COMSOL Desktop® 用户界面即可运行 COMSOL Multiphysics® 。 Java 文件通过 API 代码包含整个模型设置。但在本例中,我们将仅使用该文件来识别模型设置中的潜在问题。(请注意,使用此功能与使用 COMSOL Compiler™ 编译 App 无关。)
在任意文本编辑器中打开 .java 文件,复制代码并粘贴到 Chatbot 窗口,使用类似以下的提示语:
Can you find any errors in this model:
事实上,Chatbot 窗口指出的第一个问题就是我们刚才引入的那个错别字。它指出 :
Here are a few potential issues in the provided code:
1. **Duplicate Variable Definition**: The variable `r_focus` is defined twice with different expressions. The first definition is correct:
“`java
model.component(“comp1”).variable(“var1”).set(“r_focus”, “sqrt((x-x_focus)^2+(y-y_focus)^2)”);
“`
The second definition at the end of the method seems incorrect:
“`java
model.component(“comp1”).variable(“var1”).set(“r_focus”, “sqrt((x-x_focus)^2+(y-x_focus)^2)”);
“`
Ensure you use the correct expression for `r_focus`.
这种调试对于发现模型设置中的小错误非常有用。对于更复杂的模型,在将模型保存为 .java 文件之前,您可能需要删除冗余并简化代码(即压缩历史记录),使文件只包含当前的模型设置(文件 > 压缩历史记录)。
在这篇博客中,我们使用“起搏器电极”教程模型重点介绍了 Chatbot 窗口功能。如果您想亲自探索创建起搏器电极示例的模型文件,请单击下面的按钮。
想了解有关 App 开发器和 COMSOL API 的更多信息吗?请查看相关学习文档:
Microsoft 和 Azure 是微软公司集团的商标。OpenAI 是 OpenAI 公司的商标。Oracle 和 Java 是 Oracle 和/或其关联公司的注册商标。
据国际食品信息委员会(参考文献 1)报道,由于食品召回事件和有毒成分报道的增多,消费者对食品安全的信心在 2024 年降到了历史最低点。因此,食品和饮料行业的公司比以往任何时候都更需要保证其产品的安全性。食品行业的公司借助建模和仿真能够优化其食品检测、灭菌、加热和包装流程,同时最大限度地减少浪费。阅读这篇博客,了解在 COMSOL 用户年会2024上展示的5个食品行业的仿真案例。
Fortune Business Insights 最近一项研究(参考文献 2)显示,消费者对保质期长且易于储存的罐头食品的需求多年来一直在稳步增加,并且这一趋势预计还将持续。食品灭菌对生产商来说非常重要,因为过程中的任何错误都可能导致有害甚至致命的细菌进入消费者的食品。COMSOL 认证咨询公司 BE CAE & TEST 使用 COMSOL Multiphysics® 软件中的 App 开发器开发了一款定制仿真 App,用于估计灭菌过程中渗透进罐头食品内部的有效热量,从而评估细菌致死率。该仿真 App 可以帮助食品工程师使用精确的多物理场模型分析罐头食品安全,且无需学习如何使用仿真软件。
在仿真 App 中设置分析时,食品工程师可以轻松地从几种基本形状的容器三维几何中进行选择,或者导入自定义的几何图形;选择豆类、玉米和金枪鱼等各种类型的食品;指定热处理方法。如果没有特定食品热物理性质的参考数据,也可以通过输入其营养成分,包括碳水化合物、蛋白质、脂肪、纤维和灰分(矿物质含量)的百分比来轻松计算。还可以通过该 App 导入实验参考数据,获得随时间变化的蒸馏温度曲线,或通过指定加热坡度、热稳定阶段和最终冷却温度和持续时间来定义温度曲线。
BE CAE & TEST 用于评估罐头食品中细菌致死率的定制仿真 App,其中自定义的几何图形是一个装有金枪鱼的长方形锡罐。
通过在自定义输入框中输入感兴趣的数据,食品工程师可以使用该仿真 App 在瞬态分析过程中计算随时间变化的温度,用于确定热渗透如何影响各种罐头食品中的细菌致死率。有了这些信息的支持,他们就可以优化食品灭菌流程,降低有害细菌进入食品的风险。
了解有关他们的工作和这个仿真 App 的更多信息, 请查阅:分析灭菌过程中细菌致死率的 COMSOL 仿真 App
对于意大利面生产商而言,面食干燥过程需要进行一系列耗时耗力的实验来确定最佳操作参数,从而获得稳定、优质的产品。全球最大的意大利面生产商 Barilla 与意大利 Calabria 大学合作开发了一个模型来预测意大利面干燥过程中的温度、水分分布和结构变化,进而优化干燥过程,确保产品质量并最大限度地减少能源消耗。
烘干意大利面所需的时间差异很大,具体取决于两个参数:
该团队采用双域建模方法开发了一个模型,用于预测在湍流空气条件下干燥过程的温度和水分分布。该研究团队在模拟中使用了一个二维几何图形来表示一根”tortiglione “意大利面。
他们使用有限元法将传热和传质方程耦合起来,并对模拟进行参数化以反映典型的工业条件。该模型考虑了食品在干燥过程中的收缩。总体而言,研究团队的仿真预测结果与干燥过程的实际结果相比,平均相对误差小于 9%。
收缩的影响和模型验证结果。
了解更多有关该团队工作的信息,请查阅: “Comprehensive analysis of the transport phenomena developing inside a pasta drying chamber
液体食品包装必须能安全地保存食品,且不会让包装在接触液体时发生降解。这种包装通常由核心支撑材料纸板、保护食品的聚合物保护层和通过感应加热(IH)密封包装的薄铝层构成。世界领先的食品加工和包装解决方案商利乐公司(Tetra Pak)的一个团队对感应加热过程中的包装材料响应进行了建模和仿真,以了解不同属性如何影响包装的材料性能。
他们建立了自己的模型并模拟了感应加热-密封过程纸板中热量和质量传递的相互作用。该模型以铝层为边界条件,考虑了通过AC/DC磁场的涡流。他们使用多物理场耦合仿真来确定纸板的干燥如何受到内部气体压力的影响,以及纸板不同区域的干燥程度。仿真结果表明,当纸板的初始含水率较高且密度较低时,由于水分引起的降解较少,蒸汽更容易逸出,这一点在纸板最干燥的顶角处可以观察到。仿真结果还表明,模型预测与实验数据非常吻合。这些发现使利乐公司能够进一步优化其聚合物模型,从而减少材料浪费。
了解有关他们工作的更多信息,请查阅:模拟感应加热密封过程中纸板的质量和热量传递耦合。
为了以最低的成本精确计算烤箱腔内的气流,烤箱制造商 UNOX SpA 正着手寻找最有效的仿真策略。作为这项工作的一部分,该团队使用 COMSOL Multiphysics® 软件研究并比较了各种流体动力学仿真策略。
该研究包括三个步骤。首先,他们使用一个管道和带冷冻转子的风扇的简化域进行研究,该研究的计算成本较低,并且可以进行实验验证。接着,他们对实际烤箱风扇的复杂几何形状进行了完整模拟,包括冷冻转子和传热研究。该模拟非常精确,但计算量也很大。最后,他们进行了与前一项类似的分析,但在不模拟旋转风扇的情况下施加了速度曲线,从而降低了计算成本。
研究团队对这三个步骤的结果进行了分析,发现第三种策略能以最少的计算时间获得非常准确的结果,因此是其工作最有效的方法。
了解更多有关他们工作的信息,请查阅:烤箱中的流体动力学仿真:平衡精度与计算效率
含水量低的食品可能会因耐热微生物的污染带来安全问题,因此蒸汽或热空气等典型的巴氏杀菌法无法奏效。微波加热可作为一种替代方法,但由于干燥食品的介电特性较低而面临一定挑战。来自工业微波和射频应用领域的全球领先企业 SAIREM 和法国高等教育机构 Oniris Nantes 的一个团队合作开发了仿真模型来研究这一过程的复杂性。
他们模拟了用 915 MHz 单模微波加热器加热石英管中辣椒粉的过程,并分析了管内的电场分布和局部温度。研究团队模拟了几组不同的介电特性值,结果显示,与损耗因子相比,介电常数的不确定性导致了更大的温度变化。他们还实际测量了辣椒的热物理性质,包括密度、热量和热导率,发现二者结果非常一致。要准确预测生产安全食品所需的温度,精确测量含水量低的食品介电特性非常关键。
在工作频率为 915 MHz 的微波腔内加热的石英管模型中的红辣椒粉末,显示了由于介电常数的不确定性导致的温度差异。
了解有关他们工作的更多信息,请查阅:介电常数对 915 MHz 微波腔中低水分食品巴氏杀菌的影响
这篇博客,我们了解了食品和饮料行业的工程师如何使用多物理场仿真和仿真App分析和优化与食品安全相关的产品和流程的5个真实案例。当然,这些案例只是这一领域的简单仿真。如需获取更多灵感,请至 COMSOL 官网查阅 食品和饮料行业的应用专题。
你知道吗?你可以在 COMSOL 中使用 研究 节点执行一系列程序化操作,包括求解模型、将模型保存到文件,以及生成和导出绘图组、结果和图像。这篇博客,我们将详细介绍这一实用功能。
编者注:本文最初发布于 2017 年 6 月 21 日。内容和图片现在已经更新。
为了演示此功能,我们将从案例库中加载微混合器教程模型。该模型位于 COMSOL Multiphysics > 流体动力学 文件夹中,演示了层流静态混合器中的流体流动和质量传输。
该模型首先使用 层流 接口模拟流体流动。然后,将流体流动模拟的结果作为输入,通过 稀物质传递 接口计算混合效率。物质将基于流体速度被输送到下游。
该模型的计算时间为几分钟。为了简化模型以更快地运行计算,我们将不求解物质传递。为此,我们将修改第二个研究步骤 (步骤 2:稳态 2)的设置,清除 设置 窗口中的 稀物质传递 和 反应流,稀物质 复选框。
为了加快模型运行速度,我们还可以做一个额外的更改。在 网格 节点设置中,将 序列类型 设置为 物理场控制的网格,将 单元大小 设置为 极粗。
现在,我们可以计算 研究 1,以确保一切正常。结果图显示了沿混合器几何形状的几个切面的速度大小。
准备好模型后,我们就可以使用作业序列来自动完成模型求解和保存的过程。
要在 研究 节点下定义操作序列,首先要单击模型开发器工具栏上的相应按钮(眼睛图标),打开 显示更多选项 对话框。然后,选择 求解器和作业配置 复选框。
启用此设置后,模型树中会出现一个隐藏的 作业配置 节点。在常规建模工作中,不需要担心这个节点。它主要存储与求解过程运行顺序有关的底层信息。通常,这种顺序由研究的顶层间接控制,无需启用 求解器和作业配置 选项。
右键单击 作业配置 并选择 序列 选项,添加 序列 子节点。
接下来,右键单击 序列 节点,查看 运行 选项下方的各种选项,这些选项可在运行序列时添加为顺序操作。
注:通过添加 序列 节点执行的所有操作也可以通过编写 Java API 代码和使用方法编辑器来实现。一般来说,在用户界面中执行的任何操作也可通过 COMSOL API 执行。
现在让我们创建一个简单的序列。右键单击 序列 节点,选择 解 选项。
一般来说,根据模型及其研究,不同的研究将定义多个求解器序列。在 解 节点设置的 常规 部分,运行 设置可指定要计算的求解器序列。默认情况下,全部 选项会为所有研究运行 求解器配置 下的所有求解器序列。通常,需要将 运行 设置为你打算运行的特定求解器序列。
在本例中,求解器序列 解1 (sol1) 包含 求解器配置 > 求解器 1 下所列的操作。同时,解数据结构 解存储 1 (sol2) 用作 稳态求解器 1 计算出的解的辅助存储,与解序列无关。因此,在这种情况下,我们将选择 解1 (sol1)。
求解器完成求解后,我们需要保存文件。为此,右键单击 序列 节点并选择 将 保存模型到文件。
在 将模型保存到文件 设置窗口中,可以看到一系列选项,用于保存一系列 MPH 文件,并在文件名末尾添加参数。这些选项对于 批量扫描等参数扫描非常有用。不过,在这种简单示例中,并不需要这样做,因此我们将为 将参数添加到文件名 设置中选择 无 选项。在此阶段,我们还需要为有写入权限的位置提供文件名。在本例中,文件名和文件路径为 C:\COMSOL\myfile.mph。
要运行这些操作,请选择 序列 节点并单击 运行。
我们使用的案例库模型微混合器已经定义了一个派生值。您可以在 结果 > 派生值 > 全局计算 中看到。该变量名为 S_outlet,是出口处的相对浓度方差,其定义位于 组件 > 定义 > 变量 下。
S_outlet 的值被发送到 表 1。我们可以通过更改 表 1 设置 窗口中的设置,将此值存储到文件中。将 存储表 设为 在文件中,并指定文件名,例如 C:\COMSOL\my_data.txt。
现在,在序列中添加 计算派生值 操作。
在 计算派生值 节点设置的 常规 部分,如果你想计算所有量,可以将 计算 设置从 全部 改为 全局计算 1。请注意,选择此选项后,模型树中的节点名称将变为 计算:全局计算 1。不过,在这个简单的示例模型中,只有一个模型树节点需要计算,可以省略这一步。
在 结果 部分,将 目标表格 更改为 表格 1(我们在此处定义了输出文件名和位置)。
再次运行序列前的最后一步是在 步骤 2:稳态 2 的 设置 窗口中启用 稀物质传递 接口 和 反应流,稀物质 选项,以求解物质传递(我们最初为了更快地运行模型跳过了这一步)。
现在,我们可以运行序列了。
要从主 研究 节点或命令行运行作业序列,可以使用 参数化扫描来代替上述方法。参数化扫描 是一种特殊类型的作业序列,与上述说明基本相同。不过,在这种情况下,作业配置 > 参数扫描 节点扮演了作业配置 > 序列节点的角色。
在添加 参数化扫描 节点之前,请删除作业配置 > 序列 节点及其子节点。
然后,在 研究 1 下添加 参数化扫描。这将自动创建一个 作业配置 > 参数化扫描 节点。但是,默认情况下,顶层 研究 节点不识别 作业配置 下的作业序列。同样,命令行接口也不允许在 研究 节点内直接执行作业序列;它只支持运行整个研究。在 全局定义> 参数 下添加一个虚设参数(例如,dummy = 1),就能为识别引入必要的识别机制,从而可以直接从 研究 1 或通过命令行执行。
对应的 参数化扫描 显示方式如下图所示:
现在,右键单击 研究 1 并选择 显示默认求解器。这将在 作业配置 下添加一个 参数化扫描 节点。
下图显示了对一个虚设参数的一个参数值的对应扫描。既然 参数化扫描 1 节点只是 序列 节点 的一种特殊类型,那么子节点 解1、将模型保存到文件 1 和 全局计算 1 的操作与上一个使用 序列 节点的示例相同,我们可以以同样的方式添加它们。
要从模型开发器运行作业序列,请右键单击 研究 1 节点并选择 计算。
如果希望使用命令行接口(如 Windows® 操作系统中的命令提示符窗口)运行作业序列,添加了虚设参数后,就可以键入如下命令:
comsolbatch -inputfile mymodel.mph -study std1,
其中,std1是 研究 1 的标签。
就像在 COMSOL Desktop® 上运行研究一样,该命令将执行一系列操作,包括求解、将模型保存到文件,以及最后对 全局计算 节点进行计算。请注意,如果模型中只有一个 研究 节点,则可以省略输入参数 study std1。
要显示模型树标记,请从模型开发器工具栏上的 模型树节点文本 菜单中选择 标记。
研究标记 std1 现在在模型树中可见:
请注意,如果模型中已经有参数化扫描,则每次扫描都将是 内部扫描 或 外部扫描。上例中使用虚设参数的扫描是 外部扫描。研究 节点会自动检测使用哪种类型的扫描以获得最佳性能,但您也可以根据需要手动确定。要使用命令行作业序列,你的扫描必须是 “外部扫描”。
几乎所有类型的扫描都可以从内部扫描变为外部扫描,但反之则不行。内部扫描可以更快,因为它们会使用计算的一些底层结构来加快速度。然而,并非所有类型的扫描都可以是内部扫描。例如,对几何参数的扫描必须是外部扫描;同样,求解器会自动处理。要确保参数扫描是外部扫描,请将参数化扫描设置中的 使用参数求解器 更改为 关;然后执行 显示默认求解器 操作并继续。
求解模型后,作业序列可用于自动执行许多常见任务。在这篇博客中,我们演示了如何:
你还可以自己尝试其他使用工作序列的任务,包括:
希望作业序列能成为您日常建模工作中的一项有用功能!
Oracle 和 Java 是 Oracle 和 / 或其附属公司的注册商标。Microsoft 和 Windows 是微软公司在美国和/或其他国家的注册商标或商标。
在之前的博客中,我们探讨了如何在 研究 节点下设置一系列程序化操作,用于求解模型、将模型保存到文件,以及将数据导出到文件。这篇博客,我们将在此基础上,展示在 COMSOL Multiphysics® 软件中求解模型后,如何自动导出完整的图像序列。
编者注:本文最初发布于 2017 年 7 月 11 日,之后对部分内容和图片进行了更新。
为了演示这项功能,我们将延续前一篇博客在 COMSOL 中求解模型后,如何使用作业序列保存数据的方式,首先从案例库中加载微混合器教程模型。该模型位于 COMSOL Multiphysics > 流体动力学 文件夹中,它演示了层流静态混合器中的流体流动和质量传输。
该模型使用 层流 接口进行流体流动模拟。接下来的步骤中,模型演示了如何利用流体流动模拟的结果作为输入,通过 稀释物质传递 接口计算混合效率。组分将根据流体的流速被输送到下游。
此模型计算耗时约数分钟。在上一篇博客中,我们通过不求解 稀释物质传递 部分来加快计算速度。本文,我们需要计算整个混合器中的浓度分布。为了更快地运行计算,我们可以将 预定义单元大小 设为 极粗。
此网格粗化步骤为可选操作,后续流程不受此设置影响。
下文演示了如何使用参数化切面图和动画导出一系列的图像,其中每个图像对应一个切面。
下图是模型库中已求解的示例模型在 x 方向上 5 个不同的 yz 平面上默认绘制的速度切面图:
接下来,创建一个类似的浓度切面图。右键单击 速度 (spf) 节点并选择 复制。在新创建的绘图组中,将名称改为浓度,将 表达式 改为 c 表示浓度:
在 浓度切面 图中,您可以将 平面数据 输入方法更改为 坐标,而不是默认的 5 个均匀分布的切面。这样,就可以生成 0.5 mm 处的单个切面,如下所示。
结果如下图所示:
可以通过 结果参数 对切面的位置进行参数化。右键单击 结果 节点,然后选择 参数。
定义一个参数 xcut 值为 -3.5[mm](微通道在 x 方向 -3.5 mm 至 8 mm 范围内变化)。
对于 浓度切面 图,在平面数据 部分,在 x 坐标的编辑框中输入 xcut。
上述设置对应的切面图显示如下:
如果要导出不同切片位置的图像序列,该怎么操作?您可以使用基于文件导出的动画来实现。
如下图所示,可以从功能区工具栏的 动画 菜单中选择 文件 生成动画。
或者,您也可以右键单击 结果 下的 导出 节点,然后选择 动画 > 文件。
在模型树中 动画 节点的 设置 窗口中,将 主题 更改为 浓度。然后选择 图像序列 作为 输出类型。
假设您的系统中有一个 C:\COMSOL 文件夹,可以这样输入 文件名,如 C:\COMSOL\my_image.png,你也可以输入任何有写入权限的文件夹。
要将导出文件链接到参数 xcut ,请将 序列 类型更改为 结果参数,这可以在 动画编辑 部分设置。
选择 xcut 作为 参数, 起始值 设置为 -3.5, 停止值 设置为 8, 单位 设置为 mm。
在 动画 设置窗口顶部,单击 导出 开始生成图像。图像的后缀将与序列中的编号相对应。帧数或图像数在 帧 部分设置。
这样就会生成一系列图像,名称分别为:my_image01.png、my_image02.png、……、my_image25.png,如下图所示。
现在,我们来看看在 COMSOL Multiphysics 中求解模型后,如何自动生成图像。
要在 研究 节点下定义操作序列,请启用 求解器和作业配置。此选项可在模型开发器工具栏上的 显示更多选项 对话框中找到。单击眼睛图标即可打开对话框。
在出现的 作业配置 节点下,选择 序列。我们在上一篇博客中对此步骤进行过描述。
右键单击 序列 并选择解。在 解 设置窗口中,如果尚未选择,请选择 全部,确保运行所有研究步骤。
右键单击 序列,然后选择 结果 > 导出到文件。
在 导出到文件 设置窗口,选择 运行 选项下的 动画 1。在这个简单的示例中,导出 选项下仅有一个节点,因此,我们也可以保留默认的 全部 选项。
要使用 序列 求解,请右键单击并选择 运行。或者,点击 序列 设置窗口顶部的 运行 按钮,再次运行整个模型,并在求解后导出图像文件。
上文我们使用导出操作生成了一系列三维图像。如果要为每个切面生成一系列二维图像,该怎么操作?这可以通过使用参数化的 截面来实现。
右键单击 数据集 节点,选择 截面。
在 截面 设置窗口中,输入 xcut 作为 x 坐标。
已经存在的三维绘图组不能生成二维绘图,因此右键单击 结果 并选择 二维绘图组。
在 二维绘图组 设置窗口中,选择 截面1 作为 数据集。
在 二维绘图组 下添加一个 表面 绘图节点,并将 表达式更改为 c,对应于浓度。
要整理绘图组列表,请将 二维绘图组 的名称改为 截面浓度。
现在,转到模型树中的动画节点。在相应的 设置 窗口中,将 主题 更改为 截面浓度。
单击 导出 生成二维图像序列,如下图中的文件浏览器视图所示:
要使用 Windows® Explorer 获得此视图,请将视图更改为大图标。
与之前的示例一样,现在我们可以继续运行 作业序列 求解,就可以自动生成图像集并保存到文件中。
想亲自尝试本文中演示的示例模型吗?请单击下面的按钮访问 MPH 文件。
Microsoft 和 Windows 是微软公司在美国和/或其他国家的注册商标或商标。
不规则形状有很多不同的格式。在模拟不规则形状系列博客中,我们探讨了在 COMSOL Multiphysics® 软件中处理不规则形状的不同方法。这篇博客,我们将对该系列进行补充,讨论如何获取一组图像并将其放样成实体。
编者注:这篇博客最初发布于 2017 年 9 月 20 日。现在对其进行更新,以反映 COMSOL Multiphysics® 中的新特征和新功能。
在处理扫描数据时,我们可能会遇到一些由核磁共振成像或 CT 扫描生成的切面图。关于这种数据格式的处理,我们来看一个人类头部的切面图示例。
该图像的处理步骤可简单概括为:
现在,让我们更详细地了解每一个步骤。
在这个示例中,我们有 19 幅头部切面图像,这表示需要创建 19 个 工作平面 特征,以正确设置 z 坐标。在 COMSOL 软件中,您只需在 Java Shell 中运行以下代码,即可轻松实现这一操作:
double[] zValues = {-0.128, -0.12, -0.1, -0.08, -0.07, -0.06, -0.05, -0.04, -0.03, -0.02, -0.01, 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.124};
for (int k = 0; k < zValues.length; k++) { String newWpTag = model.geom("geom1").feature().uniquetag("wp"); model.component("comp1").geom("geom1").create(newWpTag, "WorkPlane"); model.component("comp1").geom("geom1").feature(newWpTag).label("z "+toString(zValues[k])); model.component("comp1").geom("geom1").feature(newWpTag).set("unite", true); model.component("comp1").geom("geom1").feature(newWpTag).set("quickz", zValues[k]); }
请注意,在文末提供的可下载模型中,此代码已被保存在一个方法中。在示例模型中,从 开发工具 功能区选项卡运行一个方法,就会产生与从 Java Shell 运行代码相同的结果。
通过在每幅图像上使用内置的 图像到曲线 插件,您可以在每个工作平面上添加一个 插值曲线 特征,从而生成总共 19 个曲线对象。要了解有关此插件的更多信息,请阅读博客:如何使用插件将图像转换为几何模型。
将 轮廓阈值 固定为 0.6,以确保所有轮廓的缩放比例相同。 封闭曲线 设置用于确保创建的曲线对象封闭,并且一阶和二阶导数是处处连续的。在 COMSOL Multiphysics® 中,放样封闭曲线会生成实体对象,而放样开放曲线会生成曲面。本例中,所有曲线都使用默认的 相对容差 0.001,仅最后一条曲线(z 0.124)的 相对容差 被】增加到 0.01,用于生成一个相对平滑的曲线。最后,在头部顶端添加一个点。如果您的数据为曲线坐标而不是图像,可以直接将这些数据导入 插值曲线 功能,而无需使用此插件。
插值曲线 功能的 设置 窗口(左)以及代表头部外壳的所有曲线和点(右)。灰色面代表 Z 坐标在 -0.04 处的工作平面,位于工作平面内的曲线用黄色突出显示。
有了定义头部各切面轮廓的曲线对象,我们就可以使用 放样 操作创建实体形状。放样 操作是设计模块中的几何建模工具之一。在设置 放样 操作前,我们需要确保曲线对象适合作为 放样 的轮廓。将曲线或曲面放样到实体需要不同的轮廓具有相同数量的边和点。如下所述,可以使用 分割边 操作来确保相同数量的边和点。第一个和最后一个对象(起点和终点轮廓)是个例外,它们可以是与中间轮廓的边数不同的曲线对象,也可以是点。
封闭的插值曲线有两个顶点。因此,上述中间对象的边和点数量相同的标准已经满足,因为所有创建的曲线都有两条边。不过,这些点在轮廓对象上的位置也很重要。当放样穿过曲线时,它会沿着放样的方向连接所有带边的点。如果这些点没有在一条相对直线的位置,生成的曲面可能会变形。您可以手动分割这些边,以更好地表现所有曲面。本例中不需要这样做,但如果需要,可以添加 分割边 操作,通过投影选定的顶点来分割边。
为了验证几何对象的边和点数是否相同,您可以单击图形窗口上方的 选择对象 按钮,在图形窗口中选择一个曲线对象,然后单击 几何 或 网格 选项卡中的 测量 按钮。测量结果将写入 信息 日志。
本示例中的点已经大致对齐,是时候创建实体了。放样 功能包含多个选项,但此处只使用最简单的步骤:在 轮廓对象 列表中添加点和头部的所有曲线对象。起点和终点轮廓由 放样 操作自动确定。放样 设置窗口有许多折叠部分,可用于对放样进行微调。例如,指定放样的方向或使用引导曲线进一步控制形状。本例中不使用折叠部分中的设置。
放样 操作的设置窗口(左),显示了输入的 轮廓对象,这是本文示例中使用的唯一输入。右图显示的是生成的实体头部几何。
由封闭的连续轮廓曲线放样的表面或实体对象至少有两个接缝,这些接缝穿过轮廓曲线的顶点,形成两个或两个以上的边界。根据不同曲线顶点的对齐方式,此操作可能会引入更多的接缝。如果轮廓曲线的切线不连续,则会通过这些点引入其他接缝。使用默认的 面分割 设置:在 放样 操作中使用 最小化(见上图)不会引入其他接缝,本文示例就是这种情况。
如果我们希望对放样表面进行更多分割,可以使用 列 和 格栅 分割选项。前一个选项是沿轮廓曲线的每个顶点划分曲面,后者还添加了轮廓曲线选项。还有另一种方法是使用布尔操作和分割将曲面与其他几何对象进行分割。此操作可以创建边界,用于施加边界条件。另外,如果我们希望获得更简洁的外观,可以使用 虚拟操作 创建复合面。形成复合面 是实现此目标的功能之一,忽略边 功能也可以得到相同的最终结果。
通过将上图中的边添加到 形成复合面 操作(左),最终几何图形变得更加平滑美观(中)。右侧为划分网格后的头部模型。
这篇博客讨论了由图像创建曲线,以及将这些曲线放样为实体对象的可能性。请点击下方按钮,下载文中示例的 MPH 文件。
延伸阅读
我们邀请了 4 位 COMSOL 同事预测仿真技术在未来一年的发展趋势。虽然他们各自发表了自己的独特见解和理由, 但他们的回答中都提到了三大主题:仿真应用更加广泛,通过代理模型和仿真 App 快速获得结果,以及创建更大的模型。阅读这篇博客,了解他们对仿真在 2025 年及未来发展趋势的看法。
David Kan 将仿真与时尚进行了类比, “ 趋势是一件有趣的事情,它不仅展望未来, 也会回顾过去。就像在时尚界,旧的潮流往往又会变成新的风尚:复古风、古董风…仿真领域的情况也非常类似,我们正在回归根本,并利用现有的技术解决更困难和更具挑战性的问题。我们通过追本溯源以更严谨的方式创建模型,因为我们现在拥有更好的计算技术。”
这是否意味着他认为仿真技术还停留在过去?不,完全不是。David 澄清说,由于现在的计算能力和 GPU 技术的提高,迭代速度远快于从前。“值得注意的是,我们拥有核心计算技术的坚实基础,这是我们实现这一目标的关键。”他补充说。
同样,Andrew Strikwerda 也发表了自己的看法,“我所看到的仿真技术的最大趋势就是仿真的应用领域越来越广。越来越多的人对获得仿真结果感兴趣,并且越来越多的人意识到仿真对他们所从事工作的价值。”
Ruud Börger 也深有同感,“我认为仿真技术在 2025 年将以多种方式发展。我们看到,在半导体行业有大量资金投入,一些主要的世界大国都希望实现供应链本地化。我们还看到,目前可再生能源领域对仿真有着很大的需求。”他还预测,仿真软件本身将变得更加容易使用,这将有助于它的普及。
不可否认,当今社会期望一切都能快速发生。我们渴望当日送达、高速网络和即时满足,同样的期望自然也会放到仿真软件上。
Andrew 提到了仿真 App 的概念,以及 COMSOL Multiphysics 软件的用户如何创建易于使用的仿真 App,并将其分发给其他人使用。他接着说道 “我们将看到更多由代理模型驱动的仿真 App。这些模型可以在底层数据集上进行训练,并通过神经网络的强大功能获得即时的结果,你可以基于 COMSOL Multiphysics 生成的数据进一步在软件中对神经网络进行训练。”
利用代理模型快速提供即时结果的仿真 App。
Ed Fontes 对此深表赞同,并进一步阐述了自己的观点。“我认为目前最大的趋势是能够建立高精度的代理模型,就像我们在 COMSOL Multiphysics 中引入的基于深度神经网络的代理模型。这些模型的用途非常广泛:你可以使用它们进行系统模拟、不确定性量化和实验设计。这类研究往往需要大量的模拟,而完整的三维模型由于计算量太大不方便使用。因此,你所要做的基本上就是为这些三维模型的运行做一些基本投资,训练出一个代理模型或集总模型,然后将其用于系统仿真工作或 App 中。”他说道。
“如果你考虑使用仿真 App,肯定会希望立即获得答案,它必须几乎是即时交互式的,”Ed 继续说,“有了在完整三维多物理场模型上训练的代理模型,你能在毫秒内获得答案。要知道,在这个时代,每个人都不希望花十分钟等待结果。这就是最大的趋势:即使你处理的是巨大的三维模型,也能立即得到答案。”
在谈到支持仿真 App 方面,Ruud 说:“越来越多的人正在开发仿真 App,这使得没有数值模拟背景的人也能获得仿真带来的好处。我认为,(2025年)将有更多的仿真 App 被投入使用,让人们共享仿真的好处。”
Ruud 还预测,人们将建立更大的模型。他分享说:“过去,人们只对单个组件进行仿真,而最近大家开始对多组件或大的部件进行仿真,例如设备制造机,甚至完整的助听器。”
同样,David 也认为,“这将是一个继续提高计算能力、优化算法、增加产能的问题,让工程师能够进行更多的仿真迭代,从而发现更多事实。”他继续兴致勃勃地说:“人们使用 COMSOL 有很多原因,一个是为了理解新的物理学,还有一个是用于生产、研发和设计。随着时间的推移,我们需要进行越来越多的计算,这就是 2025 年将继续发生的最大变革。”
我们还请他们展望了 2025 年之后的长远未来。Ruud 和 Ed 都对未来更广泛的人群将会如何使用仿真进行了设想。
“当然,仿真技术的长期前景很难预测,”Ruud 回答道,“从应用方式来看,我确实看到仿真 App 的使用率正在不断增长。就目前来看,我们看到设计工程师和制造工程师都在使用它们,我认为消费者也会越来越多地使用仿真 App。比方说,当你要粉刷房子时,可能会根据经验来决定每五年粉刷一次向阳的墙面。但也许将来当你购买油漆时,还会附带一个仿真 App,它可以让你拍摄房屋的照片,然后在后台进行模拟,查看哪些区域受到不同程度的阳光照射,接着运行化学仿真,预测这种油漆的寿命有多长,并推荐它的使用条件和位置。”
Ruud 接着描述,“这样的例子有很多。例如,当你购买路由器时,家里每个房间的电磁场会是怎样的?你需要多少台?需要把它们放在哪里?对于扬声器的音响效果来说,也同样如此。我认为将来会有很多消费类仿真 App,现在我们还不知道这是否可行,但确实有很大的需求。而且我认为,这种需求在未来会得到满足。”
Ed 认为,仿真技术的长远未来将与 2025 年的发展趋势一致。他表示,“那些新方法以及能够获得即时反馈的新功能将使仿真更加有用。” 他用一篇关于农民使用仿真 App 预测水果和农产品保质期的文章举例说,“十年前,没人会将仿真应用到这类场景。因为对那时来说,计算量太大了,有谁会在超级计算机上运行这些呢?现在,你只需要在服务器上运行,并不需要很大的算力。”
“有了这些新技术和代理模型等,建模和仿真将更多地被扩展应用到消费类应用中,在这些应用中你可以提前了解和预测事情。如果你有验证模型,仿真就能更好地发挥作用。虽然我们不会开发这类消费类应用,但我们的客户会。因此,他们是二级仿真 App 用户,这正是我们二十年前就已经预见到的。”
随着 COMSOL Multiphysics® 软件 6.3 版本的发布,我们现在可以在当前时步中使用瞬态研究中的上一个解,即可以使用较早时间的解影响当前时间的解。这一功能有很多应用,包括求解延迟微分方程。这篇博客,让我们通过一个与众不同的示例来了解这项新功能。
前不久,我在山间徒步旅行时发现了一只旱獭(又名土拨鼠)。随手拍了几张照片后,我开始思考这种可爱的食草动物的生命周期。我的思绪很快就飘到了如何构建一个方程来描述在山间草地中觅食的旱獭种群数量的变化。

这只毛茸茸的旱獭是这篇博客文章的灵感来源。
回想大学时读过的一些关于数值方法的教科书,我想起了各种可能派上用场的方程,包括 Lotka–Volterra 方程和逻辑斯谛微分方程(logistic differential equation)。受这些方程的启发,我们假设应该写两个常微分方程(ODE):一个是草地上旱獭数量的变化率 ,另一个是可食用生物量的变化率
。
第一个方程描述旱獭种群变化率,其中包含与繁殖 和死亡
有关的项,稍后我们将详细讨论。第二个方程包含三个常数:增长率
,草地上可生长植被的最大质量
,旱獭每天的消耗率
。
现在,我们来看旱獭种群的方程。首先考虑与当前种群数量线性相关的繁殖项:
另一方面,旱獭的死亡率应该与可用资源有关,因此作为中间步骤,我们将定义每只旱獭每天的觅食面积:
式中, 为草地面积。我们假设草场面积越大,遇到捕食者的几率就越大。同时假设每个区域的 捕食者数量固定为
。因此,旱獭死亡率与当前的旱獭数量
、每只旱獭的日觅食面积以及捕食者密度成正比。于是,我们得到一个取决于两个未知数的死亡率方程。
进一步假设整个旱獭种群都会立即从冬眠中苏醒,我们将通过求解这些方程来预测夏季种群数量的变化,之后旱獭种群会重新回到洞穴中过冬。我们还将设置一个停止条件,以便在旱獭数量或植被数量下降到临界值以下时停止求解,这意味着种群或环境崩溃。

图片显示了如何模拟一组常微分方程。不同的常微分方程可以使用不同的单位。瞬态求解器 中还添加了 停止 条件功能。
如上图所示,在 COMSOL Multiphysics® 中可以使用 全局常微分方程和微分代数方程 接口求解这类方程。该接口定义了我们要求解的两个变量 和
,以及每个变量的时间导数方程和初始值
和
。我们可以通过求解这些方程来预测旱獭种群在夏季的变化情况。

植被生物量(绿色)和旱獭数量(棕色)的动态方程的解,其中标注了夏季末期的旱獭数量。夏季刚开始时,旱獭数量急剧上升,随后由于捕食增加而下降。
结果表明,刚开始旱獭的数量急剧上升,并迅速消耗掉可用的食物。这导致了一个调整过程,即由于捕食的增加而导致种群数量下降。再过一段时间,旱獭数量达到一个平衡状态。(顺便给感兴趣的读者提个醒:要确定这是否是一个 稳定的 平衡状态是相当有挑战性的)。
目前,我们得到了一些看似合理的结果,但也会有一些担忧。至少有两个重要因素需要考虑:
让我们来看看如何用数学方法来描述这两个因素,以及如何在模型中实现它们。针对第一个因素,我们希望将繁殖率作为受孕时种群数量的函数,并考虑妊娠期 ,在此期间繁殖率为零。因此,繁殖率方程变为:
式中, 为 Heaviside 阶跃函数。繁殖率还会受分式
的影响而下降,即妊娠期内种群数量下降的总和。我们还假设,一旦年轻旱獭开始觅食,成年旱獭的捕食就会停止。因此,在
之后,这一比例保持不变。
现在,我们得到一个延迟微分方程,可以结合使用 if() 语句与 at(time,variable) 算子将其输入软件。繁殖项可以写为
R0*if(t > Tg,at(t-Tg,M)*at(Tg,M)/Minit,0)
at() 算子中的第一个参数即为需要计算的第二个参数的上一时步。为了在求解过程中使用参考上一时步的功能,我们需要修改求解器的设置,如下图所示。通过使用 严格的时间步进 ,并且输出时步不大于延迟时间,来确保我们表征到分娩季节的开始。否则,模型的求解方法与之前相同。

图片显示了如何在解中启用时间算子。
让我们来看看将非恒定繁殖率纳入考量时的种群数量。首先,我们观察到,在没有旱獭出生的时期,种群数量会下降。之后,种群数量开始上升并逐渐趋于平稳。

在出生率中引入延迟项时旱獭的数量(棕色)和植被的生物量(绿色)。
最后,对死亡率进行修改,以考虑如果旱獭的平均数量在足够长的时间跨度内增加,捕食者的数量也会增加的情况。也就是说,我们需要追踪过去几天内旱獭数量的时间平均值。
与其对 期间的所有时步进行积分,不如应用微积分基本定理,并写出过去几天内平均种群数量变化率的方程:
我们可以通过在模型中添加另一个全局方程来简单地求解这个方程,但将从 开始计算。因此,我们使用另一个
if() 语句来定义。使用移动平均数扩大捕食者密度
,从而影响死亡率。再次求解,我们可以看到夏季结束时对旱獭种群的影响。
好消息!旱獭的数量增加了,它们可以在漫长的冬眠期钻进洞穴了。

仿真结果显示旱獭的数量(棕色)和生物量(绿色),其中繁殖率和死亡率都取决于上一个解。

实验观测证实旱獭数量有所增加。
需要强调的是,文中所举的示例只是为了在一个简单易懂的模型中展示一些令人兴奋的新功能。实际上,真实的种群动态模型比这要复杂得多,通常使用分区或基于区间的方法。即,使用不同的变量跟踪总种群的不同部分。博客使用 COMSOL Multiphysics® 模拟 COVID-19 的传播中讨论的预测流行病的 SEIR(易感者、暴露者、感染者、恢复者和免疫者)模型就是这种方法的一个入门示例。
这种基于区间的方法在化学工程中尤为重要,通常用于跟踪液滴和沉淀物的尺寸。关于这方面的模拟,以下案例模型做了详细介绍:
这篇博客,我们展示了在 COMSOL Multiphysics® 6.3 版本中模拟和求解延迟微分方程的基本原理。虽然这个简单的示例模型可以产生一些非常有趣的动力学,但请记住,此示例仅用于学习。只要理解了这个简单的示例,你就可以处理更复杂的建模任务了。例如,将这些时间延迟微分方程与空间微分方程结合使用。软件中的每个接口都支持这些新的算子。无论您想在多物理场仿真中使用哪种接口组合,参考上一个解的技巧都与我们在文中展示的完全相同。
想尝试自己动手模拟文中讨论的模型吗?请在 COMSOL 案例库中下载相关的 MPH 文件:
多物理场建模与仿真技术赋能企业、高校及科研机构,助力它们以更低的成本、更快捷且智能的方式推动创新。研发团队将 COMSOL Multiphysics® 仿真技术融入其研发流程,便能构建准确的仿真模型,有效设计并优化实际工程难题。更进一步,基于这些模型,他们可以开发出可独立运行的仿真 App,使更多团队、部门乃至客户都能从多物理场仿真中受益,让工程师与设计师在研发周期内能更深入地洞察产品特性,预见到潜在问题,并迅速找到解决方案。
今日, COMSOL Multiphysics® 6.3 版本正式发布。在新版本中,增强的建模功能、改进的用户体验,以及使用 NVIDIA® 显卡时对声学仿真和代理模型训练的 GPU 加速,使软件功能更加强大。此外,还新增了用于自动生成更高质量网格的新技术,以及用于模拟气体、液体和固体中放电和击穿的全新附加模块。
我们所处的世界本质上是由各种物理场相互作用构成的,能够成功地将两种或更多物理现象完全整合在一起,对于创建能够精确模拟真实物理情景的数值模型来说,是至关重要的。
以扬声器为例。在单一物理场模型中,我们仅能分析音圈中的磁场情况,然而,若能同时探讨磁场如何与扬声器的其他组件相互作用,以及力和振动是如何产生的,这样的仿真结果将对扬声器设计提供更加精准的指引。利用 COMSOL Multiphysics® 软件,我们能够轻松地为模型增添并耦合各种所需的物理现象,从而构建出精确的仿真模型。例如,在扬声器模型中,我们可以模拟电磁场、结构力学以及声学之间的相互作用,进行全方位、深入的仿真分析。COMSOL 软件在模拟和耦合物理现象的数量及种类上均没有限制。
左:扬声器的单物理场模型,显示了作用在音圈上的电磁力。右:扬声器的多物理场模型,同时考虑了声-结构相互作用。
COMSOL Multiphysics® 软件是一个集建模与仿真功能于一体的平台,既支持全面的多物理场仿真,也具备单物理场仿真能力。这意味着,无论工程师和科学家来自哪个行业或学科领域,他们都能在这个统一的软件平台上,通过同一个用户界面,自由构建所需模型。简而言之,多物理场仿真助力企业、高校及科研机构等组织做出更为明智的决策,催生创新设计,同时减少物理原型制作与实验测试的成本,最终加速产品研发流程。
由于模型是对真实世界的反映,其 行为 必须符合物理定律,而 外观 同样不容忽视。通过添加合适的纹理、颜色以及精心设计的照明,我们可以更直观地将模型视作它所代表的真实物体,并深入理解其运作机制。此外,根据用户正在运行的分析类型,绘图类型或颜色表的选择也可能影响对结果的解读。COMSOL Multiphysics® 软件平台不仅具备构建几何模型、分配材料和划分网格等功能,还包含丰富的可视化工具。
只有当来自不同团队、部门、组织乃至企业的同事们都能访问并参与到精确仿真模型的开发中,共同为产品设计的创新与优化贡献力量时,仿真驱动的研发工作流程才能取得最大的成功。为此,COMSOL Multiphysics® 平台包括三个主要工作区:
左:模型开发器显示了一个 IGBT 模组的多物理场模型的设置和结果。中:用于构建仿真 App 的 App 开发器。右:模型管理器,展示了比较两个模型文件的功能。
根据具体任务需求,您或许希望使用专门的产品模块来增强核心仿真功能。COMSOL Multiphysics® 软件提供了一系列丰富的附加产品,专门用于电磁、结构力学、声学、流体动力学、热传导和化学工程等领域的仿真分析。作为一款 多物理场仿真 软件,COMSOL® 软件的所有产品模块功能均可通过其平台产品无缝集成。此外,您还可以通过 LiveLink™ 产品轻松地与 CAD 以及其他第三方软件进行交互。
提示:请查阅用户案例库,了解全球的企业和机构使用 COMSOL Multiphysics® 的应用案例。
任何持有 COMSOL Multiphysics® 软件许可证的用户都可以开发和维护自己的仿真 App,同时,拥有 COMSOL Compiler™ 的用户还能将这些 App 进一步转化为独立的可执行文件,并分发给任何人在全球任何地点运行。无论是组织内部还是外部的同事,都能通过这些独立的仿真 App 来测试设计上的任何变更,而无需占用仿真专家的时间。即使是非仿真专业的用户,也能利用这些仿真应用,根据特定输入预测结果,并基于模拟结果做出决策,而无需了解如何设置和运行底层模型(在某些情况下,他们甚至不知道自己正在使用多物理场仿真技术)。
App 开发器提供的拖放功能,让用户能够方便、快捷地在 App 界面中根据特定需求定制输入和输出组件和小窗口。这样 ,App 用户无需投入精力去开发仿真模型,就能受益于仿真的所有优势。只需简单点击一个按钮,您就能将仿真模型编译成独立的仿真 App。至于这些仿真 App,您可以自主决定是收费出售还是免费提供,是添加密码保护还是无限制共享,以及是否设置有效期等。在使用 COMSOL Multiphysics® 软件开发独立仿真 App 时,您拥有完全的控制权,包括 App 的开发数量、发布对象以及发布方式。
很多情况下,一些组织可能更倾向于完全控制谁有权访问他们的仿真 App,以及哪些版本的 App 可供使用。对于这种情况,他们可以通过自己的 COMSOL Server™ 环境上传、管理和运行他们的 App,而不是将它们编译为独立 App。COMSOL Server™ 提供管理工具,可用于管理用户对 App、用户帐户和组的访问以及多核处理器的利用。
多年以前,COMSOL Multiphysics® 就推出了 App 开发器和附加产品 COMSOL Compiler™ 。 2023 年,我们发布了使用机器学习训练代理模型的功能,这使得开发快速计算的仿真 App 成为可能。 当您在仿真 App 中嵌入数据驱动的代理模型时,App 用户将根据输入的信息获得近乎实时的仿真结果。代理模型经过训练,能够在不牺牲准确性的前提下,近似于成本更高的完整有限元模型的计算结果。如今,随着 COMSOL Multiphysics® 6.3 版本的发布,支持在显卡上进行训练,代理模型的训练过程本身也更加快速。
计时器 事件功能可自动触发方法的执行,无需执行如连接外部服务器、运行模拟或更新仿真 App 用户界面等用户交互。仿真 App 具备嵌入代理模型,并与外部传感器、数据库和 Web 服务等连接的能力后,App 还可以用于构建数字孪生系统。
6.3 新版本升级了 COMSOL Multiphysics® 平台产品的核心功能,并在整个产品模块中新增了许多新功能,为用户带来了比以往更强大的仿真功能。同时,增加了一个新模块。
没有人喜欢等待,尤其是在求解模型时。COMSOL 的开发团队始终致力于提升求解速度,力求在保持精度的同时,缩短各类模型的求解时间。在 6.3 新版本中,最大的亮点之一是支持 GPU 在时域内对压力声学进行模拟,这意味着从事室内声学工作的用户将享受到比以往快 25 倍的仿真速度。
办公环境中的声学
获取更多 GPU 支持和声学相关新功能,请访问:声学模块发布亮点。
COMSOL Multiphysics® 平台新增了一个附加模块,专用于预测放电对电力、航空航天、消费电子和医疗技术等系统性能的影响。新模块功能丰富,可直接模拟气体、液体和固体电介质中的放电,分析流柱、电晕、介质阻挡和电弧放电。如需了解更多功能,请访问:放电模块发布亮点。
得益于全新的几何功能,COMSOL Multiphysics® 可以自动检测并删除导入几何中的微小细节和间隙。在创建用于网格划分的几何结构时,这可以节省大量时间,并生成更高质量的网格和更小的整体仿真尺寸。访问几何更新发布亮点,了解这些更新的实际应用。
仿真软件必须易于使用才能为组织带来最大价值。在 COMSOL Multiphysics® 最新版本中,用户界面(UI)的整体外观有了更多变化,当缩小窗口尺寸时,功能区的大小也会与之无缝适应。新版本的适用性也有了多项改进,包括:
当用户查看模型的不同部分时,动画相机过渡效果可确保流畅的移动。
详细了解用户界面和可视化功能的一系列更新,请分别访问:COMSOL Desktop® 发布亮点 和 结果与可视化发布亮点。
您是 COMSOL Multiphysics® 新用户吗?欢迎联系我们,我们可以根据您的业务需求分享与您研究领域相关的信息。
如果您想详细了解新版本软件的所有更新功能,请访问: COMSOL Multiphysics® 6.3 版本发布亮点。
特征频率分析是数值仿真工具包中不可或缺的一部分。线性系统的特征模态通常具有明显的定性特征,并在如频率等参数范围内以不同的方式演变。我们经常被问到,是否有办法对这些随参数范围变化的特征模态解集进行追踪和分类。这篇博客,我们将演示如何使用 COMSOL Multiphysics® 软件中的模态重叠积分法来实现这一目标。
小测验:为下一代通信系统设计光缆,优化桥梁设计以尽量减少不必要的机械共振和优化客厅的声学布局,这三者有什么共同之处?
对于上述每一个场景,我们都必须充分了解系统的特征模态。特征模态及其相关特征值(也称为固有频率)描述了线性系统对外部激励的响应方式,因此在设计中起着至关重要的作用。在一些应用中,例如射频通信腔滤波器或扬声器驱动器,我们希望能最大程度地耦合一个或多个特征模态,而在其他应用中,这些共振模态的耦合可能会导致灾难性后果,如桥梁坍塌。
当在参数扫描过程中调整系统参数,如工作频率或几何尺寸时,特征模态和频率自然会发生变化。然而,这些模态通常会保持定性相似性。让我们来看一个简单的示例,像鼓或克拉尼板振动表面一样的二维椭圆形薄膜的波动方程。

具有固定边界的椭圆形薄膜的二维波动方程的前 5 个特征模态解。
特征频率研究显示了前 5 个特征模态,其位移大小如上图所示。现在,假设我们要对椭圆域的垂直高度进行参数扫描。

图中显示了前 5 个模态的特征频率与椭圆域垂直高度的关系。请注意,在高度为 10 cm 时,模态 2 和模态 3 ,模态 4 和模态 5 之间的简并,而此时椭圆域是圆形的。
前 5 个模态的特征频率如上图所示。请注意,当垂直高度为 10 cm 时,模型域是圆形的。这导致模态 2 和 3 之间,模态 4 和 5 之间的简并。事实上,过了简并点,模态 2 和 3 就会在特征值图中互换阶次。这种模态交叉行为在许多特征频率研究中都很常见。当这些模态的阶次发生变化时,如何在特征值图中追踪它们呢?要回答这个问题,让我们仔细观察其中的一个模态。

参数范围两个端点处的模态 2。
高度为 8 cm 和高度为 12 cm 时的模态 2 如上图所示。通过肉眼就可以明显观察到这两个模态的相似性。我们可以用模态重叠积分来量化这种相似性:
变量 和
代表两个任意的特征模态解。这个方程的关键部分在于分子:在两种模态之间进行 内积 。分母将重叠度
的值归一化,使其介于 0 和 1 之间。
一个模态与其自身的重叠度为 0,因为它们是相互正交的。对于参数值不同的模态,只要模态在性质上相似,M 接近 1。例如,上述两个模态的重叠度 M = 0.95,证实了我们的直观识别。两个不相似的模态的重叠度接近 0。
利用这一度量标准,我们可以通过对重叠值施加一定的阈值,来建立模态匹配方案。这可用于色散图中过滤或分组模态,甚至在模型方法的帮助下自动生成模态轮廓动画。接下来,让我们看看如何将这一策略应用到多个不同的物理学科。
在上一篇关于如何模拟光学各向异性介质的博客中,我们研究了光学各向异性波导的横向模式。这些模式可以按照电场的主要方向以及横向平面上振幅最大值的数量进行分组。 模式的一些示例如下图所示。

光学各向异性波导中前 3 个 特征模式。
由于波导的主要目标是控制光流,因此了解这些传播模式的行为至关重要。在每个频率下,每个模式都有一个相关的有效折射率,该折射率决定了它们的传播速度、有效波长以及衰减程度(如果模型中存在损耗)。我们使用色散图来绘制有效折射率随频率变化的曲线。

波导的色散图如上所示。由于存在大量的模式交叉,因此有必要对特征模式进行分类,以便正确标记。
在模式分析研究的原始输出中,没有以任何有意义的方式有效折射率进行分组或排序,因为求解器没有这些模式的先验知识。我们采用重叠积分计算方法,按模态轮廓对这些特征值进行分类。现在,由于每个有效指数值都与特定的 或
模式相关联,因此我们可以轻松地使用滤波器和绘图选项在绘图图例中为每个模式着色和标注。请注意,这种方法能够正确解析多模式交叉以及特征值非常接近的模式,例如
和
模式的交叉。
深入理解风力涡轮机叶片或电动汽车电机等旋转部件的共振模态,对于稳定性分析或最大限度减少噪声和振动等应用至关重要。我们来看 COMSOL应用库中的一个基本示例:旋转叶片的基本特征频率模型 。
当矩形叶片以越来越大的角速度旋转时,预计会出现两种主要的竞争现象:应力刚化和旋转软化。前者由于离心效应产生的静态应力场使叶片变硬,从而对固有频率产生向上的影响。后者则由于运动的径向放大而使叶片软化,导致对固有频率的向下影响。这些效应的平衡在坎贝尔图中得到了最好的体现,即固有频率与旋转角速度的关系图。

旋转叶片的坎贝尔曲线图。请注意,模态 2 和 5 的特征频率明显增加。
上图是前 7 个特征模态的坎贝尔曲线图。总体而言,我们观察到固有频率呈上升趋势,这表明应力刚化起了很大作用。这在模态 2 和 5 中更为明显,在所研究的参数范围内,这两个模态的特征值急剧上升,并超过了其他模态的特征值。前 6 个模态的位移和应力如下图所示。

旋转叶片的前 6 个特征模态。
在更复杂的系统中,坎贝尔图中的固有频率可能更多,既有上升趋势,也有下降趋势。了解这些趋势并将其可视化,对于确定如临界转速等至关重要。通过模态重叠积分,可以轻松地对这些模态集的行为进行分类和追踪。
多物理场仿真在内燃机消声器的设计中发挥重要作用。除了模拟空气中的压力波外,还必须考虑空气与消声器外壳之间的相互作用,从而可以更加准确地模拟整个频率范围内的传输曲线。
声-结构相互作用的其中一种效应是引入更多的共振模式,这一点可以通过两个相关的示例来说明:消声器中的特征模式 和 带弹性壁消声器中的特征模式。我们来详细探讨后一个模型。在一定频率范围内对消声器横截面进行模式分析,以确定模式轮廓及其相应的截止频率。

带弹性壁的消声器色散图。除平面波模式(蓝色)外,由于空气与消声器壁之间的声-结构相互作用,还存在许多其他模式集。使用模式重叠积分法跟踪了其中的一个子集。
上面的色散图绘制了部分模式及其传播常数与频率的关系。显然,数据集中的趋势很可能与不同的模式系列相对应。例如,平面波模式形成了一条贯穿整个频率范围的对角直线。通过应用重叠积分,我们可以确认平面波模式的预期行为,并追踪整个频率范围内的其他几个模式。模式轮廓图如下所示。

上图显示了带弹性壁的消声器中的部分模式轮廓。
借助模型方法,我们甚至可以自动生成整个频率范围内的模式演变动画。
在模型方法的帮助下,在整个参数范围内对模式 3 的演变进行追踪并用动画演示。
上面的动画演示了模式 3 如何从接近其截止点的 160 Hz 急剧变化到研究的上限 400 Hz,过程中还跨越了其他几个特征模式。在模态重叠积分的帮助下,追踪单个模式集的演变变得更加容易。
在这篇博客中,我们演示了如何使用模态重叠积分方法在特征频率研究中追踪和分类模态。请点击下面的按钮进入 COMSOL 学习中心,了解相关内容:
此外,这篇博客中讨论的模型可在 COMSOL 案例库中下载: