Saturation Height Model

The Saturation Height Model wizard calibrates a capillary-pressure relationship from core Pc–Sw measurements, combines the fitted plugs into zone-group models, and applies a calibration to well porosity and permeability curves. It produces Height above FWL, Capillary pressure and Water saturation curves, and can store a named calibration for other wells and workflows.

Launching the wizard

Open the Petrophysics ribbon bar and click Saturation Height Model in the Core group.

saturation_height_model_data_tab.png

Work through Data, QC, Model, Correlations, Apply and Results. The Leverett-J route skips Correlations because its J function already includes porosity and permeability.

Loading core data

  • Under Core data source, choose the source Well and Core table. Assign at least Sample id, Capillary pressure and Saturation. Assign Porosity and Permeability for coefficient correlations, Thomeer or Leverett-J, and map Depth, Zone, Well, Test method, QC flag and Branch (drainage / imbibition) when those columns are present.
  • Choose the Capillary pressure unit explicitly: MPa, psi, psia, bar, atm or kPa. There is no default, and an unsupported unit is refused rather than assumed.
  • Set Saturation column holds to Water saturation (Sw) or Non-wetting phase saturation (e.g. mercury). A non-wetting value is converted with Sw = 1 − Snw. Core porosity and saturation are interpreted as fractions (v/v), and permeability as mD.
  • Click Load core data. Rows sharing a Sample id form one plug. Rows with an empty or invalid sample id, Pc or Sw are omitted; when Depth is assigned, rows with an empty or nonnumeric depth are also omitted and reported. Keep repeated plug metadata consistent throughout each sample.
  • Use Plug filters to limit the loaded plugs by Well, Zone, Test method or QC flag. Refit after changing a filter. With no branch column, every point is treated as drainage.

For a source file that records a plug depth only on the first row of a block, use Fill down depth in the core-table import before loading it into this wizard.

To reuse an existing calibration instead, select it under Or start from a saved model and click Load model. The calibration is restored and the wizard moves to Apply; the target well does not need its own core table.

QC and pressure normalisation

  • Uncheck a plug under Plugs (uncheck to exclude) to remove the whole plug from fitting. In the selected plug's point table, clear Use to exclude an individual measurement.
  • Logarithmic Pc axis is enabled initially. Non-positive Pc values cannot be drawn on that axis and are omitted and counted instead of being silently floored.
  • Enable Normalise to reservoir conditions to use Pc(reservoir) = Pc(lab) × |sigma(reservoir) cos theta(reservoir)| / |sigma(lab) cos theta(lab)|. Air-mercury, Air-brine, Gas-brine and Oil-brine presets fill the sigma and contact-angle fields; all values remain editable.
  • Drainage enters the fit by default. Imbibition remains visible as a separate dashed branch; enable Combine imbibition into the drainage fit only when the two branches should be fitted together.

Normalisation keeps the original Pc in Pc original (MPa) and uses a separate transformed value. It does not alter the core table.

Fitting the model

On Model, choose log Pc or Saturation as the Fit domain. The selected domain is stored with the model and reported beside the fit statistics. Changing the model function clears the current fits, so fit again after switching.

  • Brooks-Corey fits Pe, Lambda and Swir per plug, using Se = (Sw − Swir) / (1 − Swir) and Pc = Pe × Se^(−1/Lambda). The inverse returns Sw = 1 when Pc is at or below Pe.
  • Thomeer fits Pd, G and BV inf per plug. Above Pd, Sb = BV inf × 10^[−G/log10(Pc/Pd)] and Sw = 1 − Sb/porosity. At or below Pd, Sw is 1. The table also reports the resulting Sw min.
  • Leverett-J transforms each point with J = 0.216606 × (Pc in psi / |sigma cos theta|) × sqrt(K/PHI) and fits one Je, Lambda and Swir set per zone group rather than per plug.

For Brooks-Corey and Leverett-J, enable Supply Swir (otherwise taken from the plug minimum) to enter a common Swir; otherwise the data minimum is used. A fit needs at least three valid points. Points outside a required logarithmic domain are excluded and counted, and a plug whose usable saturations are all identical is reported as not fitted.

