学习中心

Course:

Defining Multiphysics Models

模型组件之间的多物理场耦合


在 COMSOL Multiphysics® 中,当您需要模拟系统中的多个组件,或包含子模型的完整模型时,可以根据需要手动耦合不同模型组件中的物理场,这类耦合是通过用户定义的方法手动耦合的一种示例。本文,我们将讨论如何执行这种特定类型的多物理场耦合,并提供了相关资源,以帮助您进一步了解在不同场景中如何实现这种耦合。

背景知识

在某些情况下,出于特定的原因或必要性(我们将在本文后面讨论),您可能需要对系统中的多个组件进行建模,然后将它们耦合起来以模拟一部分或整个系统。尽管 COMSOL Multiphysics® 软件并非传统的系统建模工具,但您仍然可以通过变量和派生变量,将多个组件建模并耦合进一个系统模型。在 COMSOL 软件中,每个物理场接口都定义了所模拟物理现象的方程、因变量和一组派生变量。例如,在下图中,一个理想的 0D 全混流反应器(CSTR)模型与一个使用派生变量的透析膜单元的 2D 模型进行耦合,模拟了一个真实的系统,在这个系统中,随着时间的推移不断泵入透析液,其中的盐会通过透析单元被去除。通过非局部耦合,还可以将一个组件中的变量映射到另一个不同空间维度的组件中完全不同的几何结构(后文将对此进行详细讨论)。

Schematic of the membrane dialysis model with the tank on the left and the membrane on the right, with the dialysate and permeate labeled. Schematic of the membrane dialysis model with the tank on the left and the membrane on the right, with the dialysate and permeate labeled.
A model tree from within the software with arrows pointing to the components that are coupled within the membrane dialysis model. A model tree from within the software with arrows pointing to the components that are coupled within the membrane dialysis model.

双层膜透析分析 教程模型的示意图(左)和各组件之间的耦合(右)。模型包含两个组件,即,一个 2D膜单元(组件 1)和 一个 0D 的 CSTR(组件 2)。它们通过以下方式耦合:将来自膜装置的流动定义为流入 CSTR 的进水,并将后者的流出定义为前者的入口条件。

下文,我们将详细介绍在多个模型组件之间使用此类耦合的方法。

多组件耦合的示例

包含多个组件并在它们之间进行耦合的模型包括系统模型(如果您正在使用子建模技术,需要将全局模型的结果映射到子模型,或在两个子模型之间建立联系),以及为了节省计算时间和资源而将任务拆分至多个组件。COMSOL 案例库中提供了一些多物理场模型示例以及其他一些演示此过程的示例,包括:

  • 圆柱形锂离子电池热建模-三维 教程模型,使用一维模型组件模拟电池化学,三维模型组件模拟电池温度。这两个组件由产生的热源和平均温度相关联。
  • 复合轮系的噪声辐射 教程模型,多体动力学和声学分析各自在单独的模型组件中进行,因此多体设置不会受到影响。 广义拉伸 非局部耦合算子用于映射模型几何之间的加速度。
  • 带压电换能器的超声波流量计 教程模型,由于模型的不同组件需要使用不同的离散化方法和瞬态求解器,因此整个模型被分成三个子模型。一致映射 非局部耦合算子用于映射子模型之间的结果并将它们相关联。
  • 球栅阵列中基于能量的热疲劳预测 教程模型,使用粗网格对微电子元件的完整模型进行分析,以大致找到设计中的关键部分,然后建立一个子模型对临界区域进行详细研究。通过非局部耦合以及 指定位移温度 边界条件,将包含全局模型的组件与包含子模型的组件进行物理场耦合。
  • 轮辋轮毂子模型 教程模型,在一个模型组件中建立完整的轮辋模型,以分析结构的刚度。然后使用第二个模型组件对辐条周围区域建模,使用精细网格分析应力集中。使用全局模型的位移作为局部子模型的边界条件来求解子模型。

