Permeability Correction from Core Scale to Log Scale

Ali Abdulhussein Abdulazeez ,BUOG,Basra,Iraq

2024-10-14

Introduction

Permeability can only be determined directly from cores but cores is not available for the whole depth of the oil well it can be for limited intervals only so it has a small scale of permeability, well logs has a larger scale for the whole oil well depth but we can’t determine permeability directly from the well logs , other parameters which can be determined form both of well logs and cores can make the connection for a relationship that let us move from core scale to the log scale.

#Load necessary libraries

library(caret)

#Load the dataset

karpur <- read.csv("C:/Users/del/Documents/Karpur.csv")

#First, let’s build the corrected phi model using multiple linear regression

#Add some polynomial features and interactions for potentially important terms

model1 <- lm((karpur$phi.core/100) ~ poly(caliper, 2) + poly(phi.N, 2) + density.corr + density + k.core + Facies, data = karpur)

summary(model1)

#Predict permeability using the reduced model

C_PERM_L <- predict(model2.red, karpur)

#Calculate adjusted R-squared and RMSE to evaluate the model performance

AdjR.sq2 <- 1 - sum((C_PERM_L - karpur$k.core)^2) / sum((karpur$k.core - mean(karpur$k.core))^2) rmse.model2 <- sqrt(mean((C_PERM_L - karpur$k.core)^2))

#Output the evaluation metrics

AdjR.sq2

0.834814

rmse.model2

908.0657

#Plot the results to compare the parameters before and after correction

# Set layout for 3 plots

par(mfrow=c(1,3), mar=c(5,5,4,2) + 0.1)

#Plot 1: Log Porosity vs Depth

plot(y=karpur$depth, ylim=rev(range(karpur$depth)), x=karpur$phi.N, type="l", col="506", lwd = 5, pch=17, xlab='Log Porosity', ylab='Depth, m', xlim=c(0,0.5), cex=1.5, cex.lab=1.5, cex.axis=1.2, col.axis="637", col.lab="506") grid(nx= NULL, ny= NULL, lty=2, col="gray", lwd=1)

#Plot 2: Core Porosity and Corrected Core Porosity vs Depth

plot(y=karpur$depth, ylim=rev(range(karpur$depth)), x=karpur$phi.core/100, type="l", col="375", lwd = 5, pch=17, xlab='Core Porosity and Corrected Core Porosity', ylab='Depth, m', xlim=c(0.15,0.4), cex=1.5, cex.lab=1.5, cex.axis=1.2, col.axis="637", col.lab="375") lines(CphiL, karpur$depth, type="l", col="617", lwd=5) grid(nx= NULL, ny= NULL, lty=2, col="gray", lwd=1)

#Plot 3: Core Permeability and Corrected Core Permeability vs Depth

plot(y=karpur$depth, ylim=rev(range(karpur$depth)), x=karpur$k.core, type="l", col="darkblue", lwd = 5, pch=17, xlab='Core k and Corrected Core k', ylab='Depth, m', xlim=c(0,16000), cex=1.5, cex.lab=1.5, cex.axis=1.2, col.axis="200", col.lab="darkblue", main=paste('Adjusted R-squared=', round(AdjR.sq2, 4), '& RMSE=', round(rmse.model2, 2))) lines(C_PERM_L, karpur$depth, type="l", col="92", lwd=5) grid(nx= NULL, ny= NULL, lty=2, col="gray", lwd=1)