学习中心

COMSOL API 概述


使用 COMSOL 开发多物理场耦合仿真模型或仿真 App 时,您可以使用 COMSOL API 自动执行工作流程、为仿真 App 添加功能,以及与外部工具进行集成。本文概述了 API 的功能、访问方式,以及如何查找相关应用案例和学习资源。 

COMSOL API

COMSOL API 是 COMSOL Multiphysics® 中所有编程接口的通用基础。无论您是在 App开发器中编写方法,使用 LiveLink™ for MATLAB® 从 MATLAB® 中驱动仿真,还是通过 LiveLink™ for Excel® 从 Excel® 中运行模型,您始终都在与驱动用户界面(UI)的相同底层类和数据结构进行交互。若要与现有代码库集成,您可以在例如 Eclipse 等集成开发环境(IDE)中开发 Java 代码,然后通过编译的 Java 类文件调用 API。 

无论您以何种方式访问,都可以通过 COMSOL API 完整运行几何建模、网格划分、求解、可视化和结果计算。简言之,您在 COMSOL® 用户界面中执行的任何建模任务都可以通过 API 完成。此外,无论是电磁学、结构力学、声学、流体流动、传热、化学工程,还是任意多物理场的耦合,API 在所有物理场接口都保持一致。

您可以使用 COMSOL API 进行以下操作:

  • 自动执行重复的建模任务
  • 以编程方式导入 CAD 文件和材料数据
  • 处理网格和几何数据
  • 处理随机数据
  • 在无用户界面的环境中运行仿真,以作为大型工作流程或网络应用程序的一部分

如需查看如何通过 App 开发器使用 API 执行这些任务的示例,请参阅下列博客文章:

通过 App 开发器使用 COMSOL API

最直接的使用 COMSOL API 的方法是通过 App 开发器与 Java 配合使用。这种方法无需额外安装,只需在标准 Windows® 系统上安装 COMSOL Multiphysics®,然后就可以通过方法编辑器与 Java 配合使用 COMSOL API,这是一个内置在 App 开发器中具有自动编译功能的轻量级开发环境。 

您可以导航到 App 开发器的工作区,右键单击开发树中的 方法 节点并选择 新建方法 来创建方法。

作为示例,我们输入了下图所示的方法,这是为圆柱形钢棒模型设置完整的三维传热仿真所需的最少代码。钢棒的一端保持温度不变,并在整个钢棒上添加空间随机分布热源。我们将此方法命名为 runHeatTransferSimulation。包含此方法的相应 MPH 文件可在此处下载:heat_transfer_in_cylindrical_rod.mph

The Application Builder showing the code for a method that sets up a model. The Application Builder showing the code for a method that sets up a model. 使用 COMSOL API 设置圆柱形钢棒的三维传热仿真。

只需右键单击树中的 runHeatTransferSimulation 节点并选择 运行,即可运行此方法代码。

The context menu for a method in the Application Builder tree, showing the Edit and Run options.
运行包含 COMSOL API 代码的传热仿真方法。

下图显示了模拟结果,即钢棒表面的温度绘图。

The Graphics window showing a volume plot of a cylinder with a color gradient indicating the temperature. The Graphics window showing a volume plot of a cylinder with a color gradient indicating the temperature. 钢棒中的模拟温度场。

您还可以使用 App 开发器开发仿真 App,当用户在 App 用户界面中执行特定操作时调用全部或部分方法。更多信息,请参阅:创建仿真 App 入门教程

下图显示了一个 App 中所包含的多个方法的其中之一,用于计算指定频率所需的音叉长度。该示例 App 可在软件 文件 > 案例库 中获取,或通过 案例下载 在线获取。

A method with API code is shown in the Application Builder. A method with API code is shown in the Application Builder. 音叉仿真 App 方法中的 API 代码。

在方法编辑器中录制和运行代码

如何编写类似上文示例中使用的 API 代码呢?您当然可以查阅 Application Programming Guide。不过,生成代码最快的方法是使用 主屏幕 选项卡上的 录制方法 按钮,通过录制您在模型开发器中执行的设置操作来生成新方法,而无需掌握大量的编码专业知识。 

The Main ribbon group on the Hometab in the Application Builder with the Record Method button highlighted.
录制方法中 API 代码的按钮。

如果要将录制的代码添加到现有方法中,可以单击 方法 选项卡上的 录制代码 按钮。 

使用 录制方法录制代码 工具时,COMSOL Desktop® 窗口会以红色轮廓框加以标识。

