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