Darcy-Forchheimer Porous Media Coefficients Calculator

Darcy–Forchheimer Porous Media Coefficients Calculator

Turn a measured pressure-drop curve into the viscous and inertial resistance coefficients your solver asks for: a closed-form least-squares fit of Δp/L = a·v + b·v² over up to five points, α, 1/α and C₂ in the units Fluent, OpenFOAM and Star-CCM+ want, the name of the box each goes in, and an honest statement of whether your data determined them at all. Plus the perforated-plate case from open-area ratio.

Darcy–Forchheimer coefficients from measured pressure drop

measured Δp against v → α, 1/α, C₂ and the fit quality
The first route is the one nearly everybody needs: you have a bench curve or a manufacturer’s curve for a core, a filter or a mesh, and you need the two numbers the solver asks for. The second route is for a plate you can measure geometrically but have no pressure data for.
Both are exact closed-form fits, no iteration. The first minimises the sum of squared errors in Δp/L, which is what a spreadsheet trendline with the intercept forced to zero does, and it is dominated by your highest-velocity point. The second divides through by v first, which gives every point equal weight and recovers the viscous coefficient better. Measured on synthetic data with proportional noise, the second fit recovers α 1.5 to 3 times more accurately and halves the chance of a negative coefficient. Use the first when you want the number a reviewer will reproduce; use the second when the data span a wide velocity range.
This matters more than people expect. α and C₂ are meant to be properties of the medium alone, but they are extracted by dividing out μ and ρ — so if you fit air data with water properties you get a permeability wrong by a factor of 55. Use the fluid the TEST was run in, and the solver will then reproduce the curve in whatever fluid you run.
Read only when the fluid is Other. Dynamic viscosity is the one that appears in the Darcy term, so if you have μ enter it directly. Both routes are equivalent because ν = μ/ρ.
Read only when the fluid is Other and the mode above is kinematic. Grey otherwise.
Read only when the fluid is Other and the mode above is dynamic. Grey otherwise.
Read only when the fluid is Other. The inertial coefficient C₂ is extracted by dividing by ½ρ, so an error here goes straight into C₂. Grey otherwise.
The depth of the medium the pressure drop was measured across, along the flow. This is the single most common mistake on this page: α and C₂ are per-unit-length quantities, so if you fit the pressure drop without dividing by the thickness, both come out wrong by exactly that thickness. For a radiator or charge-air-cooler core it is the core depth, typically 16 to 60 mm. Grey in perforated-plate mode.
Whichever your rig logs. Filter and HVAC data are usually in ft/min or m/min; heat-exchanger core data in m/s. Whatever the unit, the velocity must be the SUPERFICIAL (face, or Darcy) velocity — volumetric flow divided by the whole frontal area including the solid — and not the velocity inside the pores.
The conventional inch of water is defined against water of density 1000 kg/m³ and standard gravity, giving 249.0889 Pa exactly — that is the NIST SP 811 value and the one used here. Some HVAC sources use 248.84 Pa, defined at 60 °F; the difference is 0.1 per cent and will not matter unless you are chasing the last percent of a fit.
Superficial (face) velocity for the first test point, in the unit chosen above. Superficial means the volumetric flow divided by the whole frontal area, solid included — not the velocity between the fins or inside the pores. Getting this wrong by the porosity is the second most common error on this page.
Measured pressure drop across the sample at that velocity, in the unit chosen above. A zero or negative value drops the row out of the fit, as does a zero velocity. At least two rows with different velocities are needed; three or more if you want a meaningful fit quality.
Superficial (face) velocity for this test point, in the unit chosen above. Set the velocity to zero to drop this row out of the fit. Every term in the normal equations carries a factor of velocity, so a zero row contributes exactly nothing — it is not approximately ignored, it is algebraically absent.
Measured pressure drop across the sample at that velocity, in the unit chosen above. A zero or negative value drops the row out of the fit, as does a zero velocity. At least two rows with different velocities are needed; three or more if you want a meaningful fit quality.
Superficial (face) velocity for this test point, in the unit chosen above. Set the velocity to zero to drop this row out of the fit. Every term in the normal equations carries a factor of velocity, so a zero row contributes exactly nothing — it is not approximately ignored, it is algebraically absent.
Measured pressure drop across the sample at that velocity, in the unit chosen above. A zero or negative value drops the row out of the fit, as does a zero velocity. At least two rows with different velocities are needed; three or more if you want a meaningful fit quality.
Superficial (face) velocity for this test point, in the unit chosen above. Set the velocity to zero to drop this row out of the fit. Every term in the normal equations carries a factor of velocity, so a zero row contributes exactly nothing — it is not approximately ignored, it is algebraically absent.
Measured pressure drop across the sample at that velocity, in the unit chosen above. A zero or negative value drops the row out of the fit, as does a zero velocity. At least two rows with different velocities are needed; three or more if you want a meaningful fit quality.
Superficial (face) velocity for this test point, in the unit chosen above. Set the velocity to zero to drop this row out of the fit. Every term in the normal equations carries a factor of velocity, so a zero row contributes exactly nothing — it is not approximately ignored, it is algebraically absent.
Measured pressure drop across the sample at that velocity, in the unit chosen above. A zero or negative value drops the row out of the fit, as does a zero velocity. At least two rows with different velocities are needed; three or more if you want a meaningful fit quality.
The velocity at which the viscous and inertial contributions are compared, in the same unit as the test velocities. Use the velocity your simulation will actually run at: which term dominates is a property of the operating point, not of the medium.
Used for the Ergun cross-check below and for the interstitial-velocity note, not for the fit itself — the fitted coefficients are on the superficial velocity and do not need it. 0.36 to 0.43 for randomly packed spheres, 0.4 as the usual default, 0.7 to 0.95 for metal foams and fibrous filters. If your solver asks for a porosity as well as the two resistances, give it this number; it affects the transient and the energy equation but not the steady pressure drop.
Total hole area divided by total plate area. For a plate of round holes of diameter d on a triangular pitch p it is 0.9069(d/p)²; on a square pitch it is 0.7854(d/p)². Grey unless you are in perforated-plate mode.
Only used to turn a loss coefficient into a per-unit-length inertial resistance, because that is what a solver’s porous zone wants: C₂ = K/t. If you are using a porous-jump or thin-baffle boundary condition instead, it asks for K·½ρv² directly and the thickness cancels. Grey outside perforated-plate mode.
The two cases bracket reality, and they are far apart: at an open-area ratio of 0.3 the sharp-edged loss coefficient is 19.3 and the reattached one is 5.44, a factor of 3.5. A plate reattaches when its thickness is larger than about the hole diameter. If yours is in between, the two values are your bracket and you should say so rather than pick one. Grey outside perforated-plate mode.
101.521/mExample

