CamPetro

TOC from Schmoker

On this page

Summary

Schmoker's method estimates Total organic carbon from the bulk density alone, with a relation that is linear in the inverse of the density. It needs only a density log and two fitted coefficients. Use it when there is no usable resistivity curve, or as an independent check on a resistivity-based estimate.

Inputs and outputs

Item Units
Input Bulk density g/cm³
Input Schmoker coefficient A wt%·g/cm³
Input Schmoker coefficient B wt%
Output Total organic carbon wt%

Equations

TOC is a linear function of the inverse bulk density:

\[ \TOC = \frac{\SchmA}{\rhob} - \SchmB \]

The result is limited to the interval 0 to 100 wt%. The two coefficients are fitted to core TOC for the formation.

Symbol Variable Units Typical range
\(\rho_b\) Bulk density g/cm³ 1.8 to 3.0
\(A\) Schmoker coefficient A wt%·g/cm³ 100 to 200
\(B\) Schmoker coefficient B wt% 40 to 80
\(\mathrm{TOC}\) Total organic carbon wt% 0 to 15

Single-value calculator

Behavior

TOC falls as density rises, because organic matter is much less dense than the minerals. Near a density of 2.45 g/cm³ the slope is about 0.26 wt% for each 0.01 g/cm³. The two curves show how a change in coefficient B shifts the whole curve up or down: a 2.7 unit change in B moves TOC by 2.7 wt% at every density.

Parameter guidance

Schmoker coefficient A and Schmoker coefficient B are best fitted to core: cross-plot core TOC against the inverse of the bulk density at the same depths and fit a straight line. If no core is available, published values for a similar formation are a starting point only. The pair 154.5 and 57.3 is used here as an example. Use a separate pair for each formation with a different mineralogy. Calibration is covered on the TOC Analysis page.

Worked example

A bulk density of 2.45 g/cm³ with A = 154.5 and B = 57.3:

rhob, A, B = 2.45, 154.5, 57.3
toc = A / rhob - B
print(f"TOC = {A:g} / {rhob:g} - {B:g} = {toc:.2f} wt%")
# the density at which TOC reaches zero
print(f"TOC is zero at a density of {A / B:.3f} g/cm3")

Output

TOC = 154.5 / 2.45 - 57.3 = 5.76 wt%
TOC is zero at a density of 2.696 g/cm3

Assumptions and limitations

  • Density changes are caused by organic matter alone. Porosity, pyrite, heavy minerals and changes in mineralogy also change the density, and are read as TOC.
  • The mineral matrix is constant over the interval being evaluated.
  • The density log is good. Washouts lower the density and are read as extra TOC.
  • The coefficients were fitted to a formation like the one being evaluated.

QC checks

  • TOC is zero or close to zero in non-source rock and in tight limestone and sandstone.
  • TOC tracks core TOC with no bias. A bias that varies with depth indicates a mineralogy change.
  • TOC does not spike in washouts. Check against the caliper.
  • TOC is lower than a resistivity-based estimate in pyrite-rich rock only if pyrite is being read as matrix.

Going Deeper

The relation is a direct consequence of a two-component mixture. If the rock is organic matter of density ρk mixed with a matrix of density ρma, then the inverse of the bulk density is a weighted mean of the inverse densities, and the kerogen weight fraction is linear in the inverse bulk density:

\[ \Wk = \frac{1/\rhob - 1/\rhoMa}{1/\rhoK - 1/\rhoMa} \]

Multiplying by the carbon fraction \(\fC\) and by 100 gives TOC in weight percent, so \(A\) and \(B\) are not free: \(B/A\) equals the inverse of the matrix density, and \(A\) depends on the kerogen density and carbon fraction. With A = 154.5 and B = 57.3 the implied matrix density is about 2.70 g/cm³. This is a useful check: if the fitted coefficients imply a matrix density that is far from the real mineralogy, the fit is absorbing something else.

References

  1. Schmoker, J.W., 1979. Determination of organic content of Appalachian Devonian shales from formation-density logs. AAPG Bulletin, 63(9), 1504–1509.
  2. Schmoker, J.W. and Hester, T.C., 1983. Organic carbon in Bakken Formation, United States portion of Williston Basin. AAPG Bulletin, 67(12), 2165–2174.

Python reference implementation

Python reference implementation

The Python reference implementation is available to registered users with a verified email address. Register or sign in to view it.