Professional Documents
Culture Documents
Chato Solutions_ 1D radial Reservoir Simulation
Chato Solutions_ 1D radial Reservoir Simulation
Chato Solutions_ 1D radial Reservoir Simulation
Reservoir simulation example (7.12) from AAbou-Kassem, J., Farouq, S. M. & Rafiq, M. (2006)
Reservoir simulation. A basic approach. Gulf Publising Company
AUTHOR
PUBLISHED CITATION
A 0.5-ft-diameter wáter well is located in 20-acre spacing. The reservoir thickness, horizontal permeability,
and porosity are 30 ft, 150 md, and 0.23, respectively. The flowing fluid has FVF, compressibility and
viscosity of 1 RB/B, 1 x 10^-5, and 0.5 cP, respectively. The external boundaries are no-Flow boundaries.
The well has open-well completion and is placed on production at a rate of 2000 B/D. Initial reseroir
pressure is 4000 psia. The reservoir can be simulated using five gridblocks in the radial direction.Find the
pressure distribution in the reservoir after 1 day and 3 days.
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 1/8
7/29/23, 11:30 AM Chato Solutions: 1D radial Reservoir Simulation
#Reservoir simulation example. 1D radial coordinates, one phase only and homogeneous
library ( plotly )
library ( reshape2 )
#input data
#Well information
rw <- 3 #in, well radius
s <- 0 #skin
cellP <- 1 #well cell
qo <- - 2000 #well rate, STB/D
Grid node and its data are calculated using the following equation:
Geometrical factor
1/nr
re
α lg = ( )
rw
Nodes radius
ri+1 = α lg ri
ri+1 − ri
L
r =
i+1
ln(ri+1 /ri )
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 2/8
7/29/23, 11:30 AM Chato Solutions: 1D radial Reservoir Simulation
#location gridblocks
al2 <- ( re / ( rw / 12 )
) ^ ( 1 / nx ) #alpha, geometrical factor
rn <- 0
rn [ 1 ] <- ( al2 / ( al2
- 1 ) ) * log ( al2 ) *
( rw / 12 )
for ( i in 2 : nx ) {
rn [ i ] <- al2 * rn [ i
- 1 ]
}
rf [ nx ] <- re
#Cells volume
vol <- 0
vol [ 1 ] <- 3.1416 * ( rf [
1 ] ** 2 - ( rw / 12 )
** 2 ) * h
for ( i in 2 : nx ) {
vol [ i ] = 3.1416 * ( ( (
rf [ i ] ) ** 2 ) - (
( rf [ i - 1 ] ) ** 2
) ) * h
}
#Faces area
Ax = 2 * 3.14 * rf [ 1 ]
* h
Geometrical factor
2πβkh
Gri =
ln(α lg )
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 3/8
7/29/23, 11:30 AM Chato Solutions: 1D radial Reservoir Simulation
1
Tri = Gri ( )
μB
#Geometrical factor
Gr <- ( 2 pi * * beta * k
* h ) / ( log ( al2 ) )
TE <- Gr * ( 1 / ( vis *
Bo ) ) # East transmisibility
TW <- Gr * ( 1 / ( vis *
Bo ) ) # West transmisibility
#Results data.frame
results_cells <- data.frame( 0 , t ( Pt )
)
colnames ( results_cells) <- c ( "Time" , 1
: nx )
cells_x <- rn #seq(dx/2, (dx*nx)-(dx/2), length.out = nx)
#Forward elimination
for ( i in 2 : n ) {
b [ i ] <- b [ i ] -
a [ i ] * c [ i - 1
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 4/8
7/29/23, 11:30 AM Chato Solutions: 1D radial Reservoir Simulation
] / b [ i - 1 ]
d [ i ] <- d [ i ] -
a [ i ] * d [ i - 1
] / b [ i - 1 ]
}
#Back substitution
x [ n ] <- d [ n ] /
b [ n ]
for ( i in ( nx - 1 ) :
1 ) {
x [ i ] <- ( d [ i ]
- c [ i ] * x [ i +
1 ] ) / b [ i ]
}
return ( x )
}
Once we have defined the geometry and the equations terms, we can begin the time loop, where we have
to define de vector for thomas algoriths and get the pressure in the next time
#Time loop
while ( time <= TT ) {
aa <- rep ( TW , nx )
bb <- - ( TW + TE + Acum
)
cc <- rep ( TE , nx )
dd <- - Acum * Pt
#Well
dd [ cellP ] = dd [ cellP ] -
qo
Pt <- Ptdt
pwf = qo / ( FG / ( Bo
* vis ) ) + Pt [ cellP ]
results_cells <- rbind ( results_cells, c ( time ,Ptdt
) )
results_pwf <- rbind ( results_pwf, c ( time , pwf
) )
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 5/8
7/29/23, 11:30 AM Chato Solutions: 1D radial Reservoir Simulation
time = time + dt
}
#Plot
options ( repr.plot.width= 16 , repr.plot.height= 8 )
results_cells_time <- reshape2 :: melt ( results_cells,id.vars=
c ( "Time" ) )
colnames ( results_cells_time) <- c ( "Time" , "Radius" ,
"Pressure")
results_cells_time$ Time <- as.factor( results_cells_time$
Time )
results_cells_time$ Radius <- rep ( rn , each =
nrow ( results_cells) )
print ( results_cells)
Time 1 2 3 4 5
1 0 4000.000 4000.000 4000.000 4000.000 4000.000
2 1 3626.282 3674.314 3722.337 3770.211 3815.447
3 2 3438.930 3486.961 3534.988 3582.915 3628.691
4 3 3252.142 3300.173 3348.201 3396.127 3441.910
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 6/8
7/29/23, 11:30 AM Chato Solutions: 1D radial Reservoir Simulation
print ( results_cells_time)
Reference
Abou-Kassem, J., Farouq, S. M. & Rafiq, M. (2006) Reservoir simulation. A basic approach. Gulf Publising
Compana.
Buy me a coffee
0 Comments Share:
Citation
For attribution, please cite this work as
Vazquez (2021, Nov. 7). Chato Solutions: 1D radial Reservoir Simulation. Retrieved from
https://www.chatosolutions.com/posts/2021-11-07-radial1d/
BibTeX citation
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 7/8
7/29/23, 11:30 AM Chato Solutions: 1D radial Reservoir Simulation
@misc{vazquez20211d,
author = {Vazquez, Rigoberto Chandomi},
title = {Chato Solutions: 1D radial Reservoir Simulation},
url = {https://www.chatosolutions.com/posts/2021-11-07-radial1d/},
year = {2021}
}
https://www.chatosolutions.com/posts/2021-11-07-radial1d/ 8/8