A 24 mm heat-exchanger core on an air bench: 5.9, 14.3, 26.4, 40.4 and 58.3 Pa at 1, 2, 3, 4 and 5 m/s face velocity, air at 20 °C

Advertisement

The model, the closed-form fit, and which box each number goes in

Δp/L = (μ/α)v + C₂·½ρv² ≡ a·v + b·v²  ·  1/α = a/μ  ·  C₂ = 2b/ρ  ·  a = (T₁S₄ − T₂S₃)/(S₂S₄ − S₃²), b = (T₂S₂ − T₁S₃)/(S₂S₄ − S₃²) with Sk = Σvk, T₁ = Σ(Δp/L)v, T₂ = Σ(Δp/L)v²  ·  perforated plate: K = (1/(Ccβ) − 1)², C₂ = K/t
v
SUPERFICIAL velocity — volumetric flow divided by the whole frontal area, solid included. Both α and C₂ are defined against it, and using the interstitial velocity instead gets both wrong by a factor of the porosity
α
permeability, m². A property of the medium alone, not of the fluid. Fluent, CFX and OpenFOAM all want its reciprocal rather than α itself
1/α
viscous resistance, 1/m². This is the number Fluent’s Viscous Resistance box asks for, and OpenFOAM’s d in the DarcyForchheimer source
C₂
inertial resistance factor, 1/m. A loss coefficient per unit thickness. This is Fluent’s Inertial Resistance and OpenFOAM’s f, which are the same quantity with the same definition
a, b
the raw coefficients of the quadratic in superficial velocity, in Pa·s/m² and Pa·s²/m³ — equivalently kg/(m³·s) and kg/m⁴. Star-CCM+’s porous viscous and inertial resistances are these two directly; check your version’s units and whether it wants superficial or interstitial velocity
L
sample thickness along the flow. α and C₂ are per unit length, so dividing by L is not optional. Omitting it scales both coefficients by L, and for a 24 mm core that is a factor of 42
K
loss coefficient of a perforated plate on the approach velocity, Δp = K·½ρv². Converted to a porous zone as C₂ = K/t
β
open-area ratio of the plate: hole area over total area. 0.9069(d/p)² for round holes on a triangular pitch, 0.7854(d/p)² on a square pitch
C_c
contraction coefficient of the jet through a hole. 1 if the jet reattaches inside a thick hole; 1/(1 + 0.707(1−β)^0.375) for a thin sharp-edged plate, which reproduces Idelchik’s empirical form exactly

Worked example

