0% found this document useful (0 votes)
154 views

Final Report Team 19

The document summarizes a student project analyzing a coalbed methane reservoir. The team mapped the reservoir using contour maps and well logs to determine depths. They analyzed well logs to calculate petrophysical properties like porosity and water saturation in potential production zones. The team then used these properties, area calculations, and Monte Carlo simulations in Matlab to calculate original gas in place and identify sweet spots with optimal production. Their analysis helped recommend drilling locations within the reservoir.

Uploaded by

api-289204490
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
154 views

Final Report Team 19

The document summarizes a student project analyzing a coalbed methane reservoir. The team mapped the reservoir using contour maps and well logs to determine depths. They analyzed well logs to calculate petrophysical properties like porosity and water saturation in potential production zones. The team then used these properties, area calculations, and Monte Carlo simulations in Matlab to calculate original gas in place and identify sweet spots with optimal production. Their analysis helped recommend drilling locations within the reservoir.

Uploaded by

api-289204490
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 48

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.
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
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 Archies 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
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).
4

Top
Dept
h
(ft)

Bottom
Depth
(ft)

3384

3400

3470

3479

3492

3494

3558

3568

3668

3675

3689

3691

3785

3790

Gross
Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohm
-m)

True
Porosity
(ft)

16

0.46

0.35

2000

0.405

0.57

0.55

500

0.56

0.35

0.25

15

0.3

10

0.6

0.35

600

0.475

0.58

0.54

700

0.56

0.59

0.56

750

0.575

0.58

0.53

500

0.555

Sw
(%)
0.02
1
0.02
6
0.38
4
0.03
0
0.02
2
0.02
0
0.02
6

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).
OGIP( SCF)=43,560 Ah[

f ( 1Swf ) m ( 1S wm )
VLP
+
]+1.359 Ah
( 1f a )
B gi
B gi
P+ P L c

Where
A = Area of Reservoir [acres], constant
h = Net Pay Thickness [ft.], normal distribution
f

= Fracture Porosity [fraction], uniform distribution

S wf

= Fracture Water Saturation [fraction], uniform distribution

B gi = Gas Formation Volume Factor [cu ft/scf], constant


Note: B gi was calculated from the equation
B gi =

0.02827ZTres
Pres

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
S wm = Matrix Water Saturation [fraction], normal distribution
V L = 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

f a = 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
6

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
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 Archies 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)

Input
3434
1.33
0
30.9
16.5
0.39
0.11
0.13
0.13
1731
99.7
0.001
7

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

0.01
325.8
750.7
318.2
862.5
0
0.536
0.1
0.5

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


8

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.
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 companys 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
9

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
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 Wangs 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

10

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

11

Figures/Illustrations

Figure 4: Discretization of Top of CBM Reservoir

12

Figure 5: Discretization of Bottom of CBM Reservoir

13

Figure 6: Depth Interpolation of Top of CBM Reservoir

14

Figure 7: Depth Interpolation of Bottom of CBM Reservoir

15

Figure 8: 3D Representation of Top of CBM Reservoir


16

Figure 9: 3D Representation of Bottom of CBM Reservoir


17

Figure 10: 3D Representation of Top of CBM Reservoir with Well Locations


18

Random Number Generator Standard Deviation


P50 - Original Gas In Place (MMMSCF)
45.0
40.0
35.0
30.0
25.0

Std. Dev. (MMMSCF)

20.0
15.0
10.0
5.0
0.0

10

100

1000

10000

100000

1000000

Number of Random Numbers in Matlab

Figure 11: Standard Deviation of Variations in Random Numbers in Matlab

19

Figure 12: Histogram of Net Pay

Figure 14: Histogram of Water Saturation

Figure 13: Histogram of Porosity

Figure 15: Histogram of OGIP

20

P10

P50

P90

Figure 16: Plot of OGIP Identifying Monte Carlo P90 P50 P10

21

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

22

Figure 22: Regional OGIP Monte Carlo Simulation (P90)

23

Figure 23: Regional OGIP Monte Carlo Simulation (P50)

24

Figure 24: Regional OGIP Monte Carlo Simulation (P10)

25

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
(ft)

Bottom
Depth
(ft)

3827

3832

3869

3874

3922

3924

3979

3987

3989

3993

4007

4021

4032

4036

4061

4063

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

0.65

0.6

2000

0.44

0.65

