# 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
)
)
]