A 24 mm heat-exchanger core on an air bench: 5.9, 14.3, 26.4, 40.4 and 58.3 Pa at 1, 2, 3, 4 and 5 m/s face velocity, air at 20 °C
FIRST divide by the thickness, because α and C₂ are per unit length. Δp/L = 5.9/0.024 = 245.83, 595.83, 1100.0, 1683.3 and 2429.2 Pa/m. Skipping this step is the commonest error on this page and it scales both coefficients by 0.024 — a factor of 42 in the wrong direction, and the solver will not complain
The sums, written out: S₂ = Σv² = 55, S₃ = Σv³ = 225, S₄ = Σv⁴ = 979, T₁ = Σ(Δp/L)v = 23,616.67 and T₂ = Σ(Δp/L)v² = 100,191.67. The determinant is S₂S₄ − S₃² = 55 × 979 − 225² = 3,220, and a = (T₁S₄ − T₂S₃)/3220 = 179.376 Pa·s/m², b = (T₂S₂ − T₁S₃)/3220 = 61.115 Pa·s²/m³. No iteration anywhere: two sums, two multiplications and a determinant
Now the solver numbers. With air at 20 °C, μ = ν·ρ = 1.516×10⁻⁵ × 1.204 = 1.8253×10⁻⁵ Pa·s and ρ = 1.204 kg/m³. 1/α = a/μ = 179.376/1.8253×10⁻⁵ = 9,827,000 1/m², so α = 1.0176×10⁻⁷ m² (1.031×10⁵ darcy, or 103 mD × 10⁶ — permeabilities this large are far outside the rock-physics range the darcy was invented for), and C₂ = 2b/ρ = 2 × 61.115/1.204 = 101.52 1/m. Those two numbers go into Fluent's Viscous Resistance and Inertial Resistance boxes, and into OpenFOAM's d and f in a DarcyForchheimer porosity source, unchanged
WHICH TERM DOMINATES, which is the question the model exists to answer. At 3 m/s the Darcy term is 179.376 × 3 = 538.1 Pa/m and the Forchheimer term is 61.115 × 9 = 550.0 Pa/m, so the inertial share is 50.5 per cent and both terms are genuinely needed. At 1 m/s the split is 74.6 per cent viscous, and at 10 m/s it is 77.3 per cent inertial. A medium is not "Darcy" or "Forchheimer" — an operating point is
THE FIT QUALITY, which is what tells you whether to believe any of it. R² = 0.99987 and the largest residual is 2.17 per cent of the measured pressure drop at that point. That is a clean fit. Now switch the fit method to the equal-weight one and it gives a = 182.54, 1/α = 10,000,800 1/m² and C₂ = 100.15, with R² = 0.99986. The two fits differ by 1.8 per cent in 1/α and 1.4 per cent in C₂, and that spread is a fairer estimate of the uncertainty in the coefficients than either R² is. These data were in fact generated from 1/α = 10,000,000 and C₂ = 100.00 and then rounded to 0.1 Pa, so the equal-weight fit is the one that recovered the truth here — which is what the measurements on synthetic noisy data say it should do
THE CROSS-CHECK THAT SAYS WHAT THIS MEDIUM IS NOT. If the core were a packed bed at 40 per cent porosity, Ergun's equation would tie both coefficients to one particle diameter: d_p = √(150α(1−ε)²/ε³) = 9.27 mm from the permeability, and d_p = 3.5(1−ε)/(ε³C₂) = 323 mm from C₂. The two disagree by a factor of 35, so the core is emphatically not a packed bed — it has far more inertial loss for its permeability than granular packing does, which is exactly what louvred fins are for. Useful negative information: do not reach for Ergun to fill in a coefficient you did not measure
AND A WARNING FROM THE SOLVER'S OWN MANUAL. The Fluent User's Guide demonstrates this procedure on four points — 28.4, 487, 1432 and 2964 Pa at 20, 50, 80 and 110 m/s — and quotes the trendline Δp = 0.28296v² − 4.33539v, giving C₂ = 0.462 and 1/α = −242,282 1/m². Two things about that. The viscous resistance is NEGATIVE, which the manual itself flags, and the reason is that a pure quadratic through those four points already gives R² = 0.9938, so the linear term is fitting six parts in a thousand of the variance and carries almost no information. And the coefficients are not the least-squares fit of those four points: refitting them here by unweighted least squares gives −4.94333 and 0.28912, i.e. 1/α = −276,256 and C₂ = 0.472. The manual's numbers match a fit of Δp/v against v (−4.358 and 0.28245) much more closely, which is the equal-weight method offered above. So the published example differs from its own table's least-squares fit by 14 per cent in the viscous coefficient, and the same four points give three different answers depending on how you fit them. That is the honest state of this calculation, and it is the reason this page prints the fit quality and offers both fits instead of a single confident number

Which box each number goes in

