优化表面 FFT 计算

如果使用核内存储,可以更快地创建表面时间历程。此外,使用静态网格后就可以节省计算资源。

如以下文本所述,此处描述的技法假设您计划按照批处理类型工作流程导出选定的解算数据。对于非批量的“结果探索”,建议使用原始技法。
  • 要使用核内存储,选择工具 > 数据集函数节点,然后激活核内表面 FFT 属性。

数据存储限制

此处所述的技术激活了表面时间历程和表面 FFT 的核内存储。它可以在批处理类型工作流程期间提供优化。同时,对于这些物理量(应用于表面网格时),中间结果不会存储在文件中,而是保留在内存中。该方法有两大影响:

  • 执行 FFT 所需的时间大幅减少(每次观察至少有 10 个时间是这样)。
  • 结果在已保存的模拟件中不保持一致,必须重新计算。

在批量运行中,由于生成的结果未序列化,必须在模拟运行期间导出它们,例如导出为硬拷贝 (.png) 或表 (.csv)。保存并关闭模拟后,所有 FFT 结果都将丢失,必须重新计算。对于事先决定待导出内容的工作流程,这是可以接受的。

核内工作流程的独立 FFT 更新

生成 FFT 数据的更常见方法是:

  1. 设置表面时间历程。
  2. 设置与时间历程相关的表面 FFT。
  3. 更新表面时间历程以生成数据。
  4. 更新表面 FFT 以生成数据。

由于所有数据都存储在核内,对于具有 N 步的时间历程及其相关的 FFT,需要用 B 分析块存储以下内容:

  • 时间历程的数据,其大小与 ~ N 成比例。
  • FFT 的数据,其大小与 ~ N/B 成比例。

通过这种存储,可以可视化时间历程和 FFT 中的所有状态。

但是,当 N 较大(1000s 或 10000s 中的值)时,此方法可能会占用所有内存,即使在更大的工作站上也是如此。对于这些情况,存在替代方法,即独立地更新表面 FFT 节点:

  1. 设置表面时间历程。
  2. 设置与时间历程相关的表面 FFT。
  3. 更新表面 FFT 以生成数据。

由于所有数据都存储在核内,对于具有 N 步的时间历程及其相关的 FFT,需要用 B 分析块存储 FFT 的数据,其大小与 ~ N/B 成比例。

通过此方法,可以仅可视化 FFT 中的所有状态。那些更常见工作流程的内存需求大幅减少。此外,由于内存使用量与 ~ N/B 成比例,可以通过增大 B 来进一步减小它。

用静态网格进行优化

创建这些时间历程的更常用方法涉及数据映射器,因为需要顾及网格的变异。但是,有了静态网格,只需复制数据即可,从而节省大量计算资源。

要用静态网格设置表面时间历程:
  1. 选择工具 > 数据集函数节点,然后激活核内表面 FFT 属性。
    此步骤使静态网格复制选项可用。
  2. 选择表面时间历程节点,例如 h(s) 1,然后将插值方法属性设为静态网格复制

表面时间历程的输入限制

静态网格复制选项处于活动状态时,必须:

  1. 选择用于映射的单个和单个目标
  2. 设置源 == 目标,即从单个源映射到自身。

否则 Simcenter STAR-CCM+ 将生成故障消息,如:

Invalid input: static copy requires the a single source/target, where source == target

正确配置输入源和目标后,可以构造时间历程。此过程中的输出有助于加快模拟运行,类似于以下情况:

Representation : multipart_1b1ps, Import State : State 1.
Static copy of field Pressure for time 0.001000
Representation : multipart_1b1ps, Import State : State 2.
Static copy of field Pressure for time 0.002000
...

相比之下,使用映射器的较常见技法通常包含以下输出:

Map and export data at time: 0.001

Map and export data at time: 0.002
...

正在复制的表面不应经受几何的任何更改(例如,由于重新划分网格或重新打印)。如果存在此类更改,则会出现一条出错消息,如:

Invalid cache for static copy, cannot be performed.

如果不存在网格运动,则静态网格不会发生此类错误。