# Wall Boundary Condition
# 📝 Wall Boundary
The Wall boundary condition represents a solid surface where the fluid cannot penetrate, typically enforcing the no-slip condition for viscous flows.
# 📋 Available Options
Option | Description | Unit |
---|---|---|
Entities | Geometric boundaries to apply the wall condition | |
Wall Motion | Type of wall movement | N/A |
Velocity Components | For moving walls | velocity (e.g., m/s) |
Rotation | For rotating walls | various |
Slater Porous Bleed | Controls bleed through the wall | various |
Thermal Condition | Wall thermal properties | various |
Wall Function | Near-wall modeling approach | N/A |
Roughness Height | Surface roughness | length (e.g., m) |
# 🔍 Detailed Descriptions
# Entities
Specifies the geometric boundaries to which the wall boundary condition is applied.
- Accepted types: Surface
- Example:
entities=volume_mesh["wing_surface"]
- Notes: Can reference surfaces by name or pattern using the mesh or geometry.
# Wall Motion
Defines how the wall moves relative to the fluid.
- Options:
- Stationary
- Moving Wall
- Default: Stationary
- Notes: Stationary walls have zero velocity, while moving walls require additional velocity specifications.
# Velocity Components
Specifies the velocity vector for moving walls.
- Default: None (required for moving walls)
- Example: (10, 0, 0) m/s for a wall moving in the x-direction
- Notes: Only available when Wall Motion is set to "Moving Wall".
# Rotation
Defines rotational motion for a wall.
- Parameters:
- Center: Point around which rotation occurs
- Axis: Direction of rotation axis
- Rate: Angular velocity
- Default: None
- Example: Center (0,0,0), Axis (0,0,1), Rate 100 RPM
- Notes: Only available when Wall Motion is set to "Moving Wall".
# Slater Porous Bleed
Controls the flow through a porous wall section using the Slater porous bleed model.
- Parameters:
- Static Pressure: Target static pressure
- Porosity: Porosity value (0-1)
- Activation Step: Optional pseudo step to start applying
- Default: None
- Example: Static Pressure 101325 Pa, Porosity 0.3
- Notes: Used for boundary layer bleed simulations and flow control devices.
# Thermal Condition
Defines the thermal behavior of the wall.
- Options:
- Adiabatic: No heat transfer
- Isothermal: Fixed temperature
- Heat Flux: Specified heat flux
- Default: Adiabatic
- Example: Isothermal wall at 300K
- Notes: Isothermal requires temperature value, Heat Flux requires flux value.
# Wall Function
Enables wall function approximation to model the near-wall region without resolving it.
- Options: Enabled/Disabled
- Default: Disabled
- Notes: When enabled, allows the use of coarser meshes with larger y+ values (30-300).
# Roughness Height
Specifies the equivalent sand grain roughness height of the wall surface.
- Default: 0 (smooth wall)
- Example: 0.0001 m
- Notes: Only available for boundaries associated with a Fluid zone.
💡 Tips
# Mesh Resolution Requirements
Without Wall Functions:
- Target y+ < 1 for accurate boundary layer resolution
- Use prism layers with growth rate < 1.2
- At least 20-30 points within the boundary layer
With Wall Functions:
- Target y+ between 30-300
- At least 10 points within the boundary layer
- More efficient for high Reynolds number flows
# Common Applications
Moving Walls:
- Ground simulations with moving belt in wind tunnels
- Rotating wheels in automotive simulations
- Moving components in machinery
Thermal Conditions:
- Adiabatic for external aerodynamics where heat transfer is negligible
- Isothermal for heat transfer studies with known wall temperatures
- Heat Flux for heat transfer studies with known energy inputs
# Convergence Considerations
- Start with simpler boundary conditions before introducing complexity
- For moving or rotating walls, consider ramping up the motion gradually
- For thermal simulations, first converge the flow field, then enable heat transfer
❓ Frequently Asked Questions
When should I use wall functions?
Wall functions are appropriate for high Reynolds number flows where resolving the entire boundary layer would be prohibitively expensive. They're a good choice when you're more interested in overall flow patterns and forces than detailed boundary layer behavior.
What y+ value should I target for my simulation?
For simulations without wall functions, target y+ < 1 to properly resolve the viscous sublayer. For simulations with wall functions, target y+ between 30-300, with optimal results typically around 30-100.
How do I handle complex geometries with varying y+ values?
Focus on achieving proper y+ values in regions of interest. For complex geometries, consider using wall functions in some regions and resolving the boundary layer in critical areas.
Can I model surface roughness effects?
Yes, use the Roughness Height parameter to specify an equivalent sand grain roughness height. This is particularly important for aerodynamic simulations where surface quality affects performance.
How does the Slater Porous Bleed model work?
The model controls mass flow through a boundary based on the difference between local static pressure and specified target pressure, modulated by the porosity value. It's commonly used to simulate bleed systems in inlets or other flow control devices.
Can I model heat transfer between the wall and fluid?
Yes, by selecting either Isothermal (fixed temperature) or Heat Flux in the Thermal Condition setting. For coupled heat transfer with solids, additional setup may be required.
🐍 Python Example Usage
# Example of configuring a stationary adiabatic wall
stationary_wall = fl.Wall(
name="wing_surface",
entities=volume_mesh["wing"],
heat_spec=fl.HeatFlux(0 * fl.u.W / fl.u.m**2) # Adiabatic wall (zero heat flux)
)
# Example of a moving wall with specified velocity
moving_wall = fl.Wall(
name="moving_ground",
entities=volume_mesh["ground"],
velocity=["30", "0", "0"] # Velocity vector as strings
)
# Example of a moving wall with velocity expressions
moving_wall_expressions = fl.Wall(
entities=volume_mesh["wall_function"],
velocity=["min(0.2, 0.2 + 0.2*y/0.5)", "0", "0.1*y/0.5"],
use_wall_function=True
)
# Example of a rotating wall
rotating_wall = fl.Wall(
name="propeller",
entities=volume_mesh["propeller"],
velocity=fl.WallRotation(
axis=(0, 0, 1),
center=(0 * fl.u.m, 0 * fl.u.m, 0 * fl.u.m),
angular_velocity=1000 * fl.u.rpm
)
)
# Example with wall functions and roughness
rough_wall = fl.Wall(
name="rough_surface",
entities=volume_mesh["rough_wall"],
use_wall_function=True,
roughness_height=0.0002 * fl.u.m
)
# Example with isothermal wall
isothermal_wall = fl.Wall(
entities=volume_mesh["fluid/isothermal-*"],
heat_spec=fl.Temperature(350 * fl.u.K)
)
# Example with heat flux
heat_flux_wall = fl.Wall(
entities=volume_mesh["solid/isoflux-*"],
heat_spec=fl.HeatFlux(1.0 * fl.u.W / fl.u.m**2)
)
# Example with Slater porous bleed model
porous_wall = fl.Wall(
entities=volume_mesh["fluid/SlaterBoundary-*"],
velocity=fl.SlaterPorousBleed(
static_pressure=1.01e6 * fl.u.Pa,
porosity=0.4,
activation_step=200
)
)