SolverField nameGive itUnitsVerified from
ANSYS Fluent, porous cell zoneViscous Resistance1/α1/m²Fluent User’s Guide, S_i = −(μ/α·v_i + C₂·½ρ|v|v_i)
ANSYS Fluent, porous cell zoneInertial ResistanceC₂1/msame equation, same guide
ANSYS Fluent, porous jump BCFace permeability α, thickness Δm, pressure-jump coefficient C₂α, L, C₂m², m, 1/mFluent User’s Guide, porous jump as a 1-D porous medium
OpenFOAM, DarcyForchheimerd1/α1/m²source header: S = −(μd + (ρ|U|/2)f)U, d in 1/m²
OpenFOAM, DarcyForchheimerfC₂1/msame header, f in 1/m; the leading ½ is in the code
Star-CCM+ / CFX style, quadratic in vporous viscous and inertial resistancea and b directlykg/(m³·s) and kg/m⁴dimensional identity: a = μ/α is kg/(m³·s), b = ½ρC₂ is kg/m⁴
A thin-baffle or screen BC of any flavourloss coefficient KK = C₂·tdimensionlessΔp = K·½ρv² by definition of K
The two that matter most are verified here from primary sources rather than from forum posts. Fluent’s guide states the source term as S_i = −(μ/α·v_i + C₂·½ρ|v|v_i), so its two boxes are 1/α and C₂ exactly as printed above. OpenFOAM’s DarcyForchheimer header states S = −(μd + (ρ|U|/2)f)U with d in 1/m² and f in 1/m, and its source code carries a comment that the leading 0.5 is the ½ρ — so d and f are numerically identical to Fluent’s two boxes, and a set of coefficients can be moved between the two solvers without any conversion at all. The Star-CCM+ row is inferred from the units rather than quoted: a viscous resistance in kg/(m³·s) and an inertial one in kg/m⁴ can only be the coefficients of the quadratic in superficial velocity, because those are the only combinations that are dimensionally consistent. Check your own version, and check whether it wants superficial or interstitial velocity.

What your data can and cannot determine

Inertial share at your highest test velocityExpected error in 1/αExpected error in C₂Chance of a negative coefficientWhat to do
under 1 %1 to 2 × the scatterhopeless — 10× the scatter or worseabout 50 %set C₂ = 0, use pure Darcy, say so
about 5 %1 to 2 × the scatterabout 25 × the scatter10 to 20 %add faster points or accept pure Darcy
about 13 %1.2 × the scatter11 × the scattera few per centusable for C₂ to within a factor
about 40 %1 × the scatter2 to 3 × the scatternegligibleboth coefficients sound
over 95 %poor — the viscous term is invisible1 to 2 × the scatterabout 50 % for 1/αadd points a fifth of your lowest velocity
Measured here, not asserted: synthetic Darcy–Forchheimer data at five velocities were perturbed with proportional Gaussian noise and refitted 4,000 times at each noise level, and the table reports the median absolute error in each recovered coefficient. The pattern is a simple one and worth remembering as a rule: the relative error in a coefficient is roughly the measurement scatter divided by that term’s share of the pressure drop. So a coefficient responsible for 5 per cent of your pressure drop cannot be known to better than about twenty times your scatter, whatever the R² of the fit says. R² is a statement about the curve, not about the coefficients.

Perforated plates: the two limits, and how far apart they are

Open-area ratio βSharp-edged thin plate, KReattached thick plate, KRatioContraction coefficient implied
0.051080.5361.03.00.5905
0.10249.581.03.10.5954
0.2052.5816.003.30.6060
0.3019.325.4443.50.6179
0.408.7582.2503.90.6314
0.504.3701.0004.40.6472
0.701.1480.18376.20.6896
0.900.19550.0123515.80.7703
Both columns are the same Borda–Carnot expression, K = (1/(C_c·β) − 1)², with a different contraction coefficient: C_c = 1 for a jet that reattaches inside a thick hole, and C_c = 1/(1 + 0.707(1−β)^0.375) for a thin sharp-edged plate. That second expression is not a separate correlation — it is what Idelchik’s published thin-plate form ζ = (0.707(1−β)^0.375 + 1 − β)²/β² becomes when you solve it for the contraction coefficient, and the algebra is exact rather than a fit. It is a satisfying result: an empirical handbook formula turns out to be the elementary vena-contracta derivation with a physically sensible C_c that rises from 0.59 for an isolated small hole towards 0.77 as the holes take over the plate. The isolated-hole limit, 1/(1 + 1/√2) = 0.5858, is close to the classical free-streamline value of 0.611 for a slot and to the 0.61 to 0.62 usually measured on sharp orifices. The practical point is the ratio column: a real plate lies between the two limits and they differ by a factor of three to four, so quote a bracket unless you know which limit you are in.

Fitting the two coefficients, and why R² does not tell you whether to trust them

