Laminar Pipe Flow (Hagen-Poiseuille)
Theory and Physics
Overview
Professor, Hagen-Poiseuille flow is used as an initial benchmark in CFD, right?
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.
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:
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:
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:
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.
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.
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."
Physical Meaning of Each Term
- Temporal Term $\partial(\rho\phi)/\partial t$: Imagine the moment you turn on a faucet. At first, water comes out unstable and splashing, but after a while, the flow becomes steady, right? This "period of change" is described by the temporal term. The pulsation of blood flow from heartbeats, flow fluctuations each time an engine valve opens and closes—all are unsteady phenomena. So what is steady-state analysis? It looks only at "after sufficient time has passed and the flow has settled down"—meaning setting this term to zero. Since computational cost drops significantly, trying a steady-state solution first is a basic CFD strategy.
- Convection Term $\nabla \cdot (\rho \mathbf{u} \phi)$: What happens if you drop a leaf into a river? It gets carried downstream by the flow, right? This is "convection"—the effect where fluid motion transports things. Warm air from a heater reaching the far corner of a room is also because the "carrier," air, transports heat via convection. Here's the interesting part—this term contains "velocity × velocity," making it nonlinear. That is, as flow speed increases, this term rapidly strengthens, making control difficult. This is the root cause of turbulence. A common misconception: "Convection and conduction are similar" → They are completely different! Convection is carried by flow, conduction is transmitted by molecules. There's an order of magnitude difference in efficiency.
- Diffusion Term $\nabla \cdot (\Gamma \nabla \phi)$: Have you ever put milk in coffee and left it? Even without stirring, after a while, they naturally mix. That's molecular diffusion. Now a question—honey and water, which flows more easily? Obviously water, right? Honey has high viscosity ($\mu$), so it flows poorly. Higher viscosity strengthens the diffusion term, making the fluid move "sluggishly." In low Reynolds number flows (slow, viscous), diffusion dominates. Conversely, in high Re flows, convection overwhelms and diffusion plays a minor role.
- Pressure Term $-\nabla p$: When you push a syringe plunger, liquid shoots out forcefully from the needle tip, right? Why? Because the plunger side is high pressure, the needle tip is low pressure—this pressure difference provides the force pushing the fluid. Dam discharge works on the same principle. On a weather map, where isobars are tightly packed? That's right, strong winds blow. "Flow arises where there is a pressure difference"—this is the physical meaning of the pressure term in the Navier-Stokes equations. A point of confusion here: "Pressure" in CFD is often gauge pressure, not absolute pressure. When you switch to compressible analysis and results become strange, it might be due to confusing absolute/gauge pressure.
- Source Term $S_\phi$: Heated air rises—why? Because it becomes lighter (lower density) than its surroundings, buoyancy pushes it upward. This buoyancy is added to the equation as a source term. Other examples: chemical reaction heat from a gas stove flame, Lorentz force acting on molten metal in a factory's electromagnetic pump... These are all actions that "inject energy or force into the fluid from the outside," expressed by the source term. What happens if you forget the source term? In a natural convection analysis, forgetting buoyancy means the fluid doesn't move at all—a physically impossible result where warm air doesn't rise in a room with the heater on in winter.
Assumptions and Applicability Limits
- Continuum Assumption: Valid for Knudsen number Kn < 0.01 (molecular mean free path ≪ characteristic length)
- Newtonian Fluid Assumption: Shear stress and strain rate have a linear relationship (non-Newtonian fluids require viscosity models)
- Incompressibility Assumption (for Ma < 0.3): Treat density as constant. For Mach numbers above 0.3, consider compressibility effects
- Boussinesq Approximation (Natural Convection): Consider density changes only in the buoyancy term, using constant density in other terms
- Non-applicable Cases: Rarefied gases (Kn > 0.1), supersonic/hypersonic flow (shock capturing required), free surface flow (VOF/Level Set, etc. required)
Dimensional Analysis and Unit Systems
| Variable | SI Unit | Notes / Conversion Memo |
|---|---|---|
| Velocity $u$ | m/s | When converting from volumetric flow rate for inlet conditions, pay attention to cross-sectional area units |
| Pressure $p$ | Pa | Distinguish between gauge and absolute pressure. Use absolute pressure for compressible analysis |
| Density $\rho$ | kg/m³ | Air: approx. 1.225 kg/m³@20°C, Water: approx. 998 kg/m³@20°C |
| Viscosity Coefficient $\mu$ | Pa·s | Be careful not to confuse with kinematic viscosity $\nu = \mu/\rho$ [m²/s] |
| Reynolds Number $Re$ | Dimensionless | $Re = \rho u L / \mu$. Indicator for laminar/turbulent transition |
| CFL Number | Dimensionless | $CFL = u \Delta t / \Delta x$. Directly related to time step stability |
Numerical Methods and Implementation
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.
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 |
|---|---|---|---|
| 10 | 0.1 | $2.5 \times 10^{-3}$ | — |
| 20 | 0.05 | $6.3 \times 10^{-4}$ | 1.99 |
| 40 | 0.025 | $1.6 \times 10^{-4}$ | 1.98 |
| 80 | 0.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?
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
Related Topics
なった
詳しく
報告