UserGuides Tutorials Examples OFM 2014

April 5, 2017 | Author: Omar Santamaría Castillo | Category: N/A
Share Embed Donate


Short Description

Download UserGuides Tutorials Examples OFM 2014...

Description

User Guides, Tutorials, and Examples

User Guides, Tutorials, and Examples

Copyright © 1998-2014 Schlumberger. All rights reserved. This work contains the confidential and proprietary trade secrets of Schlumberger and may not be copied or stored in an information retrieval system, transferred, used, distributed, translated or retransmitted in any form or by any means, electronic or mechanical, in whole or in part, without the express written permission of the copyright owner.

Trademarks & Service Marks Schlumberger, the Schlumberger logotype, and other words or symbols used to identify the products and services described herein are either trademarks, trade names or service marks of Schlumberger and its licensors, or are the property of their respective owners. These marks may not be copied, imitated or used, in whole or in part, without the express prior written permission of Schlumberger. In addition, covers, page headers, custom graphics, icons, and other design elements may be service marks, trademarks, and/or trade dress of Schlumberger, and may not be copied, imitated, or used, in whole or in part, without the express prior written permission of Schlumberger. Other company, product, and service names are the properties of their respective owners. An asterisk (*) is used throughout this document to designate a mark of Schlumberger.

Product Information Country of Origin: USA Release Date: August 2014

1 of 262

User Guides, Tutorials, and Examples

User Guides For your convenience, the topics in this help system are available as .pdf files. Right-click any of the following links to save the a print-ready file to your computer: l

User Guides, Tutorials, Examples, Videos, and Samples

l

Getting Started and Creating Projects

l

Importing, Exporting, and Linking to Data

l

Data Tables and Fields

l

Variable Editor

l

Solutions Catalog, Variables, and the Data Dictionary

l

Entering and Changing Table Data

l

My and Shared Workspaces

l

OFM Settings

l

Workspace Managers

l

Categories

l

PVT

l

Entity Managers and Advanced Setup Features

l

Filtering

l

Base Map

l

GIS Map

l

Maps

l

Analytical Maps

l

Bubble Maps

l

Grid, Contour, and Surface Maps

l

Scatter Plots

l

Map XY Plots

l

Plots

l

Forecasts

l

Reports

l

Log Reports, Well Log Displays, and Cross Sections

2 of 262

User Guides, Tutorials, and Examples

l

Wellbore Diagrams

l

Creating Calculations

l

System Functions

l

References

3 of 262

User Guides, Tutorials, and Examples

User Guides For your convenience, the topics in this help system are available as .pdf files. Right-click any of the following links to save the a print-ready file to your computer: l

User Guides, Tutorials, Examples, Videos, and Samples

l

Getting Started and Creating Projects

l

Importing, Exporting, and Linking to Data

l

Data Tables and Fields

l

Variable Editor

l

Solutions Catalog, Variables, and the Data Dictionary

l

Entering and Changing Table Data

l

My and Shared Workspaces

l

OFM Settings

l

Workspace Managers

l

Categories

l

PVT

l

Entity Managers and Advanced Setup Features

l

Filtering

l

Base Map

l

GIS Map

l

Maps

l

Analytical Maps

l

Bubble Maps

l

Grid, Contour, and Surface Maps

l

Scatter Plots

l

Map XY Plots

l

Plots

l

Forecasts

l

Reports

l

Log Reports, Well Log Displays, and Cross Sections

4 of 262

User Guides, Tutorials, and Examples

l

Wellbore Diagrams

l

Creating Calculations

l

System Functions

l

References

5 of 262

User Guides, Tutorials, and Examples

Videos Note: When you click any of the links below, the video should play in a new browser window.

Creating an After-Before-Compare Plot In this video, we create a scatter plot that uses well test production data from two dates, and compares performance between those dates. We will: Review existing calculated variables; report the monthly oil rate; find the monthly oil rate from three-months previous; find the change in oil rate; find the change in water rate; and then create a scatter plot and interpret it. n

Watch in English

n

Watch in Russian

n

Watch in Spanish

Finding the Best Three Months of Production In this video, we create a series of calculated variables to create a report showing the best three months of production. We will: Find the maximum, second-best, and third-best monthly oil production; find the corresponding dates; and display the information in a report. n

Watch in English

n

Watch in Russian

n

Watch in Spanish

Creating Customized Well Symbols In this video, we create two new well symbols and use them in a project. We will review how well symbols work, create new well symbols, and make the new associations. n

Watch in English

n

Watch in Russian

n

Watch in Spanish

6 of 262

User Guides, Tutorials, and Examples

OFM Quick Start Tutorials This online help has a suite of tutorials. The tutorials have step-by-step instructions for performing common tasks, but they do not cover all features in OFM. The tutorials cover these topics: n

Patterns

n

Plots:

n

n

n

Creating and Editing Plots

n

Audit Plot Tutorial

Reports: n

Date-Based Report

n

Summary Report

Display Logs: n

Single-Well Log Display

n

Multi-Well Log Display

n

Log Cross-Section

n

PVT

n

Forecasts:

n

n

Single Phase Analysis

n

Ratio Analysis

n

Pressure/Z-Factor (P/Z) Analysis

n

Flow After Flow Test

n

Well Deliverability Analysis (WDA)

Maps: n

Bubble Maps

n

Grid Maps

n

Contour Maps

n

Scatter Plots

n

Surface Maps

n

Map XY Plots

7 of 262

User Guides, Tutorials, and Examples

Tutorial: Patterns You can configure waterflood patterns by assigning completions to a pattern and allocating production and injection volumes from those completions. Typical pattern configurations look like these:

You must use your judgment and knowledge of the reservoir to assign a realistic fraction of each completion's production or injection to the block of reservoir beneath the pattern. When you do this, you can compare performance, surveillance, and the optimization of operations at the pattern level, considering both injection and production. In this tutorial, you will: n

Open the waterflood sample project

n

Create patterns interactively: Each pattern has several completions. In this section, you select the completions for each pattern individually.

n

Edit patterns: After you create patterns, you can change the pattern allocation factors or dates. In this section, you edit the patterns that you created. There are two ways to change the pattern data. You can change one pattern at a time, or you can change the pattern data with all sets and all patterns visible.

n

Confirm the pattern allocation factors: No single well should have allocation factors summing to more than one. In this section, you create a report to confirm this.

n

Choose variables affected by pattern allocation factors: In this section, you choose which variables are affected by pattern allocation factors, and which are not. The factors should only affect volumes. Pressures, depths, porosities, choke sizes, hours on production, or any other non-volume variable should not be affected.

n

View pattern results one at a time: In this section, you use patterns and see the effect of the pattern allocation factors that you supplied. You can use patterns by filtering or by stepping though (on the Navigation pane). You can see the results most easily in plots or reports. You will create a report that shows the results of pattern allocation factors.

8 of 262

User Guides, Tutorials, and Examples

n

Compare multiple patterns on a plot: In this section, you create a plot that compares multiple patterns, applying pattern allocation factors.

n

Create patterns from an ASCII file: If you have determined the allocation factors already and it is available in a document or spreadsheet, you can reformat the data and load it into OFM. The pattern data can be static or dynamic. For dynamic patterns, the allocation factors may change over time as injectors are created and terminated. You can remove wells from a pattern as new patterns are created. In this section, you add patterns to the project by loading a formatted data file. They will be the same patterns that you created interactively.

Opening the Waterflood Sample Project Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm.

Creating Patterns Interactively Each pattern has several completions. In this section, you select the completions for each pattern individually. Note: Before you start, you may want to print a large map of your area and manually draw the pattern outlines on that map. This helps organize your work when you configure the patterns interactively in OFM. 1. On the Format tab, in the Zoom group, click Zoom Area. 2. On the base map, drag a frame around the pattern waterflood area in the north (marked with blue symbols). With this waterflood, you could create patterns with a regular layout or in an inverted layout. You will set up regular patterns. Regular layout:

Inverted layout:

3. On the Property pane, under Well Name Properties, change the Well Name to Alias Name. 4. On the base map, press Ctrl and click wells 491, 492, 495, 498, and 502. 5. Release the Ctrl key. The Edit Patterns window opens.

9 of 262

User Guides, Tutorials, and Examples

n

The left pane lists patterns. OFM lists the pattern you created with a default name (P-0). The date (1900-01-01) is the default starting date for the pattern.

n

The right pane lists the five wells you selected.

n

The Current Pattern Set field at the bottom of the window displays the current pattern (inverted_five_spot). Because two pattern sets have already been configured for this project, the pattern you created is in the current pattern. You will change the pattern in the next section of the tutorial.

6. Click OK to close the Edit Patterns window. 7. On the base map, press Ctrl and select another five wells to create another pattern. 8. Release the Ctrl key. The Edit Patterns window opens. OFM lists the pattern you created with a default name (P-1) and the default starting date for the pattern. The wells you selected are listed on the right pane. 9. Click OK to close the Edit Patterns window.

Editing Patterns After you create patterns, you can change the pattern allocation factors or dates. In this section, you edit the patterns that you created. There are two ways to change the pattern data. You can change one pattern at a time, or you can change the pattern data with all sets and all patterns visible. 1. First, view how you can change the pattern data, one pattern at a time: a. On the Setup tab, in the Workspace Managers group, click Patterns. The Edit Patterns window opens. Notice that you can navigate to the pattern you want to edit, by expanding the pattern folder in the left pane. b. Click OK to close the Edit Patterns window. 2. Now you will change the pattern data with all sets and all patterns visible. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. 3. Select the Pattern table and then click OK. The contents of the Pattern table display, showing all patterns configured in both pattern sets. 4. Scroll to the bottom of the table and find the records for the patterns you created. They are part of the inverted_five_spot pattern set, and the pattern name is P-0 and P-1. 5. Highlight all records that are not the patterns you created. Ensure the entire rows are highlighted. Press Delete. Only the P-0 and P-1 patterns remain. 6. Change the PatternSet names from inverted_five_spot to Tutorial. 7. Change the PatternNames. A common naming convention is to name the pattern after the center

10 of 262

User Guides, Tutorials, and Examples

well. Name the first pattern you created (with the default name P-0) P-495. 8. Note the other table columns: n

Date: This is the effective start date of the pattern allocation factors. This does not have to be the first date of production or injection. The default date (January 1900) means the allocation factors are in effect from the beginning of the waterflood, and usually can be left unchanged.

n

Factor: This is the allocation factor the specific well's rates and volumes to the specific pattern. For example, an allocation factor of 0.5 implies that 50% of its injection is supporting a different pattern.

n

Loss: This is the injectant loss factor. For example, a loss of 0.2 implies that 20% of water injected is being lost to non-pay zones or outside the pattern area.

The effective factor is the Factor value minus the Loss value. So, instead of setting a Loss, you can choose to set a lower Factor. 9. Since no single well should be allocated more than 100%, a simple way to set geometric allocation factors is to sort the table by well. Double-click the Well column heading to sort the table. 10. For each well, do the following: n

If the well only appears one time, leave the Factor value as 1.

n

If the well appears two times, change the Factor value for each to 0.5.

n

If the well appears three times, change the Factor value for each to 0.33

Make sure to click on a different record after making a change, to save the change. 11. When you finish, close the Pattern table.

Confirming the Pattern Allocation Factors No single well should have allocation factors summing to more than one. In this section, you create a report to confirm this. 1. On the Home tab, in the Launch analysis group, click Report. The Edit Report window opens. 2. In the Select box, enter the following: @PatCurSet( ), @PatWell( ), @PatName( ), @PatDate( ), @PatFact( ), @PatLoss( ) 3. Click OK. A report opens. It lists the pattern set name, well, pattern name, date, factor, and loss. 4. On the report, click in the @PatWell() column. 5. On the Property pane, under Columns, change the Break when this column changes field to Yes. 6. On the report, click in the @PatFact() column.

11 of 262

User Guides, Tutorials, and Examples

7. On the Property pane, under Columns, change the Subtotal field to SUM. 8. On the report, check the sum values to make sure that none of them are larger than 1.00.

Choosing Variables Affected by Pattern Allocation Factors In this section, you choose which variables are affected by pattern allocation factors, and which are not. The factors should only affect volumes. Pressures, depths, porosities, choke sizes, hours on production, or any other non-volume variable should not be affected. 1. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens. In this project, only the PRD and WIN tables store volumes. 2. Make sure the OIL, GAS, and WATER variables in the PRD table are set for Multiply by Factor because these store volumes. a. On the left pane, expand the PRD table and then click the OIL variable. b. On the right, view the Math tab. c. In the Grouping Options section, make sure Multiply by Factor is selected. d. On the PRD table, select the GAS variable. e. On the Math tab, make sure Multiply by Factor is selected. f. On the PRD table, select the WATER variable. g. On the Math tab, make sure Multiply by Factor is selected. 3. Make sure the ACTIVE, DAYS, and PRESS variables in the PRD table are not set for Multiply by Factor: a. On the left pane, in the PRD table, click the ACTIVE variable. b. On the Math tab, in the Grouping Options section, make sure the Multiply by Factor check box is clear. c. On the PRD table, select the DAYS variable. d. On the Math tab, make sure the Multiply by Factor check box is clear. e. On the PRD table, select the PRESS variable. f. On the Math tab, make sure the check box is clear. 4. On the left pane, expand the WIN table and make sure that the variables that store volumes are set to Multiply by Factor. Make sure that all other variables are not set to Multiply by Factor. 5. Make sure that all numeric variables in the MASTER, PVT, and RESPROP tables are not set to Multiply by Factor. 6. Click OK to save your changes and close the Edit Schema Tables window.

12 of 262

User Guides, Tutorials, and Examples

Viewing Pattern Results One at a Time In this section, you use patterns and see the effect of the pattern allocation factors that you supplied. You can use patterns by filtering or by stepping though (on the Navigation pane). You can see the results most easily in plots or reports. You will create a report that shows the results of pattern allocation factors. 1. On the Home tab, in the Launch analysis group, click Report. The Edit Report window opens. 2. In the Select box, enter the following: Date, Win.Winj 3. Click OK. A report opens. An empty report opens with columns for the date and water injection. 4. On the Format tab, in the Edit group, click Date & Sort. The Edit Report Attributes window opens. 5. Select At Last Date and then click OK. 6. Use patterns for filtering: a. On the Filter pane, click Clear Filter ( 

).

b. On the Filter pane, expand Category, then Patterns, then Tutorial. c. Under Tutorial, select the check box to the left of the first pattern (this was the P-0 pattern, which you may have renamed P-495). d. Click Group ( 

) to view the total pattern results.

The report populates with one row. 7. Compare the difference with and without pattern use: a. On the Filter pane, click Clear Filter (   

).

b. View the base map. c. On the Format tab, in the Zoom group, click Zoom Area and then drag across the map around the pattern waterflood area in the north. d. On the Filter pane, click Group ( 

).

e. View the report. The report populates with one row. The water injection value represents the unallocated total of all five wells, so it is a larger value than before. 8. Step by patterns: a. On the Filter pane, click Clear Filter (   

).

b. On the Navigation pane, on the field at the top, change the step to PATTERN: Tutorial. c. On the Navigation pane, select the first pattern listed. This automatically groups the values for the first pattern, with allocation factors applied.

13 of 262

User Guides, Tutorials, and Examples

Comparing Multiple Patterns on a Plot In this section, you create a plot that compares multiple patterns, applying pattern allocation factors. 1. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 2. Below the main area of the window, click the Add Multiple Curves button. The Add Multiple Curves window opens. 3. On the Category field, select Tutorial. 4. On the Variable field, select Win.Winj. 5. Click OK to close Add Multiple Curves window. 6. On the Edit Plot window, click OK to create the plot.

Creating Patterns from an ASCII File If you have determined the allocation factors already and it is in a document or spreadsheet, you can reformat the data and load it into OFM. The pattern data can be static or dynamic. For dynamic patterns, the allocation factors may change over time as injectors are created and terminated. You can remove wells from a pattern as new patterns are created. In this section, you add patterns to the project by loading a formatted data file. They will be the same patterns that you created interactively. 1. Open Notepad or a similar text editor. 2. In a new text file, enter the following: *Label

Pattern

*WELL *Factor *Loss *Set

Tutorial

*Pattern *Date

"P-0"

19000101

"491WI:B" 1.000000

0.000000

"492WI:B" 0.500000

0.000000

"495:B" 1.000000

0.000000

"498WI:B" 1.000000

0.000000

"502WI:B" 0.500000

0.000000

*Pattern *Date

"P-1"

19000101

"492WI:B" 0.500000

0.000000

"493WI:B" 0.500000

0.000000

14 of 262

User Guides, Tutorials, and Examples

"496:B" 1.000000

0.000000

"502WI:B" 0.500000

0.000000

"503WI:B" 0.500000

0.000000

*Pattern *Date

"P-2"

19000101

"493WI:B" 0.500000

0.000000

"494WI:B" 1.000000

0.000000

"497:B" 1.000000

0.000000

"503WI:B" 0.500000

0.000000

"507WI:B" 1.000000

0.000000

3. Notice the following lines: n

The fourth line (*Pattern "P-0") is the pattern name.

n

The third line (*Set Tutorial) is the Pattern Set name.

n

The fifth line (*Date 19000101) is the effective date.

n

The sixth line ("491WI:B" 1.000000

0.000000) is the wellname, factor, and loss. To remove a

well from a pattern at a specific date, change either the pattern allocation factor to zero, or set the loss factor to 1.0. 4. Save the file with a .pat file extension and then close the text editor. 5. In OFM, on the Setup tab, in the Import/Export group, click Import > Data Loader. The OFM Data Loader opens. 6. In the upper section, double-click the pattern (.pat) file you created. The Files to Load section lists the file. 7. Click Load. A warning message confirms your choice. 8. On the warning message, click OK. The new patterns are loaded into your project. On the Navigation pane, OFM lists them with the other patterns. OFM also lists them on the Edit Patterns window. (To see this window, on the Setup tab, in the Workspace Managers group, click Patterns.)

15 of 262

User Guides, Tutorials, and Examples

Tutorial: PVT For reservoir engineering, you must convert surface oil and gas production volumes to downhole or reservoir volumes. With those values, the reservoir engineer monitors the performance of the reservoir relative to the overall depletion strategy. Fluid properties change as reservoir conditions (especially pressure) change. The PVT module has many industry-accepted correlations that you can use to calculate an estimated value for a fluid property (such as viscosity). In this tutorial, you will: 1. Create a PVT entity for each fluid: In this tutorial, you configure your project to produce from two separate fluid compartments, named Region_A and Region_B. So, you must define the fluid for each of these compartments. You can create two PVT entities. 2. Map completions to their PVT entity: In this section of the tutorial, you mark which completion produces from Region_A, and which completion produces from Region_B. This is generally timeindependent information, and so it can be included in a static table. Any static table in the project is OK. You will use the master table to create a column in which this information will reside. 3. Use PVT system functions: To use the fluid correlation calculations in your work, you can use of a group of system functions in that relate directly to the PVT functionality. It is OK to call these functions directly in your eventual calculation, but to make the feature more visible you can create a calculated variable specifically to return the Formation Volume Factor. 4. Calculate reservoir oil volume: In this section of the tutorial, you make the final calculation.

Creating a PVT Entity for Each Fluid In this tutorial, you configure your project to produce from two separate fluid compartments, named Region_A and 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Setup tab, in the Workspace Managers group, click PVT. The PVT Entity Name window opens. One entity is listed, named Default. You cannot rename or delete this entity. 3. Click Add. The Add New PVT Table Entity window opens. 4. Enter Region_A as the name you want to assign the new entity and then click OK. The Edit PVT Information window opens for Region_A. 5. On the Oil Correlations tab, for the Formation Volume Factor, Bo correlation, select Standing. 6. On the PVT Data tab, confirm that the remaining data required for the correlation are available. In this case, note that there are already entries for the reservoir initial pressure, oil and gas gravity, and temperature. The reservoir pressure value is used to determine the solution gas oil ratio, which

16 of 262

User Guides, Tutorials, and Examples

is controlled by a separate correlation choice on the Oil Correlations tab. Therefore, for this tutorial, you need do nothing on this tab. 7. Click OK. 8. On the PVT Entity Name window, create a second fluid compartment: Click Add. 9. Enter Region_B as the name and then click OK. 10. On the Oil Correlations tab, for the Formation Volume Factor, Bo correlation, select Vasquez and Beggs. 11. Click OK. 12. Click Close. 13. On the Workspace tab, click Save to save your work.

Mapping Completions to their PVT Entity In this section of the tutorial, you mark which completion produces from Region_A, and which completion produces from Region_B. This is generally time-independent information, and so it can be included in a static table. Any static table in the project is OK. You will use the master table to create a column in which this information will reside. 1. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens. 2. On the left side of the window, select the HEADERID table. 3. On the right side of the window, select the Fields tab. 4. In the Add New Field section, enter PVT_Region. 5. Select Text from the drop-down list. 6. Click Add. The new field name appears in the list of Available Fields. 7. Click OK. Now you can enter the data. 8. On the Filter pane, click Clear Filter

to remove any previously applied filters.

9. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. 10. Select HEADERID. 11. Select Edit All Records. 12. Click OK. 13. In the PVT_Region column (on the far right), enter the following information:

17 of 262

User Guides, Tutorials, and Examples

n

On the row for BLUE_1:Ge_6, enter Region_A.

n

On the row for BLUE_1:He_0, enter Region_B.

n

On the row for BLUE_1:Li_1C, enter Region_A.

14. Close the HEADERID:All Records tab to save your changes. 15. Now you must signal that the new field in the HEADERID table dictates which set of PVT correlation data to use. On the Setup tab, in the Tables group, click Association. The Associations window opens. 16. In the PVT field, select HEADERID.PVT_Region. 17. Click OK. You have fully mapped the two PVT regions to the project. 18. On the Workspace tab, click Save to save your work.

Using PVT System Functions To use the fluid correlation calculations in your work, you can use of a group of system functions in that relate directly to the PVT functionality. It is OK to call these functions directly in your eventual calculation, but to make the feature more visible you can create a calculated variable specifically to return the Formation Volume Factor. 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Calculated Variables window opens. 2. Click Add Calculated Variable. The Edit Calculated Variable window opens. 3. Enter the following expression in the text field: @PvtBo(3000) Note: @PvtBo is one of many PVT system functions. You can view the full list by clicking on the system functions button and scrolling to the section beginning Pvt. Most of the @Pvt system functions require pressure data. In this example, you provided the simplest form of input data, a single number (3000 psi). In practice, a more useful form of the expression would call a dynamic variable for pressure, such as @PvtBo (Monthlyprod.pressure). This will result in a continuous estimate of Formation Volume Factor. 4. Click OK. The new calculated variable displays as the last item on the list. By default, OFM names it NewItem. 5. In the Name column, delete the name NewItem and rename the variable FVF. 6. At the top of the Variable Editor window, click Report. OFM adds the report columns in the window. 7. In the Report Width Decimals column, for the FVF row, select 3. 8. Click OK. 9. On the Workspace tab, click Save to save your work.

18 of 262

User Guides, Tutorials, and Examples

Calculating Reservoir Oil Volume In this section of the tutorial, you make the final calculation. 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. 3. Enter the following expression in the text field: Monthlyprod.oil * FVF 4. Click OK. The new calculated variable displays as the last item on the list. By default, OFM names it NewItem. 5. In the Name column, delete the name NewItem and rename the variable Reservoir_Oil_Vol. 6. Assign suitable attributes (such as units). Note: To test the new calculated variable, you can create a report with the following definition: Date, Monthlyprod.Oil, FVF, reservoir_Oil_Vol. Note the new functionality for the first three completions in the project. See how the FVF value changes when selecting completions from the two different PVT regions. 7. On the Workspace tab, click Save to save your work.

19 of 262

User Guides, Tutorials, and Examples

Tutorial: Creating and Editing Plots You can create plots to display information graphically. OFM produces plots from stored data or from calculated results in the project. In this tutorial, you will: 1. Create a plot that displays data for a single completion: The simplest form of a line plot is a timedependent display of monthly oil and gas production for a selected completion. In this section of the tutorial, you create one. 2. Extend a plot to multiple Y-axes: You can extend the visualization capabilities of the plot. 3. Extend a plot to multiple graphs: You can create up to six graphs in any single OFM plot. In this section of the tutorial, you add graphs to a plot. You will prepare the following graphs: Oil versus Time, Oil versus Cum Oil, Water Cut versus Time, and Water Cut versus Cum Water. All the graphs do not have to use the same X-axis variable. 4. Create a plot displaying data for a single variable for multiple completions: One way to compare the performance of several entities is to display their data on the same plot. In this section, you display data for a single variable for multiple completions. 5. Edit plot headers: Headers are titles or labels that display on the plot. Headers display information about the entity you select. In this section, you place a simple text title at the top of the plot. Below the text title, you place a title that displays the name of the completion. The title changes as the selected entity (in this case, the selected completion) changes. 6. Use categories to display different levels of information: You can configure plots to display data at more than one level. In this section, you use categories in the plots to compare the performance of an individual completion with the performance of the reservoir from which it produces. 7. Export a plot template: After you have prepared a plot, you can save the features of the plot (but not the data) to an external file as a template. With the template, you can share the features with a colleague while keeping the data confidential. Your colleague can import the template (a .grf file) into their project, and their plot will have the same structure as the original, plotting the same variable names but applied to the set of wells in their project. 8. Import a plot template

Creating a Plot that Displays Data for a Single Completion The simplest form of a line plot is a time-dependent display of monthly oil and gas production for a selected completion. In this section of the tutorial, you create one. 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Navigation pane, select the Blue_1:He_0 completion.

20 of 262

User Guides, Tutorials, and Examples

3. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 4. Notice the X-Axis Variable is set to Date by default. 5. In the table, click the first cell in the Variables column and then select Monthlyprod.Oil. 6. Click Add Curve. OFM adds a new row. 7. Click the new cell in the Variables column and then select Monthlyprod.Gas. 8. Click OK. The plot (with default features) opens. 9. On the Workspace tab, click Save to save your work.

Extending a Plot to Multiple Y-Axes You can extend the visualization capabilities of the plot. 1. The curves that display on the primary vertical axis (Y-Axis 1) have been defined. To add another Yaxis,on the Format tab, in the Edit group, click Variables. The Edit Plot window opens. 2. On the right, in the Y Axis group, set the Number of Axes to 2. 3. Set the Current Axes to Y-AXIS 2. Note the Variables list area is empty, because it is for Y-axis 2. 4. In the first row, click the cell in the Variables column and then select Water.Cut. 5. Click OK. By default, the second Y-axis is on the right side of the graph. You can adjust the attributes of this axis (for example, linear scale, maximum and minimum values, and so on) by selecting the axis and then making changes on the Property pane, under Axis. 6. On the Workspace tab, click Save to save your work. Note: You can create up to six Y-axes for each graph (and up to six graphs) in a single OFM plot. By default, OFM places the even-numbered Y-axes on the right side of the graph, and the odd-numbered Y-axes on the left side.

Extending a Plot to Multiple Graphs You can create up to six graphs in any single OFM plot. In this section of the tutorial, you add graphs to a plot. You will prepare the following graphs: Oil versus Time, Oil versus Cum Oil, Water Cut versus Time, and Water Cut versus Cum Water. All the graphs do not have to use the same X-axis variable. 1. Create a new plot: On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 2. On the right, in the Graph group, set the Number of Graphs to 4.

21 of 262

User Guides, Tutorials, and Examples

3. Because you selected a number greater than or equal to 4, a message asks if you want to overlap the graphs. Select Yes or No. Depending on your choice, the four graphs display as shown below:

4. First, work with Graph 1: a. In the Graph group (on the right) set the Current Graph to GRAPH 1. b. In the X-Axis group (at the top), leave Date as the X-axis variable. c. Click the cell on the first row, in the Variables column, and then select Monthlyprod.Oil as the Y-axis variable. 5. Next, work with Graph 2: a. In the Graph group, change the Current Graph to GRAPH 2. b. In the X-Axis group, set the X-axis variable to Oil.Cum. c. Click the cell on the first row, in the Variables column, and then select Monthlyprod.Oil as the Y-axis variable. 6. Then, work with Graph 3: a. In the Graph group, change the Current Graph to GRAPH 3. b. In the X-Axis group, set the X-axis variable to Date. c. Click the cell on the first row, in the Variables column, and then select Water.Cut as the Yaxis variable. 7. And last, work with Graph 4: a. In the Graph group, change the Current Graph to GRAPH 4. b. In the X-Axis group, set the X-axis variable to Water.Cum.

22 of 262

User Guides, Tutorials, and Examples

c. Click the cell on the first row, in the Variables column, and then select Water.Cut as the Yaxis variable. 8. Click OK. Notice the layout of the plot. Usually, you will want to set the X-axis variables on the second and fourth plots to linear. 9. On the plot, click directly on the X-axis scale (the horizontal line). Handle marks display at both ends and in the middle, confirming that this is the object you want to adjust. 10. On the Property pane, under Axis, expand Scale. 11. Set Scale Type to Linear. 12. On the Workspace tab, click Save to save your work.