Two numbers, and everybody gets one of them wrong. Every solver represents a porous region the same way: Δp/L = (μ/α)v + C₂·½ρv², a term linear in velocity for viscous drag on the pore walls and a term quadratic in velocity for the form drag and jet losses that dominate once the pore Reynolds number is past about 1. To use it you need the permeability α and the inertial resistance factor C₂, and what you actually have is a pressure-drop curve from a bench or a manufacturer’s datasheet. This page does the fit in closed form, prints both coefficients in the units every major solver asks for, names the box each one goes in, and — the part that matters — tells you whether your data actually determined them.

The three errors, in order of frequency. The first is forgetting to divide by the sample thickness. α and C₂ are per-unit-length quantities; if you fit Δp instead of Δp/L you scale both coefficients by the thickness, which for a 24 mm core is a factor of 42, and nothing in the solver will tell you. The second is using the interstitial velocity instead of the superficial one. Both coefficients are defined against the superficial velocity — volumetric flow divided by the whole frontal area, solid included — and swapping them scales α by the porosity and C₂ by its square. The third is fitting data taken in air and then using the coefficients as though they were properties of the medium measured in water: they are properties of the medium, but you extracted them by dividing out a particular μ and ρ, so the fluid the TEST ran in is the one to enter above.

Why the fit is fixed at five points, and why a blank row costs nothing. The expression language behind this page has no loops, so the number of data rows has to be fixed and the normal equations written out term by term. Five rows is enough for real bench data and the sums are short: a = (T₁S₄ − T₂S₃)/(S₂S₄ − S₃²) and b = (T₂S₂ − T₁S₃)/(S₂S₄ − S₃²), with Sk = Σvk and the two cross-sums T₁ = Σ(Δp/L)v and T₂ = Σ(Δp/L)v². There is a pleasant accident in the algebra: every term of every one of those sums carries at least one factor of v, so a row entered with zero velocity contributes exactly nothing. Setting a velocity to zero does not approximately remove a point, it removes it algebraically. The point count, R² and the residuals are masked as well, so they count only the rows you used.

Two fits, because the standard one is not the better one. The fit every textbook and every solver manual describes is unweighted least squares on Δp/L against v, which is also what a spreadsheet trendline with the intercept forced to zero gives you. It has a known weakness: the residuals it minimises are absolute, so the highest-velocity point — where Δp is largest — dominates the fit, and the viscous coefficient, which is only visible at the low end, is fitted almost as an afterthought. The alternative is to divide through by v first and fit (Δp/L)/v = a + bv, an ordinary straight line that gives every point equal weight and is equally closed-form. Which is better is a measurable question, so: synthetic Darcy–Forchheimer data at five velocities were perturbed with proportional Gaussian noise and refitted 4,000 times at each of several noise levels. The equal-weight fit recovers the permeability 1.5 to 3 times more accurately at every noise level tested, recovers C₂ about 1.4 times more accurately, and roughly halves the chance of returning a negative coefficient. Both are offered; the unweighted one is the default because it is the one a reviewer will reproduce, and the gap between the two is a better uncertainty estimate than either R².

R² tells you about the curve, not about the coefficients, and the difference is enormous. This is the single most useful thing on the page. A five-point Darcy–Forchheimer fit can have R² = 0.9999 and a coefficient that is wrong by a factor of two, and the reason is structural rather than statistical: if one of the two terms accounts for only a few per cent of the pressure drop anywhere in your data, then the data contain almost no information about that term’s coefficient, and the fit will put it wherever the scatter pushes it while still passing beautifully through every point. The measured rule is simple enough to remember: the relative error in a coefficient is roughly your measurement scatter divided by that term’s share of the pressure drop. Two per cent scatter and a five per cent inertial share means C₂ is uncertain by about half its own value, and about one such fit in six returns a negative C₂ outright. This page prints the inertial share at your highest test velocity for exactly this reason, and the band above the result says plainly when a coefficient is not determined.

The Fluent manual’s own example fails this test, which is worth knowing before you copy it. The Fluent User’s Guide demonstrates the procedure on four points at 20, 50, 80 and 110 m/s and arrives at 1/α = −242,282 1/m² — a negative viscous resistance, which it flags and tells you to avoid. The cause is visible from the data: a pure quadratic through those four points, with no linear term at all, already reaches R² = 0.9938, and adding the linear term takes it only to 0.9998. The viscous coefficient is fitting the last six parts in a thousand of the variance, so its value is scatter and its sign is a coin toss. There is a second thing worth noticing. Refit those same four points here by unweighted least squares and you get a = −4.94333 and b = 0.28912, not the manual’s −4.33539 and 0.28296 — a 14 per cent difference in the viscous coefficient. The manual’s pair matches a fit of Δp/v against v (−4.358 and 0.28245) to within 0.6 per cent, so the published example used the equal-weight method without saying so. Three answers from four points, depending on how you fit them. That is not a criticism of the manual; it is the reason a page like this should show the fit quality and offer both fits rather than hand you one confident number.