A red frame surrounds the workspace while one of the recording operations is enabled. A red frame surrounds the workspace while one of the recording operations is enabled. 在录制过程中,COMSOL Desktop® 窗口显示色轮廓。

我们可以使用此方法构建前文中的加热钢棒模型,具体步骤如下:

  1. 启动一个 COMSOL Multiphysics® 新会话,并单击 新建 窗口中的 空模型 按钮。

  2. 单击 录制方法 按钮并导航到模型开发器的工作区。

  3. 使用模型开发器的功能设置模型。

  4. 切换回 App 开发器,并单击 主屏幕 选项卡上的 停止录制

  5. 方法编辑器中会显示生成的代码,在其中清除模型设置过程中可能出现的错误。

  6. 复制最终代码。

运行代码:

  1. 启动另一个 COMSOL Multiphysics® 会话,并单击 新建 窗口中的 空模型 按钮。

  2. 在 App 开发器的工作区中,添加一个方法并将复制的代码粘贴到方法编辑器中。

  3. 右键单击方法节点并选择 运行

Note: 除了在新会话中运行代码外,还可以在代码开头添加调用 clearModel(model),然后在同一会话中运行。但请注意,这将删除模型中的所有内容。

在 Java Shell 窗口中运行代码

6.3 版本中新增的 Java Shell 窗口 是一个交互式环境,为运行 Java 代码提供了命令提示符,支持方法编辑器的许多功能,如代码自动补全、高亮语法等。要打开 Java Shell 窗口,请转到模型开发器的 主屏幕 功能区选项卡,然后在 布局 组中打开 窗口 菜单并选择 Java Shell 选项。

使用 Java Shell 窗口运行代码比需要在模型开发器和 App 开发器之间来回切换以生成代码的方法更灵活。此外,从 Java Shell 窗口运行代码时,您可以访问模型中由代码创建或修改的各个部分或对象,还可以单击其中任何一个对象的标签,转到树中的相应节点。

如果要从 Java Shell 窗口运行代码,只需将代码粘贴进去并点击运行即可。

下图显示了在 Java Shell 窗口中运行(钢棒模型)代码的情况。

A cylinder with a color gradient is shown in the Graphics window above code run in the Java Shell window. A cylinder with a color gradient is shown in the Graphics window above code run in the Java Shell window. Java Shell 窗口运行钢棒模型的传热仿真。

将代码复制到剪贴板

在模型开发器中,您可以右键单击模型树中的节点,然后从 作为代码复制到剪贴板 子菜单中选择选项,自动创建可粘贴到方法中的代码。下图显示了选择 参数化曲面 几何对象的 全部设置 选项。

A context menu in the Model Builder tree showing the Copy as Code to Clipboard menu and the Create, Get, and Set All options.
在模型开发器的树节点中使用 将代码复制到剪贴板 功能。

下图显示了从剪贴板复制到 Java Shell 窗口的相应代码,这是 录制代码录制方法 工具的轻量级替代工具。

Code generated from Copy as Code to clipboard is shown in the Java Shell window.
使用 将代码复制到剪贴板 功能生成的代码粘贴到 Java Shell 窗口。

创建和使用插件

为了在模型开发器中自定义工作流程,您可以在 App 开发器中创建方法调用或设置表单,并将其直接显示在模型开发器中。由于方法调用或设置表单存储在单个 MPH 文件中,因此在不同会话中重复使用或与同事共享可能会很麻烦。解决办法是根据方法调用、设置表单或自定义功能区选项卡将功能打包为插件,并存储在用户定义的插件库中。COMSOL Multiphysics® 还提供了几个内置插件库,通过研究这些内置插件中的表单和方法,您可以快速学会如何构建自己的插件。

创建插件与创建仿真 App 非常相似,但也有一些区别:插件不会打开自己的 图形 窗口,而是使用 模型开发器 中的主 图形 窗口。此外,插件应能在任何模型上运行,但如果不能运行,则应发出清晰、可控的错误信息。

下图显示了使用内置的 图像到曲线 插件创建的模型,展示了可以开发的工具种类。这篇博客文章 介绍了如何使用插件。

A gray meshed I-Beam is shown in the Graphics window. A gray meshed I-Beam is shown in the Graphics window. 使用 图像到曲线 插件创建轮廓曲线,并通过拉伸生成的工字梁钢。

进一步学习:方法编辑器、Java Shell 窗口和插件

有关更多使用 Java Shell 窗口、方法编辑器和插件的详细信息,请参阅 App 开发器简介Application Programming Guide。请注意,方法编辑器Java Shell 窗口仅适用于 Windows® 操作系统。

将模型保存为 Java 文件