0.6

2500

0.44

0.57

0.55

2000

0.40

0.6

0.5

2250

0.39

0.5

0.55

2500

0.37

14

0.27

0.18

180

0.16

0.4

0.29

35

0.25

0.65

0.55

2000

0.43

Sw
(%)
0.0
0
0.0
0
0.0
0
0.0
0
0.0
0
0.3
2
0.4
6
0.0
0

Net
Pay
(ft)
5
5
2
8
4
14
0
2

26

4086

4101

4153

4158

4187

4189

4208

4210

4283

4288

15

0.4

0.3

170

0.25

0.55

0.6

2000

0.41

0.45

0.4

2000

0.30

0.4

0.4

2000

0.28

0.54

0.6

2500

0.40

0.0
9
0.0
0
0.0
0
0.0
1
0.0
0

15
5
2
2
5

Table 5: Well 3 Log Readings and Calculations


Top
Depth
(ft)

Bottom
Depth
(ft)

3787

3789

3852

3858

3871

3874

4037

4041

4069

4072

4092

4094

4170

4174

4213

4217

4282

4286

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

0.55

0.5

160

0.371

0.65

0.6

1000

0.442

0.6

0.65

380

0.442

0.65

0.65

560

0.459

0.55

0.6

300

0.406

0.5

0.5

990

0.353

0.6

0.6

1500

0.424

0.58

0.6

2000

0.417

0.7

0.65

260

0.477

Sw
(%)
0.02
9
0.00
2
0.00
7
0.00
4
0.01
2
0.00
5
0.00
2
0.00
1
0.00
8

Net
Pay
(ft)
2
6
3
4
3
2
4
5
4

Table 6: Well 4 Log Readings and Calculations

27

Top
Depth
(ft)

Bottom
Depth
(ft)

4314

4320

4346

4358

4366

4374

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

Sw
(%)

0.2

-0.04

15

0.08

12

0.25

0.16

40

0.205

0.25

0.25

20

0.25

0.79
0
0.18
9
0.21
9

Sw
(%)

Net
Pay
(ft)
6
12

Net
Pay
(ft)

Table 7: Well 5 Log Readings and Calculations


Top
Depth
(ft)

Bottom
Depth
(ft)

4060

4062

4064

4068

4106

4112

4136

4140

4240

4244

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

0.24

0.27

400

0.255

0.3

0.2

700

0.25

0.28

0.22

600

0.25

0.28

0.2

100

0.24

0.3

0.27

100

0.285

0.30
6
0.23
6
0.25
5
0.65
0
0.54
7

Sw
(%)

2
4
6
4
4

Table 8: Well 6 Log Readings and Calculations

Top
Depth
(ft)

Bottom
Depth
(ft)

4000

4010

4026

4030

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

10

0.3

0.13

60

0.215

0.27

0.19

90

0.23

0.04
4
0.03
6

Net
Pay
(ft)
0
4

28

4098

4102

4120

4122

4136

4140

4148

4151

4194

4197

0.6

0.6

550

0.6

0.6

0.6

350

0.6

0.14

0.1

60

0.12

0.6

0.6

110

0.6

0.7

0.7

190

0.7

0.01
5
0.01
8
0.04
4
0.03
3
0.02
5

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)
20
14
30
19
57
85
40

True
Porosity
(ft)
0.482
0.284
0.41
0.345
0.3375
0.41
0.7

Sw
(%)

Net Pay
(ft)

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

Top
Depth
(ft)

Bottom
Depth
(ft)

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

Sw
(%)

Net
Pay
(ft)

29

3826

3830

3842

3844

3878

3880

3922

3924

3946

3950

4122

4128

4142

4144

4162

4164

4190

4192

4246

4250

0.5

0.06

1500

0.28

0.6

0.12

110

0.36

0.5

0.18

95

0.34

0.6

0.06

2000

0.33

0.65

0.18

200

0.415

0.57

0.08

2000

0.325

0.55

0.06

2000

0.305

0.5

0.1

700

0.3

0.6

-0.04

300

0.28

0.55

0.06

1000

0.305

0.04
3
0.10
8
0.12
7
0.02
9
0.06
5
0.03
0
0.03
3
0.05
6
0.09
5
0.04
6

Sw
(%)

4
2
2
4
4
6
2
2
2
4

Table 11: Well 9 Log Readings and Calculations

Top
Depth
(ft)

