访问报告值和同位场函数值
在表达式中,除了总体报告结果之外,还可以使用 getReportValue 函数提取标量报告中所含零部件子集的标量值。此外,可以使用 getCollocatedValue 函数在由最大值或最小值报告计算的值位置提取场函数的值。
getReportValue
运算符语法为:
getReportValue(${Scalar Report}, {"part name" | @Filter("filter name")}, {LITERAL | PATTERN})
其中:
-
Scalar Report 是标量报告场函数的名称。
- part name 可以是标量报告所引用部件的文本名称,也可以是字符串模式。第三个参数决定应用哪个选项。字符串模式遵循正则表达式的规则,其中
*
、+
和?
等字符具有特殊含义。part name 指定的必须是 Scalar Report 本身所包含部件列表的子集。 -
可以使用已在part name 字符串。例如,节点中定义的过滤器来指定部件选择,而不是用
其中,getReportValue(${Minimum1Report}, @Filter("InletParts"))
InletParts
是包含多个部件的过滤器的名称。 - 第三个参数 LITERAL 或 PATTERN 表示第二个参数的输入类型(并为可选)。如果忽略它,则 getReportValue(${Scalar Report}, "name") 等同于 getReportValue(${Scalar Report}, "name", PATTERN)。
注 | 此功能仅适用于标量值。 |
- 算术、逻辑和三角运算符
-
-
支持算数二进制运算符(+、-、*、/ 等),定义的行为如下所示:
getReportValue($report1, "nameA", LITERAL) + getReportValue($report2, "name")
或
getReportValue($report2, "name") + getReportValue($report1, "nameA", LITERAL)
导致报告 report1(报告 1) 的 nameA(名称 A) 零部件值添加到对应于字符串模式 name(名称) 的 report2(报告 2) 零部件值,且
getReportValue($report1, "nameA") + getReportValue($report2, "nameB")
的总体值导致添加公共零部件的零部件值,同时还添加总体值。结果的零部件列表由零部件 nameA(名称 A) 和 nameB(名称 B) 的并集组成。将为这两个报告中都不存在的每个零部件输出每个零部件错误 nonexistent report part(报告零部件不存在),这会导致整体错误状态为 incomplete computation(计算不完整)。
- 支持逻辑运算符,且行为类似于与每个零部件值、总体值和缺少零部件错误相关的二进制运算。
- 支持三角函数和其他杂项函数,例如,sqrt(平方根)、log(对数)、floor(下限) 和 ceil(上限)。
-
- 条件运算符和替代值运算符
-
-
支持条件表达式。在以下示例中
getReportValue($report1, "nameA") > getReportValue($report2, "nameB") ? getReportValue($report3, "nameC") : getReportValue($report4, "nameD", LITERAL)
以下表达式的总体值
getReportValue($report1, "nameA") > getReportValue($report2, "nameB")
确定该表达式的输出为
getReportValue($report3, "nameC") 还是 getReportValue($report4, "nameD", LITERAL)。
-
支持替代值函数。在以下示例中
alternateValue(getReportValue($report1, "nameA"), 1.0)
如果因某种原因而不能计算 getReportValue($report1, "nameA"),则将使用替代值 1.0。注意,计算 getReportValue($report1, "nameA") 时出错不会生成替代值 1.0。
-
- getReportValue 运算符用例
-
假设报告 MaximumA(最大值 A) 包含以下零部件的列表:part(零部件)、part 1(零部件 1)、part surface 1(零部件表面 1)、part 2(零部件 2)、plane section 1(平面截面 1)、region 1(区域 1)、boundary 1(边界 1)、boundary 2(边界 2) 和 boundary 3(边界 3):
getReportValue($MaximumA, "part.*", PATTERN)
生成以下项的零部件值:
- part(零部件)
- part 1(零部件 1)
- part surface 1(零部件表面 1)
- part 2(零部件 2)
和上述四个零部件值的最大值的总体值(而不是 MaximumA(最大值 A) 报告值)。
getReportValue($MaximumA, "part", LITERAL)
不生成零部件值,但生成 part(零部件) 报告值的总体值。
getReportValue($MaximumA, "part", PATTERN)
生成零部件值和总体值(二者并无区别)。可从 LITERAL 选项获得不同的输出。
getReportValue($MaximumA, "part.*", LITERAL)
生成错误并显示 nonexistent report part(报告零部件不存在),因为零部件 part.*(零部件.*) 不存在。
getReportValue($MaximumA, ".* 1", PATTERN)
生成以下项的零部件值:
- part 1(零部件 1)
- part surface 1(零部件表面 1)
- plane section 1(平面截面 1)
- region 1(区域 1)
- boundary 1(边界 1)
和上述五个零部件值的最大值的总体值。
正则表达式中使用的字符串模式的常见示例包括:- .*- 所有零部件
- .*surface(.*表面) - 以“surface”结尾的所有零部件
因此,可以使用以下语法:
getReportValue($reportFF, ".*")
与运行报告操作类似,此方法生成所有零部件的每个零部件值以及总体报告值的输出。
如果将 getReportValue 运算符包括在表达式报告中,将获得标量报告的部分零部件报告值。如果表达式报告具有零部件值,则会将表达式报告输出修改为类似于标量报告输出。因此,
getReportValue(${Scalar Report}, "name", LITERAL)
不生成零部件值,而是仅生成等于零部件报告值的总体值。但是,
getReportValue(${Scalar Report}, "name")
或
getReportValue(${Scalar Report}, "name", PATTERN)
生成零部件值和总体值。
getCollocatedValue
此运算符可用于在由最大值或最小值报告计算的值位置提取场函数的值。例如,最大值报告计算指定场函数的最大值。使用 getCollocatedValue 运算符,可以在最大值报告计算的位置指定其他场函数的值。
运算符语法为:
getCollocatedValue(${report name}, ${field function name}, "part name", PATTERN|LITERAL)
其中:
- report name(报告名称) 为报告的名称。
- field function name(场函数名称) 为在报告值位置计算的标量场函数名称。
- part name(零部件名称) 是一个可选参数,指定包括在报告中的零部件的列表子集。可以使用文字名或字符串模式指定零部件的名称。
- 当包括零部件时,参数 LITERAL 或 PATTERN 表示用于指定 part name(零部件名称) 的方法。如果省略,则默认为 PATTERN。