Ali Abdulhussein Abdulazeez ,BUOG,Basra,Iraq
2024-10-14
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)