# Symmetry Boundary Condition

# 📝 Symmetry Boundary

Symmetry boundary conditions are used to reduce computational domain size by utilizing geometric and flow symmetries. They allow you to simulate only half of the full domain when the flow physics and geometry exhibit symmetrical properties.


# 📋 Available Options

Option Description Unit
Entities Geometric boundaries to apply the symmetry condition
No additional configuration options The symmetry condition is fully defined by its application to a boundary

# 🔍 Detailed Descriptions

# Entities

Specifies the geometric boundaries to which the symmetry boundary condition is applied.

  • Accepted types: Surface, GhostSurface, GhostCircularPlane
  • Example: entities=volume_mesh["symmetry_plane"] or entities=[auto_farfield.symmetry_planes]
  • Notes: Can reference surfaces by name or pattern. Compatible with the AutomatedFarfield feature that creates appropriate symmetry plane boundaries.

The Symmetry boundary condition imposes the constraint that no flow crosses the boundary and that the flow field is mirrored across the symmetry plane. This creates a perfect reflection of the flow variables, as if an identical copy of the domain existed on the other side of the boundary.

Key properties of the symmetry boundary:

  • Zero normal velocity (no flow through the boundary)

  • Zero normal gradients of all flow variables

  • Tangential velocity and other variables are preserved

  • No boundary layer development (unlike walls)

  • Default: N/A

  • Notes: The boundary should be a planar surface that represents a plane of symmetry in the flow field.


💡 Tips

# When to Use Symmetry

  • Geometric Symmetry: Use when the geometry has a clear plane of symmetry

    • Example: Aircraft simulated with half-model (using vertical symmetry plane)
    • Example: Wing alone with horizontal symmetry plane at the root
  • Flow Symmetry: Use when flow conditions are expected to be symmetric

    • Example: Zero sideslip angle for symmetric aircraft
    • Example: Straight-ahead flow for ground vehicles
    • Example: Axisymmetric flows like nozzles (using an axis of symmetry)

# Computational Benefits

  • Reduces computational domain size by a factor of 2 for each symmetry plane
  • Can significantly decrease mesh size and computation time
  • Allows allocation of computational resources to higher mesh resolution in the simulated portion

# Mesh Considerations

  • Ensure the mesh at the symmetry boundary is aligned with the symmetry plane
  • Create a clean, high-quality mesh at the symmetry boundary
  • For best results, mesh elements should be orthogonal to the symmetry plane
  • Avoid excessive mesh skewness near symmetry boundaries

❓ Frequently Asked Questions

  • When is it inappropriate to use symmetry?

    Symmetry should NOT be used when:

    • Flow phenomena might develop asymmetrically (e.g., vortex shedding)
    • The problem involves rotation or swirl not aligned with the symmetry plane
    • Testing off-design conditions like sideslip or crosswind
    • The geometry is not perfectly symmetric
    • Turbulence might develop asymmetric structures
  • What is the difference between a symmetry boundary and a slip wall?

    Both conditions prevent flow from crossing the boundary, but:

    • Symmetry enforces mirror reflection of all flow variables across the boundary
    • Slip wall doesn't enforce symmetry of tangential components
    • Symmetry is appropriate only for actual planes of symmetry
    • Slip wall can be used for any frictionless surface, even when symmetry doesn't apply
  • Can I use symmetry for unsteady simulations?

    Yes, but only when the unsteady flow behavior is expected to remain symmetric. Many unsteady flows (like vortex shedding) naturally develop asymmetries, which symmetry boundaries would artificially suppress.

  • How do I verify that using symmetry is appropriate?

    Consider running a test with the full domain (no symmetry) if resources permit, then compare results with the symmetric model. If significant differences appear, symmetry is likely inappropriate for that case.

  • Does using symmetry affect accuracy?

    When appropriately applied, symmetry boundaries don't reduce solution accuracy. However, imposing symmetry when the true flow is asymmetric will produce physically incorrect results.

  • Can symmetry be used with turbulence models?

    Yes, symmetry boundaries work with all turbulence models. However, some turbulent flows naturally develop asymmetric structures which symmetry boundaries would suppress.


🐍 Python Example Usage

# Example of applying symmetry boundary condition
symmetry_plane = fl.SymmetryPlane(
    name="symmetry_plane",
    entities=volume_mesh["symmetry"]
)

# Example of external aerodynamics with symmetry plane
def create_external_aero_boundaries():
    return [
        fl.Wall(
            name="aircraft_surface",
            entities=volume_mesh["aircraft"],
            heat_spec=fl.HeatFlux(0 * fl.u.W / fl.u.m**2)  # Adiabatic wall
        ),
        fl.Freestream(
            name="farfield",
            entities=volume_mesh["farfield"]
        ),
        fl.SymmetryPlane(
            name="symmetry_plane",
            entities=volume_mesh["symmetry_plane"]
        )
    ]

# Example of internal flow with symmetry
def create_internal_flow_with_symmetry():
    return [
        fl.Wall(
            name="duct_walls",
            entities=volume_mesh["duct_walls"],
            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.SymmetryPlane(
            name="symmetry_plane",
            entities=volume_mesh["symmetry_plane"]
        )
    ]

# Example with automated farfield symmetry plane
auto_farfield = fl.AutomatedFarfield()
symmetry_with_auto = fl.SymmetryPlane(
    name="auto_symmetry",
    entities=[auto_farfield.symmetry_planes]
)