Dykstra-parsons Coefficient (Vk)

Dykstra and Parsons (1950) introduced the concept of the permeability variation coefficient V, which is a statistical measure of nonuniformity of a set of data. It is generally applied to the property of permeability but can be extended to treat other rock properties.

Our data is.

data<-read.csv("D:/karpur.csv",header=T)
head(data)
   depth caliper ind.deep ind.med  gamma phi.N R.deep  R.med      SP
1 5667.0   8.685  618.005 569.781 98.823 0.410  1.618  1.755 -56.587
2 5667.5   8.686  497.547 419.494 90.640 0.307  2.010  2.384 -61.916
3 5668.0   8.686  384.935 300.155 78.087 0.203  2.598  3.332 -55.861
4 5668.5   8.686  278.324 205.224 66.232 0.119  3.593  4.873 -41.860
5 5669.0   8.686  183.743 131.155 59.807 0.069  5.442  7.625 -34.934
6 5669.5   8.686  109.512  75.633 57.109 0.048  9.131 13.222 -39.769
  density.corr density phi.core   k.core Facies
1       -0.033   2.205  33.9000 2442.590     F1
2       -0.067   2.040  33.4131 3006.989     F1
3       -0.064   1.888  33.1000 3370.000     F1
4       -0.053   1.794  34.9000 2270.000     F1
5       -0.054   1.758  35.0644 2530.758     F1
6       -0.058   1.759  35.3152 2928.314     F1

At beginning, we will find the Frequency for K.core .

A<-table(data$k.core)
df=data.frame(A)
t=t(df)
t=as.data.frame(t)
r=rev(t)
r=t(r)
r=as.data.frame(r)
Permeability=r$Var1
Frequency=r$Freq
df2=data.frame(Permeability,Frequency)
R=head(df2,100)
R.=head(df2,30)
R.
##    Permeability Frequency
## 1         15600         1
## 2    14225.3135         1
## 3    13544.9785         1
## 4    13033.5283         1
## 5    11841.7432         1
## 6    11117.4023         1
## 7         10860         1
## 8     10649.958         1
## 9         10540         1
## 10    9898.4785         1
## 11    9533.3623         1
## 12    9458.1729         1
## 13         9120         1
## 14    8820.1025         1
## 15         8820         2
## 16         8760         1
## 17    8742.7529         1
## 18    8689.8252         1
## 19         8390         1
## 20    8306.0459         1
## 21         8190         1
## 22         8030         1
## 23    7956.4258         1
## 24         7930         1
## 25    7918.8984         1
## 26    7862.0825         1
## 27         7740         1
## 28      7725.96         1
## 29    7525.2207         1
## 30    7517.4834         1

Then, the Number of samples with large Permeability will be found and the Cumulative Frequency Distribution.

df5=data.frame(R)
m=seq(1,100)
df3=data.frame(m)
df3$m=as.numeric(df3$m)
df5$Frequency=as.numeric(df5$Frequency)
f=df3$m+df5$Frequency
s=table(f)
df4=data.frame(s)
no=rbind(data.frame(f = 1, Freq = 1), df4)
rr=no$f
dd=data.frame( rr)
bb=as.numeric(rr)
gg=(bb/102)*100
df6=data.frame(Permeability=df5$Permeability,Freq=df5$Frequency,NO.samples=dd$rr,Cum_Freq=gg)
head(df6,30)
##    Permeability Freq NO.samples   Cum_Freq
## 1         15600    1          1  0.9803922
## 2    14225.3135    1          2  1.9607843
## 3    13544.9785    1          3  2.9411765
## 4    13033.5283    1          4  3.9215686
## 5    11841.7432    1          5  4.9019608
## 6    11117.4023    1          6  5.8823529
## 7         10860    1          7  6.8627451
## 8     10649.958    1          8  7.8431373
## 9         10540    1          9  8.8235294
## 10    9898.4785    1         10  9.8039216
## 11    9533.3623    1         11 10.7843137
## 12    9458.1729    1         12 11.7647059
## 13         9120    1         13 12.7450980
## 14    8820.1025    1         14 13.7254902
## 15         8820    2         15 14.7058824
## 16         8760    1         17 16.6666667
## 17    8742.7529    1         18 17.6470588
## 18    8689.8252    1         19 18.6274510
## 19         8390    1         20 19.6078431
## 20    8306.0459    1         21 20.5882353
## 21         8190    1         22 21.5686275
## 22         8030    1         23 22.5490196
## 23    7956.4258    1         24 23.5294118
## 24         7930    1         25 24.5098039
## 25    7918.8984    1         26 25.4901961
## 26    7862.0825    1         27 26.4705882
## 27         7740    1         28 27.4509804
## 28      7725.96    1         29 28.4313725
## 29    7525.2207    1         30 29.4117647
## 30    7517.4834    1         31 30.3921569

Next step is graph the data

df6$Permeability=as.numeric(df6$Permeability)
df6$Permeability=log(df6$Permeability)
slop=gg
model1=lm(df6$Permeability ~ slop)
plot(gg,df6$Permeability,xlab ='Percent Samples with larger Permeability',ylab='log Permeability, md')
abline(9.272671,-0.009271,lwd = 2)

#find the intercept and slop
model1

Call:
lm(formula = df6$Permeability ~ slop)

Coefficients:
(Intercept)         slop  
   9.272671    -0.009271  

Heterogeneity Index Can be calculate now.

#find K50
K50=9.272671-0.009271*50
K50=exp(K50)
#find K84.1
K84.1=9.272671-0.009271*84.1
K84.1=exp(K84.1)
#find Heterogeneity Index
HI=(K50-K84.1)/K50
HI
[1] 0.2710434

This value is for Slightly Heterogeneity in the Reservoir.


Lorenz Coefficient (Lk)

Since 1950, the Lorenz Coefficient has provided a practical way to quantify layered permeability heterogeneity. Simple to calculate from a set of permeability and porosity measurements and naturally bounded between 0 – 1.

First , Thickness will calculate by using Depth.

#Calculate thickness from depth
thickness = c(0.5)
for (i in 2:819) {
  h = data$depth[i] - data$depth[i-1]
  thickness = append(thickness, h)
}

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

Second, calculate the flow capacity and storage capacity.

KH = thickness * data$k.core
PH = thickness * data$phi.core
cum_sum_kh = cumsum(KH)
cum_sum_ph = cumsum(PH)
FTV = (cum_sum_ph/100) / max(cum_sum_ph/100) #to convert phi between (0,1)
FTF = cum_sum_kh / max(cum_sum_kh)

Now, the Graph is ready to be plotted.

plot(FTV,FTF,xlab="Fraction of Total Volume",ylab="Fraction of Total Flow Capacity", pch = 10, cex = 0.2, text(0.4, 0.8, "B"))
text(0,0, "A", pos = 2)
text(1,1, "C", pos = 1)
text(1,0, "D", pos = 2)
abline(0,1, lwd = 2)

A = AUC(FTV,FTF, method="trapezoid")
HI  = (A - 0.5) / 0.5
HI
## [1] 0.4524741

This value is for heterogeneous Reservoir.