无论耦合是如何实现的,或是出于何种目的,一个模型组件中的变量或解数据都可以在另一个模型组件中进行访问和使用。下文概述了将不同模型组件进行耦合的基本框架。

设置多组件耦合

有多种方式可以将模型组件之间的物理场进行耦合。虽然没有一套具体的步骤需要严格遵循,但我们还是概括了一个可供参考的方案,帮助您开展此类耦合工作。一般来说,可以通过使用非局部耦合的耦合算子和/或派生变量来实现,本文将对此进行介绍并演示详细步骤。

非局部耦合

非局部耦合通过耦合算子实现不同模型组件之间(或同一组件内的不同部分)的变量关联,可以将一个组件中的源模型几何(域、边界等)中的变量映射到另一个组件中的目标模型几何(或同一组件中的另一个几何实体)来创建这些耦合。

The COMSOL Multiphysics UI showing the Model Builder with the Definitions node and the expanded Nonlocal Couplings menu.
可以添加到模型组件的非局部耦合菜单,通过模型树中的 定义 节点访问。

A screenshot from within the software showing the Nonlocal Couplings button and the list of options.
添加 非局部耦合, 的按钮,可通过 定义 功能区选项卡访问。

这种映射方式的实现是通过耦合算子对源模型几何中作为变元提供的表达式进行计算,然后在目标模型几何中定义结果。COMSOL 博客文章使用线性拉伸算子访问非局部变量使用广义拉伸算子映射变量对此进行了详细解释。通过这些方法创建耦合的一般流程如下:

  1. 在各自的模型组件下添加物理场接口
  2. 为每个物理场接口定义物理场设置
  3. 定义多物理场耦合
    a. 为源组件添加非局部耦合
    b. 定义耦合算子
    c. 在目标组件中加入带有适当变元的耦合算子
    d. 求解模型方程
    e. 检查结果图
  4. 对每个后续多物理场耦合或组件间耦合重复步骤 3

上述流程将定义物理场分为了两部分(先定义每个物理场接口,然后定义耦合),学习中心关于通过用户定义的方法手动耦合的文章对其背后的逻辑进行了解释。也就是说,它允许你在为任何方程项自定义表达式时搜索因变量和派生变量,以及引用变量名。还需要注意的是,在上述过程中,非局部耦合必须被添加在包含待调用变量的组件下。然后,在其他模型组件的设置或定义中,使用正确的语法引用耦合算子。在此基础上,必须为耦合算子参数配置恰当的表达式,才能确保所需物理量在目标组件中被正确定义。

The COMSOL Multiphysics UI showing the Model Builder with the General Extrusion 1 and Multibody Dynamics 2 features highlighted and the Initial Values settings.
复合轮系的噪声辐射教程模型的设置。广义拉伸算子 在第二个组件中定义,并在第三个组件的 初始值 节点中使用该算子实现模型几何之间映射加速度

派生变量

除了使用非局部耦合外,在特定情况下,您还可以通过将一个模型组件的变量直接引入另一个模型组件的设置和定义中来管理组件之间的物理场耦合。如果源变量(例如组件 1 中的变量 A)通过全局选择定义(见变量表的 选择 列中 方程视图 节点),就可以实现这一点。由于这是“全局”变量,不与特定的域、边或点绑定,因此可以在任何其他接口中进行计算。

如果不是这种情况,而是在局部组件的特定几何选择(域、边、点)上定义变量,则无法在其他组件中直接使用,此时就需要借助耦合特征。

0D 模型组件的接口通过 全局 选择定义变量。在 反应工程化学 接口中,变量往往通过全局选择来定义,其目的是生成供其他接口使用的变量。

下表列出了一些这种耦合的示例:

模型 组件 组件间的耦合
膜透析的瞬态模型 • 2D 膜单元
• 0D 全混流反应器模型(CSTR)
1. 从膜流出的水流进入 CSTR
     • 浓度
     • 体积进料流率