Perforated plates and screens, where there is no curve to fit. A thin plate has essentially no viscous resistance: the loss is form drag on the jets issuing from the holes, so α is effectively infinite and all the resistance is inertial. The loss coefficient follows from a two-step argument that needs no empiricism at all — the flow accelerates into a vena contracta of area CcβA, then suffers a Borda–Carnot sudden-expansion loss of ½ρ(vvc − v)² on the way back out, which gives K = (1/(Ccβ) − 1)² on the approach velocity. Setting Cc = 1 is the thick-plate limit where the jet reattaches inside the hole. And here is the result that makes the section worth having: Idelchik’s published empirical form for a thin sharp-edged perforated plate, ζ = (0.707(1−β)0.375 + 1 − β)²/β², is exactly algebraically identical to that same Borda–Carnot expression with Cc = 1/(1 + 0.707(1−β)0.375). Not approximately: identically. So the handbook correlation is the elementary derivation in disguise, with a contraction coefficient that rises from 0.590 for an isolated small hole to 0.770 as the holes take over the plate — physically the right direction, and the isolated-hole limit 1/(1+1/√2) = 0.5858 sits close to the classical free-streamline value of 0.611. Convert to a solver input with C₂ = K/t, or better, use a porous-jump or thin-baffle boundary condition and give it K directly.

Ergun as a cross-check, never as a substitute. If your medium really is a packed bed, Ergun’s equation ties both coefficients to one particle diameter and one porosity: α = dp²ε³/(150(1−ε)²) and C₂ = 3.5(1−ε)/(ε³dp). This page inverts both and prints the two equivalent particle diameters. If they agree, your medium behaves like granular packing and you can extrapolate with some confidence. If they disagree by a large factor — 35 in the worked example above — it does not, and that is useful negative information rather than an error: a louvred-fin core, a wire-mesh screen or a perforated plate all produce far more inertial loss for their permeability than packing does. The wrong conclusion to draw is that one coefficient must be wrong; the right one is that you cannot use Ergun to fill in a coefficient you did not measure.

What to check in the model afterwards. Three things, in this order. That the porous zone thickness in your mesh equals the sample thickness you fitted with, because the coefficients are per unit length and this error survives every other check. That the direction is right: a real core is strongly anisotropic and the resistance across the fins is often a hundred times the resistance along them, so a single isotropic pair of coefficients models a core only if the flow is normal to the face. And that the velocity in the zone is near the range you fitted over, which you can read off the plot above. If your case runs at a velocity outside the data, you are extrapolating a two-parameter fit, which is usually safe upward and unreliable downward. For the approach flow itself, the pipe friction and pressure drop calculator gives the duct term this one does not, and the hydraulic diameter calculator handles the passage geometry if you want a Reynolds number for the pores rather than for the face.

Advertisement

Frequently asked questions

Fluent wants 1/α and C₂ — which of my numbers are those?

The first two rows of the result. Fluent’s porous cell zone states its source term as S_i = −(μ/α·v_i + C₂·½ρ|v|v_i), so its Viscous Resistance box takes 1/α in 1/m² and its Inertial Resistance box takes C₂ in 1/m, exactly as printed. OpenFOAM’s DarcyForchheimer source is S = −(μd + (ρ|U|/2)f)U with d in 1/m² and f in 1/m, which are numerically the same two numbers — you can move a set of coefficients between Fluent and OpenFOAM with no conversion at all. If your solver instead asks for two coefficients of a quadratic in velocity with units kg/(m³·s) and kg/m⁴, those are the a and b rows.

My fit gives a negative viscous resistance. What do I do?

Do not use it, and do not clamp it to zero without understanding why it came out negative. The usual cause is that all your test velocities are high enough that the flow is almost entirely inertial, so the data carry no information about the viscous term and the fit puts it wherever the scatter pushes it. Look at the inertial share printed above: if it is over about 95 per cent at your highest velocity, that is the diagnosis. The fix is data, not arithmetic — add points at a fifth to a tenth of your current lowest velocity. Meanwhile, try the equal-weight fit, which halves the incidence of a negative coefficient; and if you only need the model at high velocity, setting 1/α to zero and using C₂ alone is defensible and will reproduce your curve there.

Superficial or interstitial velocity?

Superficial, everywhere: volumetric flow divided by the whole frontal area, with the solid included. Both α and C₂ are defined against it, all three major solvers use it for their porous inputs by default, and it is what a bench measures. The interstitial (pore) velocity is the superficial velocity divided by the porosity, so at 40 per cent porosity it is 2.5 times larger. Using it by mistake scales your permeability by the porosity and C₂ by its square — at ε = 0.4 that is a factor of 2.5 and 6.25. Some solvers offer a physical-velocity formulation as an option; if you turn it on, the coefficients change meaning and this page’s output is no longer what you want.

How many points do I need, and where should they be?

