File

advertisement
THE PENNSYLVANIA STATE UNIVERSITY
THE COLLEGE OF EARTH AND MINERAL SCIENCES
ENERGY AND MINERAL ENGINEERING
Introduction to Petroleum Engineering Design
PNG 490
Coal Bed Methane Characterization and Analysis
Team 19
Mohammed Alnahas
Michael Cavazza
Khalid Dosary
Derek Fron
Ali Madi
Joshua Malloy
April 29, 2015
Abstract
The project focused on understanding the coalbed methane reservoir that was given. The
goal was finding the sweet spot by mapping and calculating the amount of methane gas in the
reservoir. The main methods used in reaching the goal were the ability of reading the contour
maps and getting the depth of each grid. The ability of reading the well logs and getting the
petrophysical property from them. The ability of using the values of net pay, maximum and
minimum porosities, maximum and minimum saturation to figure out the depth and get a good
estimation of the OGIP. Matlab program was used effectively during the process. Using these
methods, a regional Monte Carlo simulation was performed in order to identify the sweet spots.
3D maps were created for P90, P50 and P10 simulations. In conclusion, this course gave the
ability to characterize the reservoir in an efficient way by collecting and analyzing the data given
and other related data provided by the operators. The project helped in considering the factors
involving economic, environmental, social, health and safety considerations.
Introduction
Our project focused on our understanding of a coalbed methane reservoir we were given.
The problem that needed to be solved was an extensive look, mapping, and calculate of how
much methane gas the reservoir contained. Looking at the entire reservoir and correctly
mapping it out is crucial to getting a better spot at the hot spots of the gas field. The reason we
had to take an in depth look at the reservoir because our problem was where to drill. Given to
help us are logs and data that we can use to calculate these spots and simulate to find the best
locations. Some of our data was determined from reading the logs of the reservoir. We had to
take a look at the reservoir and determine where the exact sweet sports were. It is important to
know where they are because these are the spots that are going to provide optimal and reliable
extraction and production of gas. These spots are where we recommended a company to drill
because that is the specific spot in the reservoir where the most production can come from.
The scope of the problem is larger than just the sweet spots because off all the data and
calculations needed to find them. Contour maps, well logs, OGIP calculations, and Matlab
simulations are just some of the steps necessary in determining the sweet spot. Also, our Monte
Carlo simulations helped us determine all the possible outcomes of our calculations. Also,
before our OGIP calculations, we needed to look at property distributions which helped us find
the net pay, porosity, and water saturation which are all crucial for the calculations. The scope of
the problem is to record reliable data and correctly calculate it to find the sweet spots where the
reservoir flourishes.
Over the span of this report we will discuss everything our group accomplished, all of our
methods, and discuss all our results and data collection. Our report will consist of materials and
methods which we will discuss how we retrieved our data and the calculations and tables the
ended up with. That will transition into our results which we will go over all our finals data from
calculation and our Monte Carlo simulations. After that, discussions will pull together all of our
results and methods. Also it will be explain our results and any implications of our results.
2
Lastly, the conclusion will finish our report bringing all our info, predictions, and results. Also,
we will discuss the repercussions of this course leading into next semester and 491.
Materials
We started this project first with receiving contour maps for the geological location of the
wells. On these contour maps were contour lines, which would indicate a given depth along that
line. From there we were in charge of adding major and minor gridlines to the contour map,
which where to enclose all of the wells. This process was done using Microsoft Excel, which
involved making the contour map transparent and fitting it over the grid lines of excel. From
there we moved the gridline accordingly to enclose all 11 wells (Figures 4 and 5).
From here we filled in the rest of the cells by interpolating the depths of the empty cells
from the existing contour lines. After all the depth values were entered we added a colored depth
gradient to make sure our depths were accurate (Figures 6 and 7).
Now that we had all of our depths determined, we assigned a dx and dy value to each
cell. This was done by calibrating the cell widths in Excel to the scale on the countour map.
Once calibrated, a proportion was used to determine the actual distance of each grid block in
feet. Once completed, Matlab was used to produce a 3-D structural map of both the top and
bottom part of the reservoir. Figures 8, 9 and 10 show display the Matlab plots (Ertekin).
Now that we have our 3-D structure maps produced it was now our task to read through
the well logs of all 11 wells to receive petrophysical properties, which in return will be needed to
determine the OGIP (original gas in place) and our sweet spot. First, we divided all 11 wells
between the 6 of us (Matlab coder only receiving 1) and began reading them. To retrieve the
petrophysical properties we desired, we had to first determine our well depths (difference
between top depth and bottom depth). From this depth interval, we then proceeded to read
gamma ray logs. We focused on dips in API below 60 (this indicated low radioactivity, which is
indicative of coal beds). Any dip below 60 API was our “gross pay zone”, which is where our
point of emphasis was due to the API readings. Figure 1, shown below, showcases and example
of the cutoff.
Figure 1: Gamma Ray Log Example of a Region below 60 API
Now that we have determined our gross pay zone, we must now look at our gross pay
zone depth intervals and read the resistivity reading respectively to the depth intervals. From
these readings, we make another cut off at any resistivity log reading below 50 ohm-m, which is
3
now our “net pay zone” (Figure 2). This zone is referred to the net pay zone because of the fact
that this is where the well will produce and thus pay us.
Figure 2: Example of a Resistivity Log with a reading above 50 ohm-m
From this information we now have our net pay zone determined. Since we now know
this is where the hydrocarbons in place will be, we must determine the porosity of our net pay
zones. This is done by looking at the depth intervals of our net pay zone and to read both
neutron and density porosity from the porosity log. This is pictured in Figure 1 on the right side
of the log. When reading the porosity logs we had to read the dashed-line (neutron porosity) and
the solid-line (density porosity), respectively. Let it be noted that the max value on the well log
scale was 0.3 for porosity, which when surpassed was accounted for by the lines looping back
around. From our neutron and density porosity readings we now solved for our “true” or average
porosity, which will be the porosity used in calculations.
Now that we have all of our well log data we proceeded to solve for the water saturation
within our net pay zone. This is important to know how much water is taking up the pore spaces
in our net pay zone, which shares this space with the hydrocarbons. Using Archie’s equation,
explained below, we solved for our water saturations at their respective depths.
Where
n: saturation exponent, usually 2
a: empirical constant, 1 for carbonates
Φ: is the true porosity
Rw: resistivity of formation water, typically 0.02-0.1
Rt: formation density, acquired from well logs
m: cementation exponent, usually 2 to 4 for carbonates
4
With the well log readings, and the calculations performed, each well had several property values
tabulated. Table 1 shown below shows an example of the readings and calculations for a well,
Well 1 (Morgan).
Top
Depth
(ft)
3384
3470
3492
3558
3668
3689
3785
Bottom
Depth
(ft)
3400
3479
3494
3568
3675
3691
3790
Gross
Pay (ft)
16
9
2
10
7
2
5
Neutron
Porosity
(%)
0.46
0.57
0.35
0.6
0.58
0.59
0.58
Density
Porosity
(%)
0.35
0.55
0.25
0.35
0.54
0.56
0.53
Rd
(ohmm)
2000
500
15
600
700
750
500
True
Porosity (ft)
Sw
(%)
0.405
0.56
0.3
0.475
0.56
0.575
0.555
0.021
0.026
0.384
0.030
0.022
0.020
0.026
Net
Pay
(ft)
16
9
0
10
7
2
5
Table 1: Well 1 Log Readings and Calculations
Data tables for Wells 2-11 can be found in the Tables section of this report (Tables 4-13).
Now that we have all of the petrophysical properties desired from the well logs, we need
to determine the data needed to run through Matlab to receive our OGIP and sweet spot. In order
to calculate the original gas in place, OGIP, the following equation was solved with constants
and parameters with uncertainties (Sun).
∅𝑓 (1 − 𝑆𝑀𝑓 ) ∅π‘š (1 − π‘†π‘€π‘š )
𝑉𝐿 𝑃
𝑂𝐺𝐼𝑃(𝑆𝐢𝐹) = 43,560π΄β„Ž[
+
] + 1.359π΄β„Ž (
) 𝜌 (1 − π‘“π‘Ž )
𝐡𝑔𝑖
𝐡𝑔𝑖
𝑃 + 𝑃𝐿 𝑐
Where
A = Area of Reservoir [acres], constant
h = Net Pay Thickness [ft.], normal distribution
∅f = Fracture Porosity [fraction], uniform distribution
Swf = Fracture Water Saturation [fraction], uniform distribution
Bgi = Gas Formation Volume Factor [cu ft/scf], constant
Note: Bgi was calculated from the equation
𝐡𝑔𝑖 =
0.02827 ∗ 𝑍 ∗ π‘‡π‘Ÿπ‘’π‘ 
π‘ƒπ‘Ÿπ‘’π‘ 
Where Z was calculated from finding Tres (geothermal gradient of 15°/1000 ft.), Pres
(gh) and obtaining the pseudo reduced values from assuming that the composition of the
reservoir was 100% Methane
∅m = Matrix Porosity [fraction], normal distribution
Swm = Matrix Water Saturation [fraction], normal distribution
5
VL = Langmuir Volume [scf/ton], uniform distribution
P = Reservoir Pressure [psi], normal distribution
PL = Langmuir Pressure [psi], uniform distribution
ρc = Density of Coal [gm/cc], constant
fa = Ash Contents [fraction], uniform distribution
Table 14 shows a summary of the values of each well which were used to solve for mean, std.
dev., max and min.
The variables and equations were ran in Matlab to obtain the OGIP for the reservoir. In
order to determine how many times the numbers should be randomly generated, a study was
performed by varying the amount of random numbers generated. Figure 11 shows the standard
deviation associated with a P50 calculation for OGIP. Monte Carlo analysis was performed to
show variations of confidence in our results. It was determined to showcase P90, P50 and P10
values. P90 indicates a 90% certainty that the results obtained are correct. This result yields the
lowest OGIP. P50 shows that we are 50% certain in our results. P10 has the highest OGIP, but
is the most optimistic of the three scenarios. The results of the simulation can be found in Table
3 in the Results portion of this report.
The “sweet spot” of the reservoir was found by performing a regional Monte Carlo
simulation. First, property distributions must be made. Table 15 tabulates the coordinates of the
wells and several reservoir properties, along with boundary conditions necessary for the Matlab
interpolation simulation. This simulation will calculate the OGIP per unit volume. So each grid
block will be assigned its own OGIP. The regional OGIP is found by dividing out the A and h
terms in the OGIP equation (Sun). With these plots (Figures 22, 23, and 24) the sweet spots
were identified. The locations can be found in Figure 3 in the Results section.
Just to recap on the data sets above and what we did with them to acquire our desired
results. First, we acquired our contour maps from the professors and began to add gridlines.
This was done by making the contour map transparent and fitting it on top of the dx/dy scale
behind it using Microsoft excel. Now that we had our wells enclosed between major and minor
gridlines we interpolated the other cell depths based off the contour lines provided. Now that we
have all of our depths (of both top and bottom following the same procedure) we assigned the
corresponding dx/dy values to each cell. We then entered these values into Matlab and
constructed a 3-D representation of our reservoir. With the 3-D structure now constructed we
needed to add the petrophysical properties to it. This was done by first acquiring the well logs of
all 11 wells and reading off the desired data. We started by first determining the depths of each
well (the difference between the top and bottom depths). Now that we had the depth intervals of
all our wells we needed to determine our gross pay zone, which is found from the gamma ray
log. The gamma ray log indicates an interval of the well being in the gross pay zone by having a
reading of API less than that of 60. This indicates low radioactivity, which is a characteristic of
a coalbed. Knowing our gross pay zone we then determined our net pay zone, which was done
by looking for spikes in resistivity of over 50 ohm-m within the gross pay zone. A resistivity of
6
over 50 ohm-m is representative of hydrocarbons in place. Knowing our net pay zone we, then
determined the neutron and density porosity of this zone by reading the porosity logs. Taking
the dashed-line porosity reading (neutron) and the solid-line porosity (density) we were able to
solve for the “true” or average porosity used in calculations. Finally, after acquiring all the data
we can from the well logs, we used this information to solve for water saturation within the net
pay zone using Archie’s equation. With all this data we were now able to solve for OGIP and
our sweet spot by using the max and min values of water saturation, max and min values of true
porosity and our net pay. Matlab took this data and calculated an OGIP value along with 3-D
structures of our OGIP/acre-ft (our sweet spot).
Results
The first results were obtained after creating structure maps of both the top and bottom
sections of the reservoir using the provided contour maps. MATLAB was used to create the
structure map (Figures 8, 9 and 10).
From the well log data, values for average porosity, water saturation and net way were
recorded for each well (Table 14). From these data points, the OGIP equation showed in the
methods section of this report could be solved. The values shown in Table 2 are the result of
well log calculations, and variable defined in the course.
Variable
Area (acres)
Coal Density (gm/cc)
Gas Formation Volume Factor (cu ft/scf)
Net Pay Thickness mean (ft)
Net Pay Thickness std. dev. (ft)
Matrix Porosity mean (fraction)
Matrix Porosity std. dev. (fraction)
Matrix Water Saturation mean (fraction)
Matrix Water Saturation std. dev. (fraction)
Pressure mean (psi)
Pressure std. dev. (psi)
Fracture Porosity min (fraction)
Fracture Porosity max (fraction)
Langmuir Volume min (scf/ton)
Langmuir Volume max (scf/ton)
Langmuir Pressure min (psi)
Langmuir Pressure max (psi)
Ash Contents min (fraction)
Ash Contents max (fraction)
Fracture Water Saturation mean (fraction)
Fracture Water Saturation std. dev. (fraction)
Table 2: OGIP Variable Calculations
Input
3434
1.33
0
30.9
16.5
0.39
0.11
0.13
0.13
1731
99.7
0.001
0.01
325.8
750.7
318.2
862.5
0
0.536
0.1
0.5
7
Refer back to the Methods section to see which variables were assumed constant, and
which ones had a uniform or normal distribution. Referring to Figure 14, 1000 random numbers
were generated. The graph shows that anything after this amount was a waste of time as the
standard deviation did not change. The results of the simulation can be found in Table 3. Also,
histograms of net pay, porosity, water saturation, and OGIP can be found in Figures 12-15.
P90
18 MMMSCF
OGIP Monte Carlo Calculation
P50
54 MMMSCF
Table 3: OGIP simulation in Matlab
P10
108 MMMSCF
Next, distribution maps for net pay, max/min water saturation, and max/min porosity
were created using the values of the characteristics obtained from analyzing the wells (Figures
17-21). Using these values, a regional Monte Carlo simulation was performed in order to identify
the sweet spots. 3D maps were created for P90, P50 and P10 simulations (Figures 22-24).
Using these distributions, three locations were identified as potential sweet spots in Figure 3
below.
Location 1
3 MMMSCF/
ac-ft
Location 2
Location 3
3.25
MMMSCF/
ac-ft
4.2
MMMSCF/
ac-ft
Figure 3: Sweet Spot Identification
Discussion
The process leading up to the sweet spot identification was carried out cautiously and to
the best of our abilities. With each step building on the previous, it was paramount that each data
point was double check to reduce the chance of errors. Having said that, we are very confident
that the research that was performed is accurate. Certain variables that may have hindered the
accurateness were out of our control. These include difficulties in well log readings, mainly
wrap around areas, and incorrect formulas. The well log readings were reviewed by several
members of the group, and the best estimations were made in cases that the data was not clear.
8
Also, the use of incorrect formulas altered our results. Once the error was caught, the
simulations were performed again, the new results were recorded.
The results show this CBM reservoir has an OGIP P50 reading of 54 MMM SCF. P50
was chosen as the represented amount due to our company’s vision. We felt that P10 was not a
realistic amount because of their being so much uncertainty in the calculation. However, a
certain amount of risk should be taken, thus why the P90 result was not used either.
As for the sweet spot of the reservoir, three spots were identified (Figure 3). We feel
that location 1 is the optimal spot to drill, even though the models indicate that locations 2 and 3
have a higher OGIP/acre-ft. Location 3 displayed the highest OGIP/ac-ft, however there is
already a high density of wells in the area. This poses two separate challenges. One, the
majority of the original gas in place may have already been produced. Two, placing wells in this
area would pose as risk. The likelihood of wellbore communication subsurface is too high to
drill more wells here. Figure 23, the P50 model for the OGIP/ac-ft simulation, shows a local
high at location 2. This area could possibly yield a large amount of gas. This however may be a
result of the model gently decreasing from the high area around location 3. As you can see in the
figure, there is a sharp dip in OGIP/ac-ft between locaitons 2 and 3.
This leaves location 1 as the optimal location to drill. There is a large amount of area to
work with, all with relatively constant OGIP/ac-ft. Also, this is the shallowest portion of the
reservoir and will decrease drilling costs. Location 1 is the candidate for future production.
After seeing several other results and models on this CBM reservoir presented by other
groups, we feel that our data agrees with the majority. The sweet spots seem to mostly be in
location 3 where the cluster of wells is. The difference is that we are choosing to not drill in this
area as some groups are.
Conclusion
We concluded after finishing our first capstone engineering design course, and after
analyzing the physical data with respect to error and using this data in design and looking at the
wells and the located reservoir that now we can characterize the reservoir in a right and efficient
way by collecting and analyzing the data given and other related data provided by the operators.
And this project helped us to consider the factors involving economic, environmental, social,
health and safety considerations. This part of the capstone project was done by team effort and
we assumed every member has a specific responsibility as a assume responsibilities as petro
physicist, drilling engineer, geologist, geophysicist production engineer, reservoir engineer. In
our model, we focused generally on vertical wells rather than horizontal, because the horizontal
wells are placed mostly in areas with high water saturation. Although the horizontal wells are
dolomite high porosity zones. Moreover, the vertical wells were distributed in the whole region
of the reservoir; in both high and low water saturation zones.
So to demonstrate the overall steps we did in a short way: We first started with the
Contour Maps/3D Structure Maps. Then we used the 11 Well logs, and these wells were used to
acquire petro physical properties of each well. After that we calculated the OGIP and obtained
9
Bg, Z factor etc. When we got the calculations, and Net Pay, Max/Min for Porosity and Water
Saturation from Well logs We entered the codes in the matlab values into our grid where the
wells are located
After finishing this semester we will go to the next step, which is Reservoir engineering
design (PNG 491) in the next fall semester with professor Wang. This engineering design project
is the integration of knowledge and skills acquired through experience, reading and formal
instruction into a final product, the design. To that end, this course is the second course of a 3course, 3-semester, sequence that will result in a comprehensive capstone-engineering project. In
that course we will be applying the concepts of reservoir and drilling engineering to petroleum
engineering design projects, focusing on the design and economic analysis of different drilling
and completion options. And after finishing with Wang’s capstone class we will be able to gain
the ability and confidence in applying petroleum engineering to solve real-world problems for
the industry.
Acknowledgements
We would like to thank several people for helping us through this process. It was very
knew to us, and without the help of the following people, would not have been possible.
Dr. Ertekin
Dr. Morgan
Rajput Vaibhav
Qian Sun
Jian Zhang
Other Teams that we collaborated with
References
Ertekin, Turgay. Matlab Tutorial 1: Surface Plots [pdf]. Retrieved from
https://cms.psu.edu/section/default.asp?id=201415SPUP___RP_N_G490_001
Morgan, Eugene. PNG 490 Interpreting Well Logs [PowerPoint slides]. Retrieved from
https://cms.psu.edu/section/content/default.asp?WCI=pgDisplay&WCU=CRSCNT&EN
TRY_ ID=F260626D513647938C12CC602C73351B
Sun, Qian. Introduction to Data Interpolation and Sweet Spot Identification [PowerPoint slides].
Retrieved from
https://cms.psu.edu/section/content/default.asp?WCI=pgDisplay&WCU=CRSCNT&EN
TRY_ID=B6DC6CEB2AD94C92A21DA08197590B14
Sun, Qian. Introduction to Property Distribution Maps Generation and Monte Carlo Simulation
[PowerPoint slides]. Retrieved from
https://cms.psu.edu/section/content/default.asp?WCI=pgDisplay&WCU=CRSCNT&EN
TRY_ID=369A609DF4C24FC1A08A3E39073628A1
10
Figures/Illustrations
Figure 4: Discretization of Top of CBM Reservoir
11
Figure 5: Discretization of Bottom of CBM Reservoir
12
Figure 6: Depth Interpolation of Top of CBM Reservoir
13
Figure 7: Depth Interpolation of Bottom of CBM Reservoir
14
Figure 8: 3D Representation of Top of CBM Reservoir
15
Figure 9: 3D Representation of Bottom of CBM Reservoir
16
Figure 10: 3D Representation of Top of CBM Reservoir with Well Locations
17
Random Number Generator Standard Deviation
P50 - Original Gas In Place (MMMSCF)
45.0
40.0
Std. Dev. (MMMSCF)
35.0
30.0
25.0
20.0
15.0
10.0
5.0
0.0
1
10
100
1000
10000
100000
1000000
Number of Random Numbers in Matlab
Figure 11: Standard Deviation of Variations in Random Numbers in Matlab
18
Figure 12: Histogram of Net Pay
Figure 14: Histogram of Water Saturation
Figure 13: Histogram of Porosity
Figure 15: Histogram of OGIP
19
P10
P50
P90
Figure 16: Plot of OGIP Identifying Monte Carlo P90 P50 P10
20
Figure 17: Max Porosity Distribution
Figure 18: Min Porosity Distribution
Figure 19: Net Pay Distribution
Figure 20: Max Water Saturation Distribution
Figure 21: Min Water Saturation Distribution
21
Figure 22: Regional OGIP Monte Carlo Simulation (P90)
22
Figure 23: Regional OGIP Monte Carlo Simulation (P50)
23
Figure 24: Regional OGIP Monte Carlo Simulation (P10)
24
Tables
Top
Depth
(ft)
Bottom
Depth
(ft)
Gross Pay
(ft)
Neutron
Porosity
(%)
Density
Porosity
(%)
Rd
(ohm-m)
True Porosity
(ft)
Sw
(%)
Net Pay
(ft)
3415
3435
3460
3480
3515
3580
3600
3417
3446
3464
3500
3518
3583
3602
2
11
4
20
3
3
2
0.27
0.2
0.56
0.3
0.59
0.58
0.55
0.19
0.11
0.53
0.24
0.51
0.47
0.49
30
80
2000
70
600
747
90
0.23
0.155
0.545
0.27
0.55
0.525
0.52
0.405
0.448
0.013
0.208
0.024
0.023
0.068
0
11
4
20
3
3
2
Table 4: Well 2 Log Readings and Calculations
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
3827
3832
5
0.65
0.6
2000
0.44
3869
3874
5
0.65
0.6
2500
0.44
3922
3924
2
0.57
0.55
2000
0.40
3979
3987
8
0.6
0.5
2250
0.39
3989
3993
4
0.5
0.55
2500
0.37
4007
4021
14
0.27
0.18
180
0.16
4032
4036
4
0.4
0.29
35
0.25
4061
4063
2
0.65
0.55
2000
0.43
4086
4101
15
0.4
0.3
170
0.25
4153
4158
5
0.55
0.6
2000
0.41
4187
4189
2
0.45
0.4
2000
0.30
4208
4210
2
0.4
0.4
2000
0.28
4283
4288
5
0.54
0.6
2500
0.40
Sw
(%)
0.00
0.00
0.00
0.00
0.00
0.32
0.46
0.00
0.09
0.00
0.00
0.01
0.00
Net Pay
(ft)
5
5
2
8
4
14
0
2
15
5
2
2
5
Table 5: Well 3 Log Readings and Calculations
25
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
3787
3789
2
0.55
0.5
160
0.371
3852
3858
6
0.65
0.6
1000
0.442
3871
3874
3
0.6
0.65
380
0.442
4037
4041
4
0.65
0.65
560
0.459
4069
4072
3
0.55
0.6
300
0.406
4092
4094
2
0.5
0.5
990
0.353
4170
4174
4
0.6
0.6
1500
0.424
4213
4217
5
0.58
0.6
2000
0.417
4282
4286
4
0.7
0.65
260
0.477
Sw
(%)
0.029
0.002
0.007
0.004
0.012
0.005
0.002
0.001
0.008
Net Pay
(ft)
2
6
3
4
3
2
4
5
4
Sw
(%)
Net Pay
(ft)
0.790
0.189
0.219
6
12
8
Sw
(%)
Net Pay
(ft)
0.306
0.236
0.255
0.650
0.547
2
4
6
4
4
Table 6: Well 4 Log Readings and Calculations
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
4314
4346
4366
4320
4358
4374
6
12
8
0.2
0.25
0.25
-0.04
0.16
0.25
15
40
20
0.08
0.205
0.25
Table 7: Well 5 Log Readings and Calculations
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
4060
4064
4106
4136
4240
4062
4068
4112
4140
4244
2
4
6
4
4
0.24
0.3
0.28
0.28
0.3
0.27
0.2
0.22
0.2
0.27
400
700
600
100
100
0.255
0.25
0.25
0.24
0.285
Table 8: Well 6 Log Readings and Calculations
26
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
4000
4010
10
0.3
0.13
60
0.215
4026
4030
4
0.27
0.19
90
0.23
4098
4102
4
0.6
0.6
550
0.6
4120
4122
3
0.6
0.6
350
0.6
4136
4140
4
0.14
0.1
60
0.12
4148
4151
3
0.6
0.6
110
0.6
4194
4197
3
0.7
0.7
190
0.7
Sw
(%)
0.044
0.036
0.015
0.018
0.044
0.033
0.025
Net Pay
(ft)
0
4
0
3
4
3
3
Table 9: Well 7 Log Readings and Calculations
Top Depth
(ft)
4000
4020
4074
4106
4162
4164
4166
Bottom
Depth
(ft)
4002
4022
4076
4108
4164
4166
4168
Gross Pay
(ft)
2
2
2
2
2
2
2
Neutron
Porosity
(%)
0.364
0.328
0.4
0.37
0.335
0.38
0.7
Density
Porosity
(%)
0.6
0.24
0.42
0.32
0.34
0.44
0.7
Rd
(ohm-m)
True Porosity
(ft)
Sw
(%)
Net Pay
(ft)
20
14
30
19
57
85
40
0.482
0.284
0.41
0.345
0.3375
0.41
0.7
0.075
0.089
0.061
0.076
0.044
0.036
0.053
2
0
2
0
0
2
2
Table 10: Well 8 Log Readings and Calculations
27
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
3826
3830
4
0.5
0.06
1500
0.28
3842
3844
2
0.6
0.12
110
0.36
3878
3880
2
0.5
0.18
95
0.34
3922
3924
4
0.6
0.06
2000
0.33
3946
3950
4
0.65
0.18
200
0.415
4122
4128
6
0.57
0.08
2000
0.325
4142
4144
2
0.55
0.06
2000
0.305
4162
4164
2
0.5
0.1
700
0.3
4190
4192
2
0.6
-0.04
300
0.28
4246
4250
4
0.55
0.06
1000
0.305
Sw
(%)
0.043
0.108
0.127
0.029
0.065
0.030
0.033
0.056
0.095
0.046
Net Pay
(ft)
4
2
2
4
4
6
2
2
2
4
Sw
(%)
Net Pay
(ft)
0.048
0.013
0.022
0.025
0.018
0.026
0.012
2
4
2
2
2
2
4
Table 11: Well 9 Log Readings and Calculations
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
3976
4002
4064
4210
4230
4278
4304
3978
4006
4066
4212
4232
4280
4308
2
4
2
2
2
2
4
0.56
0.65
0.55
0.6
0.65
0.7
0.65
0.42
0.52
0.45
0.5
0.6
0.65
0.55
220
1800
990
600
800
300
2000
0.49
0.585
0.5
0.55
0.625
0.675
0.6
Table 12: Well 10 Log Readings and Calculations
28
Top Depth Bottom Depth
Neutron Porosity Density Porosity
Rd
Gross Pay (ft)
True Porosity (ft)
(ft)
(ft)
(%)
(%)
(ohm-m)
3974
4008
4054
4090
4159
4250
3979
4011
4057
4095
4162
4256
5
3
3
5
3
6
0.87
0.82
0.89
0.88
0.86
0.88
0.2
0.1
0.25
0.25
0.2
0.25
500
100
100
1000
150
1500
0.535
0.46
0.57
0.565
0.53
0.565
Sw
(%)
Net Pay
(ft)
0.100
0.250
0.150
0.100
0.150
0.100
5
3
3
5
3
6
Table 13: Well 11 Log Readings and Calculations
Well #
From Structure Contour Maps
Top
Bottom
Thickness
Depth
Depth
(ft)
(ft)
(ft)
True
Porosity
Mean (%)
Net
Pay
(ft)
From Well Logs
Water
Max
Saturation
Porosity
Mean (%)
(%)
Min
Porosity
(%)
Max
Sw
(%)
Min
Sw
(%)
1
3380
3850
470
0.49
49
0.08
0.58
0.30
0.38
0.02
2
3400
3625
225
0.40
43
0.17
0.55
0.16
0.45
0.01
3
3850
4250
400
0.35
69
0.07
0.44
0.16
0.46
0.00
4
3775
4220
445
0.42
33
0.01
0.48
0.35
0.03
0.00
5
4300
4410
110
0.18
26
0.40
0.25
0.08
0.79
0.19
6
4005
4255
250
0.26
20
0.40
0.29
0.24
0.65
0.24
7
3800
4000
200
0.44
17
0.03
0.70
0.12
0.04
0.01
8
3945
4195
250
0.42
8
0.06
0.70
0.28
0.09
0.04
9
3800
4250
450
0.32
32
0.06
0.42
0.28
0.13
0.03
10
3900
4305
405
0.58
18
0.02
0.68
0.49
0.05
0.01
11
4010
4305
295
0.5375
25
0.14
0.57
0.46
0.25
0.1
Table 14: Results of Well Log Readings by Well
29
Category
dx
(ft.)
dy
(ft.)
Net Pay
(ft)
Max Porosity
(%)
Min Porosity
(%)
Max Sw
(%)
Min Sw (%)
Well 1
2747
6861
49
0.58
0.30
0.38
0.02
Well 2
4957
6861
43
0.55
0.16
0.45
0.01
14467
2771
69
0.44
0.16
0.46
0.00
12370
3083
33
0.48
0.35
0.03
0.00
Well 5
14467
6153
26
0.25
0.08
0.79
0.19
Well 6
12841
3875
20
0.29
0.24
0.65
0.24
Well 7
12841
2438
17
0.70
0.12
0.04
0.01
Well 8
13768
3875
8
0.70
0.28
0.09
0.04
Well 9
13768
2063
32
0.42
0.28
0.13
0.03
Well 10
14952
2063
18
0.68
0.49
0.05
0.01
Well 11
Boundary
14952
406
3875
9069
25
22
0.57
0.50
0.46
0.25
0.25
0.35
0.10
0.01
Boundary
406
8514
22
0.51
0.25
0.35
0.01
Boundary
406
7972
22
0.53
0.25
0.36
0.01
Boundary
406
7417
25
0.53
0.26
0.36
0.01
Boundary
406
6861
25
0.53
0.26
0.36
0.02
Boundary
406
6153
25
0.53
0.26
0.37
0.02
Boundary
406
5799
22
0.54
0.27
0.37
0.02
Boundary
406
5403
22
0.54
0.27
0.37
0.02
Boundary
406
4847
22
0.54
0.26
0.38
0.02
Boundary
406
4292
22
0.54
0.26
0.38
0.02
Boundary
406
3875
22
0.55
0.27
0.38
0.02
Boundary
406
3083
22
0.55
0.27
0.38
0.02
Boundary
406
2771
22
0.55
0.27
0.37
0.03
Boundary
406
2438
20
0.56
0.27
0.39
0.03
Boundary
406
2063
20
0.56
0.28
0.39
0.03
Boundary
406
1625
20
0.53
0.27
0.39
0.03
Boundary
406
1083
20
0.53
0.27
0.40
0.03
Boundary
406
479
20
0.52
0.27
0.40
0.03
Boundary
813
479
20
0.54
0.30
0.40
0.03
Boundary
1219
479
20
0.55
0.31
0.40
0.03
Boundary
1625
479
20
0.58
0.31
0.41
0.03
Boundary
2032
479
20
0.57
0.31
0.42
0.03
Boundary
2438
479
22
0.58
0.31
0.42
0.03
Boundary
Well 3
Well 4
2747
479
22
0.60
0.31
0.42
0.03
Boundary
3153
479
22
0.61
0.29
0.42
0.03
Boundary
3559
3966
479
20
0.62
0.26
0.43
0.03
479
20
0.62
0.24
0.43
0.03
Boundary
30
Boundary
dx
(ft.)
4274
dy
(ft.)
479
Net Pay
(ft)
20
Max Porosity
(%)
0.60
Min Porosity
(%)
0.23
Max Sw
(%)
0.45
Boundary
4583
479
22
0.59
0.22
0.46
0.02
Boundary
4957
479
22
0.59
0.22
0.48
0.02
Boundary
5364
479
22
0.58
0.22
0.48
0.02
Boundary
5770
479
20
0.58
0.21
0.48
0.02
Boundary
6176
479
20
0.57
0.22
0.48
0.02
Boundary
6583
479
20
0.58
0.22
0.49
0.02
Boundary
6989
479
20
0.58
0.22
0.49
0.02
Boundary
7396
479
20
0.58
0.21
0.49
0.02
Boundary
7802
479
20
0.59
0.20
0.50
0.02
Boundary
8208
479
20
0.59
0.19
0.50
0.02
Boundary
8615
479
18
0.59
0.18
0.51
0.02
Boundary
9021
479
18
0.60
0.15
0.52
0.02
Boundary
9427
479
18
0.61
0.15
0.53
0.02
Boundary
9834
479
16
0.61
0.15
0.53
0.02
Boundary
10240
479
16
0.62
0.16
0.54
0.02
Boundary
10647
479
16
0.62
0.15
0.54
0.02
Boundary
11053
479
15
0.60
0.15
0.48
0.02
Boundary
11459
479
15
0.62
0.14
0.40
0.02
Boundary
11866
479
15
0.63
0.15
0.40
0.02
Boundary
12370
479
15
0.60
0.14
0.32
0.02
Boundary
12841
479
12
0.58
0.14
0.10
0.02
Boundary
13297
479
15
0.54
0.18
0.10
0.03
Boundary
13768
479
20
0.50
0.24
0.14
0.03
Boundary
13995
479
25
0.48
0.24
0.15
0.02
Boundary
14467
479
35
0.49
0.22
0.20
0.01
Boundary
14561
479
18
0.52
0.14
0.55
0.01
Boundary
14952
479
15
0.62
0.08
0.92
0.01
Boundary
15472
479
15
0.62
0.08
0.68
0.01
Boundary
15992
479
15
0.62
0.12
0.60
0.01
Boundary
16496
1083
14
0.62
0.14
0.54
0.01
Boundary
16496
1625
13
0.62
0.14
0.58
0.01
Boundary
16496
2063
13
0.62
0.14
0.60
0.01
Boundary
16496
2438
13
0.62
0.15
0.67
0.01
Boundary
16496
2771
18
0.62
0.15
0.56
0.02
Boundary
16496
3083
30
0.59
0.16
0.54
0.03
Boundary
16496
3875
18
0.59
0.17
0.52
0.05
Boundary
16496
4292
15
0.58
0.18
0.49
0.10
Boundary
16496
4847
15
0.59
0.19
0.48
0.09
Boundary
16496
5403
15
0.60
0.18
0.48
0.08
Category
Min Sw (%)
0.02
31
Boundary
dx
(ft.)
16496
dy
(ft.)
5799
15
Max Porosity
(%)
0.60
Min Porosity
(%)
0.20
Max Sw
(%)
0.50
Boundary
16496
6153
15
0.59
0.21
0.51
0.04
Boundary
16496
6861
15
0.58
0.20
0.50
0.03
Boundary
16496
7417
15
0.58
0.24
0.50
0.02
Boundary
16496
7972
15
0.58
0.24
0.50
0.02
Boundary
16496
8514
15
0.57
0.24
0.53
0.01
Boundary
16496
9069
15
0.57
0.22
0.52
0.01
Boundary
16496
9069
0.58
0.20
0.52
0.01
Boundary
15992
9069
15
15
0.55
0.21
0.54
0.01
Boundary
15472
9069
15
0.52
0.22
0.66
0.02
Boundary
14952
9069
15
0.50
0.23
0.77
0.02
Boundary
14561
9069
15
0.46
0.08
0.68
0.02
Boundary
14467
9069
15
0.45
0.08
0.88
0.02
Boundary
13995
9069
15
0.48
0.10
0.65
0.02
Boundary
13768
9069
10
0.52
0.12
0.62
0.01
Boundary
13297
9069
10
0.53
0.15
0.60
0.02
Boundary
12841
9069
10
0.52
0.21
0.60
0.02
Boundary
12370
9069
15
0.57
0.20
0.59
0.02
Boundary
11866
9069
15
0.58
0.20
0.58
0.02
Boundary
11459
9069
17
0.60
0.20
0.55
0.01
Boundary
11053
9069
17
0.59
0.20
0.54
0.01
Boundary
10647
9069
18
0.59
0.19
0.53
0.01
Boundary
10240
9069
18
0.59
0.19
0.53
0.01
Boundary
9834
9069
18
0.58
0.19
0.53
0.01
Boundary
9427
9069
18
0.58
0.18
0.52
0.01
Boundary
9021
9069
18
0.57
0.18
0.50
0.01
Boundary
8615
9069
20
0.56
0.18
0.50
0.01
Boundary
8208
9069
20
0.56
0.18
0.47
0.01
Boundary
7802
9069
22
0.56
0.17
0.47
0.01
Boundary
7396
9069
22
0.56
0.17
0.47
0.01
Boundary
6989
9069
23
0.56
0.17
0.47
0.01
Boundary
6583
9069
24
0.56
0.17
0.46
0.01
Boundary
6176
9069
24
0.56
0.17
0.45
0.01
Boundary
5770
9069
25
0.55
0.16
0.45
0.01
Boundary
5364
9069
25
0.55
0.16
0.45
0.01
Boundary
4957
9069
25
0.55
0.16
0.45
0.01
Boundary
4583
9069
25
0.56
0.18
0.45
0.01
Boundary
4274
9069
25
0.55
0.20
0.43
0.01
Boundary
3966
9069
25
0.55
0.26
0.42
0.02
Boundary
3559
9069
25
0.57
0.28
0.41
0.02
Category
Net Pay
(ft)
Min Sw (%)
0.06
32
Boundary
dx
(ft.)
3153
dy
(ft.)
9069
Net Pay
(ft)
25
Max Porosity
(%)
0.56
Min Porosity
(%)
0.28
Max Sw
(%)
0.40
Boundary
2747
9069
25
0.55
0.30
0.38
0.02
Boundary
2438
9069
25
0.56
0.30
0.38
0.02
Boundary
2032
9069
25
0.56
0.29
0.37
0.02
Boundary
1625
9069
25
0.56
0.29
0.36
0.02
Boundary
1219
9069
25
0.55
0.28
0.36
0.02
Boundary
813
9069
22
0.53
0.29
0.36
0.01
Category
Min Sw (%)
0.02
Table 15: Property Distribution Coordinates and Boundary Conditions for Interpolation
33
Appendices
OGIP Calculation Matlab Calculation with Monte Carlo Simulation
%% OGIP Calculation with Monte Carlo Sim
% This program will calculate OGIP and Monte Carlo P90 P50 P10
% Team 19 - DM inc.
%% OGIP Calculation
%Number of random numbers
n = 1000;
%Area [acre] constant
A = 3434.39;
%Net pay Thickness [ft] normal distribution
h = 30.91 + 16.49.*randn(n,1);
%Matrix Porosity [fraction] normal distribution
phim = .40 + .11.*randn(n,1);
%Fracture Porosity [fraction] normal distribution
phif = unifrnd(.001,.01, [n,1]);
%Matrix Water Saturation [fraction] normal distribution
Swm = .13 + .13.*randn(n,1);
%Fracture Water Saturation [fraction] normal distribution
Swf = unifrnd(0.1,0.5,[n,1]);
%Langmuir Volume [scf/ton]
VL = unifrnd(325.8, 750.7, [n,1]);
%Langmuir Pressure [psi]
PL =unifrnd(318.2, 862.5, [n,1]);
%Pressure [psi]
P = unifrnd(1523, 1889, [n,1]);
%Coal Density [gm/cc] constant
rhoc = 1.33;
%Ash contents [fraction] uniform distribution
fa = unifrnd(0, 0.536, [n,1]);
%Gas formation volume factor [cu ft/SCF] constant
Bgi = 0.0067;
%OGIP Calculation [SCF]
OGIP = ((43560*A.*h.*((phif.*(1-Swf)./Bgi)+(phim.*(1Swm)./Bgi))/1000)+(A.*h.*1.359.*((VL.*P)./(P+PL))*rhoc.*(1-fa))*1000);
34
%% Graphing of OGIP
figure(1);
hist(OGIP);
title('Histogram of OGIP Simulations');
xlabel('OGIP [SCF]');
ylabel('Frequency');
P90=quantile(OGIP, .1);
P50=quantile(OGIP, .5);
P10=quantile(OGIP, .9);
figure(2);
cdfplot(OGIP);
hold on;
x = [P90; P50; P10];
y = [.1; .5; .9];
plot(x,y,'o','Markersize',10,'MarkerFaceColor','r');
title('Cumulative Probability of OGIP');
xlabel('OGIP (SCF)');
ylabel('Probability');
figure(3);
hold on;
hist(h);
title('Histogram of Net Pay Simulations');
xlabel('Height [ft.]');
ylabel('Frequency');
figure(4);
hold on;
hist(phim);
title('Histogram of Porosity Simulations');
xlabel('Porosity [unitless]');
ylabel('Frequency');
figure(5);
hold on;
hist(Swm);
title('Histogram of Water Saturation Simulations');
xlabel('Water Saturation [unitless]');
ylabel('Frequency');
35
Property Distribution Matlab Code
%% Property Distribution
% This program will calculate property values for each grid block
% Team 19 - DM inc.
%% Table 1 - dx,dy,Net Pay,Max/Min Porosity,Max/Min Water Saturation
%Data copied from exel
data =xlsread('Dy_Dx_NetPay_Por_Sw');
%First Column (dx) from Table 1 as variable 'i'
i=data(:,1);
%Second Column (dy) from Table 1 as variable 'j'
j=data(:,2);
%Third Column (Net Pay) from Table 1 as variable 'NetPay'
NetPay=data(:,3);
%Fourth Column (Max Porosity) from Table 1 as variable 'MaxPorosity'
MaxPorosity=data(:,4);
%Fifth Column (Min Porosity) from Table 1 as variable 'MinPorosity'
MinPorosity=data(:,5);
%Sixth Column (Max Water Saturation) from Table 1 as variable 'MaxSw'
MaxSw=data(:,6);
%Seventh Column (Min Water Saturation) from Table 1 as variable 'MinSw'
MinSw=data(:,7);
%% Mesh Grid
%x-axis
x_coordinate = [406.374502 812.749004 1219.123506 1625.498008 2031.87251
2438.247012 2746.727376 3153.101878 3559.47638 3965.850882 4274.331246
4582.811611 4957.313603 5363.688105 5770.062607 6176.437109 6582.811611
6989.186113 7395.560615 7801.935117 8208.309619 8614.684121 9021.058623
9427.433125 9833.807627 10240.18213 10646.55663 11052.93113 11459.30563
11865.68014 12369.94878 12841.2066 13296.52817 13767.786
13995.44678
14466.70461 14561.18384 14951.62208 15471.82698 15992.03187 16496.30051];
%y-axis
y_coordinate = [9069.444444 8513.888889 7972.222222 7416.666667 6861.111111
6152.777778 5798.611111 5402.777778 4847.222222 4291.666667 3875
3083.333333 2770.833333 2437.5 2062.5 1625
1083.333333 479.1666667];
%Meshgrid will create grid system
[X,Y]=meshgrid(x_coordinate,y_coordinate);
36
%griddata will interpolate the missing data
INetPay=griddata(i,j,NetPay,X,Y);
IMaxPorosity=griddata(i,j,MaxPorosity,X,Y);
IMinPorosity=griddata(i,j,MinPorosity,X,Y);
IMaxSw=griddata(i,j,MaxSw,X,Y);
IMinSw=griddata(i,j,MinSw,X,Y);
%3D map of property distribution
%Net Pay 3D Map
figure(1);
surf(INetPay);
title('Net Pay Distribution');
xlabel('dx [ft]');
ylabel('dy [ft]');
%Max Porosity 3D Map
figure(2);
surf(IMaxPorosity);
title('Max Porosity Distribution');
xlabel('dx [ft]');
ylabel('dy [ft]');
%Min Porosity 3D Map
figure(3);
surf(IMinPorosity);
title('Min Porosity Distribution');
xlabel('dx [ft]');
ylabel('dy [ft]');
%Max Sw 3D Map
figure(4);
surf(IMaxSw);
title('Max Water Saturation Distribution');
xlabel('dx [ft]');
ylabel('dy [ft]');
%Max Sw 3D Map
figure(5);
surf(IMinSw);
title('Min Water Saturation Distribution');
xlabel('dx [ft]');
ylabel('dy [ft]');
37
Regional OGIP and Monte Carlo Simulation
%% Regional OGIP
% This program will help to identify the sweet spot
% Team 19 - DM inc.
%% Reading Excel Files
%Values taken from Property Distribution Matrix
%Porosity
porosity_max=xlsread('MaxPorosity');
porosity_min=xlsread('MinPorosity');
%Depth
bot_depth= dlmread('BtNew.txt');
top_depth= dlmread('TpNew.txt');
%Water Saturation
saturation_min = xlsread('MinSw');
saturation_max = xlsread('MaxSw');
%% Calculations
%Gas Formation Volume Factor [cu ft/SCF]
B_gi=.00671;
%Fracture Porosity [unitless]
fracture_porosity=unifrnd(0.001,0.01,[10000,1]);
%Fracture Saturation [unitless]
fracture_saturation=unifrnd(0.1,0.5,[10000,1]);
%Density of Coal [gm/cc]
rho_c=1.33;
%Clear Variables to speed up code
P_max=zeros();
P_min=zeros();
P90=zeros();
P50=zeros();
P10=zeros();
%% Loop will calculate P90 P50 and P10 for each grid block
for i=1:18
for j=1:41
%Pressure [psi]
P_max=bot_depth(i,j)*0.433;
P_min=top_depth(i,j)*0.433;
%Input Program for Langmuir Pressure [unitless]
PL_bot=getPL(bot_depth(i,j));
PL_top=getPL(top_depth(i,j));
%Input Program for Langmuir Volume [unitless]
VL_bot=getVL(bot_depth(i,j));
VL_top=getVL(top_depth(i,j));
38
%Input Program for Ash Contents [unitless]
max_ash=max(bot_ash,top_ash);
min_ash=min(bot_ash,top_ash);
%Input Program for Ash Contents [unitless]
bot_ash=getAsh_max(bot_depth(i,j));
top_ash=getAsh_min(top_depth(i,j));
%Input Program for Langmuir Pressure [unitless]
PL_max=max(PL_bot,PL_top);
PL_min=min(PL_bot,PL_top);
%Input Program for Langmuir Volume [unitless]
VL_max=max(VL_bot,VL_top);
VL_min=min(VL_bot,VL_top);
%Other Variable Calculations
porosity=unifrnd(porosity_min(i,j),porosity_max(i,j),[10000,1]);
saturation=unifrnd(saturation_min(i,j),saturation_max(i,j),[10000,1]);
ash=unifrnd(min_ash,max_ash,[10000,1]);
P=unifrnd(P_min,P_max,[10000,1]);
VL=unifrnd(VL_min,VL_max,[10000,1]);
PL=unifrnd(PL_min,PL_max,[10000,1]);
% OGIP Calculation
FreeGas=43560*((fracture_porosity.*(1fracture_saturation))/B_gi+(porosity.*(1-saturation))/B_gi);
AbsorbedGas=1000*1.359.*((VL.*P)./(P+PL)).*rho_c.*(1-ash/100);
OGIP=FreeGas+AbsorbedGas;
%Monte Carlo
P90(i,j)=quantile(OGIP,.1);
P50(i,j)=quantile(OGIP,.5);
P10(i,j)=quantile(OGIP,.9);
end
end
%dx and dy coordinates for grid blocks
dx = dlmread('Delta_x.txt');
dy = dlmread('Delta_y.txt');
%Regional OGIP for P90
figure(1)
surface(dx,dy,P90);
xlabel('x (feet)');
ylabel('y (feet)');
zlabel('OGIP [SCF/acre-ft]');
title('Regional OGIP (P90)');
hold on
plot3([2560 2560],[4960 4960],[1000000 5000000],'k','LineWidth',1)
text(2560,4960,5000000, 'Well 1')
plot3([5280 5280],[4960 4960],[1000000 5000000],'k','LineWidth',1)
39
text(5280,4960,5000000, 'Well 2')
plot3([15320 15320],[2000 2000],[1000000
text(15320,2000,5000000, 'Well 3')
plot3([13000 13000],[2480 2480],[1000000
text(13000,2480,5000000, 'Well 4')
plot3([15320 15320],[4640 4640],[1000000
text(15320,4640,5000000, 'Well 5')
plot3([13640 13640],[3040 3040],[1000000
text(13640,3040,5000000, 'Well 6')
plot3([13640 13640],[2000 2000],[1000000
text(13640,2000,5000000, 'Well 7')
plot3([14440 14440],[2800 2800],[1000000
text(14440,2800,5000000, 'Well 8')
plot3([14440 14440],[2000 2000],[1000000
text(14440,2000,5000000, 'Well 9')
plot3([15880 15880],[1600 1600],[1000000
text(15880,1600,5000000, 'Well 10')
plot3([15880 15880],[3040 3040],[1000000
text(15880,3040,5000000, 'Well 11')
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
5000000],'k','LineWidth',1)
%Regional OGIP for P50
figure(2)
surface(dx,dy,P50);
xlabel('x (feet)');
ylabel('y (feet)');
zlabel('OGIP [SCF/acre-ft]');
title('Regional OGIP (P50)');
hold on
plot3([2560 2560],[4960 4960],[2000000 5000000],'k','LineWidth',1)
text(2560,4960,5000000, 'Well 1')
plot3([5280 5280],[4960 4960],[2000000 5000000],'k','LineWidth',1)
text(5280,4960,5000000, 'Well 2')
plot3([15320 15320],[2000 2000],[2000000 5000000],'k','LineWidth',1)
text(15320,2000,5000000, 'Well 3')
plot3([13000 13000],[2480 2480],[2000000 5000000],'k','LineWidth',1)
text(13000,2480,5000000, 'Well 4')
plot3([15320 15320],[4640 4640],[2000000 5000000],'k','LineWidth',1)
text(15320,4640,5000000, 'Well 5')
plot3([13640 13640],[3040 3040],[2000000 5000000],'k','LineWidth',1)
text(13640,3040,5000000, 'Well 6')
plot3([13640 13640],[2000 2000],[2000000 5000000],'k','LineWidth',1)
text(13640,2000,5000000, 'Well 7')
plot3([14440 14440],[2800 2800],[2000000 5000000],'k','LineWidth',1)
text(14440,2800,5000000, 'Well 8')
plot3([14440 14440],[2000 2000],[2000000 5000000],'k','LineWidth',1)
text(14440,2000,5000000, 'Well 9')
plot3([15880 15880],[1600 1600],[2000000 5000000],'k','LineWidth',1)
text(15880,1600,5000000, 'Well 10')
plot3([15880 15880],[3040 3040],[2000000 5000000],'k','LineWidth',1)
text(15880,3040,5000000, 'Well 11')
%Regional OGIP for P10
figure(3)
surface(dx,dy,P10);
xlabel('x (feet)');
ylabel('y (feet)');
40
zlabel('OGIP [SCF/acre-ft]');
title('Regional OGIP (P10)');
hold on
plot3([2560 2560],[4960 4960],[3000000 5000000],'k','LineWidth',1)
text(2560,4960,5000000, 'Well 1')
plot3([5280 5280],[4960 4960],[3000000 5000000],'k','LineWidth',1)
text(5280,4960,5000000, 'Well 2')
plot3([15320 15320],[2000 2000],[3000000 5000000],'k','LineWidth',1)
text(15320,2000,5000000, 'Well 3')
plot3([13000 13000],[2480 2480],[3000000 5000000],'k','LineWidth',1)
text(13000,2480,5000000, 'Well 4')
plot3([15320 15320],[4640 4640],[3000000 5000000],'k','LineWidth',1)
text(15320,4640,5000000, 'Well 5')
plot3([13640 13640],[3040 3040],[3000000 5000000],'k','LineWidth',1)
text(13640,3040,5000000, 'Well 6')
plot3([13640 13640],[2000 2000],[3000000 5000000],'k','LineWidth',1)
text(13640,2000,5000000, 'Well 7')
plot3([14440 14440],[2800 2800],[3000000 5000000],'k','LineWidth',1)
text(14440,2800,5000000, 'Well 8')
plot3([14440 14440],[2000 2000],[3000000 5000000],'k','LineWidth',1)
text(14440,2000,5000000, 'Well 9')
plot3([15880 15880],[1600 1600],[3000000 5000000],'k','LineWidth',1)
text(15880,1600,5000000, 'Well 10')
plot3([15880 15880],[3040 3040],[3000000 5000000],'k','LineWidth',1)
text(15880,3040,5000000, 'Well 11')
41
Download