Water Saturation

The library implements a suite of widely adopted water saturation (Sw) models derived from resistivity and porosity measurements. These formulations cover both clean and shaly reservoir scenarios, reflecting distinct assumptions about conductive pathways, clay effects, and rock electrical behavior. The available methods enable consistent saturation evaluation across a broad range of lithological and petrophysical conditions.

  • The Archie Equation constitutes the fundamental clean-formation model. It relates water saturation to true formation resistivity (Rt), porosity (φ), and water resistivity (Rw), governed by the tortuosity factor (a), cementation exponent (m), and saturation exponent (n). Archie’s model assumes that the rock matrix is non-conductive and that electrical conduction occurs exclusively through the formation water. As such, it is most reliable in clean, clay-free reservoirs where surface conductivity is negligible.

For shaly formations, the library provides models that explicitly incorporate clay conductivity effects:

  • Simandoux Model – Extends Archie’s formulation by accounting for the parallel conductive contribution of shale. The model integrates shale volume (Vsh) and shale resistivity (Rsh), making it suitable for dispersed clay systems and laminated shaly sands. It remains one of the most commonly applied shaly-sand saturation equations.

  • Indonesia (Poupon–Leveaux) Model – Introduces a nonlinear coupling between matrix and shale conductivity terms. This formulation often produces more stable results in formations with moderate-to-high shale content and is particularly valued where Simandoux may overestimate Sw.

  • Fertl Model – A simplified shaly-formation model designed to reduce sensitivity to shale resistivity uncertainties. Instead of requiring explicit Rsh input, the method uses an empirical correction term controlled by the alpha parameter (α). This approach is operationally convenient when shale resistivity is poorly constrained or unavailable.

All shale-corrected models require effective porosity rather than total porosity, reflecting the need to isolate the interconnected pore space contributing to fluid flow and electrical conduction.

To streamline interpretation workflows, the library exposes a façade function that unifies all saturation models under a single interface. This design allows users to select the appropriate equation based on reservoir type, shale content, and data quality while preserving parameter consistency.

Water Saturation

stoneforge.petrophysics.water_saturation.archie(rt, phi, rw=0.02, a=1.0, m=2.0, n=2.0)[source]

Estimate the Water Saturation from Archie[1] (standard values from Archie[2], American Association of Petroleum Geologists (AAPG) Wiki[3]).

Parameters:
  • rt (array_like) – Formation resistivity.

  • phi (array_like) – Porosity.

  • rw (float) – Water resistivity.

  • a (float) – Tortuosity factor.

  • m (float) – Cementation exponent.

  • n (float) – Saturation exponent.

Returns:

sw – Water saturation from Archie equation.

Return type:

array_like

stoneforge.petrophysics.water_saturation.fertl(rt, phi, vsh, rw=0.02, a=1.0, m=2.0, alpha=0.3)[source]

Estimate water saturation from Fertl[4] equation (standard values from American Association of Petroleum Geologists (AAPG) Wiki[3]).

Parameters:
  • rt (array_like) – True resistivity.

  • phi (array_like) – Porosity (must be effective).

  • vsh (array_like) – Clay volume log.

  • rw (float) – Water resistivity.

  • a (int, float) – Tortuosity factor.

  • m (int, float) – Cementation exponent.

  • alpha (float) – Alpha parameter from Fertl equation.

Returns:

fertl – Water saturation from Fertl equation.

Return type:

array_like

stoneforge.petrophysics.water_saturation.indonesia(rt, phi, vsh, rw=0.02, rsh=4.0, a=1.0, m=2.0, n=2.0)[source]

Estimate water saturation from Poupon and Leveaux[5] equation (standard values from GeoLoil[6], American Association of Petroleum Geologists (AAPG) Wiki[3]).

Parameters:
  • phi (array_like) – Porosity.

  • vsh (array_like) – Clay volume log.

  • rw (float) – Water resistivity.

  • rsh (float) – Clay resistivity.

  • rt (array_like) – True resistivity.

  • a (float) – Tortuosity factor.

  • m (float) – Cementation exponent.

  • n (float) – Saturation exponent.

Returns:

indonesia – Water saturation from Poupon-Leveaux equation.

Return type:

array_like

stoneforge.petrophysics.water_saturation.simandoux(rt, phi, vsh, rw=0.02, rsh=4.0, a=1.0, m=2.0, n=2.0)[source]

Estimate water saturation from Simandoux[7] equation (standard values from GeoLoil[6], American Association of Petroleum Geologists (AAPG) Wiki[3]).

Parameters:
  • phi (array_like) – Porosity.

  • vsh (array_like) – Clay volume log.

  • rw (float) – Water resistivity.

  • rsh (float) – Clay resistivity.

  • rt (array_like) – True resistivity.

  • a (float) – Tortuosity factor.

  • m (float) – Cementation exponent.

  • n (float) – Saturation exponent.

Returns:

sw – Water saturation from Simandoux equation.

Return type:

array_like

stoneforge.petrophysics.water_saturation.water_saturation(rw, rt, phi, a, m, method='archie', **kwargs)[source]

Compute water saturation from resistivity log.

This is a façade for the methods:
  • archie

  • simandoux

  • indonesia

  • fertl

Parameters:
  • rw (int, float) – Water resistivity.

  • rt (array_like) – True resistivity.

  • phi (array_like) – Porosity (must be effective).

  • a (int, float) – Tortuosity factor.

  • m (int, float) – Cementation exponent.

  • n (int, float) – Saturation exponent. Required if method is “archie”, “simandoux” or “indonesia”.

  • vsh (array_like) – Clay volume log. Required if method is “simandoux”, “indonesia” or “fertl”.

  • rsh (float) – Clay resistivity. Required if method is “simandoux” or “indonesia”.

  • alpha (array_like) – Alpha parameter from Fertl equation. Required if method is “fertl”

  • method (str, optional) –

    Name of the method to be used. Should be one of

    • ’archie’

    • ’simandoux’

    • ’indonesia’

    • ’fertl’

    If not given, default method is ‘archie’

Returns:

water_saturation – Water saturation for the aimed interval using the defined method.

Return type:

array_like

References