Quantitative measurement that assesses the degree of heterogeneity in the geological properties distribution within the subsurface formation. This index helps describe the spatial variation of essential reservoir parameters, such as porosity, permeability, or lithology. This calculation can be done using tow methods:

  1. Dykstra-Parson Coefficient.

  2. Lorenz Coefficient: “Note described

Dykstra-Parson Coefficient

This method measures the statistical variability of permeability values within a reservoir, indicating the degree of heterogeneity. It implies several calculations on permeability values in table form. The heterogeneity index can be calculated as follows:

  1. Arrange the permeability values in descending order.

  2. Calculate the number of data points with greater or equal permeability (Number of Samples >= K).

  3. Calculate the Percentile of each frequency.

  4. Plot the samples portion versus permeability on a semi log scale.

  5. Find a linear regression model to the straight line that resulting from the semi plot.

setwd("C:/Users/n/Desktop/ResCharHomework")
data = read.csv(("karpur.csv"), header = TRUE)
head(data)

First, Arrange the permeability values in descending order.

ordered_data = data[order(data$k.core, decreasing = TRUE), ]
k = ordered_data$k.core

Second, find Number of samples(Number of Samples >= K).

num_samples = c(1: length(k))

Third, calculate the %/>=k

k_percent = (num_samples * 100)/length(k)

Forth, Plotting the output in log-normal scale, a straight line should observed.

plot(k_percent, k, 
     log = "y",                           # Set y-axis to log scale
     xlab = "Portion of Total Samples Having Larger or Equal k",  
     ylab = "Permeability (mD)",
     pch = 19,                            
     col = "blue",                       
     main = "Semi-Log Plot of Permeability vs. Sample Portion"    
)

Fifth, Find a linear model.

log_k = log(k)
model = lm(log_k ~ k_percent)
summary((model))
## 
## Call:
## lm(formula = log_k ~ k_percent)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.8697 -0.2047  0.1235  0.3150  0.4280 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  9.2584172  0.0377994  244.94   <2e-16 ***
## k_percent   -0.0425617  0.0006541  -65.07   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5404 on 817 degrees of freedom
## Multiple R-squared:  0.8382, Adjusted R-squared:  0.838 
## F-statistic:  4234 on 1 and 817 DF,  p-value: < 2.2e-16

Finally, calculate heterogeneity index.

wanted_k = data.frame(k_percent = c(50, 84.1))
predict_k = predict(model, wanted_k)
HI = (predict_k[1]-predict_k[2]) / predict_k[1]
HI  <- as.numeric(HI)
HI
## [1] 0.2035464

The Value Range according to Dykstra-Parsons is as follows:

  1. 0 = Completely homogeneous (all layers have identical permeability).

  2. 1 = Extremely heterogeneous (large differences in permeability across layers).

  3. Therefore, this reservoir is considered to have moderate heterogeneity, as the Dykstra-Parsons coefficient is around 0.2035464.