Creating a Plot Displaying Data for a Single Variable for Multiple Completions One way to compare the performance of several entities is to display their data on the same plot. In this section, you display data for a single variable for multiple completions. 1. Create a new plot: On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 2. On the X-Axis Variable field, select Date. 3. Click Add Multiple Curves. The Add Multiple Curves window opens. 4. On the Category field, you select the level in the project at which you want to display the data. Select Completion. 5. On the Variable field, you select the single variable whose data you want to display for all completions. Select Monthlyprod.Oil. Note: If your current filter contains more than 50 entities, you will receive a message asking if you want to add the curves to your plot. Click Yes. 6. On the Edit Plot window, click OK to display the plot. The plot displays monthly oil production for the entities. 7. On the Workspace tab, click Save to save your work.

Editing Plot Headers Headers are titles or labels that display on the plot. Headers display information about the entity you select. In this section, you place a simple text title at the top of the plot. Below the text title, you place a title that displays the name of the completion. The title changes as the selected entity (in this case, the selected completion) changes.

23 of 262

User Guides, Tutorials, and Examples

1. With your plot open, on the Format tab, in the Edit group, click Header. The Headers window opens. 2. Click Add. OFM inserts a blank row. 3. On the blank row, type "MY COMPANY"and then press Enter. When entering a text string, you must use quotation marks around the text. 4. Click Add. OFM inserts another blank row. 5. On the new blank row, type "Completion" + @Loadname () and then press Enter. You must include the space immediately after the word completion for proper spacing. 6. Click OK. The headers display on the plot. 7. (Optional) Drag the header to a new location on the plot. 8. On the Navigation pane, select other completions to see how the dynamic portion of the header changes. 9. On the Workspace tab, click Save to save your work.

Using Categories to Display Different Levels of Information You can configure plots to display data at more than one level. In this section, you use categories in the plots to compare the performance of an individual completion with the performance of the reservoir from which it produces. 1. Create a new plot: On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 2. On the X-Axis Variable field, select Date. 3. Click the cell on the first row, in the Variables column, and then select Monthlyprod.Oil. Observe the entries in the next two columns: Category is set to Current, and Name is set to correspond to the entity (in other words, completion) you currently have selected on the Navigation pane. 4. Click Add Curve. OFM adds a new row. 5. Click the cell on the new row, in the Variables column, and then select Monthlyprod.Oil again. 6. In the Category column for the second row, change the category to Reservoir. By default, the entry in the Name column is CURRENT. Usually, this is the name you will want, but it is possible to use this column to specify that this curve will be for one particular reservoir. 7. Click OK. 8. On the Navigation pane, select other completions in your project to see how the plot changes:

24 of 262

User Guides, Tutorials, and Examples

n

Curve 1 displays the monthly oil production for the selected completion.

n

Curve 2 displays the monthly oil production for the reservoir to which the selected completion belongs.

9. On the Workspace tab, click Save to save your work.

Exporting a Plot Template After you have prepared a plot, you can save the features of the plot (but not the data) to an external file as a template. With the template, you can share the features with a colleague while keeping the data confidential. Your colleague can import the template (a .grf file) into their project, and their plot will have the same structure as the original, plotting the same variable names but applied to the set of wells in their project. Note: The template will only be applicable to an OFM project which uses the same variable names as the original project from which it was created. 1. On the Format tab, in the Utilities group, select Save Analysis > Save As. 2. Select a location and name for the file, including the .grf extension. 3. Click Save. You now can send the file to your colleague.

Importing a Plot Template 1. Create a new plot: On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 2. Do not make any changes. Click OK. An empty plot opens. 3. On the Format tab, in the Utilities group, click Open Analysis. 4. In the OFM application directory, select ...\Sample Workspaces\Demo Database\Format Files\prod1.grf, and then click Open. 5. On the Navigation pane, select a new completion. The plot format will look similar to the following:

25 of 262

User Guides, Tutorials, and Examples

6. On the Workspace tab, click Save to save your work.

26 of 262

User Guides, Tutorials, and Examples

Tutorial: Auditing Plots You can further increase your analysis of plots with the trace, compute line, flag, tabular report, and autoprint features. In this tutorial, you will: 1. Use the Trace Plot utility: Use this utility to mark or digitize a point anywhere on the plot. The marked point remains visible while you scroll through other entities in the project. In this way, you can see the location of a particular data point (for example, the peak production for completion A) while viewing the same plot for other completions (for example, B, C, and so on). 2. Use the Compute a Line utility: With OFM, you can find the equation of a straight line fit through a region you define on your plot. Like the trace point feature, you can lock this line to compare the curve it represents with other entities. 3. Print (Auto Print) the plot: There are two ways to print. If you use the normal printing method, OFM prints the plot for the currently-selected entity. If you use Auto Print, you can print or save as graphic files in a batch process the plots for all completions in the current filter. 4. Flag a completion: While viewing plots for each completion in your project, you may want to study further one or more completions. You can mark (or, flag) completions and later you can return to the flagged completions as a separate collection. 5. Send a plot to a tabular report: You can transform the display of data from a graphical format (a plot) to a tabular format (a report).

Getting Started For this tutorial, you need a plot. If you have already created plots while doing the "Creating and Editing Plots" tutorial, you can use one of those. If you have not completed that tutorial, follow these steps to create a quick plot: 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 3. Notice that OFM sets the X-Axis Variable to Date by default. 4. In the table, click the first cell in the Variables column and then select Monthlyprod.Oil. 5. Click Add Curve. OFM adds a new row. 6. Click the new cell in the Variables column and then select Monthlyprod.Gas. 7. Click OK. The plot opens. 8. On the Workspace tab, click Save Workspace to save your work.

27 of 262

User Guides, Tutorials, and Examples

Using the Trace a Plot Utility Use this utility to mark or digitize a point anywhere on the plot. The marked point remains visible while you scroll through other entities in the project. In this way, you can see the location of a particular data point (for example, the peak production for completion A) while viewing the same plot for other completions (for example, B, C, and so on). 1. With the plot open, on the Navigation pane select the Blue_1:Li_1C completion. There is a spike in oil production in 1980 (circled in the following graphic). You want to watch this event while viewing other completions in the project.

2. On the Format tab, in the Utilities group, click Trace Plot. 3. Click one time at the point where there is a spike in production. 4. On the Format tab, in the Display group, click Lock Trace. You should now see a small mark at the selected point. 5. Select another completion with a production history coincident with the previous completion (for example, Blue_5:Li_1C is a good choice). Note how the location of the spike in production for completion Blue_1:Li_1C is marked on the plot for Blue_5:Li_1C. Note: To change the color, shape, and size of the mark symbol, on the Format tab, in the Utilities group, click Trace/line Attributes. To remove the mark and disable the utility, in the Display group, clear the Lock Trace check box. 6. On the Workspace tab, click Save to save your work.

28 of 262

User Guides, Tutorials, and Examples

Using the Compute Line Utility With OFM, you can find the equation of a straight line fit through a region you define on your plot. Like the trace point feature, you can lock this line to compare the curve it represents with other entities. 1. On the Navigation pane, select the Blue_5:Li_1C completion. 2. Set the Y-axis to logarithmic: a. On the plot, click the Y-axis scale. Handle marks display at both ends and in the middle, confirming that this is the object you want to adjust. b. On the Property pane, under Axis, expand Scale. c. Set Scale Type to Logarithmic. There is a strong decline period in oil production from 1973 to 1978. (See marked region in graphic). You want to watch this decline while viewing other completions in the project.

29 of 262

User Guides, Tutorials, and Examples

3. On the Format tab, in the Utilities group, click Compute Line. 4. On the plot, drag a representative straight line through the decline period. Note the information at the bottom of the OFM window. If the plot is a semi log, the relevant equation of the line will be similar to the following:

5. On the Format tab, in the Utilities group, click Lock Line. OFM freezes the line. 6. On the Navigation pane, select another completion with a production history coincident with the previous completion (for example, Blue_1:Li_1C is a good choice). OFM highlights the locked line (which represents the declining oil production for completion Blue_ 5:Li_1C) on the plot for Blue_1:Li_1C. Note: To change the color, shape, and size of the line, on the Format tab, in the Utilities group, click Trace/line Attributes. To remove the mark and disable the utility, clear the Lock Line check box. 7. On the Workspace tab, click Save to save your work.

Printing (Auto Print) Plot Views There are two ways to print. If you use the normal printing method, OFM prints the plot for the currentlyselected entity. If you use Auto Print, you can print or save as graphic files in a batch process the plots for all completions in the current filter. 1. On the Workspace tab, click Auto Print. 2. To print the plot for each of the completions in the current filter, select Printer and then click Print. 3. To save each of the plots as an image file (such as .bmp, .jpg, and .tiff), select Print to multiple files, select a naming scheme for the output files, and then click Print.

Flagging a Completion While viewing plots for each completion in your project, you may want to study further one or more completions. You can mark (or, flag) completions and later you can return to the flagged completions as a separate collection. 1. When you see a plot that requires further investigation, on the Home tab, select Flag well. 2. When you finish reviewing the plots and you want to study the flagged completions, on the Filter pane, click Filter by Completion ( ). The Filter by Completion window opens. 3. Click Select Flagged. 4. Click OK.

30 of 262

User Guides, Tutorials, and Examples

The Filter pane now shows that your Current Filter contains only the flagged completions. 5. On the Workspace tab, click Save to save your work.

Sending a Plot to a Tabular Report You can transform the display of data from a graphical format (a plot) to a tabular format (a report). 1. On the Format tab, in the Utilities group, click Send to Report. The report opens, displaying the data that displayed on Graph 1 of the plot. 2. You can edit the attributes of the report on the Property pane. 3. On the Workspace tab, click Save to save your work.

31 of 262

User Guides, Tutorials, and Examples

Tutorial: Bubble Map You can create bubble maps to visualize one or more variables in a map view. The bubble map displays data for the completions in the current filter, and you can reuse it for different sets of completions within the OFM project. In this tutorial, you will: 1. Create a bubble map 2. Change the bubble color and shape: You can set the shape and color of the bubbles. In this section of the tutorial, you change the shape and default color of the bubble. 3. Change color scale properties: You can set the color spectrum, the number of colors displayed, and the size of the color scale legend on the display area. In this section of the tutorial, you change the color scale properties. 4. Move the map legend 5. Add a header to the bubble map: In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and analytical maps. You can customize the display format of each line. 6. Change the grid and frame properties 7. Use the animation tool 8. Move the bubbles from default positions: You can move the bubbles from their default locations. This is a good idea if they are laying on top of one another. 9. Create a bubble map snapshot: You can create a table in the OFM project database of the data represented in your bubble map. This is most applicable if you are mapping from a .csv file. When you are mapping data already in the database, there is no need to store it back into the database via a map snapshot. See "Saving and Loading Map Results as a .Csv File" and "Creating a Map Snapshot" for more information. 10. Save the bubble map file

Creating a Bubble Map 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Home tab, in the Launch analysis group, click Bubble. The Create Bubble Map window opens. 3. Select the project variable you want to map (for example, Gas.Cum), and then click 4. Click Next.

32 of 262

.

User Guides, Tutorials, and Examples

5. Select the category by which you want to group data. In this example, use the default selection (Completion). 6. (Optional) Enter a Where clause to filter the data. 7. Click Next. 8. Select the start and end data for which you want to track results. If left as the default, OFM creates the bubble map from the first to the last date in the project database. 9. Select the method you want to use to sample data in the Data Sampling Frequency field. If left at as the default, OFM uses the data frequency (that is, monthly data will produce a bubble map every month, and daily data will produce a bubble map every day). 10. Click Finish. The bubble map opens. 11. On the Workspace tab, click Save to save your work.

Changing the Bubble Color and Shape You can set the shape and color of the bubbles. In this section of the tutorial, you change the shape and default color of the bubble. 1. You set the color and shape on the Property pane. Under Data, view the Attributes section. 2. Expand Plot Attributes and then expand Method and Shape. 3. Leave Display set to the default of Circle. 4. Set Color to DarkGreen. If you set the Vary Color field to Yes (the default), Color Scale dictates the color of the bubbles rather than this color setting. You will work with the Color Scale property in the next section. 5. On the Workspace tab, click Save to save your work.

Changing Color Scale Properties You can set the color spectrum, the number of colors displayed, and the size of the color scale legend on the display area. In this section of the tutorial, you change the color scale properties. 1. On the Property pane, under Properties, expand Color Scale. 2. Set Style to Vertical. On the bubble map, the legend changes appearance. If you map more than one variable, you must use the Horizontal Style. 3. Set Spectrum to Rainbow. 4. Set Color to 6. OFM reduces the color scale to six colors. 5. On the Workspace tab, click Save to save your work.

33 of 262

User Guides, Tutorials, and Examples

Moving the Map Legend On the bubble map, drag the legend to the upper-left corner of the map.

Adding a Header to the Bubble Map In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and analytical maps. You can customize the display format of each line. 1. On the Format tab, in the Edit group, click Header. The Headers window opens. 2. Click Add. OFM inserts a blank row. 3. On the blank row, type "Cumulative Gas" and then press Enter. When entering a text string, you must use quotation marks around the text. 4. Click Font. The Font window opens. 5. For Font Style, select Bold and then click OK to return to the Headers window. 6. You can use input or calculated variables in your headers. Click Add again to insert another new row. 7. Click Assist. The Edit Header window opens. 8. On the list of project variables, double-click Category.Fieldname to move it into the Header text box. Note: Most calculated variables are for calculations of one entity at a time. For this bubble map, there aren’t any calculated variables in the project that are suitable as a header. A calculated variable that applies to the project as a whole would be suitable, such as one displaying the most recent date in the database or the project file path. 11. Click OK to close the Edit Header window, and click OK again to close the Headers window. The bubble map displays the new header. 12. On the Workspace tab, click Save to save your work.

Changing the Grid and Frame Properties 1. On the Property pane, under Grids and Limits, set Grid Type to Frame. 2. Set Numbers to No. The bubble map displays without grid lines or numbers. 3. On the Workspace tab, click Save to save your work.

34 of 262

User Guides, Tutorials, and Examples

Using the Animation Tool 1. On the Format tab, in the Animation Utilities group, click Animate Settings. The Animate Settings window opens. 2. On the Step field, select 12. 3. Select Forward. 4. (Optional) Select Save Animation to an .AVI file if you want to save a copy of the animation as a video. If you save the animation file, you must select a name and file location for the video. Before the animation starts, you select a video compressor format. The codecs available vary from person to person, and depend on the software installed on your computer. If you want to share the .avi file with another person, select a codec that person has installed (to avoid compatibility issues). 5. Click OK. The animation starts. 6. To pause or restart the animation, click the control buttons on the Format tab, in the Animation Utilities group.

Moving the Bubbles from Default Positions You can move the bubbles from their default locations. This is a good idea if they are laying on top of one another. 1. On the Format tab, in the Display group, select Enable Shape Moves. 2. On the bubble map, drag a bubble to a new location. 3. On the Format tab, in the Utilities group, select Save Analysis > Save Shapes Positions. The Save Object Locations File window opens. 4. Enter a name for the file, select a location, and then click Save. The next time you open the bubble map, you can restore the saved bubble positions: On the Format tab, in the Utilities group, select Open Analysis > Shape Positions File. 5. To move the bubbles back to their default positions, on the Format tab, in the Edit group, click Default Position.

Creating a Bubble Map Snapshot You can create a table in the OFM project database of the data represented in your bubble map. This is most applicable if you are mapping from a .csv file. When you are mapping data already in the database, there is no need to store it back into the database via a map snapshot. See "Saving and Loading Map Results as a .Csv File" and "Creating a Map Snapshot" for more information. 1. On the Format tab, in the Utilities group, select Save Analysis > Create Map Snapshot. The Create Map Snapshot window opens.

35 of 262

User Guides, Tutorials, and Examples

2. Type Snapshot as the title of the table in which you want to store the snapshot results. 3. Click OK. The data is written to the table in the OFM project database.

Saving the Bubble Map File 1. On the Format tab, in the Utilities group, select Save Analysis > Save As. The Save Bubble Map File window opens. 2. Enter BubbleMap in the File Name field. 3. Navigate to the location in which you want to store the file. 4. Click Save. The bubble map is saved as a bubble map (.bub) file.

36 of 262

User Guides, Tutorials, and Examples

Tutorial: Grid Map You can create grid maps to visualize one data variable in a map view. The grid map displays data for the completions in the current filter, and you can reuse it for different sets of completions within the OFM project. In this tutorial, you will: 1. Create a grid map 2. Change color scale properties: You can set the color spectrum, the number of colors displayed, and the size of the color scale legend on the display area. In this section of the tutorial, you change the color scale properties. 3. Move the legend 4. Add a header to the grid map: In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and analytical maps. 5. Change the grid properties 6. Create a grid area 7. Use the animation tool 8. Add control points: Depending on the variable you are gridding, there may be areas of the map with known values that do not match to a well location. For example, for a net pay grid map, you may know from the reservoir geology that the net pay is zero around the edges, or perhaps that there is a fault through the reservoir. With control points, you can set arbitrary values anywhere on the map (not confined to the location of specific completions). 9. Create a grid map snapshot: You can create a table in the OFM project database of the data represented in your bubble map. This is most applicable if you are mapping from a .csv file. When you are mapping data already in the database, there is no need to store it back into the database via a map snapshot. See "Saving and Loading Map Results as a .Csv File" and "Creating a Map Snapshot" for more information.

Creating a Grid Map 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Home tab, in the Launch analysis group, click Grid Map. The Create Grid Map window opens. 3. Select the project variables you want to map (for example, Gas.Cum), and then click 4. Click Next.

37 of 262

.

User Guides, Tutorials, and Examples

5. Select the method you want to use to group data. In this example, use the default selection (Completion). 6. (Optional) Enter a Where clause to filter the data. 7. Click Next. 8. Select the start and end data for which you want to track results. If left as the default, OFM produces the grid map from the first to the last date in the project database. 9. Select the method you want to use to sample data in the Data Sampling Frequency field. If left at as the default, OFM uses the frequency of the data (that is, monthly data will produce a map every month and daily data will produce a map every day). 10. Click Finish. The grid map opens. 11. On the Workspace tab, click Save to save your work.

Changing Color Scale Properties You can set the color spectrum, the number of colors displayed, and the size of the color scale legend on the display area. In this section of the tutorial, you change the color scale properties. 1. On the Property pane, under Properties, expand Color Scale. 2. Set Spectrum to Red. 3. Set Style to Value Range. On the grid map, the legend changes appearance and shows the value range for each shade of red. 4. Set Colors to 10. The color scale limited to 10 colors. 5. On the Workspace tab, click Save to save your work.

Moving the Legend On the grid map, drag the legend to the upper-left corner of the map.

Adding a Header to the Grid Map In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and analytical maps. 1. On the Format tab, in the Edit group, click Header. The Headers window opens. 2. Click Add. OFM inserts a blank row.

38 of 262

User Guides, Tutorials, and Examples

3. On the blank row, type "Cumulative Gas" and then press Enter. When entering a text string, you must use quotation marks around the text. 4. Click Font. The Font window opens. 5. For Font Style, select Bold and then click OK to return to the Headers window. 6. You can also add input variables or calculated variables as headers. Therefore, click Add again. 7. You can use input or calculated variables in your headers. Click Add again to insert another new row. 8. Select Assist. The Edit Header window opens. 9. On the list of project variables, double-click Category.Fieldname to move it into the Header text box. Note: Most calculated variables are for calculations of one entity at a time. For this grid map, there aren’t any calculated variables in the project that are suitable as a header. A calculated variable that applies to the project as a whole would be suitable, such as one displaying the most recent date in the database or the project file path. 11. Click OK to close the Edit Header window, and click OK again to close the Headers window. The grid map displays the new header. 12. On the Workspace tab, click Save to save your work.

Changing the Grid Properties 1. On the Property pane, under Grids and Limits, set Grid Type to Frame. 2. Set Numbers to No. The grid map displays without grid lines or numbers. 3. Under Variable Properties, in the Limit Values section, set Maximum to 1500. The color distribution on the map changes because any area greater than 1500 is now assigned the same color as 1500.

Creating a Grid Area 1. On the Format tab, in the Grid Area Utilities group, click Add. 2. Select points on the grid map to create a polygon shape around a group of wells (as shown below).OFM automatically connects the last selected point of the polygon to the first point. This redefines the grid limit area. It is the boundary beyond which gridding will not be extended.

39 of 262

User Guides, Tutorials, and Examples

3. When you finish, right-click and then select Done. OFM defines the new grid area from the group of wells selected in the polygon. 4. On the Workspace tab, click Save to save your work.

Using the Animation Tool 1. On the Format tab, in the Animation Utilities group, click Animate Settings. The Animate Settings window opens. 2. On the Step field, select 12. 3. (Optional) Select Save Animation to an .AVI file if you want to save a copy of the animation as a video. If you save the animation file, you must select a name and file location for the video. Before the animation starts, you will be asked to select a video compressor format. The codecs available vary from person to person, and depend on the software installed on your computer. If you want to share the .avi file with another person, select a codec that person has installed (to avoid compatibility issues). 4. Click OK. The animation starts.

40 of 262

User Guides, Tutorials, and Examples

5. To pause or restart the animation, click the control buttons on the Format tab, in the Animation Utilities group.

Adding Control Points Depending on the variable you are gridding, there may be areas of the map with known values that do not match to a well location. For example, for a net pay grid map, you may know from the reservoir geology that the net pay is zero around the edges, or perhaps that there is a fault through the reservoir. With control points, you can set arbitrary values anywhere on the map (not confined to the location of specific completions). 1. On the Format tab, in the Control Point Utilities group, click Add. The Control Point Value window opens. 2. In the Value field, enter 5 and then click OK. 3. Inside the grid area of your map, south of wells O-33 and G-15, click three points. 4. When you finish, right-click and then select Done. The color distribution changes as that area was previously showing with darker red color (indicating higher values). 5. To use or disable the control points, on the Format tab, in the Control Point Utilities group, select or clear Use.

Creating a Grid Map Snapshot You can create a table in the OFM project database of the data represented in your bubble map. This is most applicable if you are mapping from a .csv file. When you are mapping data already in the database, there is no need to store it back into the database via a map snapshot. See "Saving and Loading Map Results as a .Csv File" and "Creating a Map Snapshot" for more information. 1. On the Format tab, in the Utilities group, select Save Analysis > Create Map Snapshot. The Create Map Snapshot window opens. 2. Enter a table name and then click OK. The data is written to the table in the OFM project database.

41 of 262

User Guides, Tutorials, and Examples

Tutorial: Contour Map You can create contour maps to visualize one data variable in a map view. The contour map displays data for the completions in the current filter, and you can reuse it for different sets of completions within the OFM project. In this tutorial, you will: 1. Create a contour map 2. Change the color scale properties: You can set the color spectrum, the number of colors displayed, and the size of the color scale legend on the display area. In this section of the tutorial, you change the color scale properties. 3. Move the legend 4. Edit map parameters: With the map properties, you can set the grid size, data ranges, and scale types for the variables. 5. Create a grid area: You can create a boundary around a group of wells to redefine the grid limit area. 6. Advance the contour map through time 7. Animate the map: With animation, you can quickly progress through the life of a field. 8. Add control points to the contour map: Depending on which variable you are contouring, there may be areas of the map with known values that do not match with a well location. For example, for a net pay contour map, you may know from the reservoir geology that the net pay is zero around the edges, or perhaps that there is a fault through the reservoir. Use control points to set arbitrary values anywhere on the map (not confined to the location of specific completions). 9. Add a header to the contour map: In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and analytical maps.

Creating a Contour Map 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Home tab, in the Launch analysis group, click Contour Map. The Create Contour Map window opens. 3. Select the project variables you want to map (for example, Water.CumCut), and then click 4. Click Next. 5. Select the method you want to use to group data. In this example, use the default method (Completion). 6. (Optional) Enter a Where clause to filter the data. 7. Click Next.

42 of 262

.

User Guides, Tutorials, and Examples

8. Select the start and end data for the contour map. If left as default, OFM will produce the map from the first to the last date in the project database. 9. Select how often you want OFM to sample data from the Data Sampling Frequency. If left at the default, OFM uses the data frequency (that is, monthly data produces a contour map every month and daily data produces a contour map every day). 10. Select Finish. The contour map opens. 11. On the Workspace tab, click Save to save your work.

Changing the Color Scale Properties You can set the color spectrum, the number of colors displayed, and the size of the color scale legend on the display area. In this section of the tutorial, you change the color scale properties. 1. On the Property pane, under Properties, expand the Color Scale section. 2. Set Colors to 24. 3. On the Workspace tab, click Save to save your work.

Moving the Color Scale Legend On the contour map, drag the legend to the upper-left corner of the map.

Editing Map Parameters With the map properties, you can set the grid size, data ranges, and scale types for the variables. 1. On the Property pane, under Properties, expand the GRID section. 2. Set the Maximum Grid Size to 250. This smooths the contour lines because the map is divided into more, and smaller, grid cells. 3. Expand the 2D section. 4. Set Show to Yes. The numeric values of the contour lines display. 5. Set Decimal Places to 0. 6. Set Distance Between Labels to 4. The contour line's numeric labels display with no decimal places, and are further apart. 7. On the Workspace tab, click Save to save your work.

Creating a Grid Area You can create a boundary around a group of wells to redefine the grid limit area.

43 of 262

User Guides, Tutorials, and Examples

1. On the Format tab, in the Grid Area Utilities group, click Add. 2. Select points on the map to create a polygon shape around a group of wells (as shown below). OFM automatically connects the last selected point of the polygon to the first point. This redefines the grid limit area.

3. When you finish, right-click and then select Done. OFM defines the new grid area from the group of wells selected in the polygon. 4. On the Workspace tab, click Save to save your work.

Advancing the Contour Map Through Time 1. On the Format pane, in the Animation Utilities group, click Previous Date to go back by one unit (month, date, or year). In this case, the data is monthly. 2. Click Backward to reverse the contour map through time. 3. Click Stop to stop. 4. Click Next Date to advance the contour map by one unit.

Animating the Map With animation, you can quickly progress through the life of a field.

44 of 262

User Guides, Tutorials, and Examples

1. On the Format tab, in the Animation Utilities group, click Animate Settings. The Animate Settings window opens. 2. On the Step field, select 12. 3. Select Forward. 4. (Optional) Select Save Animation to an .AVI file if you want to save a copy of the animation as a video. If you save the animation file, you must select a name and file location for the video. Before the animation starts, you will be asked to select a video compressor format. The codecs available vary from person to person, and depend on the software installed on your computer. If you want to share the .avi file with another person, select a codec that person has installed (to avoid compatibility issues). 5. Click OK. The animation starts. 6. To pause or restart the animation, click the control buttons on the Format tab, in the Animation Utilities group.

Adding Control Points Depending on which variable you are contouring, there may be areas of the map with known values that do not match with a well location. For example, for a net pay contour map, you may know from the reservoir geology that the net pay is zero around the edges, or perhaps that there is a fault through the reservoir. Use control points to set arbitrary values anywhere on the map (not confined to the location of specific completions). 1. On the Format tab, in the Control Point Utilities group, click Add. The Control Point Value window opens. 2. In the Value field, enter 100 and then click OK. 3. In the northeast corner of the map, within the grid area, click a point. 4. When you finish, right-click and then select Done. The contouring changes. The area previously showed darker red colors (indicating higher values). 5. On the Workspace tab, click Save to save your work.

Adding a Header to the Contour Map In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and analytical maps. 1. On the Format tab, in the Edit group, click Header. The Headers window opens. 2. Click Add. OFM inserts t blank row.

45 of 262

User Guides, Tutorials, and Examples

3. On the blank row, type "Cum Water Cut" and then press Enter. When entering a text string, you must use quotation marks around the text. 4. Click Font. The Font window opens. 5. For Font Style, select Bold and then click OK to return to the Headers window. 6. Click OK to close the Headers window. The contour map displays the new header. 7. On the Workspace tab, click Save to save your work.

46 of 262

User Guides, Tutorials, and Examples

Tutorial: Scatter Plot You can create scatter plots to see relationships and correlations between data variables. The scatter plot displays data for the completions in the current filter, and you can reuse it for different sets of completions within the OFM project. In this tutorial, you will: 1. Create a scatter plot 2. Set up the scatter plot graphs 3. Create a scatter plot set 4. Select completions in the scatter set by value range 5. Save and edit the scatter plot set 6. Pick by bounding polygon 7. Add a header to the scatter plot 8. Animate the map

Creating a Scatter Plot 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Home tab, in the Launch analysis group, click Scatter. The Create Scatter Plot window opens. 3. Select the variables Oil.Cum and Water.Cum and then click

.