Two is the algebraic minimum and it tells you nothing about the fit, because two points and two unknowns always fit exactly. Three is the minimum for a meaningful residual, five is comfortable. Where they sit matters far more than how many there are: you need at least one point low enough that the viscous term is a visible fraction of the pressure drop, and at least one high enough that the inertial term is. A geometric spread — say 0.2, 0.5, 1.2, 3 and 7 m/s — does much more for the coefficients than five points evenly spaced near the top of the range, because the information about each coefficient lives at opposite ends of the curve.

Why is my R² almost 1 when the page says a coefficient is not determined?

Because R² measures how well the curve passes through the points, and the coefficient uncertainty measures something else entirely. If the inertial term is 3 per cent of the pressure drop everywhere in your data, then doubling C₂ changes the predicted curve by 3 per cent — which is inside your scatter, so the fit is nearly as good either way and R² barely moves. The curve is well determined; the split between the two terms is not. Measured on synthetic data, the relative error in a coefficient runs at roughly the measurement scatter divided by that term’s share of the pressure drop, so the inertial share printed above is a far better guide to whether you can trust C₂ than R² is.

Can I get the coefficients from a manufacturer’s curve instead of my own test?

Usually yes, and check three things first. What velocity is the abscissa — face velocity, or flow rate, or flow per unit frontal area, and in what units? What fluid and what temperature, because the coefficients are extracted by dividing out μ and ρ? And does the quoted pressure drop include the housing, the face contraction and any ducting, or is it the core alone? A curve that includes the housing fitted as though it were the core gives a medium that is too resistive, and the error appears as an unphysically small permeability. Read four or five points off the curve at a geometric spread of velocities and put them in above.

Should I use a porous cell zone or a porous jump?

For a genuinely thick medium — a catalyst bed, a filter block, a heat-exchanger core you want to put heat into — use the cell zone, because you need the volume. For anything thin compared with the cells around it — a screen, a perforated plate, a mesh, a thin baffle — use the porous jump or thin-baffle boundary condition. Fluent’s own guide recommends the jump wherever it is possible, on the grounds that it is more robust and converges better, and the reason is mechanical: a cell zone two cells thick resolves the pressure gradient inside it badly, whereas a jump imposes the loss on a face with no internal gradient to resolve at all.

What porosity should I enter, and does it change the pressure drop?

Not the steady pressure drop, no. With the superficial-velocity formulation the two resistance coefficients determine the pressure drop entirely, and the porosity affects the storage terms: the transient response, the residence time, the thermal mass and the energy equation. Enter the real void fraction anyway, because your solver will use it for those, and because this page uses it for the Ergun cross-check and the interstitial-velocity conversion. Typical values: 0.36 to 0.43 for randomly packed spheres, 0.4 as a default, 0.7 to 0.95 for metal foams and fibrous media, and for a fin core the ratio of free-flow area to frontal area, which is often 0.6 to 0.8.

My core is anisotropic. Can I still use these numbers?

Only for flow normal to the face, which is what you measured. A finned or louvred core can be a hundred times more resistive across the fins than along them, and every solver lets you give a directional resistance tensor for exactly that reason: three viscous and three inertial coefficients on principal axes. Put the fitted pair on the through-flow direction, and make the transverse directions much larger — a factor of 100 to 1000 is the usual way to force the flow to stay axial — rather than leaving them equal, which lets flow cross the core sideways with no penalty and is a common and quiet source of wrong results.

The two Ergun particle diameters disagree wildly. Is something wrong?

Almost certainly not. Ergun’s constants 150 and 1.75 are calibrated for granular packing, and a heat-exchanger core, a wire mesh or a perforated plate is not granular packing — it generates much more inertial loss for its permeability, so the C₂-implied diameter comes out far larger than the α-implied one. That disagreement is the cross-check working: it tells you the medium is not a packed bed and that you must not use Ergun to estimate a coefficient you did not measure. If you genuinely have a packed bed and the two still disagree by more than a factor of about two, then suspect the porosity first — Ergun’s α goes as ε³/(1−ε)², so at ε = 0.4 a 10 per cent error in porosity is a 53 per cent error in permeability.

Related calculators