The results table names the fitted parameters and reports Fit domain, Points used, Points excluded, RMS, R2, Bias, Status and Notes.

Correlating coefficients

For Brooks-Corey and Thomeer, use Correlations to define how each coefficient varies within each zone group.

  • Choose the Zone group and Coefficient, then select PHI (porosity, v/v), K (permeability, mD) or sqrt(K / PHI) as the predictor.
  • Choose Constant, Linear (A = a + b*X), Power (A = a * X^b), Exponential (A = a * exp(b*X)) or Logarithmic (A = a + b*ln X), then click Correlate coefficients per zone group.
  • The table and scatter plot show the equation, R2 and excluded-point count. A group with fewer than three fitted plugs offers Constant only and is marked (< 3 pts). Domain exclusions for Power, Exponential and Logarithmic fits are counted rather than hidden.

With Leverett-J, the Correlations tab is disabled: J already contains permeability and porosity, and correlating its coefficients against those inputs again would apply the normalisation twice.

Applying a model

  1. Choose the Target well, Porosity curve and Permeability curve. The porosity curve supplies the MD sampling grid, and permeability is interpolated onto it. A trajectory is required to calculate TVDSS.
  2. Select the matching Zone set when the model has several groups. With exactly one calibrated group, leaving Zone set empty applies that group to the whole well.
  3. For FWL source, select Manual TVDSS and enter the level as positive downward, or select Fluid contact and choose the Conceptual model, Zone and constant-level FWL contact. A polygon-bounded level is accepted with a reminder to check that the target well is inside it; a map-valued FWL is refused. See Fluid contacts.
  4. Enter Water density and Hydrocarbon density in g/cm3, and edit the three output names if needed. The defaults are HAFWL (m), PC_SHM (MPa) and SW_SHM (v/v).
  5. Click Apply model. Height is FWL TVDSS − sample TVDSS, and Pc (MPa) = 0.00980665 × (water density − hydrocarbon density) × height (m). At or below the FWL, Pc is 0 and Sw is 1.

A sample with no matching group, an uncalibrated group, unusable input or a coefficient outside its mathematical domain is written as null in all three outputs. No NaN or infinite value is written. Samples outside the calibration porosity, permeability or Pc range are still calculated and counted as out of range.

Results, saving and reuse

The Results tab contains a QC summary and four plot tabs:

  • Pc vs Sw – raw core points, fitted plug curves and the final group model.
  • Coefficients – the selected coefficient correlation, where applicable.
  • Sw vs depth – calculated Sw, an existing Sw curve and core points.
  • Height above FWL – one final saturation-height relationship per calibrated group.

The summary reports included and excluded plugs, calibrated groups, mean fit statistics, calculated wells, computed and null samples, out-of-range samples, samples below the FWL and the output curve names.

After a successful application, click Save and close to write the curves. Entering a Model name also stores any calibrated groups under Statistics > Saturation height models; an unnamed calibration is not stored as a model. Saving a recalibration under the same name updates the existing model.

Right-click a stored model to Open, Rename or Delete it. You can also load it from the Data tab. Right-click a produced curve and choose Show saturation-height model settings to reopen the run configuration.

Saving to a workflow

Save to workflow requires a model already stored under Statistics. For a new calibration, give it a name and use Save and close, reopen the stored model, configure the target, FWL, densities and curve names on Apply, and then click Save to workflow. If the project has no workflow, confirm the Create workflow prompt; cancelling the prompt adds no job.

The job keeps the stored-model reference, FWL choice, densities, zone set, target well, input curves and output names and can replay without opening the wizard. Renaming the model preserves the reference, and recalibrating it under the same name updates what the job uses. If the model is deleted, replay reports which model is missing instead of silently skipping the job.

Current scope

  • This is a standalone Core wizard; it is not a method inside Petrophysical Evaluation.
  • Models are grouped by zones, not by a categorical rock-type curve.
  • A separate Lambda model is not offered; use Brooks-Corey where that parameterisation is intended.
  • The wizard accepts a manual FWL or a constant-level FWL contact. It does not use a depth-map contact or solve the FWL from the calibration data.
  • Relative permeability, hysteresis, full SCAL simulation and simulator export are outside this workflow.

See Also