Bottom
Depth
(ft)

3976

3978

4002

4006

4064

4066

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

0.56

0.42

220

0.49

4
2

0.65
0.55

0.52
0.45

1800
990

0.585
0.5

0.04
8
0.01
3
0.02

Net
Pay
(ft)
2
4
2

30

4210

4212

4230

4232

4278

4280

4304

4308

0.6

0.5

600

0.55

0.65

0.6

800

0.625

0.7

0.65

300

0.675

0.65

0.55

2000

0.6

2
0.02
5
0.01
8
0.02
6
0.01
2

Sw
(%)

2
2
2
4

Table 12: Well 10 Log Readings and Calculations


Top
Depth
(ft)

Bottom
Depth
(ft)

3974

3979

4008

4011

4054

4057

4090

4095

4159

4162

4250

4256

Gross Pay
(ft)

Neutron
Porosity
(%)

Density
Porosity
(%)

Rd
(ohmm)

True Porosity
(ft)

0.87

0.2

500

0.535

0.82

0.1

100

0.46

0.89

0.25

100

0.57

0.88

0.25

1000

0.565

0.86

0.2

150

0.53

0.88

0.25

1500

0.565

0.10
0
0.25
0
0.15
0
0.10
0
0.15
0
0.10
0

Min
Porosity
(%)

Max
Sw
(%)

Net
Pay
(ft)
5
3
3
5
3
6

Table 13: Well 11 Log Readings and Calculations

Well
#

From Structure Contour


Maps
Top
Bottom
Thickn
Depth
Depth
ess
(ft)
(ft)
(ft)

True
Porosity
Mean

Net
Pay
(ft)

From Well Logs


Water
Max
Saturation
Porosity
Mean (%)
(%)

Min
Sw
(%)

31

(%)
1

3380

3850

470

0.49

49

0.08

0.58

0.30

0.38

0.02

3400

3625

225

0.40

43

0.17

0.55

0.16

0.45

0.01

3850

4250

400

0.35

69

0.07

0.44

0.16

0.46

0.00

3775

4220

445

0.42

33

0.01

0.48

0.35

0.03

0.00

4300

4410

110

0.18

26

0.40

0.25

0.08

0.79

0.19

4005

4255

250

0.26

20

0.40

0.29

0.24

0.65

0.24

3800

4000

200

0.44

17

0.03

0.70

0.12

0.04

0.01

3945

4195

250

0.42

0.06

0.70

0.28

0.09

0.04

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


Category

dx
(ft.)

dy
(ft.)

Net Pay
(ft)

Max Porosity
(%)

Min Porosity
(%)

Max Sw
(%)

Min Sw (%)

Well 1
Well 2
Well 3
Well 4
Well 5
Well 6
Well 7
Well 8
Well 9
Well 10

2747
4957
14467
12370
14467
12841
12841
13768
13768
14952

6861
6861
2771
3083
6153
3875
2438

49
43
69
33
26
20
17
8
32
18

0.58
0.55
0.44
0.48
0.25
0.29
0.70
0.70
0.42
0.68

0.30
0.16
0.16
0.35
0.08
0.24
0.12
0.28
0.28
0.49

0.38
0.45
0.46
0.03
0.79
0.65
0.04
0.09
0.13
0.05

0.02
0.01
0.00
0.00
0.19
0.24
0.01
0.04
0.03
0.01

3875
2063
2063

32

Well 11
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Category
Boundary

14952
406
406
406
406
406
406
406
406
406
406
406
406
406
406
406
406
406
406
813
1219
1625
2032
2438
2747
3153
3559
3966
dx
(ft.)
4274

3875
9069
8514
7972
7417
6861
6153
5799
5403
4847
4292
3875
3083
2771
2438
2063
1625
1083
479
479
479
479
479
479
479
479
479
479
dy
(ft.)
479

25
22
22
22
25
25
25
22
22
22
22
22
22
22
20
20
20
20
20
20
20
20
20
22
22
22
20
20
Net Pay
(ft)
20

0.57
0.50
0.51
0.53
0.53
0.53
0.53
0.54
0.54
0.54
0.54
0.55
0.55
0.55
0.56
0.56
0.53
0.53
0.52
0.54
0.55
0.58
0.57
0.58
0.60
0.61
0.62
0.62
Max Porosity
(%)
0.60

