Optimizing Surface FFT Calculation

You can create surface time histories faster if you use in-core storage. In addition, working with a static mesh provides the opportunity to save computational resources.

As detailed in the following text, the technique described here presumes a batch-type workflow from which you plan on exporting selected solution data. For non-batched "results exploration" the original technique is recommended.
  • To use in-core storage, select the Tools > Data Set Functions node and activate the In-core surface FFTs property.

Limitations on Data Storage

The technique described here activates in-core storage for surface time histories and surface FFTs. It can provide optimization during batch-type workflows. At the same time, for these quantities (when applied to the surface mesh), intermediate results are not stored in a file but kept in memory. This approach has two consequences:

  • The time taken to perform the FFT is greatly reduced (by at least 10 times, per observations).
  • Results do not remain consistent in a saved simulation file and must be recalculated.

In a batch run, as the generated results are not serialized they must be exported during the simulation run, for example as hardcopies (.png) or tables (.csv). Once the simulation is saved and closed, all FFT results are lost and must be recalculated. This is acceptable for workflows where you have decided beforehand what to export.

Independent FFT Updating for In-Core Workflows

The more common method for generating FFT data is:

  1. Set up a surface time history.
  2. Set up a Surface FFT dependent on the time history.
  3. Update the Surface time history to generate data.
  4. Update the Surface FFT to generate data.

As all data is stored in-core, for a time history of N steps and an FFT on it, with B analysis blocks you need to store the following:

  • Data for the time history which has size proportional to ~ N.
  • Data for the FFT which has size proportional to ~ N/B.

This storage allows you to visualize all states in the time history and the FFT.

However, when N is large (values in the 1000s or 10000s) this approach can consume all the memory, even on larger workstations. For these situations an alternative exists, independent updating of surface FFT nodes:

  1. Set up a surface time history.
  2. Set up a surface FFT dependent on the time history.
  3. Update the surface FFT to generate data.

As all data is stored in-core, for a time history of N steps and an FFT on it with B analysis blocks you need to store data for the FFT which has size proportional to ~ N/B.

This technique allows you to visualize all states in the FFT only. The memory requirements are much reduced from those of the more common workflow. Moreover, as memory usage is proportional to ~ N/B, you can reduce it further by increasing B.

Optimizing with Static Meshes

The more common method for creating these time histories involves data mappers due to the need to account for mutating meshes. However, with a static mesh, it is possible simply to copy the data, saving considerable computational resources.

To set up a surface time history with a static mesh:
  1. Select the Tools > Data Set Functions node and activate the In-core surface FFTs property.
    This step makes the Static Mesh Copy option available.
  2. Select the surface time history node, for example h(s) 1, and set the Interpolation Method property to Static Mesh Copy.

Limitations on Inputs to Surface Time History

When the Static Mesh Copy option is active you must:

  1. Select a single source for mapping and a single target.
  2. Set source == target, that is, map from a single source to itself.

Otherwise Simcenter STAR-CCM+ generates a failure message such as:

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

When the input source and target are correctly configured then you can construct a time history. Output during this process, which facilitates a faster simulation run, resembles the following:

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
...

By contrast, the more common technique using mappers often includes the following output:

Map and export data at time: 0.001

Map and export data at time: 0.002
...

The surface that is being copied should not undergo any changes to geometry (due to remeshing or reimprinting for example). If such a change exists, expect an error message such as:

Invalid cache for static copy, cannot be performed.

Such an error is not expected for a static mesh, provided there is no mesh motion.