This industrial fan CFD tutorial covers the closed duct : cylindrical domain, dedicated presets, Phase 2 under close watch.
Industrial fan CFD: tutorial for the closed-duct calculation
A confined axial machine — duct fan, bulb turbine, propeller pump, ducted thruster — cannot be calculated like a propeller in free air. The entire flow rate passes through the duct, the duct wall is part of the problem, and the blade tip clearance becomes a first-order quantity. This tutorial shows what that costs, what it delivers, and where the current chain reaches its limits — because this is the hardest configuration on the test bench, and it's better to know that before launching a two-hour run.
- Prerequisites: a ducted propeller in Heliciel — here the shipped fan model;
- Duration of the case shown here: 4 h 35 of meshing with the Conduit Level 3 preset, 18 min 39 of Phase 1;
- What you get out of it: a readable pressure and velocity field in the duct, and the ability to recognize a duct mesh that will not hold.
- Tutorial outline:
- Four configurations, not one
- The machine under study, and its BEM reference
- The cylindrical domain and its cost
- The duct presets
- The wall conditions applied
- Reading the result — and putting it in perspective
- Recognizing a duct mesh that won't hold
- Phase 2 in a duct, and its warning
1: Four configurations, not one
The bench distinguishes four case families, and the choice is made at creation :
- wing or airfoil : box-shaped domain, steady-state solver ;
- free propeller : rotor with no duct, box domain, MRF Phase 1 then sliding-mesh Phase 2 ;
- ducted propeller in free stream : the duct is there, but the fluid can flow around it — Kort nozzle, drone thruster ;
- closed duct : all of the flow rate passes through the machine, the duct wall closes off the domain. This is the subject of this page.
When you create the case from a ducted propeller, Heliciel asks the question : free stream or duct ? Answer duct for a duct fan, a penstock turbine, a propeller pump. The answer changes the domain, the boundary conditions and the preset catalogue — it cannot be corrected afterwards.
2: The machine under study, and its BEM reference
The fan model shipped with Heliciel is used as the example, placed in a cylindrical duct with a finned radiator (an STL file dropped in the Insert tab, 1.5 m downstream of the rotor). Like every shipped model, it opens with a design point at zero: run Analyze operating point before switching to CFD, otherwise the BEM reference in the case folder will read zero.
| Diameter | 1,250 mm (hub ∅ 400 mm), 7 blades |
| Duct | inner diameter 1,300 mm: the whole flow goes through the machine |
| Speed | 960 rpm — blade tip 64.0 m/s, Mach 0.188 |
| Bulk velocity | 12.33 m/s — J = 0.616 |
| Fluid | air, ρ = 1.3 kg/m³ |
| Blade thrust / torque (BEM) | 479.2 N / 75.19 N·m, i.e. 7.56 kW on the shaft at 100.5 rad/s |
The bench adds a remark as soon as the case is created, and it matters for what follows: “Tip clearance not modelled by the BEM: the rotor plane offers 9.1 % more cross-section than the BEM annulus. The CFD flow rate exceeds the BEM one by as much; an agreement at that level would not be physical.” In a closed duct, the BEM reference is therefore only an order of magnitude: the machine in the CFD calculation is not exactly the designer's one.
3: The cylindrical domain and its cost
In a closed duct, the domain is no longer a box: it is a cylinder meshed as an O-grid, five blocks, with an inlet, an outlet and a duct wall, into which the machine and the inserted object are cut. Direct consequence: the mesh is much heavier than for a free propeller.
The same installation — fan, duct and radiator — was meshed with two consecutive presets:
| Preset | Cells | Meshing time (11 processes) | Boundary layers on the blades |
|---|---|---|---|
| Conduit Level 2 | 1,396,622 | 1 h 43 min 53 s | 0 |
| Conduit Level 3 | 6,509,148 | 4 h 35 min 24 s | 2 (1 in the catalogue, +1 for a ducted rotor) |
One preset step multiplies the cell count by 4.7 here, and the meshing time by 2.7. For comparison, the lightest free propeller preset meshes in 49 seconds for 15,246 cells (boat propeller, Libre Level 1). Plan your time accordingly: in a closed duct, even the first step is an evening's calculation, and the next one an overnight one. Only Level 3 was computed afterwards; it is the one the rest of this page uses.
4: The duct presets
The catalogue changes with the configuration. In a closed duct there are only four levels, much closer together than the eight free-propeller levels:
| Preset | Background | Surface refin. | Edges | Layers | Cost | What it aims at |
|---|---|---|---|---|---|---|
| Conduit Level 1 | 8×6×6 | 4-4 | 5 | 0 | ×1 | Smoke: domain convergence |
| Conduit Level 2 | 8×6×6 | 4-4 | 6 | 0 | ×1.1 | Refined snapping and sharp edges |
| Conduit Level 3 | 8×6×6 | 4-5 | 6 | 1 | ×1.5 | Ceiling: tip gap cut to keep Phase 2 fast |
| Conduit Level 4 | 8×6×6 | 4-5 | 6 | 1 | ×1.5 | Reinforced: same mesh, more careful snap/layer convergence |
Two useful remarks. The cost shown is the catalogue's: on the case of this page, going from Level 2 to Level 3 cost far more than the announced “×1.1 → ×1.5”. And levels 3 and 4 share the same mesh geometry: what separates them is the care taken over snapping and layer-stack convergence, not the fineness.
5: The wall conditions applied
The results panel shows the boundary conditions actually applied, and it is a reflex to acquire in a closed duct — they are not those of a free propeller:
| Hub | slip (frictionless) — no boundary layer on the hub |
| Duct | closed duct (pipeWall from blockMesh, not from an STL) |
| Duct wall | slip (frictionless) — no boundary layer on the wall |
| Inlet / outlet | velocity imposed at the inlet, pressure imposed at the outlet |
The frictionless wall is a deliberate choice of the chain: stacking boundary layers on the duct wall, on top of those on the blades, produces cells that cross each other in the tip gap in this context, and makes meshing fail. It has a price: friction pressure losses on the duct wall are not modelled. And since the velocity is imposed at the inlet, the flow rate is not a result: what the calculation gives is the pressure needed to push it through.
6: Reading the result — and putting it in perspective

Surface pressure, Phase 1: blue on the back of the blades (suction), duct wall orange between the fan and the radiator, where the compressed air waits to get through the fins. The scale in absolute pascals is at the top right.

Streamlines, coloured by axial velocity, cross the rotor then slip between the radiator fins. The velocity scale, on the left, runs from 4 to 23 m/s.
The verdict on the installation fits in one signed number, which the panel computes between the inlet and the outlet of the duct: −22.1 Pa of static pressure (−17.5 Pa in total pressure), for a mass flow of 21.1 kg/s conserved within 0.03 %. Negative, it says that the radiator holds back a little more than the fan pushes at this flow rate. This is the detailed reading of case study no. 7, which is about the same calculation.
The forces, on the other hand, call for caution:
| BEM (blades) | CFD Phase 1 (blades) | deviation | |
|---|---|---|---|
| Thrust | 479.2 N | 270.0 N | −43.7 % |
| Torque | 75.19 N·m | 52.64 N·m | −30.0 % |
| Shaft power | 7.56 kW | 5.29 kW | −30.0 % |
The bench provides a second, independent testimony here, separate from the wall forces: it compares the torque read on the surfaces with the torque deduced from the angular-momentum balance of the fluid crossing the rotor. The two should agree. The log writes:
[Audit Euler] Couple fluide (Euler)=-30.34 Nm, couple surfaces (pales+hub)=-52.68 Nm, captage=174% -> AVERTISSEMENT [Audit Euler] -> le moment cinetique retire au fluide n'est pas converti en effort sur les pales : [Audit Euler] dissipation numerique dans la zone rotor. Le ratio CFD/BEM n'est PAS interpretable. [Audit Euler] Remede : preset superieur (raffinement zone pales) et/ou couches limites > 0.
In other words, the torque read on the surfaces is 1.74 times what the fluid actually lost in rotation. Such a gap cannot be made up by a solver setting: it says that the mesh does not faithfully carry momentum through the rotor zone. The field also contains a maximum velocity of 747 m/s for a machine whose blade tip turns at 64 m/s — a local extremum, produced by a few degenerate cells, enough to distort any automatic colour scale. These forces are a result of the configuration, not a result of the machine: do not quote them as the fan's performance.

The results panel in a closed duct: it recalls the wall conditions applied before giving the forces and the pressure difference. Read them first.

Cut normal to the axis, just behind the rotor, coloured by axial velocity: the footprint of the seven blades can be read in the annulus, and the blue ring along the wall marks the air slowed down in the tip gap. The squares visible around the edge are the mesh cells.

Vertical cut coloured by turbulent viscosity. The scale runs from blue (zero) to red (maximum, 0.039 m²/s). At this mesh, the rotor creates almost none; turbulence appears in the radiator fins and behind them. The grey banner recalls the quantities of the calculation.
7: Recognizing a duct mesh that won't hold
The bench analyses checkMesh at the end of meshing, and gives a reliability index at the end of the calculation: 52 % on this case, rated “Acceptable”. The detail is written in the log:
Heliciel Hybrid BEM/CFD (snappyHexMesh): Finished meshing with 563 illegal faces (concave, zero area or negative cell pyramid volume) Heliciel Hybrid BEM/CFD (checkMesh): ***Error in face tets: 1 faces with low quality or negative volume decomposition tets. Heliciel Hybrid BEM/CFD (checkMesh): ***Cells with small determinant (< 0.001) found, number of cells: 139 Heliciel Hybrid BEM/CFD (checkMesh): ***Concave cells (using face planes) found, number of cells: 323 018 Heliciel Hybrid BEM/CFD (checkMesh): ***Faces with small interpolation weight (< 0.05) found, number of faces: 65 Heliciel Hybrid BEM/CFD (checkMesh): Failed 5 mesh checks. Solver: checkMesh métriques — skewness max=13.14 (seuil 4), faceTets négatifs=1, cellules det<0.001=139, régions=0, checks échoués=5
The two lines that matter are the skewness (13.14 for a threshold of 4) and the 139 nearly degenerate cells. A cell with a near-zero determinant has an effective volume close to zero: gradients blow up there, and that is where the 747 m/s comes from. The bench says it plainly in its diagnosis: “structural divergence guaranteed” in Phase 2.
These defects gather in a known zone: the blade tip gap, where the mesh has to fit cells between the rotating blade and the duct wall, over a thickness of a few millimetres. It is the hard point of the whole configuration. The Show > Highlight problem cells overlay counts and locates them: on this case, 47 cells fall below one hundredth of the median volume, and their full report — azimuthal, radial and axial histograms — is written to the log. The markers themselves are tiny at the scale of a 1.3 m duct: read the report rather than the picture.
8: Phase 2 in a duct, and its warning
Sliding-mesh Phase 2 is only possible in a closed duct from Level 3 up: levels 1 and 2 have no boundary layers, and the bench refuses to launch Phase 2 on a mesh without layers. The case of this page, at Level 3, meets that condition. It was not taken on to Phase 2, for two reasons the bench displays itself: its mesh diagnosis announces a divergence, and when Phase 2 is ticked on a closed duct, it warns that it costs 50 to 300 hours per revolution and that Phase 1 is enough for the mean forces. In a closed duct, Phase 2 is in any case limited to 0.3 revolution, for all four presets.
What to do, in order:
- read the reliability index and the checkMesh detail before launching Phase 2;
- if nearly degenerate cells are reported, do not launch. The remedy the bench itself proposes is a higher preset; going from Level 1 to Level 2 adds neither boundary layers nor surface cells and does not make Phase 2 possible, whereas levels 3 and 4 carry a boundary layer and cut the tip gap;
- the “problem cells” overlay tells you where the mesh gave way;
- if the tip gap is the cause, the Level 3 and Level 4 presets deliberately cut it to keep a sound mesh: it is a compromise, not a defect.
For confined machines whose Phase 2 does go through, everything described in tutorial no. 5 applies unchanged. And for an energy-extracting machine in a duct — bulb turbine, Kaplan, penstock — the reading of signs is that of tutorial no. 14: positive torque, a machine that produces.
The collection of twenty CFD tutorials
« Previous: Wind turbine and tidal turbine | Next: Aircraft propeller, cruise and static thrust »
- First CFD propeller simulation
- Reading the OpenFOAM case folder
- Choosing the mesh preset
- The MRF zone and Phase 1
- Phase 2 with sliding mesh
- Comparing BEM and CFD
- Reading the convergence of a run
- Turbulence models
- Boundary layer and y+
- Reading a pressure map
- Where the forces come from
- Checking an airfoil polar
- Marine propeller and cavitation
- Wind turbine and tidal turbine
- Fan in a closed duct (you are here)
- Aircraft propeller, cruise and static thrust
- The optimisation loop
- Calibrating on a reference
- From the hull to the propeller
- The deliverable calculation file
This series accompanies the Heliciel design tutorials, which cover the BEM side: blade design, choosing the rotation speed, performance curves. CFD comes after them, to verify and to see.
Short, jargon-free version of this tutorial: the ducted fan CFD case study with a radiator in the duct.

Global site map
Mecaflux
Tutorials Mecaflux Pro3D
Tutorials Heliciel
Tutorials Heliciel PRO CFD
Mecaflux Store
Compare software functions
Quotes, Orders, Payment Methods
project technical studies