2. 从 CSTR 流出的水被定义为膜单元的入口条件
     • 浓度
蛋白质吸附 • 0D 反应器系统
• 离子交换柱 3D 模型
1. 3D模型的 化学 接口收集来自 0D 模型的反应动力学数据、以及算得的扩散系数和流体密度
     • 生成空间相关模型 特征工具
氧化氮还原反应动力学分析 • 0D 平推流通道模型
• 完整的 3D 整体式反应器模型
1. 将反应动力学、热力学和传输特性从平推流通道模型传递到 3D 整体式反应器模型
     • 生成空间相关模型 特征工具

可以通过 访问任意物理场特征节点的 方程视图 节点,将一个模型组件中的派生变量纳入另一个模型组件的设置或定义中。您还可以设置用户自定义派生变量,并将其用于另一个模型组件的设置或定义。在通过此类方法耦合组件时,必须为变量或定义使用正确的语法。通过这些方法创建耦合的一般流程如下:

  1. 添加模型组件
  2. 在各自的模型组件下添加物理场接口
  3. 定义物理场设置
  4. 对随后的每个模型组件重复步骤 1-3
  5. 定义多物理场耦合
    a. 启用显示 方程视图 节点的选项
    b. 将一个模型组件中的变量合并到另一个模型组件中(注意,需要在变量前添加组件范围,例如, comp1 中的 comp1.phys.A 用于界定组件 1 中定义的变量。)
    c. 求解模型方程
    d. 检查结果
  6. 对每个后续多物理场耦合或组件之间的耦合重复步骤 5

上述流程的例外情况包括一些特定的应用领域,后者往往具有为其他模型组件的物理场接口生成和提供可用变量的功能,例如,用于化学和反应工程应用的 空间依赖性建模 功能,或用于控制系统应用的 PID 控制器 插件。

接下来,我们将以一个教程模型的扩展为例,介绍在多个模型组件之间耦合物理场的一种实现方法。

示例演示:带 PI 控制的热微执行器

为了演示多物理场模型中各组件之间的耦合物理现象,我们将再次使用模拟了焦耳热效应热膨胀热执行器教程模型。这是在学习中心定义多物理场模型 的课程中多次使用并详细讲解的同一示例,也可在软件的案例库中直接获取。

在本次演示中,我们将在一个模型组件中模拟器件的电热膨胀,并在第二个组件中模拟器件的控制系统。

在此例中,我们要控制热执行器的输入电压,使位移(在执行器顶端测量)精确保持在 2 微米。为此,我们创建了一个热微执行器教程模型的瞬态多组件版本,其中添加了一个 0D 组件,以提供一个控制输入电压的 PI 控制器。

The COMSOL Multiphysics UI showing the Model Builder with red brackets pointing to Component 2 and PID Controller 1.
The COMSOL Multiphysics UI showing the Model Builder with red brackets pointing to the Point Probe node, Electric Potential 1 boundary condition, Variables 1 node, and the Global ODEs and DAEs interface.
热微执行器教程模型的多组件版本的模型树。使用 PID 控制器插件(左)生成一个 0D 模型组件。通过将 0D 模型组件中的一个变量纳入 3D 模型组件的设置中,以及将 3D 模型组件中的点探针纳入 0D 模型组件的设置中,实现组件之间的物理场耦合(右)。

PID 控制器 插件使我们能够轻松为器件设置 PI(或 PID)控制器,并生成包含 PI 控制器常微分方程的 0D 模型组件,然后设置为在 0 V 至 25 V 的允许电位范围内实现合理的控制器响应(设置如图所示)。通过将一个模型组件中生成的变量和定义纳 入到另一个模型组件的设置中实现物理场耦合。

The COMSOL Multiphysics UI showing the Model Builder, PID Controller Settings window, and Graphics window, with the thermal microactuator model displayed. 含 PI 控制功能的热执行器模型截图,显示了 PID 控制器 插件的设置。


