Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Fan and linked-fan boundaries

Vanellus has two fan boundary models:

  • An exterior fan uses fan_inlet to draw from an external environment and discharge into the domain.
  • A linked internal fan uses a linked_fan_intake, where fluid leaves the simulated region, and a linked_fan_exhaust, where it returns.

Neither model resolves the blades or fluid volume inside the fan. Both represent its pressure rise across boundary patches.

Fan curve

Both models apply a fan curve at the discharge boundary: fan_inlet for an exterior fan or linked_fan_exhaust for a linked fan.

  • flow_rates and static_pressures are paired samples of volumetric flow rate and static-pressure rise. The curve must describe static, not total, pressure rise.
  • Vanellus interpolates the current flow rate on the curve to obtain the pressure rise.
  • relaxation_factor damps the iteration. Exterior fans relax the curve pressure; linked fans relax their coupled pressure/flow update.

At both discharge boundaries, velocity is a Dirichlet condition. Its inward-normal value is updated from the current volumetric face flux, with zero tangential components.

For an exterior fan_inlet, with intake static pressure \(p_i\), fan pressure rise \(\Delta p_{\mathrm{fan}}(Q)\), density \(\rho\), and normal discharge speed \(U_n\), the discharge boundary pressure is

\[ p_b = p_i + \Delta p_{\mathrm{fan}}(Q) - \frac{1}{2}\rho U_n^2. \]

The fan curve and the resistance of the simulated flow path determine the operating point.

fan_inlet

FieldCondition
VelocityDirichlet: inward-normal value updated from the current volumetric face flux
PressureDirichlet: ambient_pressure plus the fan pressure rise, minus discharge dynamic pressure
TemperatureDirichlet: temperature
TurbulenceDirichlet: tke and sdr from turbulent_intensity and viscosity_ratio

For an exterior fan, the intake pressure \(p_i\) is ambient_pressure. The fan curve therefore raises the pressure from the external environment before applying it at the boundary.

linked_fan_intake and linked_fan_exhaust

A linked fan uses two patches with the same required linking_tag. This identifies the combined fan in outputs. Each patch can independently have an optional string tag, defaulting to null, to label that individual boundary:

  • linked_fan_intake is where fluid leaves the surrounding simulated region and enters the fan;
  • linked_fan_exhaust is where fluid returns from the fan and enters the simulated region.

The linked fan uses a semi-implicit pressure coupling between the two patches:

FieldCondition
VelocityIntake — Neumann: zero normal gradient.
Exhaust — Dirichlet: inward-normal value updated from the current volumetric face flux.
PressureIntake — Dirichlet: adjusted until intake flow matches exhaust flow.
Exhaust — Robin: the static fan curve with mean-free quadratic pressure redistribution; closed faces use a zero-flow Neumann condition.
TemperatureIntake — Neumann: zero normal gradient.
Exhaust — Robin: well-mixed intake energy plus thermal_power, balanced by exhaust advection and diffusion.
TurbulenceIntake — Neumann: zero normal gradient.
Exhaust — Dirichlet: tke and sdr from its turbulent_intensity and viscosity_ratio.

The fan curve and relaxation_factor are supplied on linked_fan_exhaust.

thermal_power specifies direct heat transferred to the fluid in watts and defaults to zero. Positive values heat the fluid and negative values cool it. It is independent of pressure work, motor input power, and the fan curve.

The exhaust condition conserves heat rate across the linked fan:

\[ \sum_{f \in \mathrm{exhaust}} \left( \dot m_f c_{p,f} T_f + \kappa_f A_f \frac{\partial T_f}{\partial n_f} \right) = \sum_{f \in \mathrm{intake}} \dot m_f c_{p,f} T_f + P_{\mathrm{thermal}}. \]

Here, \(\dot m_f\), \(c_{p,f}\), \(T_f\), and \(A_f\) are the mass flow rate, specific heat capacity, temperature, and area of face \(f\). Mass flow is positive through the fan. \(\kappa_f\) is the full effective conductivity, including turbulent conductivity when turbulence is enabled, and \(\partial T_f / \partial n_f\) is the outward-normal temperature gradient. \(P_{\mathrm{thermal}}\) is the configured thermal_power.

The exhaust Robin condition distributes the heat rate in proportion to each exhaust face’s heat-capacity flow \(\dot m_f c_{p,f}\). This gives the exhaust a common well-mixed discharge temperature while retaining both advective and diffusive heat transfer.

The linked patches can have different shapes and areas, but both must represent the complete flow transported through the same fan. Check their final integrated flow rates and the pressure rise rather than comparing local velocities.

Pressure and velocity updates

Each SIMPLE iteration uses the previous measured intake and exhaust flow rates and area-averaged boundary pressures. The intake receives a uniform Dirichlet pressure update to reduce the flow mismatch. Its relaxed update is limited using both the flow imbalance and the fan-curve pressure error.

The exhaust Robin condition combines the previous intake pressure, the fan curve evaluated at the previous exhaust flow, and a local quadratic pressure redistribution. Its numerical damping uses the same relaxation_factor. The redistribution has zero area mean when all exhaust faces follow the Robin condition, so it smooths the profile while preserving the settled mean static-pressure rise.

For the momentum solve, the exhaust velocity is normal to the patch and takes its local value from the previous corrected face flux. For the pressure predictor, velocity is extrapolated with zero normal gradient so the pressure solve can adjust that flux. No face-to-face mapping between intake and exhaust is required.

Faces that would carry reverse exhaust flow are closed by changing their pressure condition and re-solving the pressure equation. The closed-face Neumann condition supplies the gradient needed to cancel the predicted normal flux; it is not generally a zero pressure gradient. These corrections use the existing matrix stencil.

Linked-fan operating points

Each linked fan reports two histories: measured exhaust volumetric flow rate (fan_flow_rate_<tag>) and the area-averaged exhaust static pressure minus the area-averaged intake static pressure (fan_pressure_jump_<tag>). They do not impose stopping criteria; see Inspect the operating point for the output files.

The settled open-face pressure target is

\[ p_{\mathrm{target},f}=\bar p_i+F(Q_e)+\bar L-L_f, \qquad L_f=\tfrac12\rho_f\max(u_f,0)^2. \]

Here bars denote face-area averages and positive exhaust speed points into the surrounding fluid. Open faces settle at this pressure target. Closed faces can have pressure above the target, consistent with blocking reverse flow. The pressure correction separately enforces zero flow on closed faces.

With every face open, the quadratic redistribution has zero area mean and the settled mean pressure rise is the fan-curve value. Closing faces replaces that pressure equality, so a valid blocked fan can have a measured mean pressure rise that differs from the fan curve.

See also