Local Porosity-Permeability Calibration Calculator
Fit a local log-linear porosity/permeability transform to measured core pairs, with residuals, extrapolation warnings and portable saved-work files.
Results
Calculate to view linked results. Default values are examples, not recommended operating inputs.
Learn, compare and practice
Worked explanations, controlled studies and printable exercises connected to this calculation.
Calculation sequence
- Enter four to one hundred paired core measurements from a locally consistent rock population. Porosity is percent, so enter 20 for 20 percent, not 0.20. Permeability is positive mD on a consistent directional, confining-stress, fluid and gas-slip-correction basis. Use facies or rock-type separation and lab metadata before fitting; the calculator cannot detect whether the rows were taken from comparable measurements.
- Fit log10 of permeability against porosity in percentage points using unweighted ordinary least squares. A centered, scaled design matrix and ML.js QR decomposition avoid fitting normal equations or mixing raw-mD and logarithmic residual objectives. Repeated porosity rows remain repeated observations. At least three distinct porosities and a 0.01-percentage-point span are required, with resolvable variation in log permeability.
- Inspect the slope, intercept, log-space residual table, RMSE and R-squared. RMSE divides squared log residuals by observation count, not by N minus two. Ten raised to that RMSE is a multiplicative scatter diagnostic, not a confidence interval. The plot uses log10 permeability on its vertical coordinate so the displayed line matches the actual fitting objective rather than masking low-permeability deviations.
- Predict at the selected porosity and review the measured interval before reuse. Predictions outside it are explicitly flagged; a nonpositive slope, a span below two percentage points or log-space R-squared below 0.5 prompts review. These warnings are application review thresholds rather than geological validity rules. Save, export and share the actual measured pairs along with the fitted case so a colleague can reopen and recalculate it.
Worked check
The five default synthetic core pairs are (10%, 1 mD), (15%, 10 mD), (20%, 100 mD), (25%, 1,000 mD) and (30%, 10,000 mD). They exactly follow log10(k in mD) = -2 + 0.2 porosity_percent. At 20% the fitted prediction is 100 mD, log RMSE is essentially zero and log R-squared is one. This exact arithmetic fixture is not an actual formation data set or an accuracy claim.
Synthetic examples for reproducibility, not measured field results.
Assumptions and limitations
- This is a locally calibrated empirical log-linear transform, not a universal porosity-to-permeability equation, Kozeny-Carman pore-geometry model, NMR transform or effective-permeability upscaling method. Porosity alone does not identify pore connectivity, grain size, diagenesis, fracture contribution or directional permeability.
- Only measured positive permeabilities from 1e-9 to 1e6 mD and porosities from 0.01 to 60 percent are accepted. Zero values, below-detection-limit/censored data and missing fields are rejected, not replaced with tiny invented numbers. No outlier removal, weighting, uncertainty interval or facies classification is performed.
- Exponentiating the fitted log trend does not estimate arithmetic mean permeability without an additional statistical correction and assumptions. No such correction is silently applied. High training R-squared is not out-of-sample validation; reserve independent core data before applying the relationship to logs or reservoir simulation.
Implemented equations
Local log-space core regression
Fit diagnostics
Sources and maintenance
Published by PetroCalcHub Team. Implementation and source checks: . This does not claim independent expert review.
- USGS, Nelson (1994): formation-specific log-permeability/porosity trends and geological controls (abstract inspected)
- USGS, Nelson and Kibler (2003): 70 core-data sets with formation and measurement-condition metadata
- ML.js matrix v6.14.0: QR least-squares solve and rank checks