0.46
0.25
0.25
0.25
0.26
0.26
0.26
0.27
0.27
0.26
0.26
0.27
0.27
0.27
0.27
0.28
0.27
0.27
0.27
0.30
0.31
0.31
0.31
0.31
0.31
0.29
0.26
0.24
Min Porosity
(%)
0.23

0.25
0.35
0.35
0.36
0.36
0.36
0.37
0.37
0.37
0.38
0.38
0.38
0.38
0.37
0.39
0.39
0.39
0.40
0.40
0.40
0.40
0.41
0.42
0.42
0.42
0.42
0.43
0.43
Max Sw
(%)
0.45

0.10
0.01
0.01
0.01
0.01
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
Min Sw (%)
0.02

33

Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary

4583
4957
5364
5770
6176
6583
6989
7396
7802
8208
8615
9021
9427
9834
10240
10647
11053
11459
11866
12370
12841
13297
13768
13995
14467
14561
14952
15472
15992
16496
16496

479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
479
1083
1625

22
22
22
20
20
20
20
20
20
20
18
18
18
16
16
16
15
15
15
15
12
15
20
25
35
18
15
15
15
14
13

0.59
0.59
0.58
0.58
0.57
0.58
0.58
0.58
0.59
0.59
0.59
0.60
0.61
0.61
0.62
0.62
0.60
0.62
0.63
0.60
0.58
0.54
0.50
0.48
0.49
0.52
0.62
0.62
0.62
0.62
0.62

0.22
0.22
0.22
0.21
0.22
0.22
0.22
0.21
0.20
0.19
0.18
0.15
0.15
0.15
0.16
0.15
0.15
0.14
0.15
0.14
0.14
0.18
0.24
0.24
0.22
0.14
0.08
0.08
0.12
0.14
0.14

0.46
0.48
0.48
0.48
0.48
0.49
0.49
0.49
0.50
0.50
0.51
0.52
0.53
0.53
0.54
0.54
0.48
0.40
0.40
0.32
0.10
0.10
0.14
0.15
0.20
0.55
0.92
0.68
0.60
0.54
0.58

0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.02
0.03
0.03
0.02
0.01
0.01
0.01
0.01
0.01
0.01
0.01

34

Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Category
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary

16496
16496
16496
16496
16496
16496
16496
16496
dx
(ft.)
16496
16496
16496
16496
16496
16496
16496
16496
15992
15472
14952
14561
14467
13995
13768
13297
12841
12370
11866
11459
11053

2063
2438
2771
3083
3875
4292
4847
5403
dy
(ft.)
5799
6153
6861
7417
7972
8514
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069

13
13
18
30
18
15
15
15
Net Pay
(ft)
15
15
15
15
15
15
15
15
15
15
15
15
15
15
10
10
10
15
15
17
17

0.62
0.62
0.62
0.59
0.59
0.58
0.59
0.60
Max Porosity
(%)
0.60
0.59
0.58
0.58
0.58
0.57
0.57
0.58
0.55
0.52
0.50
0.46
0.45
0.48
0.52
0.53
0.52
0.57
0.58
0.60
0.59

0.14
0.15
0.15
0.16
0.17
0.18
0.19
0.18
Min Porosity
(%)
0.20
0.21
0.20
0.24
0.24
0.24
0.22
0.20
0.21
0.22
0.23
0.08
0.08
0.10
0.12
0.15
0.21
0.20
0.20
0.20
0.20

0.60
0.67
0.56
0.54
0.52
0.49
0.48
0.48
Max Sw
(%)
0.50
0.51
0.50
0.50
0.50
0.53
0.52
0.52
0.54
0.66
0.77
0.68
0.88
0.65
0.62
0.60
0.60
0.59
0.58
0.55
0.54

0.01
0.01
0.02
0.03
0.05
0.10
0.09
0.08
Min Sw (%)
0.06
0.04
0.03
0.02
0.02
0.01
0.01
0.01
0.01
0.02
0.02
0.02
0.02
0.02
0.01
0.02
0.02
0.02
0.02
0.01
0.01

35

Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Category
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary
Boundary

10647
10240
9834
9427
9021
8615
8208
7802
7396
6989
6583
6176
5770
5364
4957
4583
4274
3966
3559
dx
(ft.)
3153
2747
2438
2032
1625
1219
813

9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
9069
dy
(ft.)
9069
9069
9069
9069
9069
9069
9069