References

  1. ANSYS Fluent User’s Guide, porous media conditions. The source of the model form used here: the momentum sink is S_i = −(ΣD_ij μv_j + ΣC_ij ½ρ|v|v_j), which for a homogeneous isotropic medium reduces to S_i = −(μ/α v_i + C₂ ½ρ|v|v_i), with the viscous resistance 1/α in m⁻² and the inertial resistance C₂ in m⁻¹ described as a loss coefficient per unit length. The guide also states that the porous jump boundary condition is a one-dimensional simplification of the same model and should be preferred where possible for robustness. Cited, not reproduced.
  2. The worked example in that same guide — 28.4, 487.0, 1432.0 and 2964.0 Pa at 20, 50, 80 and 110 m/s, ρ = 1.225 kg/m³, μ = 1.7894×10⁻⁵ Pa·s, Δn = 1 m, quoted trendline Δp = 0.28296v² − 4.33539v giving C₂ = 0.462 and 1/α = −242,282 m⁻² — was used here as an independent test of this page’s closed-form fit, and the result is a finding rather than a confirmation. Unweighted least squares on those four points gives a = −4.94333 and b = 0.28912 (checked against an independent SVD least-squares solve, agreeing to eleven significant figures), hence 1/α = −276,256 and C₂ = 0.4720. The guide’s quoted pair is 14 per cent away from that in the viscous coefficient. It matches a least-squares fit of Δp/v against v (−4.35818 and 0.28245) to within 0.6 per cent, so the published trendline is the equal-weight fit rather than the unweighted one. Both fits are offered on this page and the difference is printed.
  3. OpenFOAM, DarcyForchheimer.H and DarcyForchheimer.C in the porosity models. The header states the source as S = −(μd + (ρ|U|/2)f)U with d the Darcy coefficient in 1/m² and f the Forchheimer coefficient in 1/m, and the implementation carries the comment “leading 0.5 is from 1/2*rho” beside the line that halves f. Read directly from the published source rather than from secondary descriptions, because it establishes the one thing a user needs: OpenFOAM’s d and f are numerically identical to Fluent’s viscous and inertial resistances, so coefficients transfer between the two solvers unchanged.
  4. S. Ergun, Fluid Flow through Packed Columns, Chemical Engineering Progress 48 (1952), 89–94, for Δp/L = 150μ(1−ε)²v/(ε³d_p²) + 1.75ρ(1−ε)v²/(ε³d_p). Inverted here into the two equivalent particle diameters printed as a cross-check: d_p = √(150α(1−ε)²/ε³) from the permeability, and d_p = 3.5(1−ε)/(ε³C₂) from the inertial factor, the second following from C₂ = 2b/ρ with b = 1.75ρ(1−ε)/(ε³d_p). Used only as a consistency check on a fitted pair, never to supply a coefficient. Cited, not reproduced.
  5. I. E. Idel’chik, Handbook of Hydraulic Resistance, for the loss coefficient of a thin sharp-edged perforated plate, ζ = (0.707(1−β)0.375 + 1 − β)²/β² on the approach velocity. Cited and not reproduced as a table, because this page does not need to: the expression was shown here to be algebraically identical to the elementary Borda–Carnot result K = (1/(C_cβ) − 1)² with C_c = 1/(1 + 0.707(1−β)0.375), which is what the calculator evaluates. The identity was verified at β = 0.05 to 0.9 and reproduces Idel’chik’s values exactly (for instance β = 0.3 gives 19.3157 by both routes), and the implied contraction coefficient rises monotonically from 0.5905 to 0.7703, with the isolated-hole limit 1/(1 + 1/√2) = 0.58579 close to the classical free-streamline value π/(π+2) = 0.61101 for a slot.
  6. L. Borda and L. Carnot’s sudden-expansion loss, ½ρ(v₁ − v₂)², which is classical and derivable from a control-volume momentum balance with no empirical content. Combined with a vena contracta of area C_cβA it gives the whole perforated-plate result on this page, including the thick-plate limit K = (1/β − 1)² at C_c = 1.
  7. The uncertainty figures quoted on this page and in the second table were generated here by Monte Carlo, not taken from a reference: synthetic Darcy–Forchheimer data at five velocities, perturbed with proportional Gaussian noise at 2, 5 and 10 per cent, refitted 4,000 times at each level by both fit methods, and the median absolute error in each recovered coefficient reported. Three media were covered, spanning inertial shares from under 1 per cent to 38 per cent. The equal-weight fit recovered the permeability 1.5 to 3 times more accurately than the unweighted fit at every level tested, and roughly halved the incidence of a negative coefficient. The rule of thumb that falls out — relative coefficient error ≈ 1.3 × scatter / that term’s share of the pressure drop — fits the measured medians to within about 20 per cent across the cases tested.
  8. National Institute of Standards and Technology, Special Publication 811, for the unit conversions used: 1 psi = 6 894.757 293 Pa, the conventional inch of water = 2.490 889×10² Pa (0.0254 m × 1000 kg/m³ × 9.80665 m/s² exactly), and 1 ft/min = 0.00508 m/s exactly. The darcy is taken as 9.869233×10⁻¹³ m², its definition from a viscosity of 1 cP, a gradient of 1 atm/cm and a flux of 1 cm/s. A US Government work.

Setup guidance, not validation. Correlations have ranges of validity and cell-count estimates are order-of-magnitude. A converged simulation is not a correct one. Full disclaimer at calcengines.com/disclaimer/