Thomas-Stieber
On this page
Summary
The Thomas-Stieber model gives the total porosity of a sand as a function of its Shale volume for three ways the shale can be distributed: Laminated shale, Structural shale and Dispersed shale. Each way plots as a different line on a porosity against shale volume diagram, so the position of a log sample shows how its shale is distributed. Use it to decide how shale changes the porosity of the sand itself, and as the first step of laminated sand analysis.
Inputs and outputs
| Item | Units | |
|---|---|---|
| Input | Shale volume | v/v |
| Input | Clean-sand porosity | v/v |
| Input | Shale total porosity | v/v |
| Output | Total porosity, laminated shale | v/v |
| Output | Total porosity, structural shale | v/v |
| Output | Total porosity, dispersed shale | v/v |
Equations
The model has two end members, a clean sand of total porosity \(\phiSa\) and a pure shale of total porosity \(\phiSh\). Both porosities are total porosity, so \(\phiSh\) includes the clay-bound water.
Laminated shale. Shale layers replace sand layers. The sand layers keep their porosity, so total porosity is the volume-weighted mean of the two end members, a straight line:
Structural shale. Shale grains replace sand grains in the framework. The intergranular pore space of the sand stays open and the shale grains bring their own porosity:
Dispersed shale. Shale fills the pores of the sand. Each unit of shale replaces one unit of pore space and brings back its own porosity \(\phiSh\):
The three lines start at the clean-sand point \((\Vsh = 0, \phiSa)\). Each stops at a vertex, where the model ends:
| Point | \(\Vsh\) | Total porosity |
|---|---|---|
| Clean sand | 0 | \(\phiSa\) |
| Dispersed vertex (pores full of shale) | \(\phiSa\) | \(\phiSa\,\phiSh\) |
| Structural vertex (all grains shale) | \(1 - \phiSa\) | \(\phiSa + \left(1 - \phiSa\right)\phiSh\) |
| Pure shale | 1 | \(\phiSh\) |
Beyond its vertex each line continues as a straight line to the pure-shale point. Past the dispersed vertex the rock is sand grains floating in shale, and \(\phit = \phiSh\,\Vsh\). Past the structural vertex the line runs from the vertex to \((1, \phiSh)\). The calculator uses this continuation so that all three lines return the shale porosity at 100% shale.
| Symbol | Variable | Units | Typical range |
|---|---|---|---|
| \(V_{sh}\) | Shale volume | v/v | 0 to 1 |
| \(\phi_t\) | Total porosity | v/v | 0 to 0.40 |
| \(\phi_{sa}\) | Clean-sand porosity | v/v | 0.15 to 0.35 |
| \(\phi_{sh}\) | Shale total porosity | v/v | 0.05 to 0.35 |
| \(\phi_{t,lam}\) | Total porosity, laminated shale | v/v | 0 to 0.4 |
| \(\phi_{t,str}\) | Total porosity, structural shale | v/v | 0 to 0.5 |
| \(\phi_{t,disp}\) | Total porosity, dispersed shale | v/v | 0 to 0.4 |
Single-value calculator
Behavior
The plot uses a clean-sand porosity of 0.25 and a shale porosity of 0.10. All three lines start at 0.25 with no shale and the laminated and dispersed lines meet the structural line again at 0.10 at 100% shale. In between they separate. The laminated line falls steadily, from 0.235 at 10% shale to 0.175 at 50%. The structural line rises, from 0.26 at 10% shale to 0.30 at 50%, because the shale grains add porosity and the sand pores are kept. The dispersed line falls fastest, from 0.16 at 10% shale to a minimum of 0.025 at 25% shale, where the pores are full, and then rises slowly along the line to pure shale (0.05 at 50%). At 20% shale the three lines read 0.22, 0.27 and 0.07, so the same shale volume can mean very different porosity. The distribution matters most for the quality of the sand: laminated shale takes space but leaves the sand porosity unchanged, while dispersed shale destroys the pore space of the sand itself.
Parameter guidance
Clean-sand porosity. Read it from the cleanest sands in the zone: the porosity at the top of the total porosity against shale volume cloud, where shale volume is close to zero. It is a total porosity from the same logs and the same method as the rest of the cross-plot, not a core value, unless the logs are calibrated to core. Shale porosity. Read the total porosity of the log in thick pure shale, for example the neutron-density porosity at the shale point. It is usually 0.05 to 0.20 and is not the effective porosity of the shale, which is zero. Both are zone parameters, shared with the triangulation page. See the step page for how they are picked together.
Worked example
A sand with a clean porosity of 0.25 and a shale porosity of 0.10. The table gives the total porosity for each shale distribution, with a check of the two limiting cases (zero shale returns the clean sand and 100% shale returns the shale):
ps, ph = 0.25, 0.10
def lines(v):
lam = (1 - v) * ps + v * ph
vtx = ps + (1 - ps) * ph
stru = ps + ph * v if v <= 1 - ps else vtx + (v - (1 - ps)) * (ph - vtx) / ps
disp = ps - v * (1 - ph) if v <= ps else ph * v
return lam, stru, disp
print(f"{'Vsh':>5} {'laminated':>10} {'structural':>11} {'dispersed':>10}")
for v in (0.0, 0.1, 0.2, 0.25, 0.3, 0.5, 0.75, 1.0):
print(f"{v:5.2f} " + " ".join(f"{x:{w}.4f}" for x, w in zip(lines(v), (10, 11, 10))))
assert all(abs(x - ps) < 1e-12 for x in lines(0.0)) # zero shale: clean sand
assert all(abs(x - ph) < 1e-12 for x in lines(1.0)) # all shale: shale porosity
print(f"dispersed minimum = phi_sand x phi_shale = {ps * ph:.4f} at Vsh = {ps:.2f}")
Output
Vsh laminated structural dispersed
0.00 0.2500 0.2500 0.2500
0.10 0.2350 0.2600 0.1600
0.20 0.2200 0.2700 0.0700
0.25 0.2125 0.2750 0.0250
0.30 0.2050 0.2800 0.0300
0.50 0.1750 0.3000 0.0500
0.75 0.1375 0.3250 0.0750
1.00 0.1000 0.1000 0.1000
dispersed minimum = phi_sand x phi_shale = 0.0250 at Vsh = 0.25
Assumptions and limitations
- The rock is a mixture of two end members, a clean sand and a pure shale, and each has one constant porosity. Sorting and cementation changes in the sand spread the points into a band and are not modelled.
- One kind of shale is present. The shale porosity is the same for laminated, structural and dispersed shale.
- The porosity on the vertical axis is total porosity, including the clay-bound water of the shale. The model does not apply to effective porosity.
- Shale volume is known. Any error in it moves the sample along the horizontal axis.
- Structural shale means shale grains in the framework with the sand pore space preserved. Other uses of the word exist, so check the definition when comparing with other work.
- Continuation of the dispersed and structural lines beyond their vertices to pure shale is straight, which is a simplification.
QC checks
- Zero shale returns the clean-sand porosity and 100% shale returns the shale porosity, for all three lines.
- On a cross-plot of total porosity against shale volume, nearly all samples fall inside the area bounded by the sand, shale, structural and dispersed vertices. Many samples outside mean the end members are wrong.
- The dispersed line has its minimum at a shale volume equal to the clean-sand porosity, and its value is the product of the two end-member porosities.
- The cloud of clean samples is at the top left of the plot, and its porosity is close to the clean-sand porosity chosen.
- Compare the diagram with core or thin-section descriptions of shale type where they exist.
Going Deeper
The diagram was proposed by Thomas and Stieber for sandstones in which shale distribution had to be inferred from logs. Its value is that it separates three cases that conventional shaly-sand equations treat as one: the shale volume is the same but the porosity, permeability and resistivity of the reservoir sand are not. A sample on the laminated line has sand of full quality in thin beds, the dispersed line has sand with lost pore space, and the structural line has a stiff framework with extra porosity from the shale grains. In practice the points fall between the lines, which is why triangulation describes a sample as a mixture of end members. The diagram uses total porosity and total shale volume, so it is only as good as the two logs that feed it. Dipping and thin beds, borehole effects and radioactive minerals all move points off the lines.
References
- Thomas, E.C. and Stieber, S.J., 1975. The distribution of shale in sandstones and its effect upon porosity. Transactions of the SPWLA 16th Annual Logging Symposium, Paper T.
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.