4. Click Next. 5. Select Completion as the method you want to use to group data. 6. Click Next. 7. Leave the start and end dates at Default for the scatter plot. If left as default, OFM will produce the map from the first to the last date in the project database. 8. Leave the Data Sampling Frequency as All Rows. If left at default, OFM uses the frequency of the data (that is, monthly data produces a scatter plot every month and daily data produces a scatter plot every day). 9. Select Finish. The scatter plot will display. 10. On the Workspace tab, click Save to save your work.

47 of 262

User Guides, Tutorials, and Examples

Setting Up the Scatter Plot Graphs 1. On the Property pane, under Scatter Plot Properties, set the Number of Graphs to 2. 2. Set the Current Graph to 1. 3. In the Current Graph Properties section, set the X-Variable to Oil.Cum. 4. Set the Y-Variable to Water.Cum. 5. Change the Current Graph to 2. 6. In the Current Graph Properties section, change the X-Variable to X-Coordinate. Even though you did not choose the X- and Y-coordinates when creating the scatter plot, OFM provides them automatically. 7. Change the Y-Variable to Y-Coordinate. Two scatter plots display. The plot on the right represents a map of the field. Each data point on the scatter plot represents a completion. The plot on the left shows what the values of cumulative water and cumulative oil of each completion were at the date indicated. 8. On the Workspace tab, click Save to save your work.

Creating a Scatter Plot Set 1. On the Format tab, in the Edit group, click Scatter Sets. The Edit Scatter Plot Set window opens. 2. Click Add. 3. For the Name, enter High Oil. 4. Set the Color to Green. 5. Set the Type to Filled Circle. 6. Select Trackable. 7. Set the Size to 7. 8. Click OK. 9. On the Workspace tab, click Save to save your work.

Selecting Completions in the Scatter Set by Value Range 1. Click on the first graph (the one on the left) to make it the Current Graph. 2. On the Format tab, in the Utilities group, click Pick By Value. The Set By Value window opens. 3. Because you are identifying high oil points, in the Cumulative Oil Production section (which is your X-coordinate), select >= and enter the value 800. 4. Select And.

48 of 262

User Guides, Tutorials, and Examples

5. In the Cumulative Water Production section (which is your Y-coordinate), select Lower. To set an upper limit, select Limit > Upper. 2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which you will not accept any data points in the analysis. OFM will only use the points directly above this lower-limit line. For an upper limit, you must define your line to pass below the points you want to exclude, and above the points you want to keep.

77 of 262

User Guides, Tutorials, and Examples

3. When you finish, right-click and select Done. OFM recalculates the best least-squares regression fit through the acceptable data points. 4. On the Workspace tab, click Save to save your work.

Setting the Limit as a Range Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of data points. 1. On the Format tab, in the Edit group, select Limit > Range. The Data Range window opens. 2. Select Set X axis. 3. In the X Minimum field, enter 19970901. 4. In the X Maximum field, enter 19990601. 5. Click OK. OFM fits the line through only the data points in the date range. 6. On the Workspace tab, click Save to save your work.

Selecting a Variable For this method, you must select a project variable that returns True (1) or False (0). This usually is a calculated variable. OFM will use the variable either to keep a data point for the fit analysis (result of variable = True) or to remove it from the analysis (result = False). 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens.

78 of 262

User Guides, Tutorials, and Examples

2. Click Add Calculated Variable. The Edit Calculated Variable window opens. 3. Enter the following definition: @if(water.cut>0.98,1,0) 4. Click OK. OFM lists the new calculated variable on the Variable Editor as NewItem. 5. Click in the cell for NewItem and rename the variable WC_Cutoff. 6. Click OK. 7. To see the effect of the next option, you must recover all the data points for analysis. On the Format tab, in the Edit group, select Limit > Reset. 8. On the Format tab, in the Edit group, select Limit > Variable. The Data Selection Variable window opens. 9. Select Use Variable and then select WC_Cutoff from the list. 10. Click OK. OFM removes data points before February 1998. In this completion, the variable represents the time before the water cut reached 98%. OFM also removes the data point for May 1998 (when the water cut was temporarily less than 98%). 11. On the Workspace tab, click Save to save your work.

Digitizing Points This choice may be valuable if the real data is sparse, noisy, or not trustworthy. 1.  On the Format tab, in the Edit group, click Digitize Points. 2. Press Ctrl and click to add your own data points on the graph. The data points display as magenta triangles. 3. When you finish, right-click the forecast graph and then select Done. OFM will discard all the historical data points and fit a line through the data points you added. 4. On the Workspace tab, click Save to save your work.

Toggling Between Working Points You can remove points that may be skewing the forecast results because they fall outside the norm. 1. Assuming you are following each of the procedures in this tutorial in sequence, you must reset the data to explore the next option. On the Format tab, in the Edit group, select Limit > Reset. 2. On the Format tab, in the Display group, select Toggle Working Points. OFM displays the cursor as a small eraser. 3. On the graph, press the left mouse button and use the mouse to erase data points.

79 of 262

User Guides, Tutorials, and Examples

4. When you finish erasing data points, select on the Format tab, in the Display group, clear the Toggle Working Points check box. OFM adjusts the fit to reflect the change. 5. On the Workspace tab, click Save to save your work.

Controlling Fit Parameters You also can control how OFM performs the fit process. 1. First, remove data points before 1997. Set the lower limits option to do this. The default fit to this data set returns a value in the Results legend for the Arps exponent (b), close to 1, suggesting that the (default) best fit is close to a harmonic fit. 2. Switch to a Rate v. Cum view: On the Property pane, under OFM Forecast, set Analysis to Rate – Cum.  The fit changes to the reduced data set. 3. Return to the Rate v. Time view: On the Property pane, set Analysis to Rate – Time. 4. On the Property pane, in the History Match section, set the Fit Type to Exponential. On the Results legend, the resultant b value is now zero. The fit, on a semi-log plot, is a straight line. 5. You can override the least squares regression calculation by placing the fit line where you believe it portrays a better representation (that is, by using your engineering judgment instead of statistics). To override the calculation, drag the fit (dark green) line upwards. Drag the blue point on either end of the fit line to a new location. The Results legend values change. On the Property pane, under History Match, the Method changed to Manual. 6. Because the Method is Manual, OFM may no longer reflect changes (like removing more data points) until you change this setting to Auto: On the Property pane, under History Match, change the Method to Auto. 7. On the Property pane, under History Match, change the Fit Type to Hyperbolic. OFM tries to fit the line to the data using a variable b value. 8. Force a specific value: On the Property pane, under History Match, change the b Value Method to User. In the User field, enter 0.6. The graph now shows the best fit to the data subject to this new constraint. 9. On the Workspace tab, click Save to save your work.

Setting Up the Forecast There are many parameters that you can set, to control the forecast for a single phase analysis. This shows you one possible workflow.

80 of 262

User Guides, Tutorials, and Examples

1. On the Format tab, in the Edit group, click Scenario. The Current Scenario window opens. 2. On the Forecast tab, select the following: n

In the Oil: Schedule #1 section, select a Start Time of Last Historical Date and a Start Rate of From Fit.

n

In the Scheduled Limits section, select an End Time of Months from Start, 120 Months and an End Rate of 2 bbl/d.

4. Leave all other choices at the default settings. 5. Click OK. On the Results legend, the Forecast Ended By explains which of your limits (Rate or Time) is stopping the forecast. 6. Make a note of the value (in Mbbl) for Reserves, because we will use this value next. 7. On the Format tab, in the Edit group, click Scenario. 8. On the Forecast tab, in the Sch. Reserves field, enter a number that is smaller than the Reserves value that displayed on the Results legend. 9. Click OK. On the Results legend, the Forecast Ended By now explains that your reserves limit is stopping the forecast.  10. On the Workspace tab, click Save to save your work.

Saving the Forecast To commit the results of the working forecast to the database, on the Format tab, in the Utilities group, click Save Analysis. A warning message may appear, about group forecasts. It is not an error, so click OK. n

The working forecast on the graph (dark red dots) will be superimposed by a coincident series of light blue symbols representing the saved values.

n

The Forecast pane should now show a saved Oil forecast, under Case1, for completion Blue_ 1:He_0.

81 of 262

User Guides, Tutorials, and Examples

Tutorial: Ratio Analysis In this tutorial, you will: 1. Set up a forecast for ratio analysis (GOR, WOR, water cut, oil cut): The demo project is configured for ratio analyses. The four ratios are configured the same way, so the tutorial uses Water Cut as an example. After setting up a forecast, you are ready to perform history matching. Forecasts assume that whatever governed a completion's performance in the past will continue to govern it in the future. To build a meaningful forecast, it is important to get a representative fit through historical data. To do that, you must constrain the match (or, fit) to occur only through selected data points. There are several ways to do that, and you can use the different ways in any combination. 2. Set lower and upper limits 3. Set the limit as range: Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of data points. 4. Select the variable: This choice requires you to select a project variable that returns True (1) or False (0). This will most likely be a calculated variable. OFM will use this variable either to keep a data point for the fit analysis (result of variable = True) or to remove it from the analysis (result = False). 5. Digitize points: This choice may be valuable if the real data is sparse, noisy, or not trustworthy. 6. Toggle between working points 7. Control fit parameters 8. Set up the forecast: All forecast settings for Ratio forecasts are done on the Property pane. 9. Save the forecast

Setting Up a Forecast for Ratio Analysis (GOR, WOR, Water Cut, Oil Cut) The demo project is configured for ratio analyses. The four ratios are configured the same way, so the tutorial uses Water Cut as an example. 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Navigation pane, select the Blue_1:He_0 completion. 3. On the Home tab, in the Launch analysis group, click Forecast. The forecast graph for the Blue_1:He_0 completion displays. 4. On the Format tab, in the Edit group, click Scenario. The Current Scenario window opens.

82 of 262

User Guides, Tutorials, and Examples

5. On the Flow Model tab, in the Variable Association section, change the Phase/Analysis to Water Cut. 6. Make sure the Cum. Oil is Oil.Cum. 7. Make sure the Water Cut, % is Water Cut. All ratio analyses use the Empirical (least squares regression) method as the solution type, so the remaining fields are unavailable. 8. Click OK. OFM applies the changes you made to the completion you selected (Blue_1:He_0). If you select another completion, OFM applies the default settings. You can change the default settings on the Scenario Manager. (To open the Scenario Manager, on the Format tab, in the Edit group, click Scenario Manager.) 9. On the Workspace tab, click Save to save your work.

Setting Lower and Upper Limits 1. To set a lower limit, on the Format tab, in the Edit group, select Limit > Lower. To set an upper limit, select Limit > Upper. 2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which you will not accept any data point in the analysis. For an upper limit, define your line to pass below the points you want to exclude, and above the points you want to keep.

83 of 262

User Guides, Tutorials, and Examples

3. When you finish, right-click and select Done. OFM recalculates the best least-squares regression fit through the acceptable data points. 4. On the Workspace tab, click Save to save your work.

Setting the Limit as a Range Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of data points. 1. On the Format tab, in the Edit group, select Limit > Range. The Data Range window opens. 2. Select Set X axis. 3. In the X Minimum field, enter 73. 4. In the X Maximum field, enter 85. 5. Click OK. OFM fits the line though only the data points in which the cumulative oil exceeds 73 Mbbl. 6. On the Workspace tab, click Save to save your work.

Selecting a Variable This choice requires you to select a project variable that returns True (1) or False (0). This will most likely be a calculated variable. OFM will use this variable either to keep a data point for the fit analysis (result of variable = True) or to remove it from the analysis (result = False). 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens. 2. Click Add Calculated Variable. The Edit Calculated Variable window opens. 3. Enter the following definition: @if(Ratio.WOR>70,1,0) 4. Click OK. OFM lists the new calculated variable on the Variable Editor as NewItem. 5. Click in the cell for NewItem and rename the variable WOR_Cutoff. 6. Click OK. 7. On the Format tab, in the Edit group, select Limit > Reset. This recovers all data points. 8. On the Format tab, in the Edit group, select Limit > Variable. The Data Selection Variable window opens. 9. Select Use Variable and then select WOR_Cutoff from the list. 10. Click OK.

84 of 262

User Guides, Tutorials, and Examples

OFM removes data points with a water-oil ratio that is less than 70 bbl/bbl. 11. On the Workspace tab, click Save to save your work.

Digitizing Points This choice may be valuable if the real data is sparse, noisy, or not trustworthy. 1. Select Edit > Digitize Points. 2. Press Ctrl and click to mark your own, independent data points on the graph. The data points display as magenta triangles. Use them to define a profile that you prefer to accept. 3. When you finish, right-click the forecast graph and then select Done. OFM discards the historical data points and fits a line through your data points. 4. On the Workspace tab, click Save to save your work.

Toggling Between Working Points 1. Assuming you are following each of the procedures in this tutorial in sequence, you must reset the data to explore the next option. On the Format tab, in the Edit group, select Limit > Reset. 2. On the Format tab, in the Display group, select Toggle Working Points. OFM displays the cursor as a small eraser. 3. On the graph, press the left mouse button and use the mouse to erase data points. 4. When you finish erasing data points, select on the Format tab, in the Display group, clear the Toggle Working Points check box. OFM adjusts the fit to reflect the change. 5. On the Workspace tab, click Save to save your work.

Controlling Fit Parameters You also can control how OFM performs the fit process. 1. On the Property pane, in the History Match section, set Fit Type to Semilog. This causes a new fit, and new results. The option is provided here to explore whether a semilog plot may suggest a better straight line for fitting purposes. 2. You can override the least squares regression calculation by placing the fit line where you believe it portrays a better representation (that is, by using your engineering judgment instead of statistics). To override the calculation, drag the fit (dark green) line upwards. Drag the blue dots that anchor the right end of the fit line to a new location. On the Results legend, the values change. On the Property pane, under History Match, the Method changed to Manual.

85 of 262

User Guides, Tutorials, and Examples

3. Because the Method is Manual, OFM may no longer reflect changes (like removing more data points) until you change this setting to Auto: On the Property pane, under History Match, change the Method to Auto. 4. On the Workspace tab, click Save to save your work.

Setting Up the Forecast You choose all forecast settings for ratio forecasts on the Property pane. 1. In the OFM Forecast section, set Start WCUT Option to From Fit. 2. Set End WCUT Option to Value and then set the End WCUT to 99.9. 3. On the Workspace tab, click Save to save your work.

Saving the Forecast To commit the results of the working forecast to the database, on the Format tab, in the Utilities group, click Save Analysis. A warning message about group forecasts may appear. It is not an error, so click OK. n

The working forecast on the graph (dark red dots) will be superimposed by a coincident series of light blue symbols representing the saved values.

n

The Forecast pane should now show a saved WCUT forecast under Case1 for completion Blue_ 1:He_0.

86 of 262

User Guides, Tutorials, and Examples

Tutorial: Pressure/Z-factor Analysis You conduct P/Z analysis on gas wells. The method is a classical tool for assessing several aspects of a group of entities, most importantly: n

A determination of whether the entities are in pressure communication

n

An estimate of remaining reserves for the reservoir

n

An estimate of the original volume of gas in place (OGIP)

The method requires two variables: (Cumulative) gas production; and a value for pressure (P) divided by the gas deviation factor (Z). In this tutorial, you will: 1. Open the demo project for P/Z analysis: The Duson Gas Field demo project is already configured for P/Z analysis. 2. Set P/Z forecast parameters: For this project, three of the four completions contain pressure data. Filter out the other completion. To build a meaningful forecast, it is important to get a representative fit through historical data. To do that, you may constrain the match (or, fit) to occur only through selected data points. There are several ways to do that, and you can use the different ways in any combination. 3. Set lower and upper limits 4. Set the limit as a range: Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of data points. The other forecasting tutorials show how to select a variable. The P/Z plot is a specialized group plot, and so the variable is evaluated for the group. Therefore, we do not advise using a variable for P/Z analysis. 5. Digitize points: This option may be valuable if the real data is sparse, noisy, or not trustworthy. The other forecasting tutorials show how to toggle between working points. This is not available for P/Z analysis. 6. Control fit parameters: In addition to selecting data points for analysis, you also can control how OFM performs the fit process. You can override the least squares regression calculation by placing the fit line where you believe it portrays a better representation (that is, by using your engineering judgment instead of statistics). 7. Set up the forecast: You choose forecast settings for P/Z forecasts on the Property pane. 8. Save the forecast

87 of 262

User Guides, Tutorials, and Examples

Opening the Demo Project for P/Z Analysis The Duson Gas Field demo project is already configured for P/Z analysis. Open the Duson sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Duson Gas Field Sample\Duson Gas Field.ofm.

Setting Up P/Z Forecast Parameters For this project, three of the four completions contain pressure data. Filter out the other completion. 1. On the Filter pane, click Filter by Completion ( 

).

The Filter by Completion window opens. 2. Select the DAIGLE_1:SU_V completion and then click Invert. OFM selects all completions except DAIGLE_1:SU_V. 3. Click OK. OFM removes the DAIGLE_1:SU_V completion from the list of selected completions. 4. Group the remaining three completions: Click Group All Filtered Wells (   

).

5. On the Home tab, in the Launch analysis group, click Forecast. The forecast graph for the group of completions displays. 6. On the Format tab, in the Edit group, click Scenario. The Current Scenario window opens. 7. Set the Phase to P/Z. 8. Set the Time (Date) to Date. 9. Set the Cum. Gas to Gas.Cum. 10. Set P/Z to gas.Pz. 11. Click OK. OFM applies the changes you made to the group of completions. If you select another completion, OFM applies the default settings. You can change the default settings on the Scenario Manager. (To open the Scenario Manager, on the Format tab, in the Edit group, click Scenario Manager.) 12. On the Workspace tab, click Save to save your work.

Setting Lower and Upper Limits 1. To set a lower limit, on the Format tab, in the Edit group, select Limit > Lower. To set an upper limit, select Limit > Upper. 2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which you will not accept any data points in your analysis. For an upper limit, you must define your line to pass below the points you want to exclude, and above the points you want to keep.

88 of 262

User Guides, Tutorials, and Examples

3. When complete, right-click and select Done. OFM recalculates the best least-squares regression fit through the acceptable data points. 4. On the Workspace tab, click Save to save your work.

Setting the Limit as a Range Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of data points. 1. On the Format tab, in the Edit group, select Limit > Range. 2. Select Set X axis. 3. In the X Minimum field, enter 12000. 4. In the X Maximum field, enter 16000. 5. Click OK. OFM fits the line though only data points in which the cumulative gas for the group is greater than 12 Bcf. 6. On the Workspace tab, click Save to save your work.

89 of 262

User Guides, Tutorials, and Examples

Digitizing Points This option may be valuable if the real data is sparse, noisy, or not trustworthy. 1. On the Format tab, in the Edit group, click Digitize Points. 2. Press Ctrl and click to add your own, independent data points on the graph. The data points display as magenta triangles. 3. When you finish, right-click and select Done. OFM discards the historical data points and fits a line through your data points. 4. On the Workspace tab, click Save to save your work.

Controlling Fit Parameters In addition to selecting data points for analysis, you also can control how OFM performs the fit process. You can override the least squares regression calculation by placing the fit line where you believe it portrays a better representation (that is, by using your engineering judgment instead of statistics). 1. Drag the fit (dark green) line upwards. Drag the blue point on the right end of the fit line to a new location. The Results legend values change. On the Property pane, in the History Match section, the Method changed to Manual. 2. Because the Method is Manual, OFM may no longer reflect changes (like removing more data points) until you change this setting to Auto: On the Property pane, under History Match, change the Method to Auto. By default, OFM back-calculates the original value of P/Z (that is, at a value of cumulative gas equal to zero). However, this initial value is often already known, as the most likely time when pressure data will have been abundant is before first production. 3. To override the OFM default, on the Property pane, in the History Match section, set the Initial P/Z Option to Value. 4. Change the Initial P/Z value to 1400. The fit line passes through the new value (1400) on the Y axis. Because of this requirement, the fit line no longer represents a true fit through the data. However, the slope of the line is held the same. 5. On the Workspace tab, click Save to save your work.

Setting up the Forecast You choose forecast settings for P/Z forecasts on the Property pane. 1. Under OFM Forecast, set the End P/Z Option to Value. 2. Set the End P/Z to Value, and enter 10 for the value. The Reserves and EUR change, but the OGIP does not change. The value set is the abandonment

90 of 262

User Guides, Tutorials, and Examples

limit. 3. On the Workspace tab, click Save to save your work.

Saving the Forecast 1. To commit the results of the working forecast to the database, on the Format tab, in the Utilities group, click Save Analysis. Because you did the analysis on an arbitrary group of completions, OFM asks you to name the group. 2. In the Edit Group Name window, type Breaux, and click OK. n

The working forecast on the graph (dark red dots) will now be superimposed by a coincident series of light blue symbols representing the saved values.

n

The Forecast pane should now show a saved P/Z forecast under Case1 for the group Breaux.

91 of 262

User Guides, Tutorials, and Examples

Tutorial: Flow After Flow Test Starting with a stabilized formation, a well flows at a constant rate until a pseudo steady state is reached. The flow rate and flowing pressure are recorded. The procedure is then repeated, with a new flow rate for a total of three or four rates. n

A single formation average pressure: Pavg (Pws)

n

Flowing time for each flowing period may or may not be the same

n

Flowing period could be very long to achieve in a stabilized condition

In this tutorial, you will: 1. Open the workspace 2. Enter test data 3. Create a forecast analysis 4. Set parameters for the analysis 5. Evaluate analysis results

Opening the Workspace Open the WDAExample sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative Databases\Well Deliverability Analysis\WDAExample.ofm.

Entering Test Data 1. On the base map, select the Flow-After-Flow well. 2. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. 3. Select the DailyProd table and click OK. The table data displays on a separate tab within the OFM main window. The data used in this example was taken from well testing. OFM stores the data in a daily table. You may use a sporadic table if you have more than one data point in a day.

Creating a Forecast Analysis 1. On the Home tab, in the Launch analysis group, click Forecast. The forecast graph displays. 2. On the Format tab, in the Edit group, click Scenario. The Current Scenario window opens.

92 of 262

User Guides, Tutorials, and Examples

3. In the Variable Association section, confirm that the Shut-in Pressure is 410 psia and then click OK.

Setting Parameters for the Analysis On the Property pane, in the History Match section, change some of the settings to see the results of changes.

Evaluating Analysis Results 1. View the Historical Fit Report: On the Format tab, in the Display group, select Historical Fit Report. The results show that n=0.829 and C=3.443. The absolute open flow potential (AOF) is 74,215.242 Mcf/d. By default, the Note: Asterisks display to the right of selected points. 2. You may also calculate an AOF by entering a different

93 of 262

User Guides, Tutorials, and Examples

Tutorial: Well Deliverability Analysis You only use well deliverability analysis (WDA) for gas wells. In principle, a log-log plot of data points (representing the stabilized flow rate and flowing pressure for a series of production well tests) should form a straight line. This form of analysis is also called conventional backpressure analysis. Two of the primary results of this analysis are C (termed the stabilized performance coefficient and equivalent to the y axis intercept on the matched plot) and n (termed the turbulence factor and equivalent to the slope of the matched history line). Data required for this analysis are: n

A single formation average pressure, Pavg (Pws), or a time-dependent series of Pws values for each test (if it is considered that the value of Pws has changed appreciably between the start of the first test and the end of the last test)

n

A stabilized flow rate and flowing pressure for each test

Typically four or more tests are conducted to establish a trend in the plot. In this tutorial, you will: 1. Open the workspace 2. View the test data: Although the data used in this example is stored in a daily table, you may use a sporadic table if you have more than one data point in a day. The sequence of the test data is important although time is not directly used in the calculations of WDA analyses. 3. Set up WDA forecast parameters: To build a meaningful forecast, it is important to get a representative fit through historical data. To do that, you may constrain the match (or, fit) to occur only through selected data points. There are several ways to do that, and you can use the different ways in any combination. 4. Set lower and upper limits: The other forecasting tutorials show how to set the limit as a range and how to select the variable. These choices are not available for WDA. 4. Digitize points 5. Toggle working points 6. Control fit parameters: In addition to selecting data points for analysis, you can also control how OFM performs the fit process. 7. Save the forecast

Opening the Workspace Open the WDAExample sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative Databases\Well Deliverability Analysis\WDAExample.ofm.

94 of 262

User Guides, Tutorials, and Examples

Viewing the Test Data Although the data used in this example is stored in a daily table, you may use a sporadic table if you have more than one data point in a day. The sequence of the test data is important although time is not directly used in the calculations of WDA analyses. 1. Select the ModifiedIsochronal completion. 2. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. 3. Select the DailyProd table and then click OK. The table data displays on a separate tab within the OFM main window.

Setting Up WDA Forecast Parameters 1. On the Home tab, in the Launch analysis group, click Forecast. Data displays in the Forecast pane in the form of a log-log plot of (Pws2 – Pwf2) against gas rate. Each data point (red dot) represents one of the stabilized production well tests. OFM produces a straight line fit. The demo WDA project is already configured for analysis. 2. On the Format tab, in the Edit group, click Scenario. The Current Scenario window opens. 3. In the Variable Association section, the default Phase/Analysis is Well Deliverability (WDA). OFM seeks data for four plotting variables: n

Time (Date)

n

Rate (the stabilized gas flow rate per test)

n

Flowing Pressure (the stabilized flowing pressure per test)

n

Shut-in Pressure: This may be a project variable (time dependent) or you may enter a single value. Leave this set to Dailyprod.pws.

4. Click OK. OFM applies the changes you made to the completion you selected (ModifiedIsochronal). If you select another completion, OFM applies the default settings. You can change the default settings on the Scenario Manager. (To open the Scenario Manager, on the Format tab, in the Edit group, click Scenario Manager.)

Setting Lower and Upper Limits 1. To set a lower limit, on the Format tab, in the Edit group, select Limits > Lower. To set an upper limit, select Limit > Upper. 2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which you will not accept any data points in your analysis.

95 of 262

User Guides, Tutorials, and Examples

For an upper limit, you must define your line to pass below the points you want to exclude, and above the points you want to keep.

3. When complete, right-click and select Done. OFM recalculates the best least-squares regression fit through the acceptable data points.

Digitizing Points 1. On the Format tab, in the Edit group, click Digitize Points. 2. Press Ctrl and click to add your own, independent data points on the graph. The data points display as magenta triangles. 3. When you finish, right-click and select Done. OFM discards the historical data points and fits a line through your data points. 4. On the Workspace tab, click Save to save your work.

Toggling Working Points 1. Assuming you are following each of these options in sequence, you must reset the data to explore this next option. On the Format tab, in the Edit group, select Limit > Reset. 2. In the Display group, select Toggle Working Points. OFM displays the cursor as a small eraser. 3. On the graph, press the left mouse button down and use the mouse to erase data points. 4. When you are finish erasing data points, clear the Toggle Working Points check box.

96 of 262

User Guides, Tutorials, and Examples

OFM adjusts the fit to reflect the change. 5. On the Workspace tab, click Save to save your work.

Controlling Fit Parameters In addition to selecting data points for analysis, you can also control how OFM performs the fit process. 1. If the legend is not visible, on the Format tab, in the Display group, select Legend. 2. On the Property pane, in the History Match section, set the Pws Option to Value. 3. Set Pws to 1900. This action is the same as choosing the single value option for shut-in pressure on the Current Scenario window, and then overriding the value for current shut-in pressure. 4. OFM calculates Absolute Open Flow Potential (AOF) from the fit, assuming a value for Pws is equivalent to the maximum value found in the test data set (the default). OFM takes a value of Pwf from the Reference Pressure, Pref setting on the Property pane. For this completion, the Pws value being used is the default value, which is a historical maximum of 1948 psi. To override the default Pws value: On the Property pane, in the History Match section, set the Pws (AOF) Option to Value and then enter 1900 for the value. On the Results legend, the AOF calculation changes.

Saving the Forecast To commit the results of the working forecast to the database, on the Format tab, in the Utilities group, click Save Analysis. The saved WDA forecast displays under Case1 for completion ModifiedIsochronal.

97 of 262

User Guides, Tutorials, and Examples

Tutorial: Wellbore Diagram You can create wellbore diagrams from the information stored or calculated in your project data. In this tutorial, you will: 1. Find a specific well After you find the correct well, creating the wellbore diagram involves multiple steps: 2. Edit the casing 3. Edit the views 4. Edit the tubing 5. Change the equipment 6. Edit the hole section 7. Change the completion

Finding a Specific Well 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. On the Home tab, in the Launch analysis group, click Well Diagram. A blank wellbore diagram opens. 3. On the Filter pane, click Clear Filter 4. Click Filter By Completion

to remove any previously-applied filters.

.

The Filter By Completion window opens. 5. On the list of completions, select Green 7:Ad 2D and then click OK. 6. On the Format tab, in the Edit group, click Wellbore Diagram. The Edit WBD window opens.

Editing the Casing 1. On the Casing tab, in the Type field, select Casing. 2. In the table, make the following selections on the first row of the columns. If you press TAB after each entry, you move to the next column. n

Top: 0.00

n

Bottom: 1000.00

n

OD: 13 3/8

98 of 262

User Guides, Tutorials, and Examples

