# Time-Averaged Probe Outputs

Time-Averaged Probe Outputs in Flow360 allow you to collect statistical data over time during unsteady simulations, providing valuable insights into time-averaged flow behavior.

Note: Time-averaged outputs are only available when using unsteady time stepping.


# 📋 Available Options

Option Description Unit
Name A descriptive name for the time-averaged probe output
Entities Points or point arrays where variables will be monitored
Output Fields Flow variables to monitor at specified locations
Start Step Physical time step to start calculating averaging time steps
Frequency Frequency at which output is saved time steps
Frequency Offset Offset at which output begins time steps

# 🔍 Detailed Descriptions

# Name

A user-defined name to identify this specific time-averaged probe output configuration.

  • Default: Time Average Probe Output or Time Average Surface Probe Output
  • Example: Wing wake time-average analysis
  • Notes: Choose descriptive names to easily identify outputs when reviewing results.

# Entities

The specific points or arrays of points where time-averaged flow variables will be monitored.

  • Default: None (user must define at least one probe)

  • Example: A point at (0, 1.5, 0), or a line of points between two locations

  • Notes: Points can be added individually or as arrays (lines) with evenly distributed points.

  • Point Definition:

    • Name: A unique identifier for the probe
    • Location: The 3D coordinates of the probe point
  • Point Array Definition:

    • Name: A unique identifier for the array
    • Start: The 3D coordinates of the start point
    • End: The 3D coordinates of the end point
    • Number of Points: How many points to place along the line

# Output Fields

The flow variables that will be time-averaged at the specified probe locations.

  • Default: None (user must select at least one field)
  • Example: primitiveVars, Cp, Mach
  • Notes: Select only the fields you need for your analysis. See Available Output Fields for a complete list of supported variables.

# Start Step

The physical time step at which time-averaging begins.

  • Default: -1 (at end of simulation)
  • Example: 100 (begin averaging from the 100th physical time step)
  • Notes: Use positive integers to start averaging from a specific time step.

# Frequency

How often (in physical time steps) the time-averaged data is saved.

  • Default: 1 (every physical time step)
  • Example: 10 (save every 10th physical time step)
  • Notes: Set to a positive integer to save at that interval, or -1 to save only at the end.

# Frequency Offset

Defines when the first time-averaged output occurs.

  • Default: 0 (first output at beginning of simulation)
  • Example: 5 (first output at the 5th time step)
  • Notes: With Frequency=10 and Frequency Offset=5, outputs occur at steps 5, 15, 25, etc.

💡 Tips

# When to Use Time-Averaged Outputs

  • Use time averaging when you need statistical flow behavior rather than instantaneous snapshots
  • Particularly useful for unsteady flows with periodic or chaotic behavior
  • Effective for filtering out noise and revealing underlying flow patterns

# Selecting the Right Start Step

  • Set Start Step after initial transients have passed for more meaningful averages
  • Monitor convergence of your unsteady simulation to determine appropriate Start Step
  • Too early: averages may include non-physical startup transients
  • Too late: may miss important physical phenomena

# Setting Appropriate Frequency

  • For long simulations, use higher Frequency values to reduce storage requirements
  • For detailed time evolution of averages, use lower Frequency values
  • Balance between data resolution and file size

# Point Placement Best Practices

  • Place points in regions of interest (wakes, boundary layers, separation regions)
  • Use point arrays to capture gradients across important flow features
  • For boundary layer analysis, create point arrays normal to surfaces

# Output File Management

  • Time-averaged outputs generate separate history files from regular outputs
  • File naming convention: [case_name]_TimeAvg[output_name].csv
  • Monitor file sizes when using many output points with high output frequency