18
18
18
18
18
20
20
22
22
23
24
24
25
25
25
25
25
25
25
Net Pay
(ft)
25
25
25
25
25
25
22

0.59
0.59
0.58
0.58
0.57
0.56
0.56
0.56
0.56
0.56
0.56
0.56
0.55
0.55
0.55
0.56
0.55
0.55
0.57
Max Porosity
(%)
0.56
0.55
0.56
0.56
0.56
0.55
0.53

0.19
0.19
0.19
0.18
0.18
0.18
0.18
0.17
0.17
0.17
0.17
0.17
0.16
0.16
0.16
0.18
0.20
0.26
0.28
Min Porosity
(%)
0.28
0.30
0.30
0.29
0.29
0.28
0.29

0.53
0.53
0.53
0.52
0.50
0.50
0.47
0.47
0.47
0.47
0.46
0.45
0.45
0.45
0.45
0.45
0.43
0.42
0.41
Max Sw
(%)
0.40
0.38
0.38
0.37
0.36
0.36
0.36

0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.02
0.02
Min Sw (%)
0.02
0.02
0.02
0.02
0.02
0.02
0.01

Table 15: Property Distribution Coordinates and Boundary Conditions for Interpolation

36

37

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]);

38

%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.*(1-Swm)./Bgi))/1000)+(A.*h.*1.359.*((VL.*P)./
(P+PL))*rhoc.*(1-fa))*1000);
%% 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);

39

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');

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

40

%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

41

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);
%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);

42

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]');

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');

43

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));

44

%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.*(1-fracture_saturation))/B_gi+(porosity.*(1-saturation))/B_gi);
AbsorbedGas=1000*1.359.*((VL.*P)./(P+PL)).*rho_c.*(1-ash/100);
OGIP=FreeGas+AbsorbedGas;

end

%Monte Carlo
P90(i,j)=quantile(OGIP,.1);
P50(i,j)=quantile(OGIP,.5);
P10(i,j)=quantile(OGIP,.9);

end

%dx and dy coordinates for grid blocks

45

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)
text(5280,4960,5000000, 'Well 2')
plot3([15320 15320],[2000 2000],[1000000 5000000],'k','LineWidth',1)
text(15320,2000,5000000, 'Well 3')
plot3([13000 13000],[2480 2480],[1000000 5000000],'k','LineWidth',1)
text(13000,2480,5000000, 'Well 4')
plot3([15320 15320],[4640 4640],[1000000 5000000],'k','LineWidth',1)
text(15320,4640,5000000, 'Well 5')
plot3([13640 13640],[3040 3040],[1000000 5000000],'k','LineWidth',1)
text(13640,3040,5000000, 'Well 6')
plot3([13640 13640],[2000 2000],[1000000 5000000],'k','LineWidth',1)
text(13640,2000,5000000, 'Well 7')
plot3([14440 14440],[2800 2800],[1000000 5000000],'k','LineWidth',1)
text(14440,2800,5000000, 'Well 8')
plot3([14440 14440],[2000 2000],[1000000 5000000],'k','LineWidth',1)
text(14440,2000,5000000, 'Well 9')
plot3([15880 15880],[1600 1600],[1000000 5000000],'k','LineWidth',1)
text(15880,1600,5000000, 'Well 10')
plot3([15880 15880],[3040 3040],[1000000 5000000],'k','LineWidth',1)
text(15880,3040,5000000, 'Well 11')
%Regional OGIP for P50
figure(2)
surface(dx,dy,P50);
xlabel('x (feet)');
ylabel('y (feet)');
zlabel('OGIP [SCF/acre-ft]');

46

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)');
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')

47

plot3([15320 15320],[4640 4640],[3000000


text(15320,4640,5000000, 'Well 5')
plot3([13640 13640],[3040 3040],[3000000
text(13640,3040,5000000, 'Well 6')
plot3([13640 13640],[2000 2000],[3000000
text(13640,2000,5000000, 'Well 7')
plot3([14440 14440],[2800 2800],[3000000
text(14440,2800,5000000, 'Well 8')
plot3([14440 14440],[2000 2000],[3000000
text(14440,2000,5000000, 'Well 9')
plot3([15880 15880],[1600 1600],[3000000
text(15880,1600,5000000, 'Well 10')
plot3([15880 15880],[3040 3040],[3000000
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)

48

You might also like