n

Weight: 72.00

n

Comment: Full returns of cement after running csg

3. Click Apply.

Editing the Views 1. On the Views tab, in the View field select 1. 2. In column 1, enter the following: n

Top: 0.00

n

Bottom: 10000.00

n

Fraction: 1.0

3. Select Show Depth Track to display the depth track scale inside the text block. 4. Select Freeze View. 5. Click Apply and then click Close. 6. On the Insert tab, click Casing Strings. 7. On the diagram, drag a box to show where you want the casing string data to display. Note: You can change the information in the text box by double-clicking it to open the Edit Casing window.

Editing the Tubing 1. On the Format tab, in the Edit group, click Wellbore Diagram. 2. On the Tubing tab, enter the following information on the first row of the columns in the table: n

Top: 0.00

n

Bottom: 7500.00

n

OD: 2.375

n

Grade: N-80

n

Thread: Upset

n

Comments: Internally test to 1500 psi

3. Click Apply.

99 of 262

User Guides, Tutorials, and Examples

Changing the Equipment 1. On the Equipment tab, in the String field, select Tubing 1. 2. Enter the following information on the first row of the columns in the table: n

Top:7500.00

n

Bottom: 7510.00

n

Selection: Packer

n

Type: Retry

3. Click Apply.

Editing the Hole Section 1. On the Format tab, in the Edit group, click Wellbore Diagram. 2. On the Hole Sections tab, enter the following information in Row 1 of the table: n

Top: 0.00

n

Bottom: 1050.00

n

Size: 14.50

3. In Row 2, enter the following information: n

Top: 000.00

n

Bottom: 3850.00

n

Size: 10.75

4. In Row 3, enter the following information: n

Top: 3850.00

n

Bottom: 9000.00

n

Size: 8.50

5. Click Apply.

Changing the Completion 1. On the Completions tab, in the String field, select Casing 1. 2. Enter the following information in the first row of the columns in the table: n

Top: 7750.00

n

Bottom: 7800.00

100 of 262

User Guides, Tutorials, and Examples

n

Selection: Perfs

n

Type: Open

n

Comments: perf w/ 8 SPF - 0

3. Click Apply and then Close. 4. On the Workspace tab, click Save to save your work.

101 of 262

User Guides, Tutorials, and Examples

Overview of the Examples The tutorials and the examples in this help system help you understand the different OFM features within workflows. You can use the sample workspaces in your OFM installation folder to work through the tutorials and examples. Below is a brief description of each example. Note: These are simply examples of OFM usage. They are not intended to be definitive methods or techniques for the solution or analysis of any problem.

Creating Plots for Waterflooding Surveillance In this example, you first add a STOIIP table with data to the project. You then create a conformance plot, two recovery plots, two pore volume injected plots, and a cumulative oil versus cumulative water production plot. This example focuses on: n

Creating new tables and fields from the Edit Schema Tables window, and entering data in the Data Grid

n

Creating simple calculated variables

n

Creating plots with multiple curves, and changing the properties of those curves

n

Using the @CumInput system function

Adding New Well Symbols In this example, you review the well symbols that come with OFM, and the files OFM uses to draw them. You then create new well symbols, save them as an annotation file, and make the associations necessary to use the well symbols. This example focuses on: n

How OFM uses the WorkspaceDefaults.xml file and the annotation (.ano) files in the Symbols folder

n

Using the draw commands to create new annotations, such as well symbols

n

Associating new well symbols on the Association window

Calculating Pressure from P/Z and Production Data This example shows how to use user functions in OFM. You can use user functions to execute iterative calculations (among other things). In this example, you execute iterative calculations to create a continuous stream of pressure data, using a combination of sporadic pressures, production data, and a P/Z line. This example focuses on: n

Adding data to a table with the Data Grid

n

Creating user functions

n

Creating calculated variables

102 of 262

User Guides, Tutorials, and Examples

n

Setting plot, report, and unit attributes for calculated variables

n

Creating plots with multiple graphs

n

Using the @Fit system function

Creating a Formation Damage Indicator In this example, you create a grid calculation to indicate relative formation damage. The parameter contrasts actual production with a simple indicator of productive capacity (kh). This example focuses on: n

Creating grid maps

n

Saving grid (.grd) files to the registry

n

Using the Calculate Grid feature

Creating a Water Breakthrough Diagnostic (Chan) Plot In this example, you create a Chan plot, which is a log-log plot of the time derivative of WOR versus time. This example focuses on: n

Creating calculated variables

n

Creating plots with multiple curves, and then changing the properties of those curves

n

Using the @If, @Null, @Abs, @Previous, @ElapsedDays, and @First system functions

Creating a Hall Plot In this example, you create a Hall plot, which is a useful diagnostic for water injection wells. This example focuses on: n

Creating calculated variables

n

Creating a simple plot

n

Using the @RSum, @Step, and @Dom system functions

Creating an After-Before-Compare (ABC) Plot In this example, you create an ABC plot to compare oil and water between two dates. This example focuses on: n

Creating reports to quickly confirm calculated variables

n

Renaming analyses on the Analysis pane

n

Creating calculated variables

n

Creating scatter plots, adding cross hairs, and adjusting the X and Y variable minimum and maximum values

n

Using the @Name, @ValueAt, @AddMonths, and @Last system functions

103 of 262

User Guides, Tutorials, and Examples

Displaying Formation or Reservoir Thickness and Structure In this example, you create and display an effective isopach map. This example focuses on: n

Creating new tables and populating them with a data (.dat) file you create and load

n

Creating contour maps and changing its properties

n

Creating new analyses from existing ones, by saving it as a new node on the Analysis pane

n

Saving contour maps as annotation files, and then adding them to the base map

Estimating Original Oil in Place (OOIP) Using Grid Arithmetic In this example, you use grid arithmetic to estimate OOIP. This example focuses on: n

Creating and using an OFM Query filter

n

Adding map annotations

n

Creating grid maps

n

Creating grid areas

n

Adding grid (.grd) files to the registry

n

Performing grid arithmetic

Calculating Average Production for N Months In this example, you create a user function that finds the average production for n months, excluding months without production data. You then create a report to show this information. This example focuses on: n

Creating user functions

n

Creating reports that display the results of a user function

n

Using the @RecCount and @ARec system functions

Finding the Best Three Months of Production In this example, you create a series of calculated reports to find the best three months of oil production. This example focuses on: n

Creating calculated variables

n

Creating reports that display the results of calculated variables

n

Using the @TMax and @CFirst system functions

104 of 262

User Guides, Tutorials, and Examples

Finding the Monthly Average Value for Sporadic Data In this example, you create a report that shows the monthly average value for test data. This example focuses on: n

Creating reports

n

Changing report properties to break at every month and show subtotals

n

Using the @Name, @ClrTAve, @Change, and @Month system functions

Controlling Bubble Map Display Using Data Ranges In this example, you create a bubble map that displays water cut development in discreet ranges. Each range has a specific color. This example focuses on: n

Creating calculated variables

n

Creating bubble maps and then changing the bubble properties

n

Animating maps

n

Using the @If and @Null system functions

Using .Las Log Data In this example, you use the LAS to OFM tool to create a log and definition file from a .las file, and then you load files and view the imported log data in a single well log display. This example focuses on: n

Understanding the .las file contents

n

Using the LAS to OFM tool

n

Loading log and definition files

n

Creating single well log displays

Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation In this example, you create a variable that curve fits production data. Then you display it on a graph and post the equation of the line as a label. This example focuses on: n

Creating simple plots and adding headers to them

n

Using the @Dom, @CFirst, @ElapsedMonths, @Fit, and @FitEq system functions

Estimating and Displaying Drainage Radius In this example, you create a bubble map in which the bubbles are scaled to indicate the drainage radius of the well. You add map annotations to show channel sand and zero pay contours. You then overlay the

105 of 262

User Guides, Tutorials, and Examples

bubbles onto a grid map. This example focuses on: n

Changing the map scale

n

Creating calculated variables

n

Creating bubble maps and changing the plot size and color scale

n

Adding map annotations

n

Overlaying bubbles from a bubble map onto a grid map

n

Using the @Sqrt system function

Adding a Shapefile for California's Geothermal Wells In this example, you add a shapefile to the GIS map to show geothermal wells in California. This example focuses on: n

Adding a shapefile

n

Changing the transparency and symbol color

Adding a Shapefile for the Region Boundaries of US Oil/Gas Assessment In this example, you add a shapefile to the GIS map to show the region boundaries for US national oil and gas assessment. This example focuses on: n

Adding a shapefile

n

Using map tips

n

Changing the symbol color

n

Changing the labels

Connecting to an ArcGIS Map to Add U.S. Topological Features In this example, you connect the GIS map to an ArcGIS map to add US land cover imagery and detailed topological features. This example focuses on: n

Making an ArcGIS connection

n

Reordering layers on the GIS map

Connecting to an ArcGIS Map to Add Streets and Railroads In this example, you connect the GIS map to an ArcGIS map to add streets, railroads, parks, and landmarks. This example focuses on:

106 of 262

User Guides, Tutorials, and Examples

n

Making an ArcGIS connection

n

Changing the transparency

107 of 262

User Guides, Tutorials, and Examples

Example: Adding New Well Symbols In this example, you will: 1. Become familiar with the well symbols, and the files that OFM uses to draw them. 2. Create new well symbols and save the well symbols as an annotation file. 3. Make the associations necessary to use the well symbols.

Reviewing the Files 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. Review the current 94 well symbols available in OFM: a. On the Format tab, in the Edit group, click Symbols. The Well Symbols window opens. b. In the image preview box, scroll through the different symbol graphics. Notice the first one and another near the end of the list: 1

92

c. Click OK to close the window. 3. OFM draws the well symbols using instructions in annotation (.ano) files and the WorkspaceDefaults.xml file. Review these files: a. The annotation files are in the OFM installation folder, in the Symbols sub-folder. In the Symbols folder, open the 1.ano file in Notepad. This is the file for the first well symbol, which is a simple circle. OFM reads the draw commands to make the circle. Each symbol is drawn on a canvas that is 10 units by 10 units.

108 of 262

User Guides, Tutorials, and Examples

In this case, the ARC command is used, which draws a circular arc: ARC 5.000000 5.000000 1.000000 0 360 The first two values after the command (5.000000 and 5.000000) identify the center. The next value (1.000000) is the radius in map units. After that are the starting (0) and ending (360) points in degrees. OFM draws a full circle (360 degrees), with the center at 5,5 and a radius of 1. b. Close the 1.ano file, and open the 92.ano file in Notepad. This file is for the ninety-second well symbol, which is much more complex than the first. Note that it uses several different draw commands: LI fills polygons defined after the LI command. M moves the pen, but does not draw a point. D draws a line segment. LW defines a line width. L draws a line.

109 of 262

User Guides, Tutorials, and Examples

c. Close the 92.ano file. d. Open the WorkspaceDefaults.xml file. This file is language-specific. Look at the one for the language you use in OFM: English: The file is in the main installation folder. Russian: The file is in the ru sub-folder. Spanish: The file is in the es sub-folder. e. Note the structure of the file: : Short name for the well symbol : Long name for the well symbol : The number of the symbol annotation file : The color for the symbol d. Note the row for the first well symbol. It is assigned to the well type "Prospect".

e. Close the WorkspaceDefaults.xml file. 4. Close the Demo workspace and OFM.

Creating New Well Symbols These are the new well symbols you will create: 95

96

1. Create the first new well symbol (symbol 95): a. Open a new file in Notepad. b. Like well symbol 1, the new well symbol has a circle. Use the ARC command to draw a circle. On the first line, type this: ARC 5.000000 5.000000 1.000000 0 360 c. Now draw the diagonal line. Line widths are defined before the line command, with the LW command. The standard, default width is 1. On the second line, type this: LW 1

110 of 262

User Guides, Tutorials, and Examples

d. The line goes from one point to another. The first point (x1,y1) is (3.9, 3.9). The second point (x2,y2) is (6.8, 6.8). On the third line, type this: L 3.9 3.9 6.8 6.8 e. Save the file with the other annotation files (in the OFM installation folder, in the Symbols subfolder) with this name: 95.ano 2. Create the second new well symbol (symbol 96): a. Open a new file in Notepad. b. This symbol is a filled box. Fills are defined before the box command, with the LI command. A solid fill is identified as 1. On the first line, type this: LI 1 c. The command to draw a box is B. After the command, define the lower-left corner (x1,y1) which is (4, 3.7). Then identify the upper-right corner (x2,y2) which is (6, 5.3). On the second line, type this: B 4.000000 3.700000 6.000000 5.300000 d. Save the file with the other annotation files, with this name: 96.ano 3. Update the workspace defaults file: a. Open the WorkspaceDefaults.xml file in Notepad or an XML editor. b. On the line tagged , change 95 (the number of well symbols) to 97.

c. It would be appropriate to create a new section in the .xml file for this new symbol, but for this example we will introduce the symbol as a replacement for the default Oil Producer symbol. In the section for Oil Producers, change the symbol ID from 3 to 95 so that OFM will use the 95.ano file by default for oil producers.

111 of 262

User Guides, Tutorials, and Examples

d. Similarly, use the second symbol as a replacement for the default file used for gas wells. In the section for Gas Producer, change the symbol ID from 5 to 96 so that OFM will use the 96.ano file for gas producers.

e. Save and close the file.

Making the New Associations 1. Open the Demo workspace in OFM. 2. On the Setup tab, in the Tables group, click Association. 3. On the General tab, in the Well Type - Table field, reselect Category.WellType so that OFM will display options for the well symbol file to use.

112 of 262

User Guides, Tutorials, and Examples

4. Click OK. The Well Symbol File window opens. The selected option is Default. 5. Click OK. The base map marks oil and gas producers with the new symbols. 6. On the Format tab, in the Edit group, click Symbols. 7. In the image preview box, scroll to the bottom to view the last two symbols. They are the symbols you created. 8. Click OK to close the window.

113 of 262

User Guides, Tutorials, and Examples

Example: Calculating Pressure from P/Z and Production Data This example shows how to use user functions in OFM. Among other things, you can use user functions to execute iterative calculations. In this example, you execute iterative calculations to create a continuous stream of pressure data, using a combination of sporadic pressures, production data, and a P/Z line. To do this, you will: 1. Add sporadic pressure data to the monthly production table. 2. Create a user function to calculate the pressure that corresponds to the P/Z line at any given time. 3. Create two calculated variables: n

Fitted P/Z value

n

Calculated pressure from a fitted P/Z curve

4. Create a plot to compare reservoir pressure to the fitted pressure.

Adding Sporadic Pressure Data 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. In this workspace pressure data is stored in the MonthlyProd table. The table has a field for pressure data, but does not have data. Add pressure data: a. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. b. Select the MonthlyProd table and then click OK. c. On the Navigation pane, select the Blue_1:Ge_6 completion. d. In the Pressure column, add the following pressure data: For this date...

Enter this pressure...

12/1/1999

5000

1/1/2000

4789

2/1/2000

4234

3/1/2000

4123

4/1/2000

3900

5/1/2000

3876

6/1/2000

3768

e. Close the data grid to save your entries.

114 of 262

User Guides, Tutorials, and Examples

Creating a User Function to Calculate the Pressure Corresponding to Any Point on a P/Z Line 1. On the Setup tab, in the Variable Managers group, click User Functions. The User Functions window opens. 2. In the top field, enter the name of your new user function: Pcalc 3. Click Add. The Edit User Function window opens. The name of the user function displays in the text field at the top of the window. 4. This user function will take one input, which is a parameter that represents a P/Z value. It also will create five temporary variables for the calculation. So, the first lines are this: Pcalc(PZ) num Zold, Znew, Pnew, DeltaZ, loops; 5. You then set the initial values. The next two lines are: DeltaZ=1; Zold=1; loops=0; 6. The calculation has a loop. On the next lines, set the exit criteria for the loop: while(DeltaZ > 0.001 & loops < 50) 7. At the end of one loop pass, a variable increments by 1. The next lines are: { loops=loops+1; 8. Inside the loop, the following takes place: a. Pressure (P) is calculated at a Z value of 1. b. The Z value is re-evaluated at this pressure. c. The new Z value is used to re-calculate P (in step a). d. These steps are repeated until the re-evaluated value of Z has not changed the value of Z by more than 0.001. In other words, the function has converged, and it outputs its result, which is the current value of P. To do this, the next lines of the user function are: Pnew=PZ*Zold; Znew=@PvtZ(Pnew); DeltaZ = @abs(Zold-Znew);

115 of 262

User Guides, Tutorials, and Examples

Zold=Znew; } Pcalc= Pnew; 9. Double-check your user function. It should be: Pcalc(PZ) num Zold, Znew, Pnew, DeltaZ, loops; DeltaZ=1; Zold=1; loops=0; while(DeltaZ > 0.001 & loops < 50) { loops=loops+1; Pnew=PZ*Zold; Znew=@PVTZ(Pnew); DeltaZ = @abs(Zold-Znew); Zold=Znew; } Pcalc= Pnew; 10. Click OK. 11. On the Edit User Function window, click Close.

Finding the P/Z Value 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens with a list of all calculated variables. 2. Click Add Calculated Variable. The calculated variable will use the @Fit system function, which fits a polynomial of n order through the data. When you use this system function, you identify: n

The X-axis parameter for the dataset being fitted (in this case, cv.cumgas)

n

The Y-axis parameter for the dataset being fitted (in this case, cv.pz)

n

A true/false condition that excludes a value if the condition is false (in this case, you exclude a value if cv.pz is greater than 0)

n

The X-axis parameter for the output fitted curve (in this case, cv.cumgas)

n

An option (in this case, the order of the fitted polynomial, which is 1 linear)

116 of 262

User Guides, Tutorials, and Examples

In this workspace, PZ is already defined as a calculated variable. 3. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @Fit( Gas.cum, pz, pz>0, Gas.cum,"Deg 1 linear") 4. Click OK. The new variable displays on the list of variables. By default, OFM names it NewItem. 5. Type this new name for the calculated variable and then press Enter: Fit.PZ 6. Set plot attributes for the new calculated variable: a. At the top of the window, click Define to hide the definition columns, and click Plot to show the plot attribute columns. b. On the row for the new Fit.PZ calculated variable, for Curve Name select Fit P/Z. 7. Set report attributes for the new calculated variable: a. At the top of the window, click Plot to hide the plot attribute columns and click Report to show the report columns. b. On the row for Fit.PZ, make these selections: Report Heading 1: Fitted Report Heading 2: Pressure Report Heading 3: from P/Z 8. Set unit attributes for the new calculated variable: a. At the top of the window, click Report to hide those columns and click Units to show the units columns. b. On the row for Fit.PZ, for Units select psig ==> bar. c. You need to use this calculated variable in the next calculated variable you will create. It is not available until you save your changes. Click OK to save your changes and close the Variable Editor.

Calculating the Pressure from a Fitted P/Z Curve 1. Reopen the Variable Editor: On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. 3. The calculated variable will use the user function you created with the Fit.Pz calculated variable you created. Double-click the items in the User Functions and Project Variables lists to add this equation to the text box at the top of the window: #PCalc(FIT.PZ) 4. Click OK.

117 of 262

User Guides, Tutorials, and Examples

5. Type this for the name of the calculated variable and then press Enter: Fit.Press_PZ 6. Set plot attributes for the new calculated variable: a. Click Define to hide the definition columns and click Plot to show the plot attribute columns. b. On the row for Fit.Press_PZ, make these selections: Curve Name: Fitted Pressure from P/Z Curve Line Color: Red 7. Click OK to save the calculated variable and close the window.

Comparing the Reservoir Pressure to the Fitted Pressure from the Fitted P/Z Curve 1. On the Navigation pane, select the BLUE_1:Ge_6 completion. 2. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 3. You will create a plot with two graphs. In the Graph section, set the Number of Graphs to 2. 4. Make selections for the first graph: a. In the Graph section, for the Current Graph select Graph 1. b. For the X-Axis Variable, select Gas.Cum. c. In the curve section, select the Fit.PZ variable, Current category, and BLUE_1:Ge_6 name. d. Click Add Curve. e. For the second curve, select the PZ variable, Current category, and BLUE_1:Ge_6 name. 5. Make selections for the second graph: a. In the Graph section, change the Current Graph to Graph 2. b. For the X-Axis Variable, select Date. c. In the curve section, select the Fit.Press_PZ variable, the Current category, and the BLUE_ 1:Ge_6 name. d. Click Add Curve. e. For the second curve, select the Monthlyprod.Pressure variable, the Current category, and the BLUE_1:Ge_6 name. f. Click OK. 6. Change the scale type for the top graph:

118 of 262

User Guides, Tutorials, and Examples

a. On the top graph, click the X-axis. b. On the Properties pane, under Axis, change the Scale Type to Linear.

119 of 262

User Guides, Tutorials, and Examples

Example: Creating a Formation Damage Indicator In this example, you will create a grid calculation to indicate relative formation damage. The parameter contrasts actual production with a simple indicator of productive capacity. You will: 1. Open the sample workspace and review the existing calculated variable for the calculation. 2. Create a grid map and save to the registry. 3. Estimate the formation damage parameter.

Reviewing the Existing Calculated Variable 1. Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm. 2. You will include monthly liquid production in your grid map. This is already included as a calculated variable in the workspace. Confirm the calculated variable: a. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. b. Double-click the Name column to sort the list of calculated variables alphabetically by name. c. View the equation for Liq.Monthly. It is Prd.Oil + Prd.Water. This will give you the monthly liquid production. d. Click OK to close the Variable Editor.

Creating a Grid Map and Saving to the Registry 1. On the Home tab, in the Launch analysis group, click Grid. 2. Double-click the following Project variables to move them to the Selected variables list: n

Resprop.Net_pay

n

Resprop.Perm

n

Liq.Monthly

3. Click Finish. 4. Save net pay to the registry: a. On the Format tab, in the Utilities group, click Save Analysis > Save As. b. Save the file as NetPay.grd. The Save Grid File window opens. c. In the Name and Description fields, type NetPay and then click OK.

120 of 262

User Guides, Tutorials, and Examples

5. Save permeability to the registry: a. On the Properties pane, under Variable Properties, change the Variable to Resprop.Perm. b. On the Format tab, in the Utilities group, click Save Analysis > Save As. c. Save the file as Permeability.grd. The Save Grid File window opens. d. In the Name and Description fields, type Permeability and then click OK. 6. Save monthly liquid production to the registry: a. On the Properties pane, under Variable Properties, change the Variable to Liq.Monthly. b. On the Format tab, in the Utilities group, click Save Analysis > Save As. c. Save the file as LiquidMonthly.grd. The Save Grid File window opens. d. In the Name and Description fields, type LiquidMonthly and then click OK.

Estimating the Formation Damage Parameter 1. On the Format tab, in the File Grid Utilities group, click Calculate. The Calculate Grid window opens. 2. Click New. 3. In the Description and Name fields, enter Formation Damage. 4. Click Equation. The Edit Calculated Variable window opens. The Project Variables list displays the items in the registry. 5. You are creating a map of formation damage by combining the other maps via an expression. Each term in the expression represents a map (not a number). Double-click the Project Variables to add this to the text box at the top of the window: LiquidMonthly / (NetPay*Permeability) 6. Click OK. 7. On the Calculate Grid window, click OK. The formation damage grid map displays. Note: The formation damage parameter is not an absolute calculation. Interpret the map in relative terms.

121 of 262

User Guides, Tutorials, and Examples

Example: Creating a Water Breakthrough Diagnostic (Chan) Plot The Chan plot is a useful tool for diagnosing causes of water production. In this example, you will: 1. Create five calculated variables needed for the plot: n

Water-oil ratio (WOR)

n

WOR derivative

n

Number of elapsed days

n

Fitting the WOR derivative

n

Fitting the WOR

2. Create the Chan plot

Getting Started Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm.

Water-Oil Ratio (WOR) 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens, with the list of variables filtered to show only calculated variables. 2. Click Add Calculated Variable. For this calculated variable, you want to evaluate oil production. The calculated variable uses two system functions: n

The @If system function evaluates a condition. If the condition is true, the system function returns the second argument. If it is false, it returns the third argument. In this case, if oil production is less than, or equal to, zero then the expression will prevent divide-by-zero errors.

n

The @Null system function returns a null value.

3. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @if(Prd.Oil>0,Prd.Water/Prd.Oil,@null()) 4. Click OK. The Variable Editor lists the new calculated variable. By default the name is NewItem. 5. Type the name of the calculated variable and then press Enter: WOR

122 of 262

User Guides, Tutorials, and Examples

WOR Derivative 1. Click Add Calculated Variable. For this calculated variable, you want to make sure the result is positive (it will be plotted on a log scale), so you want the absolute value of the derivative. You will use these two system functions in the calculated variable: n

The @Abs system function returns the absolute value of an expression.

n

The @Previous system function finds the value of a numeric expression for the record before the current record.

2. Enter this equation: @If(Prd.Days>0, @abs(Ratio.WOR-@Previous(Ratio.WOR))/Prd.days, @Null()) 3. Click OK. 4. Type the name of the calculate variable and then press Enter: WOR_Deriv

Number of Elapsed Days 1. Click Add Calculated Variable. For this calculated variable, you want to find the number of days that have elapsed between first production and the current date. You will use these two system functions in the calculated variable: n

The @ElapsedDays system function calculates the number of days between two dates.

n

The @First system function finds the first record value of a numeric expression.

2. Enter this equation: @elapseddays(date,@first(date)) 3. Click OK. 4. Type the name of the calculate variable and then press Enter: Elapsed_Days 5. You will need to use this calculated variable when you create next one. It is not available until you save your changes. Click OK to save your changes and close the Variable Editor.

Fitting the WOR Derivative 1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. For this calculated variable, you will fit a 5th order polynomial curve through the data. The X-axis for the plot should be days, and the Y-axis for the dataset should be the value from this WOR_Deriv calculated variable. You want to exclude the values from WOR_Deriv if that value is not greater than zero.

123 of 262

User Guides, Tutorials, and Examples

You will use one system function in the calculated variable. The @Fit system function fits a polynomial through the data using the least squares method. It requires five things: n

The X-axis parameter for the dataset (Elapsed_Days)

n

The Y-axis parameter for the dataset (the WOR_Deriv value)

n

A true/false condition that excludes any false values from the fit (exclude when the WOR_deriv value is not greater than zero)

n

The X-axis parameter for the output fitted curve (Elapsed_Days)

n

Options (Order of the fitted polynomial to be 5, and the best value for the logarithm of Y)

3. Enter this equation: @fit(Elapsed_Days,WOR_deriv,WOR_deriv>0,Elapsed_Days,"deg 5 opt ylog") 4. Click OK. 5. Type the name of the calculate variable and then press Enter: WOR_Deriv_Fit

Fitting the WOR 1. Click Add Calculated Variable. This calculated variable is similar to the previous one. You will fit a 5th order polynomial curve through the data. The X-axis for the plot should be days, and the Y-axis for the dataset should be the value from this WOR_Fit calculated variable. You want to exclude the values from WOR_Fit if that value is not greater than zero. You will use the @Fit system function in this calculated variable. 2. Enter this equation: @fit(Elapsed_Days,ratio.wor,ratio.wor>0,Elapsed_Days,"deg 5 opt ylog") 3. Click OK. 4. Type the name of the calculate variable and then press Enter: WOR_Fit 5. You are finished creating calculated variables for the Chan plot. Click OK to save your changes and close the Variable Editor.

Creating the Chan Plot 1. Create a plot with the calculated variables you created: a. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. b. For the X-Axis Variable, select the Elapsed_Days variable you created. c. For the first curve, select the WOR_Deriv variable and then click Add Curve. d. For the second curve, select the WOR_Deriv_Fit variable and the click Add Curve.

124 of 262

User Guides, Tutorials, and Examples

e. For the third curve, select the WOR_Fit variable and then click Add Curve. f. For the fourth curve, select Ratio.WOR. g. Click OK. h. On the Navigation pane, select the 1975:B completion. i. On the Analysis pane, right-click Plot1 and then click Rename. j. Type Chan and then press Enter. 2. Change the curve and axis properties: a. On the plot, click the X-axis. b. On the Properties pane, under Graph Settings, change the Curves field to 1:WOR_Deriv. c. Under Curve Properties, in the Curve Attributes section, select the following: Line Color: Red Line Type: None Point Type: Filled Circle Point Size: 10 d. On the Properties pane, under Graph Settings, change the Curves field to 2:WOR_Deriv_ Fit. e. Under Curve Properties, in the Curve Attributes section, select the following: Line Color: Red Line Type: Solid Line Width: 3 f. On the Properties pane, under Graph Settings, change the Curves field to 3:WOR_Fit. g. Under Curve Properties, in the Curve Attributes section, select the following: Line Color: Blue Line Type: Solid Line Width: 3 h. On the Properties pane, under Graph Settings, change the Curves field to 4:Ratio.Wor. i. Under Curve Properties, in the Curve Attributes section, select the following: Line Color: Blue Line Type: None Point Type: Filled Circle Point Size: 10