如果您使用模型开发器建立了模型,但忘记使用 录制代码录制方法 工具,而又想了解相应的 API 命令,可以将模型保存为 Java 文件。具体操作为:从 文件 菜单中选择 另存为

The File menu opened with the Save As option highlighted in light blue.
文件 菜单中选择保存 Java 模型文件。

然后,在文件浏览器中选择 Java 模型文件(.java) 选项,将文件保存为可单独编译的 Java 文件。

The Save as type menu opened in a file browser and the Model File for Java (*.java) option selected in dark blue.
文件浏览器中显示的 Java 模型文件 保存选项。

下图显示了文件 heat_transfer_in_a_rod.java 在文本编辑器(此处为 Notepad++)中的显示效果:

The API code for a steel rod is shown in a text editor that can recognize Java code. The API code for a steel rod is shown in a text editor that can recognize Java code. 使用保存 Java 模型文件 选项后显示的钢棒传热仿真的 API 代码。

我们注意到这里的代码与之前在方法编辑器中显示的代码在结构上有所不同:新代码片段包含一个 Java 类头文件,

/*
 * heat_transfer_in_a_rod.java
 */
import com.comsol.model.*;
import com.comsol.model.util.*;
/** Model exported on Apr 23 2025, 13:38 by COMSOL 6.3.0.335. */
public class heat_transfer_in_a_rod {
  public static Model run() {
// The rest of the code</code>

注意:Java 类头文件也可在方法编辑器中使用。不过,默认情况下它是隐藏的,您需要在 首选项 窗口中启用此选项。例如,如果您想导入众多 Java 库中的某个库,Java 类头文件就会非常有用。

现在,您可以使用标准 Java 语法以任何方式修改这些代码,还可以将这些代码复制到您的模型或 App 中。或者,您也可以编译并运行代码,如下一节所述。

注意:保存为 Java 模型文件(.java) 会录制会话中的每个操作,包括错误步骤和多余操作。如需清理生成的代码,请在保存前选择 文件 > 压缩历史记录

编译 Java 源文件

使用 comsolcompile 命令,可以将 Java 源文件(.java)编译为 Java 类(bytecode)文件(.class)。对于典型的 Windows® 安装,您可以从 Windows® 命令提示符 窗口输入以下内容(假设我们使用的是 "C:\My Work Folder"):

"C:\Program Files\COMSOL\COMSOL63\Multiphysics\bin\win64\comsolcompile" "C:\My Work Folder\heat_transfer_in_a_rod.java"

结果将获得一个 Java 类文件 heat_transfer_in_a_rod.class,如下图所示。

The command to compile a Java file in a specified directory is shown in Command Prompt window. The command to compile a Java file in a specified directory is shown in Command Prompt window. 使用 命令提示符 窗口将 Java 源文件编译为 Java 类文件。

现在,您可以在 COMSOL Desktop® 中打开并运行这个 Java 类文件,方法是从 文件 菜单中选择 打开 并浏览该文件。这与打开 MPH 文件类似,但对于 Java 类文件,运行的是 Java 程序(可以包括您的修改)。

或者,您也可以使用 Windows® 命令提示符窗口运行:

"C:\Program Files\COMSOL\COMSOL63\Multiphysics\bin\win64\comsolbatch" -inputfile "C:\My Work Folder\heat_transfer_in_a_rod.class"

上述语法与从命令行运行 MPH 文件的语法类似:

"C:\Program Files\COMSOL\COMSOL63\Multiphysics\bin\win64\comsolbatch" -inputfile "C:\My Work Folder\heat_transfer_in_a_rod.mph"

请注意,运行 Java 类文件不同于运行嵌入到模型或 App 中的代码。此外,这种编译 Java 类代码的方式不应与使用 COMSOL Compiler™ 编译 App 相混淆。有关编译 COMSOL App 的信息,请参阅:构建和编译仿真 App 的基础知识

从用户界面调用外部函数

您可以从 COMSOL Desktop®全局定义 > 函数 > 外部 下添加外部 C 函数。这些函数以共享库的形式提供,因此您可以像任何内置或用户定义的 COMSOL 函数一样,通过轻量 C 封装函数调用原生 C 代码(或 Fortran、C++ 等代码)。此外,您还可以在 App 开发器添加外部 C 代码库,这样就可以在 App 中嵌入已编译的 C 代码。

进一步学习:使用 Java 文件和外部函数

有关使用 Java 源文件和类文件以及外部函数的详细信息,请参阅 Programming Reference Manual,此功能适用于 Windows®、Linux® 和 macOS 操作系统。

Windows®, Linux®, 和 macOS 系统中的功能概述

下表列出了在 Windows®, Linux® 和 macOS 操作系统中可用的功能:

功能 Windows® Linux® macOS
从 COMSOL Desktop® 保存 Java 源文件(.java)
在 COMSOL Desktop® 中打开并运行 Java 类文件(.class)
在 COMSOL Desktop® 中打开并运行 .mph 模型文件
从操作系统命令行运行 Java 类文件(.class)
从操作系统命令行运行 .mph 模型文件
从命令行使用 COMSOL Compiler™ 编译 App
从 COMSOL Desktop® 使用 COMSOL Compiler™ 编译 App - -
运行编译后的 App 和模型(包括嵌入代码)
从模型开发器或 App 开发器运行方法 - -
从模型开发器运行插件
使用 App 开发器构建 App - -
在方法编辑器(App 开发器)中编写/录制代码 - -
在 Java Shell 窗口中运行代码 - -

LiveLink™ for MATLAB®

LiveLink™ for MATLAB® 允许您直接使用 MATLAB® 脚本驱动 COMSOL Multiphysics®。MATLAB® 命令在后台调用 COMSOL API,启动研究、更新参数或导出结果。该接口依赖于与 Java 配合使用的 COMSOL API,因此,如果您见过 Java 版本,就会对函数名称和树形语法感到熟悉。

由于 API 已完全嵌入 MATLAB® 环境,因此您可以通过编程控制 COMSOL 模型的每个仿真阶段,包括几何建模、网格划分、物理设置、求解以及结果的可视化和计算。此外,您还可以从模型开发器调用 全局定义 下定义的 MATLAB® 函数,即,全局定义 > 函数 > MATLAB。有关详细信息,请参见 LiveLink™ for MATLAB®

MATLAB is open with transcribed information from COMSOL Multiphysics imported. MATLAB is open with transcribed information from COMSOL Multiphysics imported. COMSOL Multiphysics® 模型可以保存为 .m 文件,其中包含转录为 MATLAB® 代码的模型中的所有信息。将 .m 文件导入 MATLAB® 可直接编辑代码(和文件)。

LiveLink™ for Excel®

对于高级 Excel® 用户,LiveLink™ for Excel® 允许您直接从 Visual Basic for Applications(VBA)宏驱动 COMSOL Multiphysics®。当 COMSOL Multiphysics 选项卡中缺少命令或需要自动执行多步骤工作流程时,您可以使用 Excel 内置的 VBA 语言调用 COMSOL API。安装 LiveLink™ for Excel® 后,您就可以使用 VBA 的全部 API,无需离开电子表格环境即可调整模型设置、运行求解器和处理结果。更多信息,请参见 LiveLink™ for Excel®

Excel with multiple buttons to run subroutines, the VBA editor window open, and a graphics window showing the model from COMSOL Multiphysics. Excel with multiple buttons to run subroutines, the VBA editor window open, and a graphics window showing the model from COMSOL Multiphysics. 通过 Excel® 界面运行和求解模型时,会打开一个窗口,显示模型的几何结构、网格和结果,以及求解过程的进度。

API 接口用例概述

下表概述了一些 COMSOL API 最为重要的使用示例。

典型用例 软件组件 创建模型和编写代码 运行模型和代码
在模型开发器中自动执行建模步骤,并为 App 添加自定义操作 方法编辑器 COMSOL Multiphysics® COMSOL Multiphysics®, COMSOL Server™ 和编译的 App
即时更新模型的原型代码 Java Shell 窗口 COMSOL Multiphysics® COMSOL Multiphysics®
程序化表示的模型;服务器、集群或云批量运行;集成到网络后台 Java 类文件 COMSOL Multiphysics® COMSOL Multiphysics® 和 COMSOL Server™
服务器、集群或云批量运行 命令行驱动的 MPH 文件 COMSOL Multiphysics® COMSOL Multiphysics®
交互式命令行结果分析和可视化、自定义优化以及几何和求解操作;从 COMSOL Desktop® 环境运行 MATLAB® 代码 LiveLink™ for MATLAB® COMSOL Multiphysics® COMSOL Multiphysics® 和 COMSOL Server™
电子表格驱动的参数扫描或报告生成 LiveLink™ for Excel® 或 VBA COMSOL Multiphysics® COMSOL Multiphysics® 和 COMSOL Server™
运行定制编译的 C 代码 模型开发器或 App 开发器中的外部函数或库 COMSOL Multiphysics® COMSOL Multiphysics®, COMSOL Server™ 和编译的 App

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