# Periodic Boundary Condition

# 📝 Periodic Boundary

The Periodic boundary condition links two separate boundaries so that flow exiting one boundary enters the other, enabling simulation of infinitely repeating geometry with a reduced computational domain.


# 📋 Available Options

Option Description Unit
Surface Pairs Matching pairs of boundaries to be treated as periodic
Periodicity Type Type of periodicity (translational or rotational)
Rotation Axis Axis of rotation for rotational periodicity

# 🔍 Detailed Descriptions

# Surface Pairs

Matching pairs of boundaries that will be treated as periodic interfaces.

  • Accepted types: Pairs of Surface objects
  • Default: None (must be specified)
  • Example: front_plane AND back_plane
  • Notes: Flow360 handles the interpolation between periodic surfaces automatically, regardless of mesh topology.

# Periodicity Type

Defines how the flow is transformed between periodic boundaries.

  • Options:
    • Translational
    • Rotational
  • Default: Translational
  • Notes: Translational periodicity is typically used for linear arrays, while rotational periodicity is used for circular arrangements.

# Rotation Axis

The axis about which rotational periodicity is applied. Only available when Periodicity Type is set to "Rotational".

  • Default: None (required for rotational periodicity)
  • Example: Vector (0, 0, 1) for rotation around the z-axis
  • Notes: The rotation angle is determined automatically from the mesh geometry.

💡 Tips

# Mesh Preparation for Periodic Boundaries

  • For Translational Periodicity:

    • Periodic surfaces should have similar (but not necessarily identical) mesh resolution
    • Flow360 automatically handles the interpolation between periodic surfaces
    • No exact node matching is required between periodic pairs
  • For Rotational Periodicity:

    • Similar mesh resolution is recommended along the periodic interfaces
    • Flow360 automatically handles the rotational transformation
    • For best results, maintain similar element sizes across interfaces

# Common Applications

  • Translational Periodicity:

    • Airfoil or blade cascades
    • Heat exchanger channels
    • Infinite arrays of elements
    • Channel flow with repeating features
  • Rotational Periodicity:

    • Single blade passage in turbomachinery
    • Sectional analysis of axisymmetric components
    • Propeller/rotor blade analysis using one blade
    • Components with cyclic symmetry

# Performance Considerations

  • Periodic boundaries typically reduce computational cost significantly
  • For rotational cases, ensure sufficient sector size to capture relevant flow features
  • Verify that periodicity is a valid assumption for your flow physics

❓ Frequently Asked Questions

  • How do I determine if periodicity is appropriate for my simulation?

    Periodicity is appropriate when:

    • Your geometry repeats in a regular pattern
    • Flow conditions are expected to be identical across the repeating units
    • You're interested in the fully developed flow rather than entrance/exit effects
    • The problem has no major asymmetries that would invalidate the periodic assumption
  • What mesh requirements must be met for periodic boundaries?

    Flow360 is very flexible with periodic interfaces:

    • Non-matching meshes are fully supported through automatic interpolation
    • No specific node count or distribution requirements exist
    • Similar mesh resolution is recommended (but not required) at interfaces for best accuracy
    • Both conformal and non-conformal interfaces are supported
  • Can I use periodicity with other boundary conditions?

    Yes, periodic boundaries are often combined with:

    • Wall conditions for solid surfaces
    • Inflow/outflow for the flow direction perpendicular to the periodic directions
    • Symmetry planes for additional domain reduction
  • How many repeating units should I include in my periodic simulation?

    For most cases, a single repeating unit is sufficient. However, include multiple units when:

    • Vortex shedding or instabilities with wavelengths larger than one unit are expected
    • Flow features may develop with periodicity different from the geometric periodicity
    • Investigating possible asymmetric solutions in nominally periodic configurations
  • Can I use periodicity for time-dependent simulations?

    Yes, periodicity works for both steady and unsteady simulations, but:

    • Ensure that time-dependent phenomena respect the periodic assumption
    • For some unsteady flows (e.g., vortex shedding), include enough repeating units to capture the correct wavelength
    • Consider phase-lag periodicity for turbomachinery with relative motion between components
  • What's the difference between periodicity and symmetry?

    • Periodicity connects two separate boundaries, simulating infinite repetition
    • Symmetry reflects flow across a single plane, imposing the condition that flow doesn't cross that plane
    • Use periodicity for repeating patterns, symmetry for mirror-image configurations

🐍 Python Example Usage

# Example of translational periodicity
translational_periodic = fl.Periodic(
    name="x_direction_periodicity",
    surface_pairs=[
        (volume_mesh["left_face"], volume_mesh["right_face"])
    ],
    spec=fl.Translational()
)

# Example of rotational periodicity
rotational_periodic = fl.Periodic(
    name="blade_passage_periodicity",
    surface_pairs=[
        (volume_mesh["passage_minus"], volume_mesh["passage_plus"])
    ],
    spec=fl.Rotational(
        axis_of_rotation=(0, 0, 1)  # Rotation around z-axis
    )
)

# Example with multiple periodic pairs
multi_periodic = fl.Periodic(
    name="multi_direction_periodicity",
    surface_pairs=[
        (volume_mesh["left_face"], volume_mesh["right_face"]),
        (volume_mesh["bottom_face"], volume_mesh["top_face"])
    ],
    spec=fl.Translational()
)

# Example of turbomachinery setup with periodicity
def create_turbo_boundaries():
    return [
        fl.Wall(
            name="blade_surface",
            entities=volume_mesh["blade"],
            heat_spec=fl.HeatFlux(0 * fl.u.W / fl.u.m**2)  # Adiabatic wall
        ),
        fl.Inflow(
            name="inlet",
            entities=[volume_mesh["inlet"]],
            total_temperature=300 * fl.u.K,
            spec=fl.TotalPressure(
                value=150000 * fl.u.Pa
            )
        ),
        fl.Outflow(
            name="outlet",
            entities=volume_mesh["outlet"],
            spec=fl.Pressure(
                value=101325 * fl.u.Pa
            )
        ),
        fl.Periodic(
            name="blade_passage",
            surface_pairs=[
                (volume_mesh["periodic_minus"], volume_mesh["periodic_plus"])
            ],
            spec=fl.Rotational(
                axis_of_rotation=(1, 0, 0)  # Rotation around x-axis
            )
        )
    ]