125 of 262

User Guides, Tutorials, and Examples

j. On the Properties pane, under Axis, change Scale Type to Logarithmic.

3. View the different characteristic trends: a. On the Navigation pane, select the 3518:B completion. This is an example of normal behavior.

126 of 262

User Guides, Tutorials, and Examples

b. Select the 2465:B completion. This is an example of water coning.

127 of 262

User Guides, Tutorials, and Examples

c. Select the 3516:B completion. This is an example of near wellbore breakthrough.

128 of 262

User Guides, Tutorials, and Examples

129 of 262

User Guides, Tutorials, and Examples

Example: Creating a Hall Plot The Hall plot is a useful diagnostic for water injection wells, assuming a series of steady-state injection conditions. 1. Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm. 2. Verify the project has water injection and water injection pressure data: To create the Hall plot, you need data for volume injected and injection pressure. a. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. b. Select the WIN (water injection) table and then click OK. c. On the Filter pane, expand Table Data and then select WIN show that the Navigation pane only shows the completions with data in the WIN table. The Navigation pane lists 16 completions. d. In the WIN table, water injection is in the WINJ field. Water injection pressure is in the WIPRE field. On the Navigation pane, click through the 16 completions. Note that only these completions have data in the WINJ and WIPRE fields: 502WI:B 503WI:B 504WI:B 505WI:B 515WI:B e. On the Navigation pane, under Table Data, expand the WIN table. To the left of each completion is a check box. For each completion that does not have data in the WINJ and WIPRE fields, click the check box three times so that a red minus sign displays in the check box. This removes the completion from the list on the Navigation pane. f. Close the data grid. 3. Create the calculated variable: a. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens with a list of all calculated variables. b. Click Add Calculated Variable. The Edit Calculated Variable window opens. You will create the Hall function, which is essentially a pressure integral. You will use three system functions to do this:

130 of 262

User Guides, Tutorials, and Examples

@RSum calculates a running sum of an expression. @Step determines if a condition is true. If it is true, it creates a continuous stream of values where the last value remains constant until it is changed by a new data point (a stair-step). If it is not true, it returns the last value in the expression when the condition is met. @Dom finds the number of days for a calendar month. The integral will be performed on a daily basis. c. Double-click the items on the Project Variables and System Functions lists to add this equation to the text box at the top of the window: @RSum(@Step(Win.Wipre,Win.Wipre=0) *@Dom(date)) d. Click OK. The new variable displays on the list of variables. By default, OFM names it NewItem. e. Type this new name for the calculated variable and then press Enter: HallPlot f. Click OK to save the calculated variable and close the window. 4. Create the plot: a. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. b. For the X-Axis Variable, select Winj.Cum. c. For the curve, select the HallPlot calculated variable. d. Click OK. e. On the Navigation pane, select the different water injection completions to view the Hall plot for the completion.

131 of 262

User Guides, Tutorials, and Examples

Example: Creating an After-BeforeCompare (ABC) Plot An After-Before-Compare plot uses well test production data from two dates, and compares performance between those dates. In this example, you will create calculated variables to display this information. As part of the process, you will perform intermediate calculations and display the results in a report, so that you can see their contributions. You then will create a scatter plot. 1. Review the existing calculated variables. 2. Report the monthly oil rate. 3. Find the monthly oil rate from three months previous. 4. Find the change in oil rate. 5. Create a similar calculated variable, to find the change in water rate. 6. Create an ABC scatter plot.

Reviewing Existing Calculated Variables 1. Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm. 2. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens with a list of all calculated variables. 3. Double-click the Name column to sort the list alphabetically by name. 4. Note the Oil.CalDay calculated variable. The equation shows that it divides monthly oil production by the number of days in the month. You will use this calculated variable in the analyses and calculated variables you create in this example. 5. Also note the Water.CalDay calculated variable. 6. Click OK to close the window.

Reporting the Monthly Oil Rate 1. On the Home tab, in the Launch analysis group, click Report. The Edit Report window opens. You want to create a report with three columns: n

Name: The @Name system function returns the entity name.

n

Date: This is the Date project variable.

n

Oil rate: This is the Oil.CalDay calculated variable.

132 of 262

User Guides, Tutorials, and Examples

2. Double-click the items in the System Functions and Project Variables lists to add this to the text box at the top of the window: @Name(), Date, Oil.CalDay 3. Click OK. 4. On the Navigation pane, select the 1975:B completion. 5. Select the last column on the report. On the Properties pane, under Columns, change the Decimal Places to 2. 6. The report shows oil rates for the 24 months of 1989 and 1990. Note the following dates: n

September 1990: 99.31 bbl/d

n

December 1990: 75.43 bbl/d

7. On the Analysis pane, right-click the report and then click Rename. 8. Type this new name and then press Enter: ABC

133 of 262

User Guides, Tutorials, and Examples

Finding the Monthly Oil Rate from Three Months Previous 1. You need a new calculated variable: On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. You want to find the oil rate value, but for the date three months previously. n

The @ValueAt system function finds the value at a specific date.

n

The @AddMonths system function increments the date (forward into the future, or back into the past) by the number of months defined.

n

You also define a flag, using 0 to indicate the first of the month, 1 for the middle of the month, or 2 for the end of the month.

3. Double-click the items in the System Functions and Project Variables lists to add this to the text box at the top of the window: @ValueAt(Oil.CalDay,@AddMonths(Date, -3, 0) ) 4. Click OK. The new variable displays on the list of variables. By default, OFM names it NewItem. 5. Type this new name for the calculated variable and then press Enter: Oil.RatePrevious3 6. Click OK to save the calculated variable and close the window. 7. Return to the ABC report. 8. On the Format tab, in the Edit group, click Variables. The Edit Report window opens, and displays the variables you selected for the columns in your report. You want to add two columns: n

Oil rate on the last day: This column should show the last oil rate value. The @Last system function finds the last record value. This system function requires a condition that must be true (1) to return the value. Since you want all the values to be returned, you can use 1 as the condition (so that the condition will always be true).

n

Oil rate three months previous: This column should show the oil rate value, but for the date three months previously. Use the new Oil.RatePrevious3 calculated variable.

9. Double-click the items in the System Functions and Project Variables lists to add the variables needed for the new columns. It should be: @Name( ),Date,Oil.CalDay, @Last(Oil.CalDay, @Last(1)), Oil.RatePrevious3 10. Click OK. 11. Select the last column on the report. On the Properties pane, under Columns, change the Decimal Places to 2. 12. For the 1975:B completion, note the row for December 1990:

134 of 262

User Guides, Tutorials, and Examples

n

Oil rate on the last day is 75.43

n

Oil rate 3 months previously is 99.31

