指定与 FMU 交换的标量值

FMU 模型公开可用于在协同仿真中交换的标量变量。这些变量可以表示输入、输出、参数或局部变量,这是由其因果关系定义的。

有关 FMU 变量及其属性的更多信息,请参见正式文档
在协同仿真过程中,Simcenter STAR-CCM+ 可以:
  • 将单值数据导出至 FMU 以用作输入变量
  • 导入由 FMU 计算的输出变量,并使用它们在 Simcenter STAR-CCM+ 模拟中设置边界条件
  • 设置 FMU 模型中使用的参数
  • 跟踪 FMU 局部变量的值
Simcenter STAR-CCM+ 提供两种方法用于与 FMU 交换输入和输出数据 - 协同仿真区域和链接值规范:

  • 协同仿真区指定与 FMU 交换数据的一组 Simcenter STAR-CCM+ 模型零部件(边界或区域)。通过协同仿真区从 FMU 导入的值存储为空间均匀场,可用于设置边界和区域。
  • 链接值规范通常用于交换不一定应用于边界或区域的一般数据。通过链接规范从 FMU 导入的值存储为单个值。

有关更多信息,请参见 FMU 链接参考

要在 Simcenter STAR-CCM+ 中定义交换物理量,则导入 FMU 中定义的变量设置。在导入过程中,Simcenter STAR-CCM+ 根据 FMU 输入和输出变量自动填充相关节点(导出的值导入的场区,或链接导出的值导入的值)。Simcenter STAR-CCM+ 还会分别根据 FMU 参数和局部变量填充参数跟踪值节点,这些节点位于[链接 1] > 条件节点下。由于参数和局部变量仅适用于 FMU,因此它们不会通过协同仿真区进行交换。

要确定 Simcenter STAR-CCM+ 是在协同仿真区还是链接下创建导入和导出规范,则指定 Simcenter STAR-CCM+ 用于解析 FMU 变量名称的命名约定:

  1. 选择用户库 > [导入的库]节点,然后将变量命名约定设为以下选项之一:
    • 平面 - 变量名称被视为单个平面字符串。根据变量的类型,Simcenter STAR-CCM+ 将创建以下节点:
      FMU 变量类型 变量名称示例 Simcenter STAR-CCM+ 导入/导出的值节点
      输入 component1.force [链接 1] > 条件 > 导出的值 > component1.force
      输出 component1.displacement [链接 1] > 条件 > 导入的值 > component1.displacement
      参数 component1.parameter1 [链接 1] > 条件 > 参数 > component1.parameter1
      局部变量 component1.local1 [链接 1] > 条件 > 跟踪值 > component1.local1
    • 结构化 - 包含分隔符的变量名称被视为分层名称。Simcenter STAR-CCM+ 使用分层名称创建区域(但参数名称始终被视为平面字符串)。根据变量的类型,Simcenter STAR-CCM+ 将创建以下节点:
      FMU 变量类型 变量名称示例 Simcenter STAR-CCM+ 导入/导出的值节点
      输入 component1.force [链接 1] > 区域 > component1 > 条件 > 导出的值 > force
      输出 component1.displacement [链接 1] > 区域 > component1 > 条件 > 导入的场 > displacement
      参数 component1.parameter1 [链接 1] > 条件 > 参数 > component1.parameter1
      局部变量 component1.local1 [链接 1] > 条件 > 跟踪值 > component1.local1
  2. 如果选择了结构化选项,则选择[导入的库]节点并设置以下属性:
    属性 设置
    名称解析方向 要指定在变量名称中确定分层的方向,选择向前(默认)或反转
    分层分隔符 指定定义分层分隔符的字符(默认为 "...")。
要导入 FMU 变量设置:
  1. 右键单击[链接 1]节点并选择导入设置
    Simcenter STAR-CCM+ 按之前所述填充相关节点。
如果使用协同仿真区交换值,则指定通过该区域与 FMU 交换数据的模型零部件(区域或边界)。将边界和区域分配给某个区的过程类似。例如,要将边界指派给某个区:
  1. 展开相关的边界节点区域 > [区域] > 边界 > [边界]
  2. 选择[边界] > 物理条件 > 外部程序耦合指定节点,并将外部程序耦合指定设为相关的协同仿真区。
要完成在某个协同仿真区下导入的场的定义:
  1. 对于[链接 1] > 区域 > [区域] > 条件 > 导入的场节点下的每个节点:
    1. 选择[导入的场]节点,并通过设置场模板属性来指定已导入数据的映射位置。
    2. 选择[区域] > > 初始值 > [导入的场]节点,并指定恒定的初始化值。
  2. 对于每个区域导入的场,Simcenter STAR-CCM+ 创建一个场函数,名为 Co-Simulation: [Field Name](协同仿真:[场名称])。使用这些场函数可设置相关的边界条件。例如,可以使用导入的位移来设置边界处的变形规范。
要完成在某个链接下导入的值的定义:
  1. 对于[链接 1] > 条件 > 导入的值节点下的每个节点,选择相应的[链接 1] > > 初始化值 > [导入的值]节点,并指定恒定的初始化值。
    Simcenter STAR-CCM+ 使用名称 [链接 1][FMU 变量名称] 来存储导入的值。可以在写入表达式时引用此值。
要完成已导出值的定义:
  1. 展开导出的值节点(在该链接下或在某个协同仿真区下)。
  2. 对于每个导出的值 > [导出的值]节点,将 设为要导出至 FMU 的单值物理量。根据 FMU 所需的数据类型,使用以下某一方法:
    数据类型 Simcenter STAR-CCM+ 中设置值的方法
    整型 键入整数。不能使用表达式。
    理想 提供计算为单个值的任何表达式。由于 FMU 变量为空间不变量,因此 Simcenter STAR-CCM+ 必须导出单值数据。要将空间相关场转换为单值,可以使用报告。在 Simcenter STAR-CCM+ 中,所有报告自动生成在每次迭代时返回报告值的场函数。可以将此单值场函数导出至 FMU 模型。

    尽管可以导出 FMU 支持的任何数据类型(实数、整数、布尔、字符串、枚举),但通常会导出类型为实数的标量。

    枚举 从下拉菜单中选择一个选项(FMU 模型描述文件包含决定可用方法的枚举类型定义)
    字符串 键入字符串。不能使用表达式。
    布尔运算 激活复选框为 true,停用复选框为 false。
    通过展开已导入库节点下的相关节点,可以将任何 FMU 变量和类型定义的数据类型可视化:



如果 FMU 模型包含可调参数,则可以在 Simcenter STAR-CCM+ 中设置它们。要删除参数:
  1. 选择相关的[链接 1] > 条件 > 参数 > [参数]节点,然后设置参数值。
    根据参数数据类型,可以使用为导出的值概况的相同步骤,以不同的方式指定参数值。
要运行协同仿真:
  1. 单击 运行)。
    Simcenter STAR-CCM+ 将加载 FMI 库并运行协同仿真。