❓ Frequently Asked Questions

  • When should I use time-averaged outputs instead of regular outputs?

    Time-averaged outputs are ideal for unsteady simulations where you want to analyze the statistical behavior of the flow rather than instantaneous values. They help filter out noise and reveal underlying flow patterns.

  • Can I have both time-averaged and instantaneous outputs for the same points?

    Yes, you can define both regular probe outputs and time-averaged probe outputs for the same points to monitor both instantaneous and time-averaged values.

  • How does the averaging calculation work?

    Flow360 calculates a running average from the Start Step specified until the end of the simulation. The average is computed and saved at the frequency specified.

  • Does time-averaging increase computational cost?

    Time-averaging adds minimal computational overhead as it's primarily a post-processing operation, but it does require additional memory to store the averaged values.

  • What happens if I set Start Step to -1?

    Setting Start Step to -1 means the time-averaged output will only be calculated and saved at the end of the simulation, providing a single averaged value over the entire simulation (after any specified start step).

  • Can I use time-averaging with steady simulations?

    No, time-averaged outputs are only available when using unsteady time stepping methods, as they require time evolution to calculate meaningful averages.


🐍 Python Example Usage

# Time Average Probe Output Example

# Define a time average probe output with individual points
time_avg_probe_output = fl.TimeAverageProbeOutput(
    name="time_average_probe_group_points",
    entities=[
        fl.Point(
            name="Point_1",
            location=(0.0, 1.5, 0.0) * fl.u.m,
        ),
        fl.Point(
            name="Point_2",
            location=(0.0, -1.5, 0.0) * fl.u.m,
        ),
    ],
    output_fields=["primitiveVars", "Mach"],
    start_step=4,              # Start averaging at the 4th physical step
    frequency=10,              # Output every 10th physical step
    frequency_offset=14,       # First output at the 14th physical step
)

# Time Average Probe Output with Point Arrays Example

# Define a time average probe output with point arrays
time_avg_probe_output_lines = fl.TimeAverageProbeOutput(
    name="time_average_probe_group_lines",
    entities=[
        fl.PointArray(
            name="Line_1",
            start=(1.0, 0.0, 0.0) * fl.u.m,
            end=(1.5, 0.0, 0.0) * fl.u.m,
            number_of_points=6,
        ),
        fl.PointArray(
            name="Line_2",
            start=(-1.0, 0.0, 0.0) * fl.u.m,
            end=(-1.5, 0.0, 0.0) * fl.u.m,
            number_of_points=3,
        ),
    ],
    output_fields=["primitiveVars", "Mach"],
    start_step=4,
    frequency=10,
    frequency_offset=14,
)

# Time Average Surface Probe Output Example

# Define a time average surface probe output
time_avg_surface_probe_output = fl.TimeAverageSurfaceProbeOutput(
    name="time_average_surface_probe_group_points",
    entities=[
        fl.Point(
            name="Point_1", 
            location=(1, 1.02, 0.03) * fl.u.cm
        ),
        fl.Point(
            name="Point_2", 
            location=(2, 1.01, 0.03) * fl.u.m
        ),
        fl.Point(
            name="Point_3", 
            location=(3, 1.02, 0.03) * fl.u.m
        ),
    ],
    target_surfaces=[
        fl.Surface(name="Surface_1", geometry["surface1"]),
        fl.Surface(name="Surface_2", geometry["surface2"]),
    ],
    output_fields=["Mach", "primitiveVars", "yPlus"],
    start_step=4,
    frequency=10,
    frequency_offset=14,
)

# Time Average Surface Probe Output with Point Arrays Example

# Define a time average surface probe output with point arrays
time_avg_surface_probe_output_lines = fl.TimeAverageSurfaceProbeOutput(
    name="time_average_surface_probe_group_lines",
    entities=[
        fl.PointArray(
            name="Line_1",
            start=(1.0, 0.0, 0.0) * fl.u.m,
            end=(1.5, 0.0, 0.0) * fl.u.m,
            number_of_points=6,
        ),
        fl.PointArray(
            name="Line_2",
            start=(-1.0, 0.0, 0.0) * fl.u.m,
            end=(-1.5, 0.0, 0.0) * fl.u.m,
            number_of_points=3,
        ),
    ],
    target_surfaces=[
        fl.Surface(name="Surface_1", geometry["surface1"]),
        fl.Surface(name="Surface_2", geometry["surface2"]),
    ],
    output_fields=["Mach", "primitiveVars", "yPlus"],
    start_step=4,
    frequency=10,
    frequency_offset=14,
)