Finding the Change in Oil Rate 1. You need another new calculated variable: On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. You want to find the change in the oil rate by dividing the oil rate on the last day (which is @Last (Oil.CalDay, 1)) by the oil rate three months previously (which is the Oil.RatePrevious3 calculated variable. 3. Double-click the items in the System Functions and Project Variables lists to add this to the text box at the top of the window: @Last(Oil.CalDay, 1) / Oil.RatePrevious3 4. Click OK. 5. Type this new name for the calculated variable and then press Enter: Oil.RateChange3 6. Click OK to save the calculated variable and close the window.

135 of 262

User Guides, Tutorials, and Examples

7. Return to the ABC report. 8. On the Format tab, in the Edit group, click Variables. You want to add a new column to the report, to show the change in the oil rate. This is the Oil.RateChange3 calculated variable. 9. Double-click the items in the System Functions and Project Variables lists to add the variable needed for the new column. It should be: @Name( ),Date,Oil.CalDay, @Last(Oil.CalDay, @Last (1)), Oil.RatePrevious3, Oil.RateChange3 10. Click OK. 11. Select the last column on the report. On the Properties pane, under Columns, change the Decimal Places to 2. 12. Note that for Completion 1975:B, in December 1990, the oil rate from the last day (75.43) is divided by the oil rate of the previous three months (99.31) to show a rate change of 0.76.

Creating a Calculated Variable to Show Change in Water Rate 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. You want to create a calculated variable that is similar to Oil.RateChange3, except that it shows the three-month change in water rate.

136 of 262

User Guides, Tutorials, and Examples

3. Double-click the items in the System Functions and Project Variables lists to add this to the text box at the top of the window: @Last(Water.CalDay, 1) / @ValueAt(Water.CalDay, @AddMonths (Date, -3, 0) ) 4. Click OK. 5. Type this new name for the calculated variable and then press Enter: Water.RateChange3 6. Click OK to save the calculated variable and close the window.

Creating an ABC Scatter Plot 1. Create a new scatter plot: a. On the Home tab, in the Launch analysis group, click Scatter. The Create Scatter Plot window opens. b. On the list of Project variables, double-click the Water.RateChange3 variable to move it to the Selected variables list. Then double-click the Oil.RateChange3 variable. c. Click Finish. The X-axis of the scatter plot shows the ratio of current water to the three-month previous water rate. The Y-axis shows the corresponding calculation for oil rate. 2. Change the X- and Y-axis properties: a. On the Properties pane, under Scatter Plot Properties, change the X Variable Minimum to -1 and the X Variable Maximum to 5. b. Change the Y Variable Minimum to -1 and the Y Variable Maximum to 5. 3. Add cross hairs at the 1,1 point: a. On the Format tab, in the Edit group, click Cross Hair Axis. The Scatter Plot Origin window opens. b. Make the following selections: X: 1 Y: 1 Color: Blue Type: Solid Width: 5 Clear the two Center check boxes. Select the Show check box.

137 of 262

User Guides, Tutorials, and Examples

c. Click OK. 4. Each point on the plot represents one well at a single point in time. On the Format tab, in the Animation Utilities group, select the October 1997 date.

Interpreting the Scatter Plot Imagine a 45-degree diagonal passing through the intersection of the crosshairs:

138 of 262

User Guides, Tutorials, and Examples

n

Wells at the intersection have had no change in oil or water rate.

n

Wells on the diagonal have had changes in liquid production (positive in the upper-right quadrant, negative in the lower-left quadrant), with no change in water cut.

n

Wells off the diagonal have had no water cut changes. Below the diagonal is a water cut increase. Above the diagonal is a water cut decrease.

139 of 262

User Guides, Tutorials, and Examples

Example: Creating Plots for Waterflooding Surveillance In this example, you create several plots that illustrate the performance of a waterflood. You will: 1. Create a table and field, and then add STOIIP data to it. 2. Create four calculated variables to use in the plots. In OFM, you can explore different methods for introducing PVT data. In this example, you will assume the properties are constant and so you will use calculated variables. n

Hydrocarbon pore volume (HCPV)

n

Displaceable hydrocarbon pore volume (DHCPV)

n

Pore volumes injected (PVI)

n

Recovery factor (RF)

3. Create a conformance plot. This plot helps characterize injection behavior by comparing production volumes to injection volumes. 4. Create two recovery plots: n

Recovery Factor versus PVI: This plot helps you determine how individual patterns compare to the field average, to find the factor affecting recovery.

n

Recovery Factor versus Time: With this plot, you can track the overall performance of all patterns on the same plot.

5. Create two PVI plots: n

Water Cut versus PVI: This plot shows the development of water cut behavior with water injection.

n

PVI versus Time: In this plot, you can see the amount of pore volume injected over time.

6. Create a cumulative oil versus cumulative water production plot.

Adding Stock Tank Oil Initially in Place (STOIIP) to the Workspace 1. Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm. 2. Add a table for stock tank oil initially in place (STOIIP): a. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens.

140 of 262

User Guides, Tutorials, and Examples

b. On the OFM Representation pane, right-click the Pilot Waterflood BField.mdb home data source and then click Add. OFM lists the new table on the OFM Representation pane. By default, OFM names the table NewItem and you must change the name. c. Type the new name and then press Enter: STOIIP d. By default, OFM sets the table to hold monthly data. On the right side of the window, on the Table tab, change Table Type to Static. e. OFM asks if you want to keep the DATE key field. Click No. f. On the Table tab, change Key Type to Pattern. g. On the Fields tab, in the Add New Field field, enter Volume and then click Add. The OFM Representation pane shows two fields in the STOIIP table: The Pattern field (which is a primary key field) and Volume. h. Click OK to save your changes and close the window. 3. Add data in the STOIIP table: a. On the Setup tab,in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. b. Select the STOIIP table and then click OK. c. Enter the following rows of data for the Pattern and Volume columns: Patter Volum n

e

495

77400

496

88200

497

91800

500

12000 0

506

60000

509

45000

d. Close the data grid to save your entries.

Hydrocarbon Pore Volume (HCPV) 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens with a list of all calculated variables. 2. Click Add Calculated Variable. The Edit Calculated Variable window opens. The HCPV is the STOIIP * Boi (initial oil formation volume factor). For this example, assume that the Boi is a constant value of 1.2.

141 of 262

User Guides, Tutorials, and Examples

3. Double-click the items in the Project Variables list to add this equation to the text box at the top of the window: Stoiip.Volume*1.2 4. Click OK. The new variable displays on the list of variables. By default, OFM names it NewItem. 5. Type this new name for the calculated variable and then press Enter: HCPV 6. You need to use this calculated variable in the next one. It is not available until you save your changes. Click OK to save your changes and close the Variable Editor.

Displaceable Hydrocarbon Pore Volume (DHCPV) 1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. You now want to create a calculated variable for DHCPV by allowing for residual oil saturation (Sor). DHCPV is HCPV (1-Sor). For this example, assume that Sor (residual oil saturation) is 0.2. 3. Double-click the items in the Project Variables list to add this equation to the text box at the top of the window: HCPV*(1-0.2) 4. Click OK. 5. Type this new name for the calculated variable and then press Enter: DHCPV 6. You need to use this calculated variable in the next one. It is not available until you save your changes. Click OK to save your changes and close the Variable Editor.

Pore Volumes Injected (PVI) 1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. You now use the DHCPV calculated variable to created a calculated variable for PVI. PVI is cumulative water injection / DHCPV. You can find the cumulative water injection with the @CumInput system function. This system function returns the running sum of an input variable which in this example is the water injection (WINJ) data in the water injection volumes (WIN) table. 3. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @CumInput (Win.Winj)/DHCPV 4. Click OK. 5. Type this new name for the calculated variable and then press Enter: PVI

142 of 262

User Guides, Tutorials, and Examples

Recovery Factor (RF) 1. Click Add Calculated Variable. Recovery factor is cumulative oil / STOIIP. To find cumulative oil, use the @CumInput system function again. This time, use it with the oil production data in the PRD table. 2. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @CumInput(Prd.Oil)/Stoiip.Volume 3. Click OK. 4. Type this new name for the calculated variable and then press Enter: RF 5. Click OK to save the calculated variables and close the window.

Creating a Conformance Plot This plot helps characterize injection behavior by comparing production volumes to injection volumes. 1. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 2. For the X-Axis Variable, select Winj.Cum. 3. Click Add Multiple Curves. The Add Multiple Curves window opens. 4. Make these selections and then click OK: n

Category: regular_five_spot

n

Variable: Oil.Cum

5. On the list of curves on the Edit Plot window, highlight rows 7 and 8 (for patterns 510 and 511) and then click Remove Curve so that you have six curves. 6. Click OK.

143 of 262

User Guides, Tutorials, and Examples

5. On the Analysis pane, right-click Plot1 and then click Rename. 4. Type Conformance Plot and then press Enter. You are now ready to enhance the plot. 7. Hide the legend: On the Format tab, in the Display group, clear the Legend check box. 8. On the Properties pane, under Graph settings, change Curve Name to As Labels. 9. Make changes to the X axis: a. On the plot, click the X axis. b. On the Properties pane, under Axis, on the Axis Label field type Cumulative Water Injection. c. Change the Scale Type to Linear. 10. Make the first curve a thicker red line: On the Properties pane, under Graph settings, on the Curves field, select 1: Oil.Cum:regular_five_spot:495. Under Curve Properties, change the Line Color to Red and the Line Width to 3. 11. Make the second curve a thicker blue line: Under Graph settings, on the Curves field, select 2: Oil.Cum:regular_five_spot:496. Under Curve Properties, change the Line Color to Blue and the Line Width to 3.

144 of 262

User Guides, Tutorials, and Examples

12. Make the third curve a thicker teal line: Under Graph settings, on the Curves field, select 3: Oil.Cum:regular_five_spot:497. Under Curve Properties, change the Line Color to Teal and the Line Width to 3. 13. Make the fourth curve a thicker green line: Under Graph settings, on the Curves field, select 4: Oil.Cum:regular_five_spot:500. Under Curve Properties, change the Line Color as Green and change the Line Width to 3. 14. Make the fifth curve a thicker magenta line: Under Graph settings, on the Curves field, select 5: Oil.Cum:regular_five_spot:506. Under Curve Properties, change the Line Color to Magenta and the Line Width to 3. 15. Make the sixth curve a thicker brown line: Under Graph settings, on the Curves field, select 6: Oil.Cum:regular_five_spot:509. Under Curve Properties, change the Line Color to Dark Brown and the Line Width to 3. 16. On the plot, drag each of the curve names close to the line it defines. For example, drag the line that defines regular_five_spot_500 near the green line. If you were to draw a unit slope line on this plot (the dotted line from 0,0 to 500000,50 in the graph below), that line would show where cumulative oil production equals the cumulative water injected.

145 of 262

User Guides, Tutorials, and Examples

Viewing the Recovery Factor versus PVI This plot helps you determine how individual patterns compare to the field average, to find the factor affecting recovery. 1. Make a copy of the conformance plot: On the Analysis pane, right-click Conformance Plot and then click Save As New Node. OFM names the copy Copy of Conformance Plot. 2. Right-click Copy of Conformance Plot and then click Rename. 3. Type Recovery Factor versus PVI and then press Enter. 4. On the Analysis pane, double-click Recovery Factor versus PVI to open it. 5. On the Format tab, in the Edit group, click Variables. 6. Change the X-Axis Variable to PVI. 7. For the curves, change all the Variables to RF. Keep the Category and Name selections the same. 8. Click OK. The plot loses its formatting when you change the curves. You are ready to improve visibility of the plot. 9. On the Format tab, in the Display group, select the Legend check box. 10. Change the X-axis scale: a. On the plot, click the X-axis. b. On the Properties pane, under Axis, make sure the Scale Type is Linear. 11. As you did for the conformance plot, change the curve color and line width. Make them the same as you did for the conformance plot: n

495: Red, line width 3

n

496: Blue, line width 3

n

497: Teal, line width 3

n

500: Green, line width 3

n

506: Magenta, line width 3

n

509: Dark brown, line width 3

146 of 262

User Guides, Tutorials, and Examples

Viewing the Recovery Factor versus Time With this plot, you can track the overall performance of all patterns on the same plot. 1. This plot is the same as the previous, except the X-axis is Date instead of PVI. Make a copy of the previous plot: On the Analysis pane, right-click Recovery Factor versus PVI and then click Save As New Node. 2. Rename the copy Recovery Factor and then open the plot. 3. On the Format tab, in the Edit group, click Variables. 4. Change the X-Axis Variable to Date. 5. Click OK.

147 of 262

User Guides, Tutorials, and Examples

Viewing the Water Cut versus PVI This plot shows the development of water cut behavior with water injection. 1. Like the Recovery Factor versus PVI, the X-axis variable for this plot is PVI. The variables for the curves are different. Make a copy of the plot: On the Analysis pane, right-click Recovery Factor versus PVI and then click Save As New Node. 2. Rename the copy Water Cut versus PVI and then open the plot. 3. On the Format tab, in the Edit group, click Variables. 4. For the curves, change all the Variables to Water.Cut. Keep the Category and Name selections the same. 5. Click OK. The plot loses its formatting when you change the curves. You are ready to improve visibility of the plot. 6. On the Format tab, in the Display group, select the Legend check box. 7. As you did for the other plots, change the curve color and line width. Make them the same as you did before:

148 of 262

User Guides, Tutorials, and Examples

n

495: Red, line width 3

n

496: Blue, line width 3

n

497: Teal, line width 3

n

500: Green, line width 3

n

506: Magenta, line width 3

n

509: Dark brown, line width 3

Viewing PVI versus Time PVI helps normalize the quantity of water injection and gives you a basis for comparison. In this plot, you will see the number of pore volumes injected over time. 1. Make a copy of the Recovery Factor versus Time plot, and rename it PVI. 2. Open the plot to change its variables. 3. On the Format tab, in the Edit group, click Variables. 4. For the curves, change all the Variables to PVI. Keep the Category and Name selections the same. 5. Click OK.

149 of 262

User Guides, Tutorials, and Examples

The plot loses its formatting when you change the curves. You are ready to improve visibility of the plot. 6. On the Format tab, in the Display group, select the Legend check box. 7. As you did for the other plots, change the curve color and line width. Make them the same as you did before: n

495: Red, line width 3

n

496: Blue, line width 3

n

497: Teal, line width 3

n

500: Green, line width 3

n

506: Magenta, line width 3

n

509: Dark brown, line width 3

Viewing Cumulative Oil Production versus Cumulative Water Production 1. This plot is similar to the conformance plot, except the X-axis shows cumulative water production. Make a copy of the Conformance Plot, and rename it Cum Oil versus Cum Water.

150 of 262

User Guides, Tutorials, and Examples

2. Open the plot to change its variables. 3. On the Format tab, in the Edit group, click Variables. 4. Change the X-Axis Variable to Water.Cum. 5. Click OK. 6. On the Format tab, in the Display group, select the Legend check box and then drag the legend to a good location.

151 of 262

User Guides, Tutorials, and Examples

Example: Displaying Formation or Reservoir Thickness and Structure OFM can create effective isopach maps. In this example, you will: 1. Add a new table with depth and height data. 2. Create a contour map showing thickness. 3. Create a grid map showing thickness. 4. Create a contour map showing a pseudo top or bottom of the structure. 5. Display the thickness map on the base map.

Adding a New Table with Depth and Height Data 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. You need a table and field to hold thickness data. Create the table: a. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens. b. Right-click the Demo data source and click Add. c. Type Iso for the table name and then press Enter. By default, OFM adds UniqueID and Date as the primary key fields, and the table is defined to hold monthly data with a Completion key type. d. On the Table tab, change the Table Type to Static. e. OFM asks if you want to keep the Date field. Click No. f. On the Fields tab, in the Add New Field field, enter Depth and then click Add. g. In the Add New Field field, enter H and then click Add. The Demo data source now has an Iso table. The primary key field is UniqueID. It has two other fields: Depth and H. h. On the OFM Representation pane, select the Depth field. i. On the Units tab, select ft ==>m. j. On the OFM Representation pane, select the H field. k. On the Units tab, select ft ==>m. l. Click OK to save your changes and close the window. 3. Add data to the new table:

152 of 262

User Guides, Tutorials, and Examples

a. Open Notepad. b. Paste the following into a new file: *TableName Iso *UniqueID *Depth *H "Blue_12:Li_1C" 6647 0 "Blue_3:Li_1C" 6440 0 "Blue_7:Li_1C" 6440 10 "Green_15:Li_1C" 6500 0 "Green_3:Li_1C" 6500 0 "Green_5:Li_1C" 6441 40 "Orange_16:Li_1C" 6460 10 "Orange_24:Cl_3" 6470 20 "Purple_1:Cl_3" 6494 0 "Red_13:Cl_3" 6495 0 "Red_4:Cl_3" 64980 0 c. Save the file with this name: Iso.dat d. On the Setup tab, in the Import/Export group, click Import > Data Loader. e. Double-click the Iso.dat file to move it to the Files to Load section, and then click Load.

Creating a Contour Map Showing Thickness 1. On the Filter pane, expand Table Data and then select the new Iso table to show only the completions with data in that table. 2. On the Home tab, in the Launch analysis group, click Contour. 3. On the list of Project variables, double-click Iso.H to move it to the Selected variables list. 4. Click Finish. The contour map displays the thickness. 5. Improve the appearance of the contour map: a. On the Properties pane, under Properties, in the GRID section make these selections: Number of Neighbors: 2 Maximum Grid Size: 14 Search Radius: 304801 b. On the Properties pane, under Properties, in the 2D section make these selections: Show: Yes Decimal Places: 0 Distance Between Labels: 10

153 of 262

User Guides, Tutorials, and Examples

c. On the Properties pane, under Grids and Limits, change Grid Type to None.

6. On the Analysis pane, right-click the contour map and then click Rename. 7. Type this for the new name and then press Enter: Net Sand Thickness - Contour Map

Creating a Grid Map Showing Thickness 1. On the Analysis pane, right-click the contour map and then click Clone Map As > Grid Map. OFM creates a new grid map displaying the same variable as the contour map. 2. On the Properties pane, under Variable Properties, change Exclude out of range to Yes. 3. On the Properties pane, under Grids and Limits, change Grid Type to Frame.

154 of 262

User Guides, Tutorials, and Examples

4. On the Analysis pane, right-click the grid map and then click Rename. 5. Type this for the new name and then press Enter: Net Sand Thickness - Grid Map

Creating a Contour Map Showing a Pseudo Top or Bottom of the Structure 1. On the Analysis pane, right-click Net Sand Thickness - Contour Map and then click Save As New Node. OFM makes a copy of the map. 2. On the Analysis pane, right-click the copy and then click Rename. 3. Type this for the new name and then press Enter: Pseudo Structure 4. With the Pseudo Structure map open, on the Format tab, in the Edit group, click Variables. 5. Remove the Iso.H variable from the Selected variables list, and double-click Iso.Depth to add it to the Selected variables list. 6. Click Finish.

155 of 262

User Guides, Tutorials, and Examples

Displaying the Thickness Map on the Base Map 1. Close the Pseudo Structure map and open the Net Sand Thickness - Contour Map. 2. On the Format tab, in the Utilities group, click Save Analysis > Save As. 3. Change the Save as type to Annotation Files and then save the file with this name: NetSandThickness.ano 4. View the base map. 5. On the Format tab, in the Display group, click Annotations. The Map Annotations window opens. 6. Click Add. The Data Loader opens. 7. Double-click the NetSandThickness.ano file to move it to the Files list, and then click Load. 8. On the Map Annotations window, click OK. The thickness map you originally created as a contour map displays as an annotation on the base map.

156 of 262

User Guides, Tutorials, and Examples

Example: Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation In this example, you will create a variable that curve fits production data. Then you will display it on a graph and post the equation of the line as a label. You will: n

Create a plot that shows calendar day oil versus elapsed time

n

Create calculated variables to fit a polynomial curve and to show the equation, and then add these to the plot and plot header.

Getting Started 1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. 2. You will use three of the calculated variables already in this project. To review them, on the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens with a list of calculated variables. 3. Double-click the Name column to sort the list alphabetically by name. 4. Find the Oil.CalDay calculated variable and view the Equation. The equation is Prd.Oil/@dom(date). This calculated variable divides oil production by the number of days in the month. The @Dom system function returns the number of days. 5. Find the InitialProdMonth calculated variable and view the Equation. The equation is @cfirst(date,MonthlyProd.Oil>0|MonthlyProd.Gas>0|MonthlyProd.Water>0). This calculated variable uses the @CFirst system function to find the first date on which monthly oil, gas, or water production is greater than zero. 6. Find the MonthsOfProd calculated variable and view the Equation. The equation is @ElapsedMonths(date, InitialProdMonth). This calculated variable uses the @ElapsedMonths system function to find the number of months between the current date and the date of initial oil, gas, or water production. 7. Click OK to close the Variable Editor.

Creating a Plot Showing Calendar Day Oil versus Elapsed Time 1. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. 2. For the X-Axis Variable, select MonthsOfProd. 3. For the curve, select the Oil.CalDay calculated variable.

157 of 262

User Guides, Tutorials, and Examples

4. Click OK. 5. On the Navigation pane, select the BLUE_1:He_0 completion. 6. On the plot, click the X-axis. On the Properties pane, under Axis, change the Scale Type to Linear.

Fitting a Polynomial Curve to Data 1. You will create calculated variables for the fit and its equation. Create the first calculated variable: a. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. b. Click Add Calculated Variable. This calculated variable will use the @Fit system function, which fits a polynomial of n order through the data. When you use this system function, you identify: The X-axis parameter for the dataset being fitted (in this case, MonthsOfProd) The Y-axis parameter for the dataset being fitted (in this case, Oil.CalDay) A true/false condition that excludes a value if the condition is false (in this case, you exclude a value if Oil.CalDay is greater than 0) The X-axis parameter for the output fitted curve (in this case, MonthsOfProd)

158 of 262

User Guides, Tutorials, and Examples

An option (in this case, the order of the fitted polynomial, which is 3) c. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @Fit( MonthsOfProd, Oil.CalDay, Oil.CalDay > 0, MonthsOfProd, "deg 3") d. Click OK. The new variable displays on the list of variables. By default, OFM names it NewItem. e. Type this new name for the calculated variable and then press Enter: Fit.OilCalDay 2. Create the second calculated variable: a. Click Add Calculated Variable. This calculated variable will use the @FitEq system function, which returns the equation for the fitted polynomial. The variable that is fitted is Oil.CalDay, to the order of 3. This is an example of curve fitting in OFM. There is no physical reason a third-order polynomial should fit this data, but the example illustrates the principle. b. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @FitEq( Oil.CalDay, "deg 3") c. Click OK. d. Type this new name for the calculated variable and then press Enter: FitEq.OilCalDay e. Click OK to save the calculated variables and close the window. 3. Add the best-fit curve variable to the plot: a. With the plot open, on the Format tab, in the Edit group, click Variables. The Edit Plot window opens. b. Click Add Curve. c. For the new curve, select the Fit.OilCalDay calculated variable. d. Click OK.

159 of 262

User Guides, Tutorials, and Examples

4. Display the equation on the plot: a. On the Format tab, in the Edit group, click Header. The Header window opens. You will add both calculated variables to the header, because FitEq.OilCalDay requires Fit.OilCalDay to do its calculation. b. Click Add. c. On the new row, type: Fit.OilCalDay d. Click Add. e. On the new row, type: FitEq.OilCalDay f. Click OK to save and close. g. To hide the first line of the header, select and right-click it. Change the Font Color to White.

160 of 262

User Guides, Tutorials, and Examples

Example: Estimating OOIP Using Grid Arithmetic In this example, you will use grid arithmetic on a grid file to estimate original oil in place (OOIP). The OOIP equation is: OOIP = (Area * Net Pay * Porosity * Oil Saturation)/(formation volume factor oil * 5.615) The grid area that you will create determines the area in the calculation. For this example, you will assume the formation volume factor is 1.09 rb/stb. A factor of 5.615 converts cubic feet to barrels. In this example, you will: n

Filter the completions to show only ones that have net pay, porosity, and oil saturation data

n

Add a map annotation file that helps you create a grid area later

n

Create a grid map that shows the reservoir property data in the Resprop table

n

Add grid files to the registry

n

Perform the OOIP grid arithmetic

Opening the Workspace and Filtering the Completions 1. Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm. 2. The workspace has reservoir property data in a table named Resprop. Verify the reservoir property data: a. On the Setup tab, in the Tables group, click Data Grid. b. Select the Resprop table, select the Edit all records check box, and then click OK. c. Note that the Resprop table has columns for net pay (NET_PAY), porosity (PHI), and oil saturation (SO). d. Close the data grid. 3. Filter the completions to show only ones that have net pay, porosity, and oil saturation data: a. On the Filter pane, right-click Ofm Query and then click Add. The OFM Query window opens. b. Click Edit. The Create Query window opens. c. Using the project variables for data you noted in the Resprop table, add this query to the text box at the top: Resprop.Net_pay > 0 & Resprop.Phi > 0 & Resprop.So > 0

161 of 262

User Guides, Tutorials, and Examples

d. Click OK to close the Create Query window, and then OK to close the OFM Query window. OFM lists the new query with a default name. e. Type Res Prop Query for the name of your new query and then press Enter. The map displays 14 completions.

Adding a Map Annotation This map annotation will help you create a grid area later. It was made of the oil/water contact. Later, you will consider the area inside the oil/water contact for the calculation. 1. On the Format tab, in the Display group, click Annotations. The OFM Data Loader opens. 2. Double-click this file, which is in the OFM installation folder: ...Sample Workspaces\Pilot Waterflood Sample\Text Load Files\Anno\ZEROPAY.ANO The Files section shows the file ready to load. 3. Click Load. The Map Annotations window opens.

162 of 262

User Guides, Tutorials, and Examples

4. Click OK. The map annotation displays as a dotted line around the edges of the base map.

Creating the Grid Map 1. On the Home tab, in the Launch analysis group, click Grid. The Create Grid Map window opens. 2. Double-click each of the Project variables from the Resprop table to move them to the Selected variables box: n

Resprop.Perm

n

Resprop.Phi

n

Resprop.Net_pay

n

Resprop.So

n

Resprop.Hcft

n

Resprop.Owc

n

Resprop.Perf_ft

8. Click Finish. The grid map displays reservoir porosity. The channel sand is in the center of the reservoir, where the high porosity zone displays.

163 of 262

User Guides, Tutorials, and Examples

Adding Grid Files to the Registry The grid area (.ga) file determines the area in your OOIP calculation. You save grid maps as grid (.grd) files to the registry so that you can use them for calculations. 1. The map annotation displays as a dotted line around the edges of the grid map. Use the dotted line as a guide to create the grid area: a. On the Format tab, in the Grid Area Utilities group, click Add. b. Click around the dotted line to create the grid area. When you are finished, right-click and then click Done. The area outside the grid area becomes white. c. On the Format tab, in the Utilities group, click Save Analysis > Save As. d. Save the grid (.grd) file with the File name phi and then click Save. The Save Grid File window opens. e. Click OK.

164 of 262

User Guides, Tutorials, and Examples

2. Add control points around the oil/water contact to enter zero net pay values, and then save the grid file to the registry: a. The grid map is showing porosity. Change it to show net pay: On the Properties pane, under Variable Properties, change the Variable to Resprop.Net_pay. b. On the Format tab, in the Control Point Utilities group, click Add. The Control Point Value window opens. The Value is 0. c. Net pay is likely to be zero at the edges of a reservoir, so accept the default value. Click OK. d. Click around the perimeter of the oil-water contact to add the control points. When you are finished, right-click and then click Done. The grid map displays the net pay.

e. On the Format tab, in the Utilities group, click Save Analysis > Save As. f. Name the grid (.grd) file netpay and then click Save. The Save Grid File window opens. g. In the Name field, type netpay.

165 of 262

User Guides, Tutorials, and Examples

h. Select the Save Grid Area check box. i. Select the Save Control Points check box. j. Click OK. 3. Save an oil saturation grid file to the registry: a. Change the grid map to show oil saturation: On the Properties pane, under Variable Properties, change the Variable to Resprop.So. b. On the Format tab, in the Control Point Utilities group, clear the Use check box. OFM stops using the control points and the grid map displays without them.

c. On the Format tab, in the Utilities group, click Save Analysis > Save As. d. Name the grid (.grd) file So and then click Save. The Save Grid File window opens. e. In the Name field, type So.

166 of 262

User Guides, Tutorials, and Examples

f. Select the Save Grid Area check box. g. Click OK.

Performing the OOIP Grid Arithmetic 1. On the Format tab, in the File Grid Utilities group, click Calculate. The Calculate Grid window opens. 2. If the Equation field is populated with information, click New to create a new calculation. 3. Enter the following information: n

Description: Reservoir OOIP

n

Name: OOIP

4. Click Equation. The Edit Calculated Variable window opens. Remember that the OOIP equation is: OOIP = (Area * Net Pay * Porosity * Oil Saturation)/(formation volume factor oil * 5.615) The grid area you created determines the area in the calculation. You are assuming the formation volume factor is 1.09 rb/stb. A factor of 5.615 converts cubic feet to barrels. 5. In the text box at the top, enter this calculation: (netpay * phi * So)/(1.09 * 5.615) 6. Click OK. 7. On the Calculate Grid window, click File and then save the file with this name: OOIP 8. On the Calculate Grid window, click OK. The grid map displays with the calculated grid.

167 of 262

User Guides, Tutorials, and Examples

9. On the Format tab, in the Utilities group, click Open Analysis > Open. 10. Select the ooip.grd file and then click Open. 11. On the Layout tab, select the Statistics Panel check box. 12. On the Statistics panel, note the Volume. This is the calculated OOIP for the grid. It is about 67 MMbbls, depending on your grid area points and control points.

168 of 262

User Guides, Tutorials, and Examples

Example: Calculating Average Production for N Months In this example, you create a user function that finds the average production for n months, excluding months that do not have production data. You then create a report to show this information.

Getting Started Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm.

Creating the User Function 1. On the Setup tab, in the Variable Managers group, click User Functions. The User Functions window opens. 2. In the top field, enter the name of your new user function: LastNonNullAvgProd 3. Click Add. The Edit User Function window opens. The name of the user function displays in the field at the top of the window. 4. The function will require you to provide a value for n, the number of months. So, on the first line of the function you specify this input argument. Add this first line and then press Ctrl+Enter to start a new line: Lastnonnullavgprod( num Months) 5. The calculation will create several intermediate variables. Define them now: num LastIndex; LastIndex = @RecCount( "Monthlyprod" )-1; num Count; Count = 0; num Total; Total = 0; 6. The main body of the function involves an iterative loop. It begins as follows: While(LastIndex >= 0 & Count < Months) 7. You are now ready to define the set of instructions. The function checks for null values, and sums them as appropriate. It also keeps a count of the non-null values for the subsequent averaging calculation. The next lines of the user function are:

169 of 262

User Guides, Tutorials, and Examples

{ num Value; Value = @ARec(Monthlyprod.oil, LastIndex); LastIndex = LastIndex - 1; if(Value != @Null()) { Total = Total + Value; Count = Count + 1; } } 8. You next need to give instructions for when While(LastIndex >= 0 & Count < Months) is not true. There are two possibilities: n

If the Count numerical string is greater than zero, then you want the user function to divide the value of the Total numerical string by the value of the Count numerical string (to calculate the average).

n

If the Count numerical string is equal to zero, then you want the user function to return a null value.

The last lines of the user function are: if(Count > 0) { LastNonNullAvgProd = Total/Count; } else { LastNonNullAvgProd = @Null(); } 9. Double-check your user function. It should be: Lastnonnullavgprod( num Months) num LastIndex; LastIndex = @RecCount( "Monthlyprod" )-1; num Count; Count = 0; num Total;

170 of 262

User Guides, Tutorials, and Examples

Total = 0; while(LastIndex >= 0 & Count < Months) { num Value; Value = @ARec(Monthlyprod.oil, LastIndex); LastIndex = LastIndex - 1; if(Value != @Null()) { Total = Total + Value; Count = Count + 1; } } if(Count > 0) { LastNonNullAvgProd = Total/Count; } else { LastNonNullAvgProd = @Null(); } 10. Click OK. 11. On the Edit User Function window, click Close.

Creating Reports 1. On the Home tab, in the Launch analysis group, click Report. The Edit Report window opens. You want to create a report with three columns: n

Date: This is the Date project variable.

n

Monthly oil production: This is the Oil field in the Monthlyprod table.

n

Last ten months of measured production: This is the user function you created.

2. Double-click the Project Variables and User Functions to add this to the text box at the top of the window: Date, Monthlyprod.Oil, #Lastnonnullavgprod(10 )

171 of 262

User Guides, Tutorials, and Examples

Note: The # sign signifies a user function. 3. Click OK. 4. On the Navigation pane, select the BLUE_1:Ge_6 completion. The report displays seven dates, from December 1999 through June 2000. The average last ten months of production on those dates is 4736.14. If you add the monthly oil production for these months and divide that sum by 10, you get 4736.14.

5. Change the number of months: On the Format tab, in the Edit group, click Variables. 6. Type 3 between the parentheses following the user function, so that it is this: Date, Monthlyprod.Oil, #Lastnonnullavgprod(3) 7. Click OK. The report displays the same seven dates. The average last three months of production on those dates is 5051. If you add the monthly oil production for the last three dates (4642 + 5264 + 5247) and divide that sum by 3, you get 5051.

8. Now view the report for a completion that does not have data for every month. On the Navigation pane, select the BLUE_2:Ge_2A completion. The report is showing the average for the last three dates. There is data for the last three dates. If you add those together (100 + 103 + 40) and divide the sum by 3, you get 81 just as shown in the last column.

172 of 262

User Guides, Tutorials, and Examples

9. On the Format tab, in the Edit group, click Variables. 10. Change the number of months for the user function to 5 and then click OK. The last column of the report is 48.60. If you add the values for the last five months (0 + 0 + 100 + 103 + 40) and divide the sum by 5, it is 48.60.

173 of 262

User Guides, Tutorials, and Examples

174 of 262

User Guides, Tutorials, and Examples

Example: Finding the Best Three Months of Production In this example, you create and use a series of calculated variables to find the best three months of oil production. The first three calculated variables find the monthly oil production: n

Maximum monthly oil production

n

Second-best monthly oil production

n

Third-best monthly oil production

The next three calculated variables find the corresponding dates: n

Date of maximum monthly oil production

n

Date of the second-best monthly oil production

n

Date of the third-best monthly oil production

You then run a report that shows this information.

Getting Started Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm.

Finding the Maximum Monthly Oil Production 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor displays calculated variables. 2. Click Add Calculated Variable. The Edit Calculated Variable window opens. For this calculated variable, you want to find the total maximum value of monthly oil production with the condition that it should be greater than zero. The @TMax system function does this. 3. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @TMax(MonthlyProd.Oil, MonthlyProd.Oil>0) 4. Click OK. The Variable Editor lists the new calculated variable. By default the name is NewItem. 5. Type the name of the calculated variable and then press Enter: Max_Oil 6. You need to use this calculated variable in the next calculation. It is not available until you save your changes. Click OK to save your changes and close the Variable Editor.

175 of 262

User Guides, Tutorials, and Examples

Finding the Second-Best Monthly Oil Production 1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. 2. Click Add Calculated Variable. Now you want to find the total maximum value of monthly oil production, which is greater than zero and less than the maximum value you just calculated. You will use the @TMax system function for this calculated variable, too. 3. Double-click the items in the System Functions and Project Variables lists to add this equation to the text box at the top of the window: @TMax(MonthlyProd.Oil,MonthlyProd.Oil>0 & MonthlyProd.Oil0 & MonthlyProd.Oil=

<

Clr (Color)

Size

Label

0.0

0.0999

3

0.0

0% - 9%

0.1

0.4999

7

0.0

10% - 50%

0.5

0.7499

4

0.0

50% - 75%

0.75

1.0

1

0.0

75% - 100%

Keep Percent of Width and Show Lookup Legend selected. Click OK. The colors on the bubble map represent the water cut range for a given date.

182 of 262

User Guides, Tutorials, and Examples

Animating the Map to Show Changes over Time 1. On the Format tab, in the Animation Utilities group, click Animate Settings. 2. OFM detects the default Start and End dates based on the data in the project. Use these default dates. 3. Change the Step to 12, to show every 12 months. 4. Change the Pause to 5 to make the changes appear slightly slower than the default. 5. Click OK. The animation automatically runs.

183 of 262

User Guides, Tutorials, and Examples

Example: Using .Las Log Data If you have a log ASCII standard (.las) file with log data, you can convert it to a .log file and then import the .log file into your OFM project. The LAS to OFM tool converts the file for you. In this example, you will: n

Get started, by making a copy of a sample .las file, setting Microsoft Excel to run macros, reviewing the log data in the Demo database, and reviewing the log data you will import from the .las file.

n

Create a log and a definition file with the LAS to OFM tool.

n

Load the files into the Demo workspace.

n

View the imported log data in a single well log display.

Getting Started 1. Make a copy of the sample .las file. It is in the OFM installation folder, at ...OfmPlus\Samples\Sample.las. 2. The Excel file that changes your .las file to a .log file uses a macro. You must have macros enabled in Microsoft Excel: a. In Excel, click the Office button in the upper-left corner and then click Excel Options. b. In the Trust Center section, click Trust Center Settings. The Trust Center window opens. c. In the Macro Settings section, select Enable all macros and then click OK. 3. Review the log data in the Demo project: a. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo Workspace\demo.ofm. b. On the Setup tab, in the Tables group, click OFM-Defined. c. Click Logs. d. Note that the Logs window lists 16 traces. The first one is Acoustic, and the last one is TPhi. 4. Click OK to close the window. 5. View the log data in the .las file that you will import into the OFM project: a. In Notepad, open the copy of the sample.las file. b. Note the ~C section: ~C DEPT.F 00 000 00 00:

1

DEPTH CURVE

DT.US/F 00 000 00 00:

2 SONIC TRAVEL TIME

184 of 262

User Guides, Tutorials, and Examples

RHOB.G/C3 42 350 02 00:

3 DENSITY-BULK DENSITY

NPHI.V/V 42 890 00 00:

4 POROSITY -NEUTRON

RXO.OHMM 07 220 01 00:

5 RESISTIVITY -RXO

SFLU.OHMM 07 222 01 00:

6

ILM.OHMM 07 120 44 00:

7 RESISTIVITY -MEDIUM

ILD.OHMM 07 120 46 00:

8

RESISTIVITY -DEEP

SP.MV 07 010 01 00:

9

SPON. POTENTIAL

RESISTIVITY -SHALLOW

GR.GAPI 42 310 01 00:

10

GAMMA RAY

CALI.IN 42 280 01 00:

11 CALIPER

DRHO.G/C3 42 356 01 00:

12

DELTA-RHO

EATT.DB/M 00 000 00 00:

13

EPT ATTENUATION

TPL.NS/M 00 000 00 00:

14 TP -EPT

PEF.B/E 42 358 01 00:

15 PHOTOELECTRIC FACTOR

FPHI.V/V 00 000 00 00:

16 POROSITY -NML FFI

The log traces you will import into the OFM project are DT, RHOB, NPHI, RXO, ILM, CALI, DRHO, EATT, TPL, PEF, and FPHI. The demo project already has SFLU, ILD, SP, and GR. c. Close the .las file.

Creating Log and Definition Files with the Tool 1. Open the LAS to OFM file, at ...OfmPlus\LAS to OFM.xls. 2. Click the Click to convert LAS log format (*.as) to OilField Manager log format (*.log) button. 3. In the Input window, enter the version of Excel that you are using and then click OK. 4. Select the Sample.las file you copied. 5. In the Input window, enter the Wellbore ID you will use and then click OK: Red_9 6. Save the file to your computer with this name: LAStoLOG.log 7. In the Input window, type y and then click OK. You type y (yes) if the .las file has traces in it that are not currently defined in the project. When you type y, the LAS to OFM tool creates a definition (.def) file based on the converted curves that you load into the project. 8. Save the file to your computer with this name: LAStoLOG.def

185 of 262

User Guides, Tutorials, and Examples

Loading the Log and Definition Files into the OFM Project 1. Return to the Demo project in OFM. On the Setup tab, in the Import/Export group, click Import > Data Loader. 2. Double-click the LAStoLOG.def and LAStoLOG.log files to move them to the Files to Load section. 3. Click Load. 4. On the Setup tab, in the Tables group, click OFM-Defined. 5. Click Logs. 6. Note that the Logs window now lists 27 traces. The imported traces are listed after TPhi. They start with DT and end with FPHI. 7. Click OK to close the window. 8. Click OK to close the OFM Defined Table Manager.

Viewing the Log Data in a Single Well Log Display 1. On the Home tab, in the Launch analysis group, click Well Log. 2. On the Set Depth Range window, accept the default range. Click OK. A blank log template for your single well log display opens. The template has two tracks. A depth track (which shows the depth scale in the units of measurement for the workspace) separates the two tracks. By default, each track can hold two traces, which you add to the tracks. The trace name displays at the top of each track. To the left of the trace name is the minimum trace value. To the right of the trace name is the maximum trace value. 3. Double-click the top Trace Name for the left track. The Log Trace Attributes window opens. 4. Make these selections and then click OK: n

Log: ILM

n

Color: Green

5. Double-click the bottom Trace Name for the left track. 6. Make these selections and then click OK: n

Log: RHOB

n

Color: Red

7. On the Navigation pane, select the Red_9 wellbore.

186 of 262

User Guides, Tutorials, and Examples

Example: Estimating and Displaying Drainage Radius In this example, you will create a bubble map in which the bubble size is scaled to indicate the drainage radius of the well. You will: 1. Set the map scale. 2. Create a calculated variable to find the drainage radius. 3. Create a bubble map to show drainage radius. 4. Add map annotations to show channel sand and zero pay contours. 5. Clone the bubble map as a grid map, and overlay the bubbles onto it.

Getting Started 1. Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Pilot Waterflood BField.ofm. 2. This project has data for the reservoir in the RESPROP table, and water injection data in the WIN table. Confirm this: a. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens. b. On the OFM Representation pane, expand the RESPROP table. c. Note that the table has fields for net pay (NET_PAY), porosity (PHI), and residual oil saturation (SO). d. Expand the WIN table. e. Note that the table has a field for water injection (WINJ). f. Click OK to close the window.

Setting the Map Scale This example will show the drainage radius in feet, so change the map scale to show 2000 feet as one inch. 1. With the base map open, on the Format tab, in the Edit group, click Scale. The Map Scale window opens. 2. In the Legend section, select English and then select ft for the Display unit. 3. In the Scale section, select inch and then enter 2000. 4. Click OK.

187 of 262

User Guides, Tutorials, and Examples

Estimating Drainage Radius 1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor. The Variable Editor opens, with the list of variables filtered to show only calculated variables. 2. You will use two calculated variables that already exist in the project. Double-click the Name column to sort the list alphabetically by name. 3. Find the Oil.Cum calculated variable and view the Equation. The equation is @CumInput(Prd.Oil). This calculated variable uses the @CumInput system function to find a running sum of oil production. 4. Find the Water.Cum calculated variable and view the Equation. The equation is @CumInput(Win.Winj). This calculated variable finds the running sum of water injection. 5. Click Add Calculated Variable. The Edit Calculated Variable window opens. You will use a simple expression for original oil in place (OOIP) calculation, solved for drainage radius in feet. To do this, you will use: n

The @Sqrt system function, which returns the square root

n

The existing Oil.Cum and Water.Cum calculated variables

n

A constant for oil formation volume factor (Bo): 1.1

n

A constant for water formation volume factor (Bw): 1.002

n

A conversion factor of 5.615 to convert cubic feet to barrels

n

The porosity data in the PHI field of the RESPROP table

n

The net pay data in the NET_PAY field of the RESPROP table

n

The residual oil saturation data in the SO field of the RESPROP table

n

A constant for water saturation (Sw): 0.22

This example uses a number of constants. Any of the constants can be replaced with project variables. 6. Double-click the items in the System Functions and Project Variables lists to add this to the text box at the top of the window: @Sqrt(((Oil.Cum * 1.1 + Water.Cum * 1.002) * 5.615) / (Resprop.Phi * Resprop.Net_pay * 3.14159 * (1 - Resprop.So - 0.22))) 7. Click OK. The new variable displays in the list of variables. By default, OFM names it NewItem. 8. Type this new name for the calculated variable and then press Enter: DrainageRadius 9. At the top of the window, click Define to hide the definition columns, and click Units to show the unit columns.

188 of 262

User Guides, Tutorials, and Examples

10. In the Units column for the DrainageRadius calculated variable, select ft ==> m. 11. Click OK to save the calculated variable and close the window.

Creating the Bubble Map 1. On the Home tab, in the Launch analysis group, click Bubble. The Create Bubble Map window opens. 2. On the list of Project variables, double-click the DrainageRadius calculated variable to move it to the Selected variables list. 3. Click Finish.

4. Rename the analysis: a. On the Analysis pane, right-click Bubble Map1 and then click Rename. b. Type this for the new name and then press Enter: Drainage Radius Bubble Map 5. Change the plot size:

189 of 262

User Guides, Tutorials, and Examples

a. View the Properties pane, under Data, and note that the Data Range Maximum is 948.760986. This value is used to scale the bubble map to the maximum drainage radius, to match the map units. b. On the Properties pane, under Properties, change the Plot Size Units to Map Units. c. Change the Plot Size Maximum to 948.760986. The bubbles on the map are scaled to map units, and the radius is scaled to the size of the drainage radius. 6. Change the colors: a. On the Properties pane, under Properties, change the Color Scale Style to Value Range. b. Change the number of Colors to 9. c. Change the Spectrum to Green-Blue.

190 of 262

User Guides, Tutorials, and Examples

Adding Annotations to Show Channel Sand and Zero Pay Contours 1. With the base map open, on the Format tab, in the Display group, click Annotations. The OFM Data Loader opens. 2. This project comes with several annotation files. They are in the OFM installation folder, at ...Sample Workspaces\Pilot Waterflood Sample\Text Load Files\Anno. Double-click each of the five annotation (.ano) files in this folder to add them to the Files list. 3. Click Load. The Map Annotations window opens. 4. Click OK. 5. Return to the Drainage Radius Bubble Map. 6. On the Format tab, in the Display group, select the Annotations check box. The annotations display on the bubble map.

191 of 262

User Guides, Tutorials, and Examples

Overlaying the Bubble Map onto a Grid Map 1. On the Analysis pane, right-click Drainage Radius Bubble Map and then click Clone Map As > Grid Map. 2. Right-click Grid Map1 and then click Rename. 3. Type this for the new name and then press Enter: Drainage Radius Grid Map 4. On the Format tab, in the Utilities group, click Create Overlay Bubble. The bubbles from the bubble map overlay on the new grid map.

5. One of the map annotations you added shows a dotted line, which marks oil/water contact. Use the dotted line as a guide to indicate no-flow boundaries: a. On the Format tab, in the Grid Area Utilities group, click Add. b. Click around the dotted line to create the grid area. When you are finished, right-click and then click Done. The area outside the grid area becomes white.

192 of 262

User Guides, Tutorials, and Examples

193 of 262

User Guides, Tutorials, and Examples

Example: Adding a Shapefile for California's Geothermal Wells In this example, you will add a shapefile to the GIS map that shows geothermal wells in California. The California Department of Conservation provides the shapefile. After you add the shapefile, you will change the color of the symbols. 1. Download the shapefile from the Internet: a. Go to the Oil, Gas, & Geothermal maps page at http://conservation.ca.gov/dog/maps/Pages/goto_wellloc_geotherm.aspx. b. Click Shapefile. c. Open the compressed (.zip) file and save all the files in it to your computer. 2. In OFM, add the shapefile as a layer on the GIS map: a. With the GIS map open, on the Format tab, in the Layers group, click Add Layer > Open Shape File. b. Select the shapefile and then click Open. OFM adds the shapefile as one layer on the GIS map. It marks geothermal wells in California with circles. 3. Improve visibility: a. On the Format tab, in the Layers group, click Edit Layers. The Map Layers window opens. The left pane lists the layers on the GIS map. The new layer has the same name as the shapefile. The top layer is the geothermal wells layer. It is selected, so the properties for the layer display on the right. For this shapefile, you can change the transparency and color of the dots that mark the geothermal wells. b. Move the Transparency toggle to the right to increase the transparency. c. Select a new symbol Color. d. Click OK to save your changes and close the window.

194 of 262

User Guides, Tutorials, and Examples

Example: Adding a Shapefile for the Region Boundaries of US Oil/Gas Assessment In this example, you will add a shapefile that has many more properties than the one displaying geothermal wells. The shapefile shows region boundaries for US national oil and gas assessment performed by the US Geological Survey. 1. Download the shapefile from the Internet: a. Go to the page for GIS data of the US national oil and gas assessment at http://energy.cr.usgs.gov/oilgas/noga/data.html. b. On the row for Region Boundaries, click the Download link in the Shapefile column. c. Open the compressed (.zip) file and save all the files in it to your computer. 2. In OFM, add the shapefile as a layer on the GIS map: a. With the GIS map open, on the Format tab, in the Layers group, click Add Layer > Open Shape File. b. Select the shapefile and then click Open. OFM adds the shapefile as one layer on the GIS map. The regional boundaries display in the United States. 3. Improve visibility: a. On the Format tab, in the Layers group, click Edit Layers. The Map Layers window opens. The left pane lists the layers on the GIS map. The new layer has the same name as the shapefile. The top layer is usregg.shp. It is selected, so the properties for the layer display on the right. b. The shapefile has map tips. Under Layer, select the Map Tip check box to display them. c. The shapefile marks the entire area with one color, and separates the regions with a line that is a different color. Under Symbol, change the Outline color. d. In addition to the map tips, this layer also has labels. Under Label, select the Label check box to display them. e. Change the label Color, Font, and Size to improve visibility of the labels. f. The label is showing the area of each region. In this layer, you can change the information displayed in the labels. In the Fields field, select a new type of information to display. g. Click OK to save your changes and close the window.

195 of 262

User Guides, Tutorials, and Examples

Example: Connecting to an ArcGIS Map to Add U.S. Topological Features In this example, you add land cover imagery to the entire GIS map, and detailed topological features from the US Geological Survey to the United States part of the GIS map. You then move the wells above that layer, and zoom to the completions. 1. On the Internet, find the URL for the ArcGIS connection: a. Go to the USA Topographic Maps at http://www.arcgis.com/home/item.html?id=99cd5fbd98934028802b4f797c4b1732. b. On that page, in the REST URL for ArcGIS Web APIs section, copy the URL to your clipboard. 2. In OFM, add the ArcGIS connection: a. With the GIS map open: On the Format tab, in the Layers group, click Add Layer > Open Map Server. b. Select Define. c. View the ArcGIS tab. d. In the Name field, enter a name for the connection. This name displays on the Map Layers window. For this example, enter USGS Survey. e. In the Url field, paste the link that you copied from the website. f. Click OK. OFM immediately applies the connection to the GIS map as the top layer, and OFM shows the full GIS map. 3. Improve visibility: a. On the Format tab, in the Layers group, click Edit Layers. The Map Layers window opens. The left pane lists the layers on the GIS map. USGS Survey is the top layer. b. To see the wells (which are on the Wells layer), you can move the Wells layer to be above the USGS Survey layer. Right-click the Wells layer and then click Raise layer to top. c. Click OK to save your changes and close the window. d. If you are using the demo.ofm project for this example, you can see the field details below the completions. On the Format tab, in the Zoom group, click Zoom to Fit. You can see that the completions are off Schooner Bayou Canal near Little Bear Lake, and are part of the East White Lake oil and gas field.

196 of 262

User Guides, Tutorials, and Examples

Example: Connecting to an ArcGIS Map to Add Streets and Railroads In this example, you add streets, railroads, parks, and landmarks on the GIS map, for many places worldwide. You then zoom in to see the details of your city, and change the transparency of the new layer to see the features of the basemap under it. 1. On the Internet, find the URL for the ArcGIS connection: a. Go to the World Street Map at http://www.arcgis.com/home/item.html?id=3b93337983e9436f8db950e38a8629af

b. On that page, in the REST URL for ArcGIS Web APIs section, copy the URL to your clipboard. 2. In OFM, add the ArcGIS connection: a. With the GIS map open: On the Format tab, in the Layers group, click Add Layer > Open Map Server. b. Select Define. c. View the ArcGIS tab. d. In the Name field, enter a name for the connection. This name displays on the Map Layers window. For this example, enter World Streets. e. In the Url field, paste the link that you copied from the website. f. Click OK. OFM immediately applies the connection to the GIS map as the top layer, and OFM shows the full GIS map. 3. Improve visibility: a. On the Format tab, in the Zoom group, click Zoom Area. b. On the GIS map, drag a very small square around your city. c. On the Format tab, in the Layers group, click Edit Layers. The Map Layers window opens. The left pane lists the layers on the GIS map. World Streets is the top layer. d. On the left, select World Streets. e. On the right, under Layer, move the Transparency toggle to the right to increase the transparency of the World Streets layer. The GIS map changes the transparency as you move the toggle. f. Click OK to save your changes and close the window.

197 of 262

User Guides, Tutorials, and Examples

Overview of System Functions System functions are sets of instructions already coded in OFM for you to perform standard operations. You can call a system function and provide parameters, expressions, conditions, and values. The standard operations perform calculations, retrieve information from the database, and perform formatting functions. You can use system functions with calculated variables, user functions, reports, queries, and headers. OFM has more than 200 system functions. Each system function has specific name and syntax requirements. Many require data to generate a result. You provide the data with arguments—a commaseparated list of the parameters that the system function requires. An argument may be: n

A specific value, such as 3000, or "Case1"

n

A date

n

A string of text

n

An expression which evaluates to a result, which then becomes the input to the system function

n

Another variable

The result of the argument must be of the same data type that the system function requires. For example, if a system function requires a numeric argument, then the parameters you enter must be (or must evaluate to) a number. As long as you follow this rule, you can use any project source for the arguments. In general, the following statements apply: n

System functions are identified by the @ character prefix.

n

Some functions apply only to input (table) variables. Other functions can be applied to any expression.

n

Many functions have optional arguments. These are enclosed in square brackets ( [] ).

n

Some arguments are labeled "condition", and may or may not be optional. These allow the result to be controlled by a specific set of circumstances. A condition expression must always equate to 1 (=True) or 0 (=False). Note that specifying the condition to be simply 1 is equivalent to not constraining the result.

n

Dates used as arguments in system functions must evaluate to the OFM standard format for dates (YYYYMMDD).

Functions Listed Alphabetically A @Abs (Absolute Value) @AbsDev (Absolute Deviation) @AddDate (Add Date)

198 of 262

User Guides, Tutorials, and Examples

@AddDays (Add Days) @AddMonths (Add Months) @AddYears (Add Years) @Alloc (Well Allocation Factor) @Annually (Annually) @AppendFile (Append Data from File) @Area (Area Under a Curve) @ARec (Absolute Value for a Record) @AsktoStore (Prompt for Values to Store in Memory Registers) @AtD (Alpha to Date) @AtoN (Convert an Alpha Character String to a Number) @AveInput (Average Value of Input Variable) B @BesselJ1 (Bessel Function First Order) @BesselJ2 (Bessel Function Second Order) @Between (Between Values) @BHP (Bottomhole Pressure) @Blank (Blank Space) C @CAbsDev (Conditional Absolute Deviation) @CArea (Area Under a Curve, When Condition is True) @CategoryName (Currently Selected Category) @CDataIndex (Conditional Data Index) @CDataValue (Conditional Data Value) @Ceil (Ceiling Value) @Cf (Formation Compressibility) @CFirst (Conditional First) @CFirstStr (Conditional First String) @Change (Changed from Previous Value) @CLast (Conditional Last Value) @CLastStr (Conditional Last String) @CloseFile (Close a Text File) @ClrRSum (Clear Running Sum)

199 of 262

User Guides, Tutorials, and Examples

@ClrTAve (Clear Total Average) @ClrTSum (Clear Total Sum) @CmpStr (Compare Strings Alphabetically) @CMvAve (Conditional Moving Average) @CorrelationCoeff (Correlation Coefficient) @Cos (Cosine) @Count (Count Contributing Categories) @CountInput (Number of Entries) @CRAve (Conditional Running Average) @CRSum (Conditional Running Sum) @CStdDev (Conditional Standard Deviation) @CTAve (Conditional Total Average) @CTSum (Conditional Total Sum) @CumInput (Cumulative Input) @CVariance (Conditional Variance) D @Daily (Daily) @DataCount (Number of Rows in Report) @DataIndex (Data Index) @DataIndexRange (Data Index Range) @DataInterpolator (Interpolate Value) @Date (Date) @DateCmp (Date Compare) @DateRange (Date Range) @Day (Day) @DayName (Name of Day) @DayofWeek (Day of Week) @DBDate (Table Date) @DBExecute (Run SQL Statement Against OFM Database) @DCACalc (Saved Forecast Ratio) @DCACaseComment (DCA Case Comment) @DCACaseInitials (DCA Case Initials) @DCACaseName (DCA Case Name)

200 of 262

User Guides, Tutorials, and Examples

@DcaCum (DCA Forecasted Cumulative Production) @DCAReserveType (DCA Reserve Type) @DcaResults (DCA Results) @dForecast (Daily Forecasted Rates) @Diff (Difference) @Discount (Monthly Discount Factor) @Distance (Distance Between) @Dom (Days of Month) @DRecCount (Daily Record Count) @DtoN (Date to Numeric) @DualKeyCount (Number of Primary Keys) @DualKeySelect (List of Primary Keys) @DualKeyValue (Value of Primary Keys) E @ElapsedDays (Elapsed Days) @ElapsedMonths (Elapsed Months) @EquationGraphLine (Equation of a Locked Line) @EvalGraphLine (Evaluate Graph Line) @Exp (Exponential) F @FileExist (If File Exists) @FindStr (Find Sub-String of a String) @First (First Record Value of an Expression) @FirstStr (First Value of a String) @Fit (Fit) @FitEq (Fit Equation) @FitR2 (Correlation Coefficient for Polynomial) @Floor (Floor Value) @FmtDate (Format Date) @FmtName (Format Name) @Forecast (Monthly Forecasted Rates) @FromFile (Value from External File) G

201 of 262

User Guides, Tutorials, and Examples

@GetDataIndex (Find Current Record Index) @GroupData (Grouped Data for Entity) H @Hour (Hour) I @If (If) @IfStr (If String) @Image (Display Image or Image File Name) @IndexOfDate (Index of Date) @InStr (In String) @Interpolate (Interpolate Across Data Gaps) @Interval (Log Interval Name) J @Julian (Julian Date) L @Last (Last Record Value of an Expression) @LastStr (Last Record Value of a String) @Launch (Start New Program) @Length (Horizontal Length) @LenStr (Number of Characters in String) @LineCount (Count Lines in Report) @Ln (Natural Logarithm) @LoadName (Composite Name of Loaded Data) @Log (Logarithm of a Value) @Lookup (Lookup) M @Marker (Marker Name) @Markerdepth (Marker Depth) @Max (Largest of Two Numbers) @MdfromTvd (Measured from True Vertical Depth) @Metric (Metric) @Min (Smallest of Two Numbers) @Minute (Minute)

202 of 262

User Guides, Tutorials, and Examples

@Mod (Modulus Division) @Month (Month) @Monthly (Monthly) @MonthName (Month Name) @MrecCount (Monthly Record Count) @MvAve (Moving Average) N @Name (Name of Loaded Data Without Prefix) @Next (Value of Expression for Next Record) @NoKeys (Number of Completions in Project) @NtoA (Numeric to Alpha) @Null (Null) @NZ (Null to Zero) O @OpenFile (Open Text File) P @PatCurSet (Current Pattern Set) @PatDate (Pattern Date) @PatFact (Pattern Well Allocation Factor) @PatLFct (Pattern Loss Factor) @PatLoss (Pattern Loss) @PatName (Pattern Name) @PatSets (Pattern Sets) @PatWell (PatternWell) @PctChange (Percentage Change) @phi (Porosity from Log Trace) @PlotFile (Load Graph File) @PlotFromFile (Plot Data at Keyname in External File) @PlotHeaderFile (Load Plot Header File) @Pow (Base Value Raised to the Power) @PfromPoZ (Pressure From a P/Z Value) @Previous (Value of Expression for Previous Record) @PrintError (Display Custom Error Message)

203 of 262

User Guides, Tutorials, and Examples

@PrintStatus (Display Custom Status Bar Message) @ProjectFilterName (Project Filter Name) @ProjectPath (OFM Project Path) @PvtBg (Gas Formation Volume Factor at a Pressure) @PvtBo (Oil Formation Volume Factor) @PvtBt (Total Formation Volume Factor at a Pressure) @PvtBw (Water Formation Volume Factor at a Pressure) @PvtCg (Gas Compressibility at a Pressure) @PvtCo (Oil Compressibility at a Pressure) @PvtCw (Water Compressibility at a Pressure) @PvtFile (Load a PVT File) @PvtGORStk (Stock Tank GOR) @PvtPb (Calculate Bubblepoint Pressure) @PvtPc (Critical Pressure of Gas) @PvtRsb (Calculate the Solution Gas-Oil Ratio at a Pressure) @PvtRsw (Calculate the Solution Gas-Water Ratio at a Pressure) @PVTSetAPI (Override API Gravity Value) @PVTSetPB (Override Bubblepoint Pressure) @PvtSetPC (Override Critical Pressure Value) @PVTSetRS (Override Bubblepoint Solution-Gas Ratio) @PvtSetSg (Override Gas Specific Gravity) @PvtSetT (Override Reservoir Temperature) @PvtSetTc (Override Critical Temperature Value) @PvtTc (Critical Temperature of Gas Component) @PvtVg (Gas Viscosity at a Pressure) @PvtVo (Oil Viscosity at a Pressure) @PvtVw (Water Viscosity at a Pressure) @PvtWrho (Water Density at a Pressure) @PvtZ (Gas Z-Factor at a Pressure) Q @Quarterly (Quarterly) R @Radian (Radian Value of an Angle)

204 of 262

User Guides, Tutorials, and Examples

@Random (Random Number) @RAve (Running Average) @Recall (Find Value from Memory Location) @RecallStr (Find Alpha Value String by ID) @RecCount (Record Count) @Reg (Value in a Data Register) @ResetSums (Clear Internal Sums) @ReverseOrder (Print Report in Reverse Order) @Root (Root of User Function) @RowAverage (Row Average) @RowSum (Row Sum) @RRec (Relative Record) @RSum (Running Sum) @Rw (Water Resistivity Calculation) S @Second (Second) @SemiAnnually (Semi-Annually) @Series (Series of Numbers) @SetDataIndex (Set Current Record Index) @Sin (Sine of an Angle) @SlopeGraphLine (Slope of a Locked Line) @Sqrt (Square Root) @StdDev (Standard Deviation) @Step (Return Last Value if Condition is True) @Store (Store Value in Memory Location) @SubStr (Sub-String) @Sw (Water Saturation Calculation) @SwTdt (Water Saturation Calculation from Thermal Decay Time) T @Tab (Insert Tabs) @TAve (Total Average) @Time (Operating System Time) @TMax (Total Maximum Value)

205 of 262

User Guides, Tutorials, and Examples

@TMin (Total Minimum Value) @Today (Current Date) @TraceAt (Trace for Date) @TraceDate (Date at Trace Position) @TraceDates (Number of Dates for Recorded Log Traces) @TrendChecker (Check Trend) @TSum (Total Sum) @TVD (True Vertical Depth) U @Underscore (Replace Spaces with Underscores) @UTMX (UTM X-Coordinate) @UTMY (UTM Y-Coordinate) V @ValueAt (Value of Expression on a Date) @ValueAtStr (String Value on a Date) @Variance (Variance) @vshale (Volume of Shale) W @Wd (Dimensionless Water Influx) @Weekly (Date at End of the Week) @WeekofYear (Week of the Year) @Welltype (Replace Short Welltype Name with Full Name) @WriteFile (Write Line to Opened Text File) @WriteFileBreak (Insert Line Break) @WriteFileFmt (Write Text to User Function in C Syntax) X @XGraphTrace (X-Axis Value of a Trace Point) @XRefAlpha (Cross-Reference String) @XRefValue (Cross-Reference Value) Y @Year (Year for Date) @YGraphTrace (Y-Axis Value of a Trace Point) @YoGraphLine (Y-Intersect of a Locked Line)

206 of 262

User Guides, Tutorials, and Examples

@YYMM (Date in YYMM Format)

207 of 262

User Guides, Tutorials, and Examples

@Abs (Absolute Value) System Function Description

This system function returns the absolute value of an expression.

Syntax

@Abs (value)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Data stream

Example

In this example, the function returns 9500: @Abs (-9500)

208 of 262

User Guides, Tutorials, and Examples

@AddMonths (Add Months) System Function Description

This system function increments the date by the number of months defined, for a date in the future or the past.

Syntax

@AddMonths(Date, NumberOfMonths)

Where

Argument

Type

Required Description Date

Date

Date

Yes

Note: OFM requires dates to be entered in YYYYMMDD format. Number of months to add or

NumberOfMonths Numeric Yes

subtract from the date (positive to add months; negative to subtract months).

Example

The return is represented as a number. In this case, April 15, 2008, at 12:00:00, is 20080415: @AddMonths (20080101, 3, 1)

Related Examples Creating an After-Before-Compare (ABC) Plot: Creating a Report Showing the Oil Rate on the Last Day and Three Months Previous

209 of 262

User Guides, Tutorials, and Examples

@Area (Area Under a Curve) System Function Description

This system function finds the area under a curve using trapezoidal approximation. Note: This function uses X- and Y-axes. If the X-axis is a date, use the @Julian (Julian Date) system function to make it linear.

Syntax

@Area (X-axis, Y-axis)

Where

Argument

Type

Required

Description

X-axis

Numeric

Yes

Independent axis

Y-axis

Numeric

Yes

Dependent or function axis

Example

In this example, the system function returns the value of the area under a curve of oil.cum versus pressure: @Area (oil.cum, pressure)

210 of 262

User Guides, Tutorials, and Examples

@ARec (Absolute Value for a Record) System Function Description

This system function gets the value of the input variable for a specified record row. Use this function with monthly and daily tables. Note: The @CDataIndex (Conditional Data Index) system function can be used to provide input to this function.

Syntax

@ARec (Variable, Index)

Where

Argument Type Variable

Required Description

Numeric Yes

Table variable Row number in table for specified

Index

Numeric Yes

entity Note: First row is index 0.

Example 1

In this example, the sixth value associated with MonthlyProd.Oil is returned: @ARec (MonthlyProd.Oil, 5)

Example 2

In this example, @CDataIndex is used to return the first value of monthly oil, subject to the condition that monthly water is non-zero: @ARec (MonthlyProd.Oil, @CDataIndex(MonthlyProd.Water > 0, 1))

Related Examples Finding the Average Production for N Months: Creating the User Function

211 of 262

User Guides, Tutorials, and Examples

@CFirst (Conditional First) System Function Description

When the specified condition is True (1), this system function finds the first occurrence of a numeric expression at the specified condition. Note: This system function requires a condition. The @First (First Record Value of an Expression) system function performs the same task, but the condition is optional.

Syntax

@CFirst (value, condition)

Where

Argument Type

Example

Required Description

value

Numeric Yes

condition

String

Yes

The parameter for which the first conditional entry is being requested Required condition, which must evaluate to True (1) or False (0)

In this example, the function is when water production is greater than zero after December 15, 1990: @CFirst (Date, MonthlyProd.Water > 0)

Related Examples Finding the Best Three Months of Production Drawing a Polynomial Curve on a Plot and Displaying Its Equation: Getting Started

Related Topics Sample User Function: First Oil

212 of 262

User Guides, Tutorials, and Examples

@Change (Changed from Previous Value) System Function Description

This system function determines if the value of a numeric expression has changed from the previous value. It returns True (1) or False (0) when the test parameter has changed from its previous value. Use this function to create effective breaks in an OFM report. For instructions about creating and modifying reports, see "Creating Reports and Editing Report Variables."

Syntax

@Change (Value)

Where

Argument Type Value

Example

Required Description

Numeric Yes

Numeric expression to be evaluated

In this example, the function returns True (1) when the"year" part of the date changes: @Change (@Year (Date))

Related Examples Finding the Monthly Average Value for Sporadic Data: Creating the Report

213 of 262

User Guides, Tutorials, and Examples

@ClrTAve (Clear Total Average) System Function Description

When a specified condition is True (1), this function computes an average of the specified numeric expression. The value is reset to zero by a condition. The function reports only on the date when the condition is satisfied (that is, before the average being zeroed).

Syntax

@ClrTAve (value, condition)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Expression to be averaged

condition

String

Yes

Condition to be satisfied

Example

In this example, the function returns the total average to date of monthly oil production. The calculation result is set to zero at the end of the year (that is, when the Year portion of the date changes). @ClrTAve (MonthlyProd.Oil, @year (date))

Related Examples Finding the Monthly Average Value for Sporadic Data: Creating the Report

214 of 262

User Guides, Tutorials, and Examples

@Dom (Days of Month) System Function Description

This system function retrieves the number of days for a calendar month based on specified date. This function can be used to compute calendar day rates from monthly data.

Syntax

@Dom (Date)

Where

Argument Type Required Description Date Date

Date Yes

Note: OFM requires dates to be entered in YYYYMMDD format.

Example

In this example, the function returns the value of 31 because there are 31 days in January: @Dom (19840101) Note: In this example, the final last two numbers ("01") represents the first day of the month, but does not affect the calculation.

Related Examples Creating a Hall Plot Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation: Getting Started

215 of 262

User Guides, Tutorials, and Examples

@ElapsedDays (Elapsed Days) System Function Description

This system function calculates the number of elapsed days from Date1 to Date2.

Syntax

@ElapsedDays (Date1, Date2)

Where

Argument Type Required Description Date Date1

Date Yes

Note: OFM requires dates to be entered in YYYYMMDD format.

Date2 Example

Date Yes

Date

In this example, the function returns the value of 31, the number of elapsed days from 30 June to 31 July, 1983. Note that to return a positive integer, the first date (Date1) should be the later date and the second date (Date2) should be the earlier date. @ElapsedDays (19830731, 19830630)

Related Examples Creating a Chan Plot: Finding the Number of Elapsed Days

216 of 262

User Guides, Tutorials, and Examples

@ElapsedMonths (Elapsed Months) System Function Description

This system function calculates number of elapsed months from Date2 to Date1.

Syntax

@ElapsedMonths (Date1, Date2)

Where

Argument Type Required Description Date Date1

Date Yes

Note: OFM requires dates to be entered in YYYYMMDD format.

Date2 Example

Date Yes

Date

In this example, the function returns the value of 12 (the number of elapsed months from January 1984 to January 1985). Note that to return a positive integer, the first date (Date1) should be the later date and the second date (Date2) should be the earlier date. @ElapsedMonths (19850101, 19840101)

Related Examples Drawing a Polynomial Curve on a Plot and Displaying Its Equation: Getting Started

217 of 262

User Guides, Tutorials, and Examples

@First (First Record Value of an Expression) System Function Description

This system function finds the first record value of a specified numeric expression, subject to an optional condition.

Syntax

@First (value, condition)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Parameter to be returned

condition

String

No

Condition to be satisfied

Example

In this example, the function returns the value of monthly oil production when water is first greater than zero: @First (MonthlyProd.Oil, Monthly Prod.Water > 0)

Related Examples Creating a Chan Plot: Finding the Number of Elapsed Days

218 of 262

User Guides, Tutorials, and Examples

@Fit (Fit) System Function Description

This system function fits a polynomial of order n through the data, using the least squares method. It can be used across tables and n can equal up to 12 degrees.

Syntax

@Fit (value1, value2, value3, value4, option)

Where

Argument Type value1

Numeric or date

Required Description Yes

value2

Numeric

value3

True/False Yes

value4

Numeric or date

Yes

Yes

The X-axis parameter for the dataset being fitted The Y-axis parameter for the dataset being fitted Condition; any value evaluating as False will be excluded from the fit The X-axis parameter for the output fitted curve n

Date: Use if the input X-axis parameter represents date

n

Xlog: Use if the curve is to be fitted to the logarithm of X

n

Ylog: Use if the curve is to be fitted to the logarithm of Y

n

deg: Order, n, of fitted polynomial, where n should not exceed 12

option

Several

Yes

n

min val: If any resulting fitted value is less than val, then function returns a Null

n

max val: If any resulting fitted value is greater than val, then function returns a Null

n

opt: Finds the best value for n (between 1 and 12)

n

abs val: Fit the curve. Exclude the point if abs (resulting data) > val, then refit the curve

Example

In this example, the function returns an array of points evaluating the fourth degree polynomial fit to monthly oil production, subject to the constraint that values below 500 are not reported: @fit(Date, Prd.oil, Prd.oil>0, Date, "Date deg 4 min 500")

219 of 262

User Guides, Tutorials, and Examples

Related Examples Calculating Pressure from P/Z and Production Data: Finding the P/Z Value Creating a Water Breakthrough Diagnostic (Chan) Plot: Fitting the WOR Derivative Creating a Water Breakthrough Diagnostic (Chan) Plot: Fitting the WOR Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation: Fitting a Polynomial Curve

220 of 262

User Guides, Tutorials, and Examples

@FitEq (Fit Equation) System Function Description

This system function determines the equation of the current fitted polynomial, and returns the polynomial equation as a string. You must use the Y variable and the same options (in the same order) from the @Fit variable which you are now evaluating.

Syntax

@FitEq (value, options)

Where

Argument Type value

Required Description

Numeric Yes

The data (Y variable) which has been fitted using the @fit variable n

Date: Use if the input X-axis parameter represents date.

n

Xlog: Use if the curve is to be fitted to the logarithm of X.

n

Ylog: Use if the curve is to be fitted to the logarithm of Y.

n

deg: Order, n, of fitted polynomial, where n should not exceed 12.

n

options

String

Yes

min va: If any resulting fitted value is less than val, then function returns a Null.

n

max va: If any resulting fitted value is greater than val, then function returns a Null.

n

opt: Finds the best value for n (between 1 and 12).

n

abs val: Fit the curve. Exclude the point if abs (resulting data) > val, then refit the curve.

Example

In this example, a fourth-order polynomial fit to the log of MonthlyProd.Oil has been performed: @Fiteq (MonthlyPrd.Oil, "date ylog deg 4")

Related Examples Drawing a Polynomial Curve on a Plot and Displaying Its Equation: Fitting a Polynomial Curve

221 of 262

User Guides, Tutorials, and Examples

@If (If) System Function Description

If a specified condition is True (1), the function returns the second argument. Otherwise, the function returns the third argument. It executes one of two expressions, depending on the result of a conditional text. This system function is used frequently in advanced applications. Note: This system function returns a number; the @IfStr (If String) system function returns a number.

Syntax

@If (Condition, Value1, Value2)

Where

Argument Type

Required Description

Condition

Yes

String

Expression to be evaluated Value to be returned if condition is true or equals 1

Value1

Numeric Yes

Note: Value1 can be an expression, such as a further (nested) @if() statement. Value to be returned if condition is false or equals 0

Value2

Numeric Yes

Note: Value2 can be an expression, such as a further (nested) @if() statement.

Example

In this example, the system function returns the value of Water.Cut when monthly liquid production (oil + water) is non-zero. Otherwise, the function returns Null. @If (MonthlyProd.Oil + Monthlyprod.Water 0,

Related Examples Creating a Water Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)

222 of 262

User Guides, Tutorials, and Examples

@Last (Last Record Value of an Expression) System Function Description

This system function finds the last record value of a specified numeric expression, subject to an optional condition.

Syntax

@Last (value, condition)

Where

Argument Type

Example

Required Description

value

Numeric Yes

Parameter to be returned

condition

String

Condition that must be satisfied

No

In this example, the function returns the last non-zero value of monthly oil production: @Last (MonthlyProd.Oil, MonthlyProd.Oil>0)

Related Examples Creating an After-Before-Compare (ABC) Plot: Creating a Report Showing the Oil Rate on the Last Day and Three Months Previous

223 of 262

User Guides, Tutorials, and Examples

@Lookup (Lookup) System Function Description

This system function searches or interpolates the lookup table for a specific value of a specified variable. It offers a lookup capability, and allows for interpolation between recorded values. Note: Interpolation requires that the range to be interpolated must be in strict ascending order.

Syntax

@Lookup (output_variable, keyname, input_value, option)

Where

Argument Type output_ variable keyname input_ value option

Options

Required Description

Numeric Yes Text

Yes

The result you wish to extract from the lookup table The entity for which your lookup table has been populated with data The value of the independent variable

Numeric Yes

for which you require the lookup result

Text

Yes

See Options list, below

Combinations of options are permitted, where applicable (for example, "date deg4 in" specifies a 4th order polynomial interpolation of time dependent lookup data, prohibiting extrapolation outside the range of existing data). n

date: Used when input_value refers to a date.

n

xlog: For interpolation, specifies that the x axis scale is logarithmic.

n

ylog: For interpolation, specifies that the y axis scale is logarithmic.

n

linear: Performs linear interpolation between known values of data.

n

lag: Performs Lagrange interpolation.

n

deg: Specifies degree of the Lagrange polynomial (for example, "deg3").

n

step up: No interpolation; function returns the previous value of output_variable.

n

step down: No interpolation; function returns the next value of output_variable.

n

Example 1

in: Value must exist within range; do not extrapolate.

In this example, the function returns the oil price from the Cost table, for the entity Sand1 at the corresponding date: @Lookup (cost.oilprice, "sand1", date, "Date")

224 of 262

User Guides, Tutorials, and Examples

Example 2

In this example, the function returns the formation volume factor (FVF) from the Fluid_Data table, for the Reservoir to which the currently loaded completion belongs, at a pressure value provided by Prd.Pressure, allowing linear interpolation at pressure values for which the fluid data does not exist in the table. Note there is no time dependency for the lookup table data in this example. @Lookup (Fluid_Data.FVF, “Sc.Reservoir”, Prd.Pressure, “lin”)

225 of 262

User Guides, Tutorials, and Examples

@Month (Month) System Function Description

This system function retrieves the month number for a specified date. It returns a value between 1 and 12.

Syntax

@Month (Date)

Where

Argument Type Required Description Date Date

Date Yes

Note: OFM requires dates to be entered in YYYYMMDD format.

Example

In this example, the function returns 4 because April is the fourth month: @Month (19830409)

Related Examples Finding the Monthly Average Value for Sporadic Data: Creating the Report

226 of 262

User Guides, Tutorials, and Examples

@Name (Name of Loaded Data Without Prefix) System Function Description

This system function gets the name of the currently loaded entity. It is useful in preparing header information on plots and reports. Note: To return the name with the prefix, use the @LoadName (Composite Name of Loaded Data) system function.

Syntax

@Name ( )

Where

Argument

Type

Required

Description

None Example

n

If a completion X is the active entity, then the system function will return “X”.

n

If a Category (for example, Lease) is chosen from the Navigation pane, and the Lease named “Smith” is selected as the chosen entity, then the system function will return “Smith”.

Related Examples Creating an After-Before-Compare (ABC) Plot: Creating a Report Showing the Monthly Oil Rate Finding the Monthly Average Value for Sporadic Data: Creating the Report

227 of 262

User Guides, Tutorials, and Examples

@Null (Null) System Function Description

This system function returns a null value. The null value displays as an asterisk (*) in reports. Note: To convert null values to zero or another value you specify, use the @NZ (Null to Zero) system function.

Syntax

@Null()

Where

Argument

Type

Required

Description

None Example

In this example, a calculated variable is created that returns a gas-oil ratio (GOR). The @Null system function is used to "trap" potential errors. It will force a null result when a "divide by zero" error could have occurred: @If(MonthlyProd.Oil = 0, @Null(), MonthlyProd. Gas / MonthlyProd.Oil)

Related Examples Creating a Water Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)

228 of 262

User Guides, Tutorials, and Examples

@Previous (Value of Expression for Previous Record) System Function Description

This system function finds the value of a numeric expression for the record before the current record. It is applicable only for monthly and daily tables. Note: To find the value of a numeric expression for the next record, use the @Next (Value of Expression for Next Record) system function.

Syntax

@Previous (variable)

Where

Argument Type variable

Example

Required Description

variable Yes

The variable for which the previouslyavailable value is required

In this example, the difference between the current month's oil production and the prior month's production can be found: MonthlyProd.Oil - @Previous (MonthlyProd.Oil)

Related Examples Creating a Chan Plot: Finding the WOR Derivative

229 of 262

User Guides, Tutorials, and Examples

@PvtBg (Gas Formation Volume Factor at a Pressure) System Function Description

This system function calculates the gas formation volume factor at a specified pressure.

Syntax

@PvtBg (value)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Pressure value

Example

In this example, the system function returns a time-dependent gas formation volume factor based on time-dependent pressure data: @PvtBg(Prd.Pressure)

230 of 262

User Guides, Tutorials, and Examples

@PvtBo (Oil Formation Volume Factor) System Function Description

This system function calculates the time-dependent oil formation volume factor at a specified time-dependent pressure.

Syntax

@PvtBo (value)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Pressure value

Example

In this example, the system function returns a time-dependent oil formation volume factor based on time-dependent pressure data: @pvtBo(Prd.Pressure)

Related Tutorials PVT: To Use PVT System Functions

231 of 262

User Guides, Tutorials, and Examples

@PvtBw (Water Formation Volume Factor at a Pressure) System Function Description

This system function calculates the time-dependent water formation volume factor at a specified time-dependent pressure.

Syntax

@PvtBw (value)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Pressure value

Example

In this example, the system function returns a time-dependent water formation volume factor based on time-dependent pressure data: @pvtBw(Prd.Pressure)

232 of 262

User Guides, Tutorials, and Examples

@PvtRs (Calculate the Solution Gas-Oil Ratio at a Pressure) System Function Description

This system function calculates the solution gas-oil ratio (GOR) at a specified pressure, based on the previously selected oil correlation.

Syntax

@PvtRs (value)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Pressure value

Example

In this example, the system function returns time-dependent solution gas oil ratio based on time-dependent pressure data: @PvtRs (Prd.Pressure)

233 of 262

User Guides, Tutorials, and Examples

@RecCount (Record Count) System Function Description

This system function finds the number of records in a specified table. Note: Use the @DRecCount (Daily Record Count) system function for daily tables, and the @MrecCount (Monthly Record Count) system function for the number of monthly records.

Syntax

@RecCount ("tablename")

Where

Argument

Type

Required

Description

tablename

String

Yes

Table to be evaluated

Example

In this example, the function returns the number of records in the Test table: @RecCount ("test")

Related Examples Finding the Average Production for N Months: Creating the User Function

234 of 262

User Guides, Tutorials, and Examples

@Reg (Value in a Data Register) System Function Description

This system function recalls a value (for a variable used to represent parameter Y) stored in the specified Data Register and interpolates missing values.

Syntax

@Reg (regn#, value, "option")

Where

Argument Type regn#

Required Description

Numeric Yes

Data Register number (1-40) Variable representing the X

value

Numeric Yes

parameter used when creating the Data Register n

xlog: Performs lookup along X-axis

n

ylog: Performs lookup along Y-axis

n

linear: Performs linear interpolation

n

lag: Performs lookup Lagrange interpolation

"option"

String

No

n

deg: Specifies degree of Lagrange polynomial

n

step up: Performs lookup returning upward value

n

step down: Performs lookup returning lower value

n

in: Value must exist within range. Do not extrapolate.

Example

In this example, Data Register 5 was previously created to store a variable (Y), representing bottomhole pressure against Date (X). The example will return the values of bottomhole pressure, and linearly interpolate across missing values. @Reg (5, Date, "date linear")

235 of 262

User Guides, Tutorials, and Examples

@RSum (Running Sum) System Function Description

This system function calculates the running sum (cumulative) of a specified expression, including any prior cumulative. Note: You must use this system function for summing calculated variables.

Syntax

@RSum (expression)

Where

Argument

Type

Required

Description

expression

Numeric

Yes

Expression to be summed

Example

In this example, the function returns the cumulative value of an expression given by a calculated variable: @RSum (CV.Corrected_MonthlyProd_Oil)

Related Examples Creating a Hall Plot

236 of 262

User Guides, Tutorials, and Examples

@Sqrt (Square Root) System Function Description

This system function calculates the square root of a specified number.

Syntax

@Sqrt (value)

Where

Argument Type value

Example

Required Description

Numeric Yes

Number to be evaluated, which must be positive

In this example, the function returns the value 7.746: @Sqrt (60)

Related Examples Viewing the Drainage Radius: Finding the Drainage Radius

237 of 262

User Guides, Tutorials, and Examples

@Step (Return Last Value if Condition is True) System Function Description

When a specified condition is True, a stair-step function is created for a specified expression. This has the effect of creating a continuous stream of values, where a value remains constant over time until it is changed by a new data point. It returns the last value in the expression when the condition is met.

Syntax

@Step (value, condition)

Where

Argument

Type

Required

Description

value

Numeric

Yes

Variable to be stepped

Example

In this example, the function returns the step function when monthly oil production is greater than 1000: @Step (MonthlyProd.Oil, MonthlyProd.Oil > 1000)

Related Examples Creating a Hall Plot

238 of 262

User Guides, Tutorials, and Examples

@TMax (Total Maximum Value) System Function Description

This system function calculates the maximum value of a specified numeric expression for all record values, subject to a condition. Note: Condition = 1 will always evaluate as True.

Syntax

@TMax (value, condition)

Where

Argument Type

Required Description

value

Numeric

Yes

condition

True/False Yes

Example

Variable to be evaluated Criterion to be applied in evaluating the function

In this example, the function returns the monthly oil production maximum value when the monthly water production maximum value is also greater than zero: @TMax (MonthlyProd.Oil, MonthlyProd.Water>0)

Related Examples Finding the Best Three Months of Production

239 of 262

User Guides, Tutorials, and Examples

@ValueAt (Value of Expression on a Date) System Function Description

This system function finds the value of a specific numeric expression at a specified date. Note: To find the string value of an expression, use the @ValueAtStr (String Value on a Date) system function.

Syntax

@ValueAt (expression, date)

Where

Argument Type

Required Description

expression Numeric Yes

Parameter to be evaluated Date at which the value of expression is required

date

Date

Yes Note: OFM requires dates to be entered in YYYYMMDD format.

Example

In this example, the function returns the monthly oil production for August 31, 1981: @ValueAt (MonthlyProd.Oil, 19810831)

Related Examples Creating an After-Before-Compare (ABC) Plot: Creating a Report Showing the Oil Rate on the Last Day and Three Months Previous

240 of 262

User Guides, Tutorials, and Examples

Using the Sample Workspaces OFM has many sample workspaces you can use to learn OFM. The sample workspaces are in the OFM installation directory, at ...Sample Workspaces. Inside that folder are 11 sub-folders, each with one or more workspaces. This folder...

Has workspaces used in...

2 Keyed Demo Database

Sample Workspace: Workspaces with Multiple Keys

3 Keyed Demo Database

Sample Workspace: Workspaces with Multiple Keys

Demo Workspace

Tutorial: PVT Tutorial: Creating and Editing Plots Tutorial: Auditing Plots Tutorial: Bubble Map Tutorial: Grid Map Tutorial: Contour Map Tutorial: Scatter Plot Tutorial: Surface Map Tutorial: Map XY Plot Tutorial: Date-Based Report Tutorial: Summary Report Tutorial: Single Well Log Display Tutorial: Multi-Well Log Display Tutorial: Log Cross-Section Tutorial: Single Phase Analysis Tutorial: Ratio Analysis Tutorial: Wellbore Diagram Example: Adding New Well Symbols Example: Calculating Pressure from P/Z and Production Data Example: Displaying Formation or Reservoir Thickness and Structure Example: Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation Example: Calculating Average Production for N Months Example: Finding the Best Three Months of Production Example: Finding the Monthly Average Value for Sporadic Data

241 of 262

User Guides, Tutorials, and Examples

Example: Controlling Bubble Map Display Using Data Ranges Example: Using .Las Log Data Duson Gas Field Sample

Tutorial: Pressure/Z-factor Analysis

Illustrative Databases > CPS File

Sample Workspace: CPS-3 Grid File

Sample Illustrative Databases > Cross

Sample Workspace: Cross Section

Sections Illustrative Databases > Forecast Schedule Example Illustrative Databases > Multiply

Sample Workspace: Multiply By Factor

By Factor Illustrative Databases >

Sample Workspace: Normalization

Normalization Illustrative Databases > Stacked

Sample Workspace: Stacked Plots

Graphs Illustrative Databases > Well Deliverability Analysis

Tutorial: Flow After Flow Test Tutorial: Well Deliverability Analysis

Multiple Project Sample

Sample Workspace: Multiple Projects

PDS Example

Sample Workspace: Foreign Keys

PI Dwights Sample Files

Sample Workspace: Defining a Workspace with PI/Dwights Production Files

Pilot Waterflood Sample

Tutorial: Patterns Example: Creating a Formation Damage Indicator Example: Creating a Water Breakthrough Diagnostic (Chan) Plot Example: Creating a Hall Plot Example: Creating an After-Before-Compare (ABC) Plot Example: Creating Plots for Waterflooding Surveillance Example: Estimating OOIP Using Grid Arithmetic Example: Estimating and Displaying Drainage Radius

Provo Training Dataset

Schlumberger's OFM training courses

User Function Sample

242 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Workspaces with Multiple Keys Your workspace can have multiple keys. There are two sample workspaces that show this: one with two keys, and one with three keys. 1. View the sample workspace with two keys: a. In the OFM installation folder, open this workspace: ...Sample Workspaces\2 Keyed Demo Database\2 Keyed Demo Database.ofm b. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens. c. On the OFM Representation pane, select the HEADERID table, which is the master table. d. View the Master tab. The Table Key(s) section lists two table keys. In the Key Delimiters section, the selected delimiter is a colon (:). e. Click OK to close the window. 2. View the sample workspace with three keys: a. In the OFM installation folder, open this workspace: ...Sample Workspaces\3 Keyed Demo Database\3 Keyed Demo Database.ofm b. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens. c. On the OFM Representation pane, select the HEADERID table, which is the master table. d. View the Master tab. The Table Key(s) section lists three table keys. In the Key Delimiters section, the selected delimiters are colons (:). e. Click OK to close the window.

243 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Foreign Keys A foreign key is a table that allows you to cross reference from one table to another. One sample workspace has many foreign keys for you to view. 1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\PDS Example\PDSExample.ofm. 2. View the tables in the workspace. On the Setup tab, in the Tables group, click Schema. The Edit Schema Tables window opens. 3. Foreign keys can use fields in the master table. Look at the tLease table to see how this is done: a. View the OFM Representation pane, and notice that the master table (marked with the icon) is the xy table. b. On the OFM Representation pane, expand the xy table. Notice that LeaseID is one field in the xy table. The xy table identifies lease ID numbers. c. The project also has a table for lease information. On the OFM Representation pane, click the tLease table. d. On the right, view the Table tab. Notice that the tLease table uses the LeaseID field in the xy table. The OFM Definition section has the following selections: Key Type: Foreign Foreign: xy.LeaseID e. Look at the fields in the tLease table. On the OFM Representation pane, expand tLease. Two fields are listed under tLease: The primary key field (marked with the The second field (marked with the

icon) is LeaseID.

icon) is Lease Name.

The lease names in the tLease table are referenced with the lease ID numbers in the xy table. 4. Foreign keys also can use fields that are not in the master table. Look at the tMonthlyProduction table to see how this is done: a. On the OFM Representation pane, expand the tWellProd table. Notice that WellID is one field in the tWellProd table. The tWellProd table identifies well ID numbers. b. The well ID numbers are used in the monthly production table. On the On the OFM Representation pane, click the tMonthlyProduction table. c. On the right, view the Table tab. Notice that the tMonthlyProduction table uses the ProductionID field in the tWellProd table. The OFM Definition section has the following selections: Key Type: Foreign

244 of 262

User Guides, Tutorials, and Examples

Foreign: tWellProd.ProductionID d. Look at the fields in the tWellProd table. On the OFM Representation pane, expand tWellProd. Two fields are listed under tWellProd: The primary key field (marked with the The second field (marked with the

icon) is WellID.

icon) is ProductionID.

The monthly production values in the tMonthlyProduction table are referenced with the well ID numbers in the tWellProd table.

245 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Multiply By Factor The Multiply By Factor sample workspace shows the effect of using the Multiply By Factor with monthly and daily data, for static and dynamic factors. 1. Open the Multiply By Factor sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative Databases\Multiply By Factor\Multiply By Factor.ofm. 2. This project does not use the Multiply By Factor yet. Create a report that will show how the Multiply By Factor works with monthly data: a. On the Home tab, in the Launch analysis group, click Report. The Edit Report window opens. b. In the Select text box at the top of the window, enter: Date, Monthly_prod.Gas, Monthly_ prod.Oil, Monthly_prod.Water, Static_factor.Rate, Monthly_factor.Rate c. Click OK to close the window and display the report. d. On the Navigation pane, select Well_001. e. Notice the values in the first row: Monthly gas production is 500. Monthly oil production is 1000. Monthly water production is 1000. 3. Apply the Multiply By Factor to see the monthly data using a static factor: a. On the Workspace tab, click Options. The Options window opens. b. On the Multiply By Factor tab, select Enable factor multiplication. The Static and Dynamic selections become available. c. Select Static and then select Static_factor.Rate. d. Click OK to save your selections and close the window. e. Notice that the report displays data that has been multiplied by 0.1 (the factor displayed in the Static_Factor Rate column). Monthly gas production is 50. Monthly oil production is 100. Monthly water production is 100. 4. Remove the Multiply By Factor to see the original values in the report:

246 of 262

User Guides, Tutorials, and Examples

a. On the Workspace tab, click Options. b. On the Multiply By Factor tab, clear the Enable factor multiplication check box. c. Click OK. d. Notice the values in row 37: Monthly gas production is 650. Monthly oil production is 850. Monthly water production is 1250. 5. Change the Multiply By Factor to see the monthly data using a dynamic factor: a. On the Workspace tab, click Options. b. On the Multiply By Factor tab, select Dynamic and then select Monthly_Factor.Rate. c. Click OK to save your changes and close the window. d. Notice that the report displays data that OFM multiplied by the Monthly Factor Rate (displayed in the last column). On row 37: Monthly gas production is 130. Monthly oil production is 170. Monthly water production is 250. 6. You now are finished with the monthly report, and will create a daily report. a. On the Analysis pane, right-click the report you created and then click Rename. b. Type Monthly Report and then press Enter. c. Close the monthly report. d. On the Workspace tab, click Options. e. On the Multiply By Factor tab, clear the Enable factor multiplication check box and then click OK. 7. Create a report that will show how the Multiply By Factor works with daily data: a. On the Home tab, in the Launch analysis group, click Report. The Edit Report window opens. b. In the Select text box at the top of the window, enter: Date, Daily_prod.Gas, Daily_ prod.Water, Daily_prod.Oil, Daily_factor.Rate, Static_factor.Rate c. Click OK to close the window and display the report. d. Notice the values in the report, which are the same in every row: Daily gas production is 20. Daily water production is 30.

247 of 262

User Guides, Tutorials, and Examples

Daily oil production is 30. 8. Apply the Multiply By Factor to see the daily data using a static factor: a. On the Workspace tab, click Options. b. Select the Enable factor multiplication check box. c. Select Static and then select Static_factor.Rate. d. Click OK. e. Notice that the report displays data that OFM multiplied by 0.1 (the static factor rate). Daily gas production is 2. Daily water production is 3. Daily oil production is 3. 9. Change the Multiply By Factor to see the daily data using a dynamic factor: a. On the Workspace tab, click Options. b. Select Dynamic and then select Daily_factor.Rate. c. Click OK. d. Notice that OFM multiplied the values in the report by the daily factor rate (in the Daily_Factor Rate column).

248 of 262

User Guides, Tutorials, and Examples

Sample Workspace: CPS-3 Grid File You can import grid files from CPS-3 (Contour Plotting System) instead of computing the grids within OFM. The OFM installation folder has a sample CPS-3 file. It is with the sample workspaces. Example Grid Map Before Importing the CPS-3 File:

249 of 262

User Guides, Tutorials, and Examples

Example Grid Map After Importing the CPS-3 File:

1. With any grid map open, on the Format tab, in the Utilities group, click Open Analysis > Import CPS. 2. Navigate to the OFM installation folder and select ...Sample Workspaces\Illustrative Databases\CPS File Sample\CPS Sample.grd. 3. Click Open.

250 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Cross Section There are two sample workspaces that show cross sections. The workspaces are identical, except the data for reference depth, surveys, markers, and wellbore diagram equipment are in feet in the English (Imperial) workspace, and they are in meters in the metric workspace. 1. Open the English or metric sample workspace. They are in the OFM installation folder, at ...Sample Workspaces\Illustrative Databases\Cross Sections\Cross Section Illustration - English.ofm or \Cross Section Illustration - Metric.ofm. 2. View the units used for the workspace: a. On the Workspace tab, click Options. b. On the Units tab, if you opened the English project the Use Metric Units check box is cleared. If you opened the Metric project, the check box is selected. 3. On the Analysis pane, double-click the Cross Section analysis to view the graphical display of the cross section, and Log Report to view actual values. 4. Note that there are three completions (1, 2, and 3) and two intervals (A and B).

Measured Completion Depth (MD)

True Vertical

Interval

Interval

Interval

Interval

Reference

Depth

A, Top

A, Bottom B, Top

B, Bottom Depth

(TVD)

1

1000

1000

700

800

900

1000

0

2

2000

1000

1400

1600

1800

2000

500

3

3000

1000

2100

2400

2700

3000

1000

Each well is perforated completely through the A interval and the B interval. The upper set of perfs are abandoned, the bottom set are open. (This doesn't reflect reality, but it shows two different ways of drawing perfs.) 5. When you display the cross section in TVD, all the intervals and wells are the same length. To display it in TVD, on the Property pane change Show True Vertical Depth to Yes. To return to MD, change Show True Vertical Depth to No. 6. When you display the cross section at subsea, the intervals will still be the same length, but they will be at different subsea depths. To display at subsea, on the Property pane change Depth Correction to Sub Sea. 7. You can show a stratigraphic cross section at MD or TVD. On the Property pane change Depth Correction to Stratigraphic. When you do this, you can select which Stratigraphic Marker to view.

251 of 262

User Guides, Tutorials, and Examples

8. You add markers on single or multi-well log displays, but you can show or hide them on the cross section. To do this, on the Format tab, in the Display group, select Left Marker (to display the marker to the left of the well) or Right Marker (to display it to the right of the well). 9. You add perforations to the wellbore diagram, but you can show or hide them on the cross section. On the Property pane, change Show Perfs to Yes or No. 10. Cross sections also can have lithology intervals. This sample workspace has two (Interval A and Interval B). a. On the Format tab, in the Edit group, click Interval. The Edit Interval window opens. It displays the lithology of Interval A, which is sandstone. b. On the Name field, select B. The Lithology displays. It is Limestone. c. Click Close to close the window. d. To show or hide the lithology intervals, on the Property pane change Show Litho Intervals to Yes or No.

252 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Defining a Workspace with PI/Dwights Production Files In the OFM installation folder are PI/Dwights production files you can use to create a sample workspace. 1. On the Workspace tab, click New. The New OFM Workspace window opens. 2. In the How do you want to define your project group, select Create it from the data source specified below. 3. In the Data Source field, select PI/Dwights DMP2 Production file. 4. On the Workspace File field, click Browse (...) and navigate to the correct location for your new sample workspace. 5. In the File name field, enter the name of your new project and then click OK. The Workspace File and Database fields populate. By default, OFM gives the workspace and database files the same name and location. 6. Select Prompt for Project Filter to limit the number of completions used during an OFM session. 7. Click OK. The PI/Dwights Production File Loader window opens. 8. Navigate to the sample PI Dwights files. They are in the OFM installation folder, at ...Sample Workspaces\PI Dwights Sample Files. 9. Select etx_dmp2.dp2 file and then click Open. The PI/D Import wizard opens. This panel has five panels. 10. Complete each panel of the wizard as follows, and click next to advance to the next panel: a. Choose how OFM creates well names. Select Prod ID and then click Next. b. Select the wells. By default, OFM selects all wells. Click Next. c. Select the information for sort categories. Click Next. d. Select well test items. Gas tests is selected. Click Next. e. Select the monthly production/injection data. f. Click Finish. The new workspace opens. You now are ready to add the other PI/Dwights production files. 11. On the Setup tab, in the Import/Export group, click Import > Data Loader. 12. In the top section, double-click each of the PI/Dwights sample files except etx_dmp2.dp2 and vssver.scc. 13. Click Load.

253 of 262

User Guides, Tutorials, and Examples

A warning message confirms your choice. 14. On the warning message, click OK.

254 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Multiple Projects An OFM workspace can have links that open other OFM workspaces. 1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Multiple Project Sample\Multiple Project Sample.ofm. 2. Notice that the base map shows three items that look like completions but are actually links that open three different workspaces: n

BFIELD WATERFLOOD

n

DUSON GAS FIELD

n

DEMO OIL FIELD

3. Use the links to open other workspaces: a. On the base map, click BField Waterflood, right-click, and then click To Project. The base map changes. You are now in the Pilot Waterflood Bfield.ofm workspace. The workspace name displays at the top of the OFM window. b. On the base map, right-click and then click Previous Project. The base map changes. You are now in the Multiple Project Sample.ofm workspace. c. On the base map, click Duson Gas Field, right-click, and then click To Project. You are now in the Duson Gas Field.ofm workspace. d. On the base map, right-click and then click Previous Project to return to the original workspace. 4. View the table that holds the links to the other workspaces: a. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. b. Select the XY table and then click OK. The XY table opens. c. Notice that the table has a column named FIELD that lists the three items displayed on the base map as completions. For each item, the LOCATION column has a relative path to OFM projects. BFIELD_WATERFLOOD is at ...\Pilot Waterflood Sample\Pilot Waterflood Bfield.ofm. DEMO_OIL _FIELD is at ...\Demo Database\Demo2009.ofm. DUSON_GAS_FIELD is at ...\Duson Gas Field Sample\Duson Gas Field.ofm. 5. With this information in the XY table, the workspace can have an association to it. a. On the Setup tab, in the Tables group, click Association. The Associations window opens.

255 of 262

User Guides, Tutorials, and Examples

b. Notice that in the Project field, it is associated with the LOCATION field on the XY table (XY.LOCATION). c. Click OK to close the Associations window.

256 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Normalization There is a sample workspace that shows normalization. The database for the sample consists of simple monthly data. You can use the normalization feature to shift monthly or daily data in time-based, userdefined criteria. You can shift production, test, or daily production data forward or backward in time to compare well or group performance. Before Normalization:

After Normalization

257 of 262

User Guides, Tutorials, and Examples

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative Databases\Normalization\Normalization.ofm. 2. If OFM does not list a plot in the Analysis pane, create a plot: a. On the Home tab, in the Launch analysis group, click Plot. The Edit Plot window opens. You will add three rows to the table in the middle of the window. b. On the first row, make these selections: Variables: Monthly_prod.Oil Category: Completion Name: Well_001 c. Click Add Curve to add a second row. d. On the second row, make these selections: Variables: Monthly_prod.Oil Category: Completion Name: Well_002 e. Click Add Curve to add a third row. f. On the third row, make these selections: Variables: Monthly_prod.Oil Category: Completion Name: Well_003 g. Click OK to close the window and display the plot. The plot shows the three wells. Each well starts and ends on a different date. 3. Normalize (time-shift) the tables: a. On the Workspace tab, click Options. The Options window opens. b. On the Normalize Tables tab, select Enable Normalize Tables. c. In the Starting Condition field, select InitialProdMonth. d. For Date Option, select Earliest or Latest. e. Click OK to close the Options window and see the normalized plot. The date option affects the date to which production for all of the wells is shifted.

258 of 262

User Guides, Tutorials, and Examples

Sample Workspace: Stacked Plots There is a sample workspace that shows the effect of stacking sporadic data with the carry forward and interpolate methods, using the sum, average, and percent contribution displays. 1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative Databases\Stacked Graphs\Stacked Graph Illustration.ofm. 2. This workspace has two completions with sporadic data in a table named Prod. View this table: a. On the Setup tab, in the Tables group, click Data Grid. The Select OFM Table to Edit window opens. b. Select Prod. c. Select the Edit all records check box. d. Click OK. The Prod table opens and displays this sporadic data: UniqueID

Date

Val2

Val1

one

01/01/1990

1

1

one

01/01/1991

3

3

one

01/01/1992

5

5

one

01/01/1993

7

7

two

01/01/1990

2

2

two

01/01/1991

4

4

two

01/01/1991

6

6

two

01/01/1993

8

8

e. Close the table. 3.

There are four plots with this workspace. Add them to the workspace:

a. On the Analysis pane, right-click My Analysis and then click Open > Plot. b. In the OFM installation folder that has this workspace, select the four .grf files and then click OK. Four plots open and OFM adds them to the workspace. Stacked plots are not difficult to make when data is nicely columnar. When data is sporadic, the task needs more effort. Yet in OFM, we often want to plot sporadic data for more than one well. For example, we might want to plot oil rate versus gas rate for a series of wells. Each of these curves are easy to make independently. If you stacked this data in Excel, you would get a series of filled-in jagged lines, unless you did some manipulation to put the data into columns. OFM does that manipulation for you. OFM starts with the first curve in the list. It then compares the X values in the next curve with those in the first. If the X values match exactly, the stacked value is simply the sum of the first

259 of 262

User Guides, Tutorials, and Examples

and second curve. If it doesn't, there are two choices. OFM will either carry forward the last value of the first curve, or it will interpolate between values in the first curve that bound the X value in the second curve. Carry forward allows the first curve's value to be carried forward even if the data in the second curve falls beyond that of the first curve; interpolate doesn't do that. 4. View the Regular, Stacked, Percent Contribution plot. Each graph on this plot has Date for the X-axis and shows Prod.Val1 and Prod.Val2 on the Y-axis. a. Click the upper graph. This is a regular display. On the Format tab, in the Display group, the Regular button is selected. b. Click the middle graph. This is a stacked display. On the Format tab, in the Display group, the Stacked button is selected. c. Click Regular to see the stacked display change to a regular display, and then click Stacked again to return to the original display. d. Click the curve in the middle graph. e. On the Property pane, under Axis, the Method is Interpolation. When the Interpolation method is selected for a stacked plot and a discrete data point is missing, OFM linearly interpolates a value between the data points on either side of the missing value. f. Click the lower graph. This is a percent contribution display. On the Format tab, in the Display group, the Percent button is selected. Interpolated plots might be the best choice when you are stacking instantaneous data, such as rates. In this case, you might be able to assume that the rate between two points is the average of the rate that came before and the rate that came after. You could use carry forward plots for stacking volumes, especially if you want cumulative graphs, since with carry forward each curve's last point is carried forward to the end, to be included in the total. 5. View the Carryforward with Sum and Average plot. Each graph on this plot has Prod.Val1 for the X-axis and shows Prod.Val2 on the Y-axis. a. Click the upper graph. This is a regular display. On the Format tab, in the Display group, the Regular button is selected. b. Click the green curve. c. On the Property pane, under Curve Properties, Step line between values is set to Yes. Change it to No to see the graph without steps, and then change it back to Yes. d. The middle graph uses the carry forward method in a sum display. The lower graph uses the carry forward method in an average display. When the carry forward method is used in sum or

260 of 262

User Guides, Tutorials, and Examples

average displays, OFM carries the value of the last discrete data point on the curve that is being summed or averaged to the end of the data set. 6. View the Interpolate with Sum and Average plot. Like the previous plot, each graph on this plot has Prod.Val1 for the X-axis, and shows Prod.Val2 on the Y-axis. For interpolated plots in a sum or average display, OFM does not interpolate beyond the last discrete data point for a curve in the data set. 7. View the Stacked with Interpolate and Carryforward plot. Like the previous two plots, each graph on this plot has Prod.Val1 for the X-axis and shows Prod.Val2 on the Y-axis. With a stacked display: n

If the method is interpolation and a discrete data point is missing (as shown in the middle graph), OFM linearly interpolates a value between the data points on either side of the missing value.

n

If the method is carry forward and a discrete data point is missing (as shown in the lower graph), OFM carries the current value until it encounters the next discrete data point.

8. To see how OFM performs the calculations, there is a spreadsheet in the OFM installation folder, at ...Sample Workspaces\Illustrative Databases\Stacked Graphics\InterpolateAndCarryforwardCalculations.xls.

261 of 262

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF