Laminar Pipe Flow (Hagen-Poiseuille)

Category: Fluid Analysis (CFD) | Integrated 2026-04-06
CAE visualization for laminar pipe flow theory - technical simulation diagram
Laminar flow in a pipe (Hagen-Poiseuille)

Laminar Pipe Flow (Hagen-Poiseuille): Theoretical Foundations

Overview

🧑‍🎓

Professor, Hagen-Poiseuille flow is used as an initial benchmark in CFD, correct?


🎓

Exactly. Fully developed laminar flow in a circular pipe is one of the few problems for which an exact solution to the Navier-Stokes equations exists. It is ideal for verifying CFD codes, as discretization errors can be directly compared with the theoretical solution.


Governing Equations and Exact Solution

🧑‍🎓

Please explain the derivation.


🎓

Under steady, axisymmetric, and fully developed conditions, the axial direction Navier-Stokes equation in cylindrical coordinates simplifies as follows.


$$ 0 = -\frac{dp}{dx} + \mu \frac{1}{r} \frac{d}{dr}\left(r \frac{du}{dr}\right) $$

🎓

Solving with the boundary conditions $u = 0$ (no-slip) at the wall $r = R$ and $du/dr = 0$ (symmetry) at the center $r = 0$, we get:


$$ u(r) = \frac{R^2 - r^2}{4\mu}\left(-\frac{dp}{dx}\right) = U_{max}\left(1 - \frac{r^2}{R^2}\right) $$

This is the Hagen-Poiseuille parabolic velocity profile. The maximum velocity is $U_{max} = R^2 (-dp/dx) / (4\mu)$, occurring at the pipe center.


Volumetric Flow Rate and Mean Velocity

🧑‍🎓

What about the volumetric flow rate?


🎓

Integrating the velocity profile gives:


$$ Q = \int_0^R u(r) \cdot 2\pi r \, dr = \frac{\pi R^4}{8\mu}\left(-\frac{dp}{dx}\right) $$

This is Hagen-Poiseuille's law. The flow rate is proportional to the fourth power of the radius. Doubling the diameter increases the flow rate by a factor of 16.


🎓

The mean velocity is $\bar{U} = Q / (\pi R^2) = U_{max} / 2$, which is half of the maximum velocity.


Friction Coefficient

🧑‍🎓

The pipe friction coefficient can also be derived theoretically, right?


🎓

The Darcy-Weisbach friction factor $f$ is:


$$ f = \frac{64}{Re_D}, \quad Re_D = \frac{\bar{U} D}{\nu} $$

🎓

Some conventions use the Fanning friction factor $C_f$. $C_f = f/4 = 16/Re_D$. Be careful not to confuse them.


🧑‍🎓

$f = 64/Re$ is famous, right? Transition to turbulence occurs when Re exceeds 2300, I think?


🎓

That's generally said, but more accurately, it depends on the disturbance level at the pipe inlet. In experiments with extremely low disturbance, laminar flow has been maintained up to Re ≈ $10^5$. Conversely, with significant inlet disturbance, transition can occur even below Re = 2000.


Entrance Length

🧑‍🎓

How long is the entrance length until fully developed flow is achieved?


🎓

The laminar entrance length can be estimated by the following formula.


$$ \frac{L_e}{D} \approx 0.06 Re_D $$

🎓

For Re = 100, $L_e \approx 6D$; for Re = 2000, $L_e \approx 120D$. To obtain fully developed flow in CFD, you need to compute a pipe longer than this length or use periodic boundary conditions to simulate an "infinitely long pipe."


🧑‍🎓

Using periodic boundary conditions seems to have lower computational cost.


🎓

Correct. Set periodic boundaries in the flow direction and apply the pressure gradient as a source term. In OpenFOAM, this can be implemented using the cyclicAMI boundary and the meanVelocityForce in fvOptions.

Coffee Break Trivia

Capillaries and the Hagen-Poiseuille Equation—Fluid Dynamics Used by Doctors Too

The Hagen-Poiseuille equation shows a powerful relationship: "flow rate is proportional to the fourth power of the tube diameter." If the diameter is halved, the flow rate becomes 1/16. This is actually the same logic cardiologists use to explain the severity of arteriosclerosis to patients. A mere 20% stenosis in a vessel results in a flow rate drop to about 59%. While the HP equation appears in CFD analyses of vascular stenosis, there is a deviation from the exact solution because "biological vessels are non-Newtonian fluids with pulsation." In practice, a two-step approach is standard: "rough estimation with the HP equation → precise evaluation with CFD."

Computational Methods for Laminar Pipe Flow (Hagen-Poiseuille)

Numerical Methods

🧑‍🎓

What's the point of solving it with CFD when there's an analytical solution?


🎓

There are two main purposes.


1. Code Verification: Confirm the order of discretization error by comparing with the theoretical solution

2. Study of Turbulent Transition: Use the laminar solution as a base state, add disturbances, and track the transition process


Discretization Error Evaluation

🧑‍🎓

When comparing with the theoretical solution, how do you evaluate it specifically?


🎓

Systematically refine the mesh at three or more levels and check the convergence order of the error.


$$ \epsilon_h = \| u_{CFD} - u_{exact} \|_2 $$

🎓

As an example, calculate with 20, 40, and 80 radial divisions and plot the error on a log-log plot. For a second-order scheme, the slope should be $-2$, meaning the error decreases as $\epsilon \propto h^2$.


Radial Cell Count$\Delta r / R$$L_2$ Error (Velocity)Convergence Order
100.1$2.5 \times 10^{-3}$
200.05$6.3 \times 10^{-4}$1.99
400.025$1.6 \times 10^{-4}$1.98
800.0125$4.0 \times 10^{-5}$2.00
🧑‍🎓

If the convergence order matches the theoretical value (2 for second-order accuracy), then we can say the code is implemented correctly, right?


🎓

Exactly. This is a fundamental Code Verification technique, alongside the Method of Manufactured Solutions (MMS).


Axisymmetric Model vs Full 3D

🧑‍🎓

Since it's a circular pipe, we can compute it axisymmetrically, right?


🎓

Fully developed laminar flow is axisymmetric, so it can be computed with a 2D cross-section. In OpenFOAM, use a wedge mesh (5-degree wedge shape, wedge conditions on front/back faces).


🎓

However, full 3D calculation is necessary when including the entrance length or studying turbulent transition. Flow in the entrance length is axisymmetric, but transition is driven by 3D disturbances.


Periodic Pipe Flow in OpenFOAM

🧑‍🎓

Please explain the setup for an infinitely long pipe using periodic boundary conditions.


🎓

Here is an example setup in OpenFOAM.


```

boundary:

inlet: { type cyclic; neighbourPatch outlet; }

outlet: { type cyclic; neighbourPatch inlet; }

wall: { type wall; }

system/fvOptions:

momentumSource:

{

type meanVelocityForce;

selectionMode all;

fieldName U;

Ubar (1 0 0); // Target mean velocity

}

```


🎓

With this setup, the inlet and outlet are periodically connected, and the pressure gradient is automatically adjusted to maintain the specified mean velocity $\bar{U} = 1$ m/s. For steady laminar flow, it converges in a few hundred iterations with simpleFoam.


Settings in Fluent

🧑‍🎓

What about Fluent?


🎓

In Fluent, periodic boundary conditions are applied via the Interior or Periodic interface. Set inlet and outlet faces as periodic, then define the pressure gradient under Periodic Flow in the boundary conditions panel.


Related Simulators

Experience the theory with interactive simulators in this field

All Simulators

Related fields

Thermal AnalysisV&V·Quality AssuranceStructural Analysis
Rate this article
Thank you for your feedback!
Helpful
More details
Report error
Helpful
0
More details
0
Report error
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — Sitemap
About the Authors