表达式

Simcenter STAR-CCM+ 中,可以使用表达式定义属性值,表达式可通过函数语言(C 编程语言的子集)编写。表达式可以定义数学表达式或执行其他操作,例如,在模拟中从 XY 表对表格数据进行插值。

表达式语法包括具有以下功能的符号和规则:
  • 标识运算符和函数(例如,+、*、<、sin()、grad()、interpolateTable())
  • 允许使用现有模拟对象(例如,场函数和报告)作为变量

有关详细信息,请参见表达式语法

在以下情况下,表达式有效:
  • 表达式的语法正确
  • 表达式计算为由使用表达式的上下文确定的数据类型。

    例如,如果使用表达式定义不是空间函数的标量,则表达式必须计算为单个标量值。如果计算为矢量或值的标量场,则表达式无效。

Simcenter STAR-CCM+ 提供了一个表达式编辑器,可以简化编写有效表达式的过程。有关详细信息和说明,请参见使用表达式编辑器

立即检查属性中的表达式值

在属性中,如果值属性是表达式,编辑器将提供 i 按钮,单击此按钮可以查看相应表达式的计算值。为值函数输入表达式时(编辑此属性时),i 按钮也可用于对文本字段中的输入进行动态计算。计算结果显示在工具提示中。

此功能的运行方式如下:

  • 如果当前属性的值是常数且未编辑,则 i 按钮不会显示。
  • 如果表达式无效,则错误消息将替换工具提示中的计算值。
  • 必须手动单击 i 按钮才能触发计算并在工具提示中显示结果。

此功能仅适用于值函数,如标量和矢量物理量以及坐标。它不适用于随空间变化的函数。

上下文和数据类型

根据表达式定义的对象,表达式必须计算为相应的数据类型。使用现有模拟对象作为变量时,考虑表达式定义何种类型的对象。由于只有场函数可以是空间函数,因此仅当表达式定义取决于空间的用户场函数时,才使用空间变量场函数作为变量。在所有其他情况下,使用空间不变量物理量作为变量。

下表列出了可以使用表达式定义的对象以及每个对象的相应数据类型:
上下文 数据类型
常数输入

使用常数方法定义标量和矢量(例如,边界值、材料属性和运动设置)时(请参见标量和矢量分布),可以使用计算为空间不变量物理量的表达式。在此上下文中,“常数”表示在每个时间步(或迭代)保持恒定,因此表达式可能与时间相关。

根据值的类型,表达式必须计算为单个标量或矢量(而非标量或矢量场)。定义常数分布的表达式可以使用以下对象作为变量:
  • 报告(系统报告除外)
  • 参数
  • 空间不变量场函数,如时间

有关更多信息,请参见常数分布

用户场函数
根据场函数的类型,表达式必须计算为标量、矢量或张量。定义场函数的表达式可以是空间函数或为空间不变量。可以使用以下对象作为变量:
  • 报告(系统报告除外)
  • 参数
  • 空间不变量场函数,如时间
  • 空间变量场函数,如压力

有关更多信息,请参见创建用户自定义场函数

表达式报告
在每个时间步,表达式必须计算为单个标量值。定义报告的表达式可以使用以下变量:
  • 报告(系统报告除外)
  • 标量参数
  • 空间不变量场函数,如时间

有关更多信息,请参见表达式报告

参数

根据参数的类型,表达式必须计算为单个标量或矢量值(而非标量或矢量场)。定义参数的表达式只能使用其他参数作为变量。参数不能与时间相关。

有关更多信息,请参见全局参数设计参数

坐标

坐标是由三个标量类型组成的复杂数据结构(表示为单个矢量值),每个标量类型都有自己的单位。坐标表达式必须计算为矢量值,并且可以使用由标量或矢量全局参数构建的表达式定义。

坐标值及其各自单位的含义在不同坐标系下显著不同。因此,更改坐标系时,表达式将在旧坐标系下进行计算,转换为新的坐标系后,该坐标的表达式将被替换为新的计算值。

局部坐标系属于特殊情况,在这种情况下,Simcenter STAR-CCM+原点位置视为坐标,将方向(如 X 方向)视为矢量数据类型(不要与矢量物理量混淆)。
更新频率触发器

检查和编辑三个更新频率触发器时,可以将频率开始停止值组合为表达式。这些表达式只能使用参数,以使其在整个模拟运行过程中保持恒定。这些属性的维度必须与字段的预期维度相对应。

有关更多信息,请参见全局参数

示例

表达式可以计算为标量、矢量或张量,这些物理量可能取决于空间和时间。下表中提供了每种数据类型的示例,并列出了可以使用每个表达式定义的对象。

这些示例不解释每个表达式的语法。有关详细信息,请参见表达式语法

计算为: 示例: 可用于定义:
不随空间变化、与时间无关的标量
3*sin(3.14/2)
  • 常数标量输入
  • 表达式报告
  • 标量参数
  • 标量场函数
sin(${angle})^2

其中,angle 为不随空间变化的场函数、报告或标量参数。

  • 常数标量输入
  • 表达式报告
  • 标量参数(仅当 angle 为标量参数时)
  • 标量场函数
不随空间变化、与时间相关的标量
1/exp(${Time})

其中,Time 为时间场函数。

  • 常数标量输入
  • 表达式报告
  • 标量场函数
在空间上发生变化的标量值(可以与时间相关)
grad(${Pressure})

其中,Pressure 为在空间上发生变化的标量场函数。

标量场函数
div($${Velocity})

其中,Velocity 为在空间上发生变化的矢量场函数。

标量场函数(矢量的发散计算为标量)
不随空间变化、与时间无关的矢量
[0,-1,0]
(相对于坐标系定义)
  • 常数矢量输入
  • 矢量参数
  • 矢量场函数
$${angularVelocity}/2

其中,angularVelocity 为不随空间变化的矢量场函数或矢量参数。

  • 常数矢量输入
  • 矢量参数(仅当 angularVelocity 为矢量参数时)
  • 矢量场函数
不随空间变化、与时间相关的矢量

(不随空间变化)

$${angularVelocity}/exp(${Time})

其中,Time 为时间场函数。

  • 常数矢量输入
  • 矢量场函数
在空间上发生变化的矢量值(可以与时间相关)
$${Velocity}/2

其中,Velocity 为在空间上发生变化的矢量场函数。

矢量场函数
张量
$$${Stress}/exp(${Time})

其中,Stress 为张量场函数。

张量场函数