创建此热微执行器教程模型的多组件版本瞬态模型的过程如下:

  1. 建立模型并运行研究
    • 通过完全自动耦合方法在 3D 组件中创建模型
  2. 为 PI 控制创建定义
    • 在执行器顶端定义一个点探针
  3. 使用 PID 控制器 插件
    • 定义控制器参数
  4. 实现模型组件之间的物理场耦合
    • 通过用户自定义耦合的手动方法,在模型中建立反馈回路
  5. 运行研究并检查结果

使用完全自动耦合方法构建和设置此模型的方法已在相关主题的学习中心文章中进行了详细说明,而使用 PID 控制器 插件则在一篇博客文章中进行了详细介绍。因此,为简明起见,本文省略了构建模型的具体细节,将重点放在第 4 步:模型组件之间的物理场耦合。

组件之间的耦合

如前所述,我们希望输入(电势)基于器件位移的计算结果变化。为了监测执行器的位移并将其作为反馈信号输入 PI 控制器,我们在几何结构的最远端定义一个 点探针 ,并将位移幅值的表达式作为监测量输入。

The COMSOL Multiphysics UI showing the Model Builder, Point Probe Settings window, and Graphics window, which is displaying the model. The COMSOL Multiphysics UI showing the Model Builder, Point Probe Settings window, and Graphics window, which is displaying the model. 点探针 的设置,用于监测微执行器的位移。


该点探针随后被选为 PI 控制器使用的探针。创建 PID 控制器时,会生成一个 0D 模型组件,其中包括变量方程和表达式中的点探针,从而将设备 3D 模型中探针监测到的位移与 0D 的 PI 控制器模型组件实现耦合。

The COMSOL Multiphysics UI showing the Model Builder with Global Equations 1 highlighted and the Global Equations settings. The COMSOL Multiphysics UI showing the Model Builder with Global Equations 1 highlighted and the Global Equations settings.
PI 控制器的常微分方程,表达式中包括点探针。


The COMSOL Multiphysics UI showing the Model Builder and the Variables Settings window. The COMSOL Multiphysics UI showing the Model Builder and the Variables Settings window.
0D 模型组件的变量,表达式中包括点探针。


此外,在生成模型组件时,还可以使用 PI 控制器的控制变量 u_in_ctrl 作为输入到器件的电势,并输入到 3D 模型组件的 电势 边界条件的表达式中,从而将 0D 模型组件中由 PI 控制器控制的变化电势输入耦合到 3D 模型组件中的器件。

The COMSOL Multiphysics UI showing the Model Builder, the settings for the Electric Potential boundary condition, and the Graphics window.
电势 边界条件的 设置 窗口

在下文的视频教程中,您可以看到用户自定义耦合的手动方法的演示,其中将多个模型组件的多物理场模型的物理场进行了耦合。

视频教程:带 PI 控制的热微执行器

进一步学习

模型组件之间的物理场耦合的方法有很多种。如果您有兴趣查找包含多个模型组件且与您正在进行的建模内容相关的 COMSOL Multiphysics® 模型,我们建议您在软件的案例库中搜索 comp2 ,然后导航到与您正在模拟的物理场相适用的应用领域。

如果您有兴趣了解更多关于使用 PID控制器 插件的信息,推荐阅读博客文章:如何使用PID控制器插件模拟控制系统。博客中讨论的教程模型使用 PID 控制器的过程控制,演示了多个组件之间的物理场耦合。

如果您对拉伸算子的使用感兴趣,可以查阅 COMSOL Reference Manual 手册文档中的 “Nonlocal Couplings and Coupling Operators” 章节。如果您对包含多个组件且使用了 广义拉伸 算子的模型比较关注,请在案例库中搜索 comp2 @tag:genext 。您还可以查阅以下推荐的资源:


请提交与此页面相关的反馈,或点击此处联系技术支持