userguides tutorials examples ofm 2014

262
User Guides, Tutorials, and Examples

Upload: omar-santamaria-castillo

Post on 16-Jan-2016

1.400 views

Category:

Documents


361 download

DESCRIPTION

User Guides Tutorials Examples OFM 2014

TRANSCRIPT

Page 1: UserGuides Tutorials Examples OFM 2014

User Guides, Tutorials, and Examples

Page 2: UserGuides Tutorials Examples OFM 2014

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 aninformation 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 servicesdescribed herein are either trademarks, trade names or service marks of Schlumberger and its licensors, or are theproperty of their respective owners. These marks may not be copied, imitated or used, in whole or in part, without theexpress prior written permission of Schlumberger. In addition, covers, page headers, custom graphics, icons, and otherdesign 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: USARelease Date: August 2014

1 of 262

User Guides, Tutorials, and Examples

Page 3: UserGuides Tutorials Examples OFM 2014

User GuidesFor your convenience, the topics in this help system are available as .pdf files. Right-click any of thefollowing 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

Page 4: UserGuides Tutorials Examples OFM 2014

l Wellbore Diagrams

l Creating Calculations

l System Functions

l References

3 of 262

User Guides, Tutorials, and Examples

Page 5: UserGuides Tutorials Examples OFM 2014

User GuidesFor your convenience, the topics in this help system are available as .pdf files. Right-click any of thefollowing 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

Page 6: UserGuides Tutorials Examples OFM 2014

l Wellbore Diagrams

l Creating Calculations

l System Functions

l References

5 of 262

User Guides, Tutorials, and Examples

Page 7: UserGuides Tutorials Examples OFM 2014

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

Creating an After-Before-Compare PlotIn this video, we create a scatter plot that uses well test production data from two dates, and comparesperformance between those dates. We will: Review existing calculated variables; report the monthly oilrate; find the monthly oil rate from three-months previous; find the change in oil rate; find the change inwater 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 ProductionIn this video, we create a series of calculated variables to create a report showing the best three months ofproduction. We will: Find the maximum, second-best, and third-best monthly oil production; find thecorresponding dates; and display the information in a report.

n Watch in English

n Watch in Russian

n Watch in Spanish

Creating CustomizedWell SymbolsIn this video, we create two new well symbols and use them in a project. We will review how well symbolswork, create new well symbols, andmake the new associations.

n Watch in English

n Watch in Russian

n Watch in Spanish

6 of 262

User Guides, Tutorials, and Examples

Page 8: UserGuides Tutorials Examples OFM 2014

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

n Patterns

n Plots:

n Creating and Editing Plots

n Audit Plot Tutorial

n Reports:

n Date-Based Report

n Summary Report

n Display Logs:

n Single-Well Log Display

n Multi-Well Log Display

n Log Cross-Section

n PVT

n Forecasts:

n Single Phase Analysis

n Ratio Analysis

n Pressure/Z-Factor (P/Z) Analysis

n Flow After Flow Test

n Well Deliverability Analysis (WDA)

n 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

Page 9: UserGuides Tutorials Examples OFM 2014

Tutorial: PatternsYou can configure waterflood patterns by assigning completions to a pattern and allocating production andinjection 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 eachcompletion's production or injection to the block of reservoir beneath the pattern. When you do this, youcan 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 thecompletions for each pattern individually.

n Edit patterns: After you create patterns, you can change the pattern allocation factors or dates. Inthis 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 allpatterns visible.

n Confirm the pattern allocation factors: No single well should have allocation factors summing tomore 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 variablesare affected by pattern allocation factors, andwhich are not. The factors should only affect volumes.Pressures, depths, porosities, choke sizes, hours on production, or any other non-volume variableshould not be affected.

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

8 of 262

User Guides, Tutorials, and Examples

Page 10: UserGuides Tutorials Examples OFM 2014

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

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

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

Creating Patterns InteractivelyEach pattern has several completions. In this section, you select the completions for each patternindividually.

Note: Before you start, you may want to print a large map of your area andmanually draw the patternoutlines 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 (markedwith bluesymbols).

With this waterflood, you could create patterns with a regular layout or in an inverted layout. Youwill set up regular patterns.

Regular layout: Inverted layout:

3. On the Property pane, underWell Name Properties, change theWell Name toAlias Name.

4. On the base map, press Ctrl and click wells 491, 492, 495, 498, and502.

5. Release the Ctrl key.The Edit Patternswindow opens.

9 of 262

User Guides, Tutorials, and Examples

Page 11: UserGuides Tutorials Examples OFM 2014

n The left pane lists patterns. OFM lists the pattern you created with a default name (P-0). Thedate (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 sectionof the tutorial.

6. ClickOK to close the Edit Patternswindow.

7. On the base map, press Ctrl and select another five wells to create another pattern.

8. Release the Ctrl key.The Edit Patternswindow opens. OFM lists the pattern you created with a default name (P-1) andthe default starting date for the pattern. The wells you selected are listed on the right pane.

9. ClickOK to close the Edit Patternswindow.

Editing PatternsAfter you create patterns, you can change the pattern allocation factors or dates. In this section, you editthe patterns that you created. There are two ways to change the pattern data. You can change onepattern 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 theWorkspace Managers group, click Patterns.The Edit Patternswindow opens. Notice that you can navigate to the pattern you want to edit,by expanding the pattern folder in the left pane.

b. ClickOK to close the Edit Patternswindow.

2. Now you will change the pattern data with all sets and all patterns visible. On the Setup tab, in theTables group, clickData Grid.The Select OFM Table to Editwindow opens.

3. Select the Pattern table and then clickOK.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 ofthe 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.PressDelete.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

Page 12: UserGuides Tutorials Examples OFM 2014

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 bethe first date of production or injection. The default date (January 1900)means the allocationfactors 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 differentpattern.

n Loss: This is the injectant loss factor. For example, a loss of 0.2 implies that 20% of waterinjected 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, youcan choose to set a lower Factor.

9. Since no single well should be allocatedmore than 100%, a simple way to set geometric allocationfactors is to sort the table by well. Double-click theWell 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 FactorsNo single well should have allocation factors summing tomore than one. In this section, you create areport to confirm this.

1. On theHome tab, in the Launch analysis group, click Report.The Edit Reportwindow opens.

2. In the Select box, enter the following: @PatCurSet( ), @PatWell( ), @PatName( ), @PatDate(

), @PatFact( ), @PatLoss( )

3. ClickOK.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 toYes.

6. On the report, click in the@PatFact() column.

11 of 262

User Guides, Tutorials, and Examples

Page 13: UserGuides Tutorials Examples OFM 2014

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 FactorsIn this section, you choose which variables are affected by pattern allocation factors, andwhich are not.The factors should only affect volumes. Pressures, depths, porosities, choke sizes, hours on production, orany other non-volume variable should not be affected.

1. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens. In this project, only the PRD andWIN tables storevolumes.

2. Make sure the OIL, GAS, andWATER variables in the PRD table are set for Multiply by Factor becausethese store volumes.

a. On the left pane, expand the PRD table and then click theOIL variable.

b. On the right, view theMath tab.

c. In theGrouping Options section, make sureMultiply by Factor is selected.

d. On the PRD table, select theGAS variable.

e. On theMath tab, make sureMultiply by Factor is selected.

f. On the PRD table, select theWATER variable.

g. On theMath tab, make sureMultiply 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 theMath tab, in the Grouping Options section, make sure theMultiply by Factor checkbox is clear.

c. On the PRD table, select theDAYS variable.

d. On theMath tab, make sure the Multiply by Factor check box is clear.

e. On the PRD table, select the PRESS variable.

f. On theMath tab, make sure the check box is clear.

4. On the left pane, expand theWIN table andmake sure that the variables that store volumes are setto Multiply by Factor. Make sure that all other variables are not set to Multiply by Factor.

5. Make sure that all numeric variables in theMASTER, PVT, andRESPROP tables are not set toMultiply by Factor.

6. ClickOK to save your changes and close the Edit Schema Tableswindow.

12 of 262

User Guides, Tutorials, and Examples

Page 14: UserGuides Tutorials Examples OFM 2014

Viewing Pattern Results One at a TimeIn this section, you use patterns and see the effect of the pattern allocation factors that you supplied. Youcan use patterns by filtering or by stepping though (on theNavigation pane). You can see the resultsmost easily in plots or reports. You will create a report that shows the results of pattern allocation factors.

1. On theHome tab, in the Launch analysis group, click Report.The Edit Reportwindow opens.

2. In the Select box, enter the following: Date, Win.Winj

3. ClickOK.A report opens. An empty report opens with columns for the date andwater injection.

4. On the Format tab, in the Edit group, clickDate & Sort.The Edit Report Attributeswindow opens.

5. Select At Last Date and then clickOK.

6. Use patterns for filtering:

a. On the Filter pane, click Clear Filter (  ).

b. On the Filter pane, expandCategory, 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. ClickGroup (  ) to view the total pattern results.

The report populates with one row.

7. Compare the difference with andwithout 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 aroundthe pattern waterflood area in the north.

d. On the Filter pane, clickGroup (  ).

e. View the report.The report populates with one row. The water injection value represents the unallocated total ofall five wells, so it is a larger value than before.

8. Step by patterns:

a. On the Filter pane, click Clear Filter (     ).

b. On theNavigation pane, on the field at the top, change the step to PATTERN: Tutorial.

c. On theNavigation 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

Page 15: UserGuides Tutorials Examples OFM 2014

Comparing Multiple Patterns on a PlotIn this section, you create a plot that compares multiple patterns, applying pattern allocation factors.

1. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

2. Below the main area of the window, click the Add Multiple Curves button.The Add Multiple Curveswindow opens.

3. On the Category field, select Tutorial.

4. On the Variable field, selectWin.Winj.

5. ClickOK to close Add Multiple Curveswindow.

6. On the Edit Plotwindow, clickOK to create the plot.

Creating Patterns from an ASCII FileIf you have determined the allocation factors already and it is in a document or spreadsheet, you canreformat 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 wellsfrom a pattern as new patterns are created. In this section, you add patterns to the project by loading aformatted 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 "P-0"

*Date 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 "P-1"

*Date 19000101

"492WI:B" 0.500000 0.000000

"493WI:B" 0.500000 0.000000

14 of 262

User Guides, Tutorials, and Examples

Page 16: UserGuides Tutorials Examples OFM 2014

"496:B" 1.000000 0.000000

"502WI:B" 0.500000 0.000000

"503WI:B" 0.500000 0.000000

*Pattern "P-2"

*Date 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 awell from a pattern at a specific date, change either the pattern allocation factor to zero, or setthe 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.TheOFM 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 warningmessage confirms your choice.

8. On the warningmessage, clickOK.The new patterns are loaded into your project. On theNavigation pane, OFM lists them with theother patterns. OFM also lists them on the Edit Patternswindow. (To see this window, on theSetup tab, in theWorkspace Managers group, click Patterns.)

15 of 262

User Guides, Tutorials, and Examples

Page 17: UserGuides Tutorials Examples OFM 2014

Tutorial: PVTFor reservoir engineering, you must convert surface oil and gas production volumes to downhole orreservoir volumes. With those values, the reservoir engineer monitors the performance of the reservoirrelative to the overall depletion strategy. Fluid properties change as reservoir conditions (especiallypressure) change. The PVTmodule has many industry-accepted correlations that you can use to calculatean 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 twoseparate fluid compartments, named Region_A and Region_B. So, you must define the fluid for eachof these compartments. You can create two PVT entities.

2. Map completions to their PVT entity: In this section of the tutorial, you mark which completionproduces from Region_A, andwhich 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 isOK. 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 agroup of system functions in that relate directly to the PVT functionality. It is OK to call thesefunctions directly in your eventual calculation, but to make the feature more visible you can create acalculated 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 FluidIn this tutorial, you configure your project to produce from two separate fluid compartments, namedRegion_A and

1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

2. On the Setup tab, in theWorkspace Managers group, click PVT.The PVT Entity Name window opens. One entity is listed, namedDefault. You cannot rename ordelete 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 clickOK.The Edit PVT Information window opens for Region_A.

5. On theOil 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

Page 18: UserGuides Tutorials Examples OFM 2014

is controlled by a separate correlation choice on theOil Correlations tab. Therefore, for thistutorial, you need do nothing on this tab.

7. ClickOK.

8. On the PVT Entity Name window, create a second fluid compartment: Click Add.

9. Enter Region_B as the name and then clickOK.

10. On the Oil Correlations tab, for the Formation Volume Factor, Bo correlation, select Vasquezand Beggs.

11. ClickOK.

12. Click Close.

13. On theWorkspace tab, click Save to save your work.

Mapping Completions to their PVT EntityIn this section of the tutorial, you mark which completion produces from Region_A, andwhich completionproduces from Region_B. This is generally time-independent information, and so it can be included in astatic table. Any static table in the project is OK. You will use the master table to create a column in whichthis information will reside.

1. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens.

2. On the left side of the window, select theHEADERID 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 ofAvailable Fields.

7. ClickOK.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 Editwindow opens.

10. Select HEADERID.

11. Select Edit All Records.

12. ClickOK.

13. In the PVT_Region column (on the far right), enter the following information:

17 of 262

User Guides, Tutorials, and Examples

Page 19: UserGuides Tutorials Examples OFM 2014

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 theHEADERID: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 correlationdata 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. ClickOK.You have fully mapped the two PVT regions to the project.

18. On theWorkspace tab, click Save to save your work.

Using PVT System FunctionsTo use the fluid correlation calculations in your work, you can use of a group of system functions in thatrelate 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 theFormation Volume Factor.

1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.The Calculated Variableswindow 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 systemfunctions button and scrolling to the section beginningPvt. Most of the @Pvt system functions requirepressure 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. ClickOK.The new calculated variable displays as the last item on the list. By default, OFM names it NewItem.

5. In theName column, delete the nameNewItem 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. ClickOK.

9. On theWorkspace tab, click Save to save your work.

18 of 262

User Guides, Tutorials, and Examples

Page 20: UserGuides Tutorials Examples OFM 2014

Calculating Reservoir Oil VolumeIn 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. ClickOK.The new calculated variable displays as the last item on the list. By default, OFM names it NewItem.

5. In theName column, delete the nameNewItem 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 completionsin the project. See how the FVF value changes when selecting completions from the two different PVTregions.

7. On theWorkspace tab, click Save to save your work.

19 of 262

User Guides, Tutorials, and Examples

Page 21: UserGuides Tutorials Examples OFM 2014

Tutorial: Creating and Editing PlotsYou can create plots to display information graphically. OFM produces plots from stored data or fromcalculated 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 time-dependent display of monthly oil and gas production for a selected completion. In this section of thetutorial, 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 thissection of the tutorial, you add graphs to a plot. You will prepare the following graphs: Oil versusTime, Oil versus Cum Oil, Water Cut versus Time, andWater Cut versus Cum Water. All the graphsdo 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 theperformance of several entities is to display their data on the same plot. In this section, you displaydata for a single variable for multiple completions.

5. Edit plot headers: Headers are titles or labels that display on the plot. Headers display informationabout the entity you select. In this section, you place a simple text title at the top of the plot. Belowthe text title, you place a title that displays the name of the completion. The title changes as theselected entity (in this case, the selected completion) changes.

6. Use categories to display different levels of information: You can configure plots to display data atmore than one level. In this section, you use categories in the plots to compare the performance ofan 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 notthe data) to an external file as a template. With the template, you can share the featureswith acolleague while keeping the data confidential. Your colleague can import the template (a .grf file) intotheir project, and their plot will have the same structure as the original, plotting the same variablenames but applied to the set of wells in their project.

8. Import a plot template

Creating a Plot that Displays Data for a Single CompletionThe simplest form of a line plot is a time-dependent display of monthly oil and gas production for a selectedcompletion. In this section of the tutorial, you create one.

1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

2. On theNavigation pane, select the Blue_1:He_0 completion.

20 of 262

User Guides, Tutorials, and Examples

Page 22: UserGuides Tutorials Examples OFM 2014

3. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

4. Notice the X-Axis Variable is set toDate by default.

5. In the table, click the first cell in the Variables column and then selectMonthlyprod.Oil.

6. Click Add Curve.OFM adds a new row.

7. Click the new cell in the Variables column and then selectMonthlyprod.Gas.

8. ClickOK.The plot (with default features) opens.

9. On theWorkspace tab, click Save to save your work.

Extending a Plot to Multiple Y-AxesYou 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 Y-axis,on the Format tab, in the Edit group, click Variables.The Edit Plotwindow 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. ClickOK.By default, the second Y-axis is on the right side of the graph. You can adjust the attributes of thisaxis (for example, linear scale, maximum andminimum values, and so on) by selecting the axis andthen making changes on the Property pane, under Axis.

6. On theWorkspace 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 onthe left side.

Extending a Plot to Multiple GraphsYou can create up to six graphs in any single OFM plot. In this section of the tutorial, you add graphs to aplot. You will prepare the following graphs: Oil versus Time, Oil versus Cum Oil, Water Cut versus Time, andWater Cut versus Cum Water. All the graphs do not have to use the same X-axis variable.

1. Create a new plot: On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

2. On the right, in theGraph group, set theNumber of Graphs to 4.

21 of 262

User Guides, Tutorials, and Examples

Page 23: UserGuides Tutorials Examples OFM 2014

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

4. First, work with Graph 1:

a. In theGraph group (on the right) set the Current Graph to GRAPH 1.

b. In the X-Axis group (at the top), leaveDate as the X-axis variable.

c. Click the cell on the first row, in the Variables column, and then selectMonthlyprod.Oil asthe Y-axis variable.

5. Next, work with Graph 2:

a. In theGraph 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 selectMonthlyprod.Oil as theY-axis variable.

6. Then, work with Graph 3:

a. In theGraph 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 selectWater.Cut as the Y-axis variable.

7. And last, work with Graph 4:

a. In theGraph group, change the Current Graph to GRAPH 4.

b. In the X-Axis group, set the X-axis variable toWater.Cum.

22 of 262

User Guides, Tutorials, and Examples

Page 24: UserGuides Tutorials Examples OFM 2014

c. Click the cell on the first row, in the Variables column, and then selectWater.Cut as the Y-axis variable.

8. ClickOK.Notice the layout of the plot. Usually, you will want to set the X-axis variables on the second andfourth 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 toadjust.

10. On the Property pane, under Axis, expandScale.

11. Set Scale Type to Linear.

12. On theWorkspace tab, click Save to save your work.

Creating a Plot Displaying Data for a Single Variable for MultipleCompletionsOne way to compare the performance of several entities is to display their data on the same plot. In thissection, you display data for a single variable for multiple completions.

1. Create a new plot: On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

2. On the X-Axis Variable field, select Date.

3. Click Add Multiple Curves.The Add Multiple Curveswindow 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 allcompletions. SelectMonthlyprod.Oil.

Note: If your current filter contains more than 50 entities, you will receive a message asking if you want toadd the curves to your plot. Click Yes.

6. On the Edit Plotwindow, click OK to display the plot.The plot displays monthly oil production for the entities.

7. On theWorkspace tab, click Save to save your work.

Editing Plot HeadersHeaders 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 thatdisplays the name of the completion. The title changes as the selected entity (in this case, the selectedcompletion) changes.

23 of 262

User Guides, Tutorials, and Examples

Page 25: UserGuides Tutorials Examples OFM 2014

1. With your plot open, on the Format tab, in the Edit group, clickHeader.TheHeaderswindow 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 mustuse 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 mustinclude the space immediately after the word completion for proper spacing.

6. ClickOK.The headers display on the plot.

7. (Optional) Drag the header to a new location on the plot.

8. On theNavigation pane, select other completions to see how the dynamic portion of the headerchanges.

9. On theWorkspace tab, click Save to save your work.

Using Categories to Display Different Levels of InformationYou can configure plots to display data at more than one level. In this section, you use categories in theplots to compare the performance of an individual completion with the performance of the reservoir fromwhich it produces.

1. Create a new plot: On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

2. On the X-Axis Variable field, select Date.

3. Click the cell on the first row, in the Variables column, and then selectMonthlyprod.Oil.Observe the entries in the next two columns:Category is set to Current, andName is set tocorrespond to the entity (in other words, completion) you currently have selected on theNavigation pane.

4. Click Add Curve.OFM adds a new row.

5. Click the cell on the new row, in the Variables column, and then selectMonthlyprod.Oil again.

6. In the Category column for the second row, change the category toReservoir.By default, the entry in theName column is CURRENT. Usually, this is the name you will want, butit is possible to use this column to specify that this curve will be for one particular reservoir.

7. ClickOK.

8. On theNavigation pane, select other completions in your project to see how the plot changes:

24 of 262

User Guides, Tutorials, and Examples

Page 26: UserGuides Tutorials Examples OFM 2014

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 completionbelongs.

9. On theWorkspace tab, click Save to save your work.

Exporting a Plot TemplateAfter you have prepared a plot, you can save the features of the plot (but not the data) to an external fileas a template. With the template, you can share the featureswith a colleague while keeping the dataconfidential. Your colleague can import the template (a .grf file) into their project, and their plot will havethe same structure as the original, plotting the same variable names but applied to the set of wells in theirproject.

Note: The template will only be applicable to an OFM project which uses the same variable names as theoriginal project from which it was created.

1. On the Format tab, in theUtilities 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 Template1. Create a new plot: On theHome tab, in the Launch analysis group, click Plot.

The Edit Plotwindow opens.

2. Do not make any changes. ClickOK.An empty plot opens.

3. On the Format tab, in theUtilities group, clickOpen Analysis.

4. In the OFM application directory, select ...\Sample Workspaces\Demo Database\FormatFiles\prod1.grf, and then clickOpen.

5. On theNavigation pane, select a new completion.The plot format will look similar to the following:

25 of 262

User Guides, Tutorials, and Examples

Page 27: UserGuides Tutorials Examples OFM 2014

6. On theWorkspace tab, click Save to save your work.

26 of 262

User Guides, Tutorials, and Examples

Page 28: UserGuides Tutorials Examples OFM 2014

Tutorial: Auditing PlotsYou can further increase your analysis of plots with the trace, compute line, flag, tabular report, and auto-print 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. Themarked point remains visible while you scroll through other entities in the project. In this way, youcan 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 aregion you define on your plot. Like the trace point feature, you can lock this line to compare thecurve it represents with other entities.

3. Print (Auto Print) the plot: There are two ways to print. If you use the normal printingmethod, OFMprints the plot for the currently-selected entity. If you use Auto Print, you can print or save asgraphic 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 studyfurther one or more completions. You can mark (or, flag) completions and later you can return to theflagged 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 StartedFor this tutorial, you need a plot. If you have already created plots while doing the "Creating and EditingPlots" tutorial, you can use one of those. If you have not completed that tutorial, follow these steps tocreate a quick plot:

1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

3. Notice that OFM sets the X-Axis Variable toDate by default.

4. In the table, click the first cell in the Variables column and then selectMonthlyprod.Oil.

5. Click Add Curve.OFM adds a new row.

6. Click the new cell in the Variables column and then selectMonthlyprod.Gas.

7. ClickOK.The plot opens.

8. On theWorkspace tab, click Save Workspace to save your work.

27 of 262

User Guides, Tutorials, and Examples

Page 29: UserGuides Tutorials Examples OFM 2014

Using the Trace a Plot UtilityUse this utility to mark or digitize a point anywhere on the plot. The marked point remains visible while youscroll 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 (forexample,B, C, and so on).

1. With the plot open, on theNavigation 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 thisevent while viewing other completions in the project.

2. On the Format tab, in theUtilities group, click Trace Plot.

3. Click one time at the point where there is a spike in production.

4. On the Format tab, in theDisplay 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 (forexample,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 theplot for Blue_5:Li_1C.

Note: To change the color, shape, and size of the mark symbol, on the Format tab, in theUtilities group,click Trace/line Attributes. To remove the mark and disable the utility, in theDisplay group, clear theLock Trace check box.

6. On theWorkspace tab, click Save to save your work.

28 of 262

User Guides, Tutorials, and Examples

Page 30: UserGuides Tutorials Examples OFM 2014

Using the Compute Line UtilityWith OFM, you can find the equation of a straight line fit through a region you define on your plot. Like thetrace point feature, you can lock this line to compare the curve it represents with other entities.

1. On theNavigation 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 wantto adjust.

b. On the Property pane, under Axis, expandScale.

c. Set Scale Type to Logarithmic.

There is a strong decline period in oil production from 1973 to 1978. (See marked region ingraphic). You want to watch this decline while viewing other completions in the project.

29 of 262

User Guides, Tutorials, and Examples

Page 31: UserGuides Tutorials Examples OFM 2014

3. On the Format tab, in theUtilities 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 relevantequation of the line will be similar to the following:

5. On the Format tab, in theUtilities group, click Lock Line.OFM freezes the line.

6. On theNavigation pane, select another completion with a production history coincident with theprevious 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 theUtilities group, clickTrace/line Attributes. To remove the mark and disable the utility, clear the Lock Line check box.

7. On theWorkspace tab, click Save to save your work.

Printing (Auto Print) Plot ViewsThere are two ways to print. If you use the normal printingmethod, 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 forall completions in the current filter.

1. On theWorkspace 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 multiplefiles, select a naming scheme for the output files, and then click Print.

Flagging a CompletionWhile viewing plots for each completion in your project, you may want to study further one or morecompletions. You can mark (or, flag) completions and later you can return to the flagged completions as aseparate collection.

1. When you see a plot that requires further investigation, on theHome tab, select Flag well.

2. When you finish reviewing the plots and you want to study the flagged completions, on the Filterpane, click Filter by Completion ( ).

The Filter by Completion window opens.

3. Click Select Flagged.

4. ClickOK.

30 of 262

User Guides, Tutorials, and Examples

Page 32: UserGuides Tutorials Examples OFM 2014

The Filter pane now shows that your Current Filter contains only the flagged completions.

5. On theWorkspace tab, click Save to save your work.

Sending a Plot to a Tabular ReportYou can transform the display of data from a graphical format (a plot) to a tabular format (a report).

1. On the Format tab, in theUtilities 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 theWorkspace tab, click Save to save your work.

31 of 262

User Guides, Tutorials, and Examples

Page 33: UserGuides Tutorials Examples OFM 2014

Tutorial: Bubble MapYou can create bubble maps to visualize one or more variables in a map view. The bubble map displays datafor the completions in the current filter, and you can reuse it for different sets of completions within theOFM 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 ofthe 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, andthe size of the color scale legend on the display area. In this section of the tutorial, you change thecolor 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 createheaders for the base map, reports, and analytical maps. You can customize the display format ofeach 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. Thisis 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 datarepresented in your bubble map. This is most applicable if you are mapping from a .csv file. When youare mapping data already in the database, there is no need to store it back into the database via amap snapshot. See "Saving and LoadingMap Results as a .Csv File" and "Creating a Map Snapshot"for more information.

10. Save the bubble map file

Creating a Bubble Map1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Bubble.The Create Bubble Mapwindow opens.

3. Select the project variable you want to map (for example, Gas.Cum), and then click .

4. ClickNext.

32 of 262

User Guides, Tutorials, and Examples

Page 34: UserGuides Tutorials Examples OFM 2014

5. Select the category by which you want to group data. In this example, use the default selection(Completion).

6. (Optional) Enter aWhere clause to filter the data.

7. ClickNext.

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 projectdatabase.

9. Select the method you want to use to sample data in theData Sampling Frequency field.If left at as the default, OFM uses the data frequency (that is, monthly data will produce a bubblemap every month, and daily data will produce a bubble map every day).

10. Click Finish.The bubble map opens.

11. On theWorkspace tab, click Save to save your work.

Changing the Bubble Color and ShapeYou can set the shape and color of the bubbles. In this section of the tutorial, you change the shape anddefault color of the bubble.

1. You set the color and shape on the Property pane. UnderData, view the Attributes section.

2. ExpandPlot Attributes and then expandMethod andShape.

3. LeaveDisplay set to the default of Circle.

4. Set Color toDarkGreen.If you set the Vary Color field to Yes (the default), Color Scale dictates the color of the bubblesrather than this color setting. You will work with the Color Scale property in the next section.

5. On theWorkspace tab, click Save to save your work.

Changing Color Scale PropertiesYou can set the color spectrum, the number of colors displayed, and the size of the color scale legend onthe display area. In this section of the tutorial, you change the color scale properties.

1. On the Property pane, under Properties, expandColor Scale.

2. Set Style toVertical.On the bubble map, the legend changes appearance. If you mapmore than one variable, you mustuse theHorizontal Style.

3. Set Spectrum toRainbow.

4. Set Color to 6.OFM reduces the color scale to six colors.

5. On theWorkspace tab, click Save to save your work.

33 of 262

User Guides, Tutorials, and Examples

Page 35: UserGuides Tutorials Examples OFM 2014

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

Adding a Header to the Bubble MapIn this section of the tutorial, you edit the headers. You can create headers for the base map, reports, andanalytical maps. You can customize the display format of each line.

1. On the Format tab, in the Edit group, clickHeader.TheHeaderswindow 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, youmust use quotation marks around the text.

4. Click Font.The Fontwindow opens.

5. For Font Style, select Bold and then clickOK to return to theHeaderswindow.

6. You can use input or calculated variables in your headers. Click Add again to insert another newrow.

7. Click Assist.The Edit Header window opens.

8. On the list of project variables, double-click Category.Fieldname to move it into theHeader textbox.

Note: Most calculated variables are for calculations of one entity at a time. For this bubble map, therearen’t any calculated variables in the project that are suitable as a header. A calculated variable that appliesto the project as a whole would be suitable, such as one displaying the most recent date in the database orthe project file path.

11. ClickOK to close the Edit Header window, and clickOK again to close theHeaderswindow.The bubble map displays the new header.

12. On theWorkspace tab, click Save to save your work.

Changing the Grid and Frame Properties1. On the Property pane, underGrids and Limits, set Grid Type to Frame.

2. Set Numbers toNo.The bubble map displays without grid lines or numbers.

3. On theWorkspace tab, click Save to save your work.

34 of 262

User Guides, Tutorials, and Examples

Page 36: UserGuides Tutorials Examples OFM 2014

Using the Animation Tool1. On the Format tab, in the Animation Utilities group, click Animate Settings.

The Animate Settingswindow 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 avideo.If you save the animation file, you must select a name and file location for the video. Before theanimation starts, you select a video compressor format. The codecs available vary from person toperson, and depend on the software installed on your computer. If you want to share the .avi filewith another person, select a codec that person has installed (to avoid compatibility issues).

5. ClickOK.The animation starts.

6. To pause or restart the animation, click the control buttons on the Format tab, in the AnimationUtilities group.

Moving the Bubbles from Default PositionsYou can move the bubbles from their default locations. This is a good idea if they are laying on top of oneanother.

1. On the Format tab, in theDisplay group, select Enable Shape Moves.

2. On the bubble map, drag a bubble to a new location.

3. On the Format tab, in theUtilities 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 theFormat tab, in theUtilities group, select Open Analysis > Shape Positions File.

5. Tomove the bubbles back to their default positions, on the Format tab, in the Edit group, clickDefault Position.

Creating a Bubble Map SnapshotYou can create a table in the OFM project database of the data represented in your bubble map. This ismost 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 LoadingMapResults as a .Csv File" and "Creating a Map Snapshot" for more information.

1. On the Format tab, in theUtilities group, select Save Analysis > Create Map Snapshot.The Create Map Snapshotwindow opens.

35 of 262

User Guides, Tutorials, and Examples

Page 37: UserGuides Tutorials Examples OFM 2014

2. Type Snapshot as the title of the table in which you want to store the snapshot results.

3. ClickOK.The data is written to the table in the OFM project database.

Saving the Bubble Map File1. On the Format tab, in theUtilities 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

Page 38: UserGuides Tutorials Examples OFM 2014

Tutorial: Grid MapYou can create gridmaps to visualize one data variable in a map view. The gridmap displays data for thecompletions in the current filter, and you can reuse it for different sets of completions within the OFMproject.

In this tutorial, you will:

1. Create a gridmap

2. Change color scale properties: You can set the color spectrum, the number of colors displayed, andthe size of the color scale legend on the display area. In this section of the tutorial, you change thecolor scale properties.

3. Move the legend

4. Add a header to the gridmap: In this section of the tutorial, you edit the headers. You can createheaders 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 mapwithknown values that do not match to a well location. For example, for a net pay gridmap, you mayknow from the reservoir geology that the net pay is zero around the edges, or perhaps that there is afault 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 gridmap snapshot: You can create a table in the OFM project database of the datarepresented in your bubble map. This is most applicable if you are mapping from a .csv file. When youare mapping data already in the database, there is no need to store it back into the database via amap snapshot. See "Saving and LoadingMap Results as a .Csv File" and "Creating a Map Snapshot"for more information.

Creating a Grid Map1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Grid Map.The Create Grid Mapwindow opens.

3. Select the project variables you want to map (for example, Gas.Cum), and then click .

4. ClickNext.

37 of 262

User Guides, Tutorials, and Examples

Page 39: UserGuides Tutorials Examples OFM 2014

5. Select the method you want to use to group data. In this example, use the default selection(Completion).

6. (Optional) Enter aWhere clause to filter the data.

7. ClickNext.

8. Select the start and end data for which you want to track results.If left as the default, OFM produces the gridmap from the first to the last date in the projectdatabase.

9. Select the method you want to use to sample data in theData Sampling Frequency field.If left at as the default, OFM uses the frequency of the data (that is, monthly data will produce amapevery month and daily data will produce amap every day).

10. Click Finish.The gridmap opens.

11. On theWorkspace tab, click Save to save your work.

Changing Color Scale PropertiesYou can set the color spectrum, the number of colors displayed, and the size of the color scale legend onthe display area. In this section of the tutorial, you change the color scale properties.

1. On the Property pane, under Properties, expandColor Scale.

2. Set Spectrum toRed.

3. Set Style toValue Range.On the gridmap, 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 theWorkspace tab, click Save to save your work.

Moving the LegendOn the gridmap, drag the legend to the upper-left corner of the map.

Adding a Header to the Grid MapIn this section of the tutorial, you edit the headers. You can create headers for the base map, reports, andanalytical maps.

1. On the Format tab, in the Edit group, clickHeader.TheHeaderswindow opens.

2. Click Add.OFM inserts a blank row.

38 of 262

User Guides, Tutorials, and Examples

Page 40: UserGuides Tutorials Examples OFM 2014

3. On the blank row, type "Cumulative Gas" and then press Enter. When entering a text string, youmust use quotation marks around the text.

4. Click Font.The Fontwindow opens.

5. For Font Style, select Bold and then clickOK to return to theHeaderswindow.

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 newrow.

8. Select Assist.The Edit Header window opens.

9. On the list of project variables, double-click Category.Fieldname to move it into theHeader textbox.

Note: Most calculated variables are for calculations of one entity at a time. For this gridmap, there aren’tany calculated variables in the project that are suitable as a header. A calculated variable that applies to theproject as a whole would be suitable, such as one displaying the most recent date in the database or theproject file path.

11. ClickOK to close the Edit Header window, and clickOK again to close theHeaderswindow.The gridmap displays the new header.

12. On theWorkspace tab, click Save to save your work.

Changing the Grid Properties1. On the Property pane, underGrids and Limits, set Grid Type to Frame.

2. Set Numbers toNo.The gridmap displays without grid lines or numbers.

3. Under Variable Properties, in the Limit Values section, setMaximum to 1500.The color distribution on the map changes because any area greater than 1500 is now assigned thesame color as 1500.

Creating a Grid Area1. On the Format tab, in the Grid Area Utilities group, click Add.

2. Select points on the gridmap to create a polygon shape around a group of wells (as shownbelow).OFM automatically connects the last selected point of the polygon to the first point. Thisredefines the grid limit area. It is the boundary beyondwhich gridding will not be extended.

39 of 262

User Guides, Tutorials, and Examples

Page 41: UserGuides Tutorials Examples OFM 2014

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 theWorkspace tab, click Save to save your work.

Using the Animation Tool1. On the Format tab, in the Animation Utilities group, click Animate Settings.

The Animate Settingswindow 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 avideo.If you save the animation file, you must select a name and file location for the video. Before theanimation starts, you will be asked to select a video compressor format. The codecs available varyfrom person to person, and depend on the software installed on your computer. If you want to sharethe .avi file with another person, select a codec that person has installed (to avoid compatibilityissues).

4. ClickOK.The animation starts.

40 of 262

User Guides, Tutorials, and Examples

Page 42: UserGuides Tutorials Examples OFM 2014

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

Adding Control PointsDepending on the variable you are gridding, there may be areas of the mapwith known values that do notmatch to a well location. For example, for a net pay gridmap, you may know from the reservoir geologythat the net pay is zero around the edges, or perhaps that there is a fault through the reservoir. Withcontrol points, you can set arbitrary values anywhere on the map (not confined to the location of specificcompletions).

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 clickOK.

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 showingwith darker red color (indicatinghigher values).

5. To use or disable the control points, on the Format tab, in the Control Point Utilities group, selector clearUse.

Creating a Grid Map SnapshotYou can create a table in the OFM project database of the data represented in your bubble map. This ismost 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 LoadingMapResults as a .Csv File" and "Creating a Map Snapshot" for more information.

1. On the Format tab, in theUtilities group, select Save Analysis > Create Map Snapshot.The Create Map Snapshotwindow opens.

2. Enter a table name and then clickOK.The data is written to the table in the OFM project database.

41 of 262

User Guides, Tutorials, and Examples

Page 43: UserGuides Tutorials Examples OFM 2014

Tutorial: Contour MapYou can create contour maps to visualize one data variable in a map view. The contour map displays datafor the completions in the current filter, and you can reuse it for different sets of completions within theOFM 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 changethe color scale properties.

3. Move the legend

4. Edit map parameters:With the map properties, you can set the grid size, data ranges, and scaletypes 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 maybe areas of the mapwith known values that do not match with a well location. For example, for a netpay contour map, you may know from the reservoir geology that the net pay is zero around theedges, or perhaps that there is a fault through the reservoir. Use control points to set arbitraryvalues 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 createheaders for the base map, reports, and analytical maps.

Creating a Contour Map1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Contour Map.The Create Contour Mapwindow opens.

3. Select the project variables you want to map (for example, Water.CumCut), and then click .

4. ClickNext.

5. Select the method you want to use to group data. In this example, use the default method(Completion).

6. (Optional) Enter aWhere clause to filter the data.

7. ClickNext.

42 of 262

User Guides, Tutorials, and Examples

Page 44: UserGuides Tutorials Examples OFM 2014

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 theData Sampling Frequency.If left at the default, OFM uses the data frequency (that is, monthly data produces a contour mapevery month and daily data produces a contour map every day).

10. Select Finish.The contour map opens.

11. On theWorkspace tab, click Save to save your work.

Changing the Color Scale PropertiesYou can set the color spectrum, the number of colors displayed, and the size of the color scale legend onthe 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 theWorkspace tab, click Save to save your work.

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

Editing Map ParametersWith 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 theGRID section.

2. Set theMaximum 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 theWorkspace tab, click Save to save your work.

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

43 of 262

User Guides, Tutorials, and Examples

Page 45: UserGuides Tutorials Examples OFM 2014

1. On the Format tab, in theGrid Area Utilities group, click Add.

2. Select points on the map to create a polygon shape around a group of wells (as shown below). OFMautomatically connects the last selected point of the polygon to the first point. This redefines the gridlimit 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 theWorkspace tab, click Save to save your work.

Advancing the Contour Map Through Time1. 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. ClickNext Date to advance the contour map by one unit.

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

44 of 262

User Guides, Tutorials, and Examples

Page 46: UserGuides Tutorials Examples OFM 2014

1. On the Format tab, in the Animation Utilities group, click Animate Settings.The Animate Settingswindow 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 avideo.If you save the animation file, you must select a name and file location for the video. Before theanimation starts, you will be asked to select a video compressor format. The codecs available varyfrom person to person, and depend on the software installed on your computer. If you want to sharethe .avi file with another person, select a codec that person has installed (to avoid compatibilityissues).

5. ClickOK.The animation starts.

6. To pause or restart the animation, click the control buttons on the Format tab, in the AnimationUtilities group.

Adding Control PointsDepending on which variable you are contouring, there may be areas of the mapwith known values thatdo not match with a well location. For example, for a net pay contour map, you may know from thereservoir geology that the net pay is zero around the edges, or perhaps that there is a fault through thereservoir. Use control points to set arbitrary values anywhere on the map (not confined to the location ofspecific 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 theWorkspace tab, click Save to save your work.

Adding a Header to the Contour MapIn this section of the tutorial, you edit the headers. You can create headers for the base map, reports, andanalytical maps.

1. On the Format tab, in the Edit group, clickHeader.TheHeaderswindow opens.

2. Click Add.OFM inserts t blank row.

45 of 262

User Guides, Tutorials, and Examples

Page 47: UserGuides Tutorials Examples OFM 2014

3. On the blank row, type "Cum Water Cut" and then press Enter. When entering a text string, youmust use quotation marks around the text.

4. Click Font.The Fontwindow opens.

5. For Font Style, select Bold and then clickOK to return to theHeaderswindow.

6. ClickOK to close theHeaderswindow.The contour map displays the new header.

7. On theWorkspace tab, click Save to save your work.

46 of 262

User Guides, Tutorials, and Examples

Page 48: UserGuides Tutorials Examples OFM 2014

Tutorial: Scatter PlotYou can create scatter plots to see relationships and correlations between data variables. The scatter plotdisplays data for the completions in the current filter, and you can reuse it for different sets of completionswithin 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 Plot1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Scatter.The Create Scatter Plotwindow opens.

3. Select the variablesOil.Cum and Water.Cum and then click .

4. ClickNext.

5. Select Completion as the method you want to use to group data.

6. ClickNext.

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 theData Sampling Frequency as All Rows.If left at default, OFM uses the frequency of the data (that is, monthly data produces a scatter plotevery month and daily data produces a scatter plot every day).

9. Select Finish.The scatter plot will display.

10. On theWorkspace tab, click Save to save your work.

47 of 262

User Guides, Tutorials, and Examples

Page 49: UserGuides Tutorials Examples OFM 2014

Setting Up the Scatter Plot Graphs1. On the Property pane, under Scatter Plot Properties, set theNumber 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 toWater.Cum.

5. Change the Current Graph to 2.

6. In the Current Graph Properties section, change the X-Variable toX-Coordinate.Even though you did not choose the X- and Y-coordinates when creating the scatter plot, OFMprovides 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 thescatter plot represents a completion. The plot on the left shows what the values of cumulative waterand cumulative oil of each completion were at the date indicated.

8. On theWorkspace tab, click Save to save your work.

Creating a Scatter Plot Set1. On the Format tab, in the Edit group, click Scatter Sets.

The Edit Scatter Plot Setwindow opens.

2. Click Add.

3. For the Name, enter High Oil.

4. Set the Color toGreen.

5. Set the Type to Filled Circle.

6. Select Trackable.

7. Set the Size to 7.

8. ClickOK.

9. On theWorkspace tab, click Save to save your work.

Selecting Completions in the Scatter Set by Value Range1. Click on the first graph (the one on the left) to make it the Current Graph.

2. On the Format tab, in theUtilities 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 isyour X-coordinate), select >= and enter the value 800.

4. Select And.

48 of 262

User Guides, Tutorials, and Examples

Page 50: UserGuides Tutorials Examples OFM 2014

5. In the Cumulative Water Production section (which is your Y-coordinate), select <= and enterthe value 4000.

6. ClickOK.The scatter plot displays with the relevant data points overlaid with green circles. Both graphs havethe same completions indicated by the set. This shows you where the high oil completions arelocated on the map. The green lines on Graph 1 show the path by which each completion’s datatraveled through time.

7. On theWorkspace tab, click Save to save your work.

Saving and Editing the Scatter Plot Set1. On the Format tab, in the Edit group, click Scatter Sets.

The Edit Scatter Plot Setwindow opens.

2. Click Save.

3. Name the scatter set (.set) file Liquids and then click Save.

4. Set the Color toDark Green.

5. Set the Type to Filled Up Triangle.

6. Set the Size to 10.

7. ClickOK.The scatter plot displays.

Picking by Bounding Polygon1. On the Format tab, in the Edit group, click Scatter Sets.

The Edit Scatter Plot Setwindow opens.

2. Click Add.

3. For theName, enter High Fluid.

4. Set the Color to Magenta.

5. Select Post Name.

6. Set the Type to Filled Square.

7. Set the Size to 8.

8. ClickOK.

9. On the Format tab, in theUtilities group, click Pick by Polygon.

10. Since this is the high fluid set, click on the map to create a polygon around the data points closest tothe top right of Graph 1.

11. Right-click and select Done.The data points representing the completions with high values of both cumulative oil and

49 of 262

User Guides, Tutorials, and Examples

Page 51: UserGuides Tutorials Examples OFM 2014

cumulative water are overlaid with magenta squares. OFM labels these points with the completionnames.

12. On the Format tab, in theDisplay group, select Plot Only Sets.Only the group of points inside the polygon belonging to the two scatter sets display. You now havean idea of how much the cumulative values vary by completion, andwhere the high oil and high fluidcompletions are located. You may see a correlation between their locations and your knowledge ofthe area, or some other performance or completion factor.

13. On theWorkspace tab, click Save to save your work.

Adding a Header to the Scatter PlotIn this section of the tutorial, you edit the headers. You can create headers for the base map, reports, andanalytical maps. You can customize the display format of each line.

1. On the Format tab, in the Edit group, clickHeader.The Headerswindow opens.

2. Click Add.

3. In the blank line, type "Cumulative Liquids" as title for the scatter plot. When entering a textstring, use quotation marks around the text.

4. Click Font to change the header font properties.

5. On the Font Style list, select Bold and then clickOK.

6. ClickOK.The plot displays with the new header.

7. On theWorkspace tab, click Save to save your work.

Animating the MapUse animation to progress quickly through the life of a field.

1. On the Format tab, in the Animation Utilities group, click Animate Settings.The Animate Settingswindow opens.

2. In 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 avideo.If you save the animation file, you must select a name and file location for the video. Before theanimation starts, you select a video compressor format. The codecs available vary from person toperson, and depend on the software installed on your computer. If you want to share the .avi filewith another person, select a codec that person has installed (to avoid compatibility issues).

4. ClickOK.The animation starts.

50 of 262

User Guides, Tutorials, and Examples

Page 52: UserGuides Tutorials Examples OFM 2014

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

51 of 262

User Guides, Tutorials, and Examples

Page 53: UserGuides Tutorials Examples OFM 2014

Tutorial: Surface MapYou can create surface maps to see one data variable in a three-dimensional map display. The surface mapdisplays data for the completions in the current filter, and you can reuse it for different sets of completionswithin the OFM project. Because of its three-dimensional nature, the most logical types of variables toshow with a surface map are related to depth or elevation.

In this tutorial, you will:

1. Create a surface map: You will create a surface map based on the depth of the upper perforations.

2. Change the color scale properties: You can set the size of the color scale legend on the display area,and you can customize it to your preferences. In this section of the tutorial, you change the colorscale properties.

3. Move the color scale legend

4. Add headers to the surface map: In this section of the tutorial, you edit the headers. You can createheaders for the base map, reports, and analytical maps. You can customize the display format foreach line, to have up to ten lines of information with a maximum of 79 characters on each line.

5. Change the surface map

Creating a Surface Map1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.You will create a surface map based on the depth of the upper perforations. For deviated wells, acalculated variable is required to convert measured depth to true vertical depth, so for this exampleyou will exclude the deviated wells.

2. On the Filter pane, expand Table Data and select Dev.OFM filters the wells. Only wells with deviation survey data display.

3. At the top of the Filter pane, click Invert Filter to filter to the wells that do not have deviation

survey data (and so, are vertical wells).

4. On theHome tab, in the Launch analysis group, click Surface Map.The Create Surface Mapwindow opens.

5. On the list of project variables, select Headerid.Upperperf and then click .

6. Click Finish.The surface map opens. This map is plotting depths, andwould be more representative if it wasplotting elevations instead, so the deepest perfs extend downward rather than upward.

7. On theWorkspace tab, click Save to save your work.

52 of 262

User Guides, Tutorials, and Examples

Page 54: UserGuides Tutorials Examples OFM 2014

Changing the Color Scale PropertiesYou can set the size of the color scale legend on the display area, and you can customize it to yourpreferences. 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 toValue Range.

3. Set Spectrum toDefault.

4. Set Colors to 10.

5. On theWorkspace tab, click Save to save your work.

Moving the Color Scale LegendOn the surface map, drag the legend to the upper-left corner of the map.

Adding Headers to the Surface MapIn this section of the tutorial, you edit the headers. You can create headers for the base map, reports, andanalytical maps. You can customize the display format for each line, to have up to ten lines of informationwith a maximum of 79 characters on each line.

1. On the Format tab, in the Edit group, clickHeader.TheHeaderswindow opens.

2. Click Add.OFM inserts a blank row.

3. On the blank row, type "Depth of Upper Perforations" and then press Enter. When entering atext string, you must use quotation marks around the text.

4. Click Font.The Fontwindow opens.

5. For Font Style, select Bold and then clickOK to return to theHeaderswindow.

6. On theHeaderswindow, clickOK.The surface map displays the new header.

7. On theWorkspace tab, click Save to save your work.

Changing the Surface Map1. On the Property pane, under Variable Properties, expand Limit Values.

2. SetMinimum to 3000.

3. SetMaximum to 12000.The value ranges on the legend changes.

53 of 262

User Guides, Tutorials, and Examples

Page 55: UserGuides Tutorials Examples OFM 2014

4. Under Properties, expand3D.

5. Set Azimuth to -90.The azimuth setting rotates the map. A value of -90 puts north at the top.

6. Set Elevation to 60.The elevation setting tilts the map towards or away from you. A value of 0 has no tilt, so you arelooking at a side view. A value of 90 provides a plane view from directly overhead.

7. On theWorkspace tab, click Save to save your work.

54 of 262

User Guides, Tutorials, and Examples

Page 56: UserGuides Tutorials Examples OFM 2014

Tutorial: Map XY PlotYou can create map XY plots to create a montage that combines the base map and plots of time-dependentdata. OFM creates one plot for each completion and is positions them above the completion.

In this tutorial, you will:

1. Create a map XY plot

2. Change the scale properties

3. Change the curve properties

4. Add headers to the map XY plot: In this section of the tutorial, you edit the headers. You can createheaders for the base map, reports, and analytical maps. You can customize the display format foreach line, to have up to ten lines of information with a maximum of 79 characters per line.

5. Move the plots from default positions: You can move the plots from their default locations. This is agood idea if they are laying on top of one another.

Creating a Map XY Plot1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, clickMap XY Plot.The Create Map XY Plotwindow opens.

3. On the list of project variables, select Oil.CalDay and Water.CalDay, and then click .

4. Click Finish.The Plot Setupwindow opens.

5. Select Date for your X-axis, andOil.CalDay and Water.CalDay for the Y-axis.

6. ClickOK.The map XY plot displays.

7. On theWorkspace tab, click Save to save your work.

Changing the Scale Properties1. On the Property pane, underData, expandPlot Setup.

2. For the X-Axis, set Scale Type to Logarithmic.

3. For the X-Axis, set theMinimum to 19900101.

4. On the Format tab, in theDisplay group, select Blow Up Plot.The Blow Up Plotwindow opens.

5. Resize the plot window to be larger.

55 of 262

User Guides, Tutorials, and Examples

Page 57: UserGuides Tutorials Examples OFM 2014

6. On the map XY plot, click the well symbols to see individual completion's plots in the Blow Up Plotwindow.

7. On theWorkspace tab, click Save to save your work.

Changing the Curve Properties1. On the Property pane, underData, expandPlot Setup and then expandPlot Curve Attribute.

2. Set Plot Curve Attribute to Oil.CalDay.

3. Set Line Color toGreen.

4. Set Plot Curve Attribute toWater.CalDay.

5. Set Line Color toBlue.

6. On theWorkspace tab, click Save to save your work.

Adding Headers to the Map XY PlotIn this section of the tutorial, you edit the headers. You can create headers for the base map, reports, andanalytical maps. You can customize the display format for each line, to have up to ten lines of informationwith a maximum of 79 characters per line.

1. On the Format tab, in the Edit group, clickHeader.TheHeaderswindow opens.

2. Click Add.OFM inserts a blank row.

3. On the blank row, type "Calendar Day Rate, Oil and Water" and then press Enter. Whenentering a text string, you must use quotation marks around the text.

4. Click Font.The Fontwindow opens.

5. For Font Style, select Bold and then clickOK to return to theHeaderswindow.

6. On theHeaderswindow, clickOK.The map XY plot displays the new header.

7. On theWorkspace tab, click Save to save your work.

Moving the Plots from Default PositionsYou can move the plots from their default locations. This is a good idea if they are laying on top of oneanother.

1. On the Format tab, in theDisplay group, select Enable Shape Moves.

2. On the map XY plot, select a plot and drag it to a new position.

56 of 262

User Guides, Tutorials, and Examples

Page 58: UserGuides Tutorials Examples OFM 2014

3. On the Format tab, in theUtilities group, select Save > 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 map XY plot, you can retrieve the saved plot positions: On the Formattab, in theUtilities group, selectingOpen > Shape Positions File.

5. Tomove the plots back to their default positions, on the Format tab, in the Edit group, clickDefaultPosition.

57 of 262

User Guides, Tutorials, and Examples

Page 59: UserGuides Tutorials Examples OFM 2014

Tutorial: Date-Based ReportYou can create reports that display a spreadsheet-style tabular listings of project variables (either tablevariables or calculated variables). For most of your reports, you may want to display the variables againsttime (date), but you can use other variables. If there is a relationship between the variables, you cancreate reports to display the different types of variable dependencies. By default, reports display variablesfor only one entity, whether you reporting on a single completion, a single reservoir or other category, or asingle object created by groupingmultiple completions.

In this tutorial, you will:

1. Create a simple date-based report: You can create a report that displays the project variableMonthlyProd.Oil with the calculated variable Water.Cut.

2. Edit report features: In this section of the tutorial, you improve the appearance of the report. Manyattributes (such as column width and number of decimal places) are set by the definition of thevariable displayed. While you can customize the appearance of the report by changing the attributesof a column, the changes you make will not affect the default definition of the variable in thatcolumn.

3. Add the current date to the Report Header

4. Adjust column headers

5. Export a report template: Saving the workspace automatically saves the report for you to use againin the future. You may want to save an external version of the report format to share with acolleague.

6. Import a report template

7. Save the report content: You can save the contents of the report as comma separated values (.csv),or as a text (.

8. Write results of report back to the project as a new Access data table: OFM offers more choices forcapturing the results of a report. You can send the results of your report to Microsoft Access,Microsoft Excel, or a text file. This section of the tutorial describes the Microsoft Access writebackchoice. The other two work similarly.

Creating a Simple Date-based ReportYou can create a report that displays the project variable MonthlyProd.Oil with the calculated variableWater.Cut.

1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Report.The Edit Reportwindow opens.

3. In the Select text box, enter the following: Date, Monthlyprod.Oil,

58 of 262

User Guides, Tutorials, and Examples

Page 60: UserGuides Tutorials Examples OFM 2014

4. ClickOK.The report opens.

5. On theNavigation pane, select the Blue_1:He_0 completion.OFM displays a grid-style tabular listing of the variables.

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

Editing the Report FeaturesIn this section of the tutorial, you improve the appearance of the report. Many attributes (such as columnwidth and number of decimal places) are set by the definition of the variable displayed. While you cancustomize the appearance of the report by changing the attributes of a column, the changes you make willnot affect the default definition of the variable in that column.

1. On the Property pane, under Report, set the Report Date to an alternative format from the list(for example, YYYY-MM-DD).On the report, the date displays in the new format.

2. On the Format tab, in the Edit group, clickDate & Sort.The Edit Report Attributeswindow opens.

3. On the Set Date tab, select Range to restrict the range.

4. Set the Starting date to January 1, 1997 and the Ending date to January 12, 1998.

5. ClickOK.The report displays only the data from 1997 and 1998.

6. On the Property pane, under Columns, set Break toAnnually.The report breaks at the end of every calendar year.

7. Click any cell in theMonthly Oil column of the report to access the Current Column properties forselected column.On the Property pane, under Columns, the Current Column shows that you selectedMonthlyprod.Oil.

8. ExpandColumn Attributes.

9. Set the columnWidth to 15.

10. Set theDecimal Places to 1.

11. Set the Justification to Center.

12. Set theDisplay to English.This forces the column to display in barrels, even if you set the project to display metric units.

13. Set the Subtotal to Sum.The total monthly oil volume displays at the end of each calendar year.

14. Expand Variable.

15. SetMultiplier toM.

59 of 262

User Guides, Tutorials, and Examples

Page 61: UserGuides Tutorials Examples OFM 2014

16. Click any cell in theWater Cut column of the report to access the Current Column properties forselected column.

17. On the Property pane, under Columns, expand Column Attributes.

18. Set Subtotal to Average.The average water cut displays at the end of each calendar year. The average displays on a differentline than the sum, which is helpful if you want to copy the report content to a spreadsheetapplication.

19. On theWorkspace tab, click Save to save your work.

Adding the Current Date to the Report Header1. On the Format tab, in the Edit group, clickHeader.

TheHeader/Footer window opens.

2. Click the cell in the first row, in the Right Aligned column, and type "."

3. Click the cell immediately below.

4. Enter the following text in this cell: @FmtDate(@today(),"Mmm dd,

5. ClickOK.The report header has a new line with today’s date.

6. On theWorkspace tab, click Save to save your work.

Adjusting the Column Headers1. Click on any cell in theMonthly Oil column of the report to access the Current Column properties

for the selected column.

2. On the Property pane, under Columns, expand Current Column and then expand ColumnAttributes.

3. Set the Heading Third Row toOil Volume.Note the change in the way the data in the column title is displayed.

4. On theWorkspace tab, click Save to save your work.

Exporting a Report TemplateSaving the workspace automatically saves the report for you to use again in the future. You may want tosave an external version of the report format to share with a colleague.

1. On the Format tab, in theUtilities group, click Save Analysis.The Save Report Formatwindow opens.

2. Navigate to the folder where you want to save the template file.

60 of 262

User Guides, Tutorials, and Examples

Page 62: UserGuides Tutorials Examples OFM 2014

3. Enter the name you want to assign to the attribute file.

4. Click Save to save a copy of the report attributes (not the report content) as an .rpt file.

Importing a Report Template1. To import report attributes from an .rpt file, first create a blank report.

2. With the report is open, on the Format tab, in theUtilities group, clickOpen Analysis.

3. Select the saved .rpt file and then clickOpen.Note that the report now displays the imported attributes.

4. On theWorkspace tab, click Save to save your work.

Saving the Report ContentYou can save the contents of the report as comma separated values (.csv), or as a text (.txt) file.

1. With the report open, on the Format tab, in theUtilities group, click Save Analysis.

2. Enter the name you want to assign the report content file.

3. Enter the location to which you want to save the report content file.

4. Click Save.

Writing Results of Report Back to the Project as a New AccessData TableOFM offers more choices for capturing the results of a report. You can send the results of your report toMicrosoft Access, Microsoft Excel, or a text file. This section of the tutorial describes the Microsoft Accesswriteback choice. The other two work similarly.

Note: You can copy the report contents and paste them into a spreadsheet.

You may also want to send the results back to the project as new data. For example, you may want to dothis if the results have corrections to the original raw data, and you want to have the corrected anduncorrected data in your project. Or, you may want to do this if you want to use system functions that onlywork on data, and do not work on calculated variables (such as the @CumInput system function).

1. On theHome tab, in the Launch analysis group, click Report.The Edit Reportwindow opens.

2. In this example, you are correcting the monthly oil and gas volumes by a constant factor for each. Inthe Select text box, enter the following:@Name(), Date, MonthlyProd.Oil*0.9, MonthlyProd.Gas*0.7

3. ClickOK.

61 of 262

User Guides, Tutorials, and Examples

Page 63: UserGuides Tutorials Examples OFM 2014

4. On theNavigation pane, select the Blue_1:He_0 completion.The report displays results.

5. On the Format tab, in the Edit group, click Access.The Accesswindow opens.

6. (Optional) Select Automatically update Access when the report is updated to create updatesautomatically.If selected, OFM updates the table every time you open or refresh the report. If you clear this choice,you must manually refresh the table.

7. In the Table Name field, enter Corrected_MonthlyProd.You cannot change the OFM columns in the Fields section. These are the entries you used to createthe report. If you send this data back to your project, the data must conform to OFM nomenclature.

8. In the Access Fields column, click Field1 (on the same row as@Name() in theOFM Columnscolumn).

9. Type Uniqueid and then press Enter.

10. Click Key.

11. In the Access Fields column, clickDate.

12. Click Key.

13. In the Access Fields column, clickMonthlyprodOil*09.

14. Type OIL and then press Enter.

15. ClickMonthlyprodGas*07.

16. Type GAS and then press Enter.

17. Click Close and Update.OFM advises you that the table does not exist.

18. Select Yes to create it.

19. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens.

20. On the Tables tab, find the new Corrected_MonthlyProd table.

21. Select the empty check box next to the new table name to enable the table.

22. OFM will now ask you to confirm the primary parameters which define the table. For this case:

a. Select Yes to the question asking to continue.

b. Set Table Type to Monthly.

c. Since you ensured that the key column names were OFM-compatible, OFM has identified themcorrectly. In the Auto-associate Fieldswindow, select Yes to accept OFM’s guess.

62 of 262

User Guides, Tutorials, and Examples

Page 64: UserGuides Tutorials Examples OFM 2014

d. ClickOK to accept the new changes and close the window.Your project now contains a data table (Corrected_MonthlyProd) with adjusted oil and gasvolume data columns, taken from the report.

23. On theWorkspace tab, click Save to save your work.

Note: The table will be populated only for the completions that you have displayed on the report. To displaythe report for all completions and thus populate the table for all completions, see "To Generate a SummaryReport - Full Detail."

63 of 262

User Guides, Tutorials, and Examples

Page 65: UserGuides Tutorials Examples OFM 2014

Tutorial: Summary ReportYou can create summary reports to view data for all completions, all reservoirs, and so on, individually. Asummary report displays data for every entity in your current filter.

In this tutorial, you will:

1. Create a Summary Report - Full Detail

2. Create a Summary Report - One Line for Each Completion: Rather than view the full history for allcompletions in the summary report, you may want to view a single line for each completion (forexample, the current performance). You can customize the summary report to display one line percompletion, with the report ranked according to cumulative oil. This way you get a concise summaryshowing the best producers.

Creating a Summary Report - Full Detail1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Report.The Edit Reportwindow opens.

3. In the Select text box, enter this: @Name(), Date, Oil.Cum, Gas.Cum

4. ClickOK.The report opens.

5. On theNavigation pane, select the Blue_1:He_0 completion.A tabular listing of the variables populates the report.

6. On the Format tab, in theDisplay group, click Sum By Item.The report shows the history of all the completions in the current filter.

7. On theWorkspace tab, click Save to save your work.

Creating a Summary Report – One Line for Each CompletionRather than view the full history for all completions in the summary report, you may want to view a singleline for each completion (for example, the current performance). You can customize the summary reportto display one line for each completion, with the report ranked according to cumulative oil. This way youget a concise summary showing the best producers.

1. On the Format tab, in the Edit group, clickDate & Sort.The Edit Report Attributeswindow opens.

2. On the Set Date tab, select At Last Date.This will display the last date for which each individual completion has data. This will vary for

64 of 262

User Guides, Tutorials, and Examples

Page 66: UserGuides Tutorials Examples OFM 2014

different completions, depending on their status. To display only a specific, recent date, use the AtDate choice instead.

3. On the Sort tab, set the First sorting toOil.cum.

4. Select Descending.

5. ClickOK.Before, OFM sorted the completions alpha-numerically. Now OFM sorts the report by cumulative oilvalue in descending order. If you do not see all completions in the current filter, on the Format tab,in theDisplay group, select Sum By Item.

6. On theWorkspace tab, click Save to save your work.

65 of 262

User Guides, Tutorials, and Examples

Page 67: UserGuides Tutorials Examples OFM 2014

Tutorial: Single Well Log DisplayYou can create a single-well log display to visualize the digital well log data and create custom templates toperform different analyses. In this tutorial, you will create a log display for a single well using trace data.You will:

1. Create a single-well log display

2. Assign traces to a track and edit trace attributes

3. Edit the log track

4. Create a log track

5. Add a cutoff

6. Edit the depth shift

7. Edit the lithology interval

8. Add comments

9. Rename the log file

Creating a Single-Well Log Display1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, click Single Well Log.The Set Depth Range window opens.

3. In the Top field, enter 1500.

4. In the Bottom field, enter 6750.

5. ClickOK.The single-well log display template opens, showing placeholders for two traces on each of twotracks.

6. On theNavigation pane, selectWellbores.

7. Select the BLUE_14 well.

8. On theWorkspace tab, click Save to save your work.

Assigning Traces to a Track and Editing Trace Attributes1. At the top of Track 1, double-click the first Trace Name.

The Log Trace Attributeswindow opens.

2. On the Trace Attributes tab, make the following selections:

66 of 262

User Guides, Tutorials, and Examples

Page 68: UserGuides Tutorials Examples OFM 2014

n For Log, select SP.

n For Color, select Blue.

n ForMin. Reading, enter -151.399.

n ForMax. Reading, enter -5.448.

3. ClickOK.The log displays.

4. At the top of Track 1, double-click the second Trace Name.

5. On the Trace Attributes tab, make the following selections:

n For Log, select ILD.

n ForMin. Reading, enter 0.26.

n ForMax. Reading, enter 7.18.

6. ClickOK.The log displays.

7. On theWorkspace tab, click Save to save your work.

Editing the Log Track1. On theNavigation pane, select theORANGE_34 wellbore.

2. On the Format tab, in the Edit group, click Variables.The Edit Log Track window opens.

3. For Set Scale to, select Logarithmic.

4. ClickOK.The track displays with a logarithmic scale.

5. At the top of Track 2, double-click the first Trace Name.

6. On the Trace Attributes tab, make the following selections:

n For Log, select IDPH.

n For Color, select Green.

7. ClickOK.The log displays.

8. On theWorkspace tab, click Save to save your work.

Creating a Log Track1. On the Format tab, in the Edit group, click Add Track.

The Add Log Track window opens.

67 of 262

User Guides, Tutorials, and Examples

Page 69: UserGuides Tutorials Examples OFM 2014

2. Enter 3 in the Add the new one as Track No field.

3. Select Linear as the scale.

4. ClickOK.The log display shows the new track.

5. On theWorkspace tab, click Save to save your work.

Adding a Cutoff1. On theNavigation pane, select the BLUE_1 wellbore.

2. At the top of Track 1, double-click the first trace name (now namedSP).

3. On the Cutoff tab, make the following selections:

n For Show Cutoff ?, select Yes.

n For Cutoff value, enter -50.

n For Fill To, select Left.

4. ClickOK.Note the effect of the cutoff.

5. On theWorkspace tab, click Save to save your work.

Editing the Depth Shift1. On the Format tab, in the Edit group, clickDepth Shift.

TheDepth Shiftwindow opens.

2. In the Shifting field, enter 20 feet.

3. Select Up.

4. ClickOK.The log display shows the upward shift of 20 feet.

5. On theWorkspace tab, click Save to save your work.

Editing the Lithology Interval1. On the Format tab, in the Edit group, click Litho Interval.

The Edit Intervalwindow opens.

2. For theName, enterHenna.

3. For the Top Marker, select HENNA_1.

4. For the Bottom Marker, select HENNA_2.

5. For Lithology, select Sandstone.

68 of 262

User Guides, Tutorials, and Examples

Page 70: UserGuides Tutorials Examples OFM 2014

6. Click Save and then Close.

7. On the Property pane, set Show Litho Intervals to Yes.The Henna sandstone section displays.

8. On theWorkspace tab, click Save to save your work.

Adding Comments1. On the Property pane, set Show Depth Shift toNo.

2. On the Format tab, in theDisplay group, click Comments.OFM adds a comment track to the log display.

3. At a depth of 5000 feet, double-click the comment track.The Edit Commentwindow opens.

4. In the Comment field, enter Hole Washout and then click Save.The text displays in the Comment track.

5. On theWorkspace tab, click Save to save your work.

Renaming the Log File1. On the Analysis pane, OFM named the log you created Single Well Log1. Right-click the log and

then select Rename.

2. Enter Standard Single Well Analysis, and then press Enter.

3. To save the layout as a template file, on the Format tab, in theUtilities group, click SaveAnalysis.

4. Enter a name in the File Name list field and then click Save.

69 of 262

User Guides, Tutorials, and Examples

Page 71: UserGuides Tutorials Examples OFM 2014

Tutorial: Multi-Well Log DisplayYou can create a multi-well log display to view log data (up to four logs) at the same time. In this tutorial,you will create a multi-well log display. You will:

1. Apply the log data filter

2. Create a multi-well log

3. Add a new trace

4. Edit the display

5. Edit the depth range

6. Edit the depth shift

7. Rename the log display

Applying the Log Data Filter1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On the Filter pane, click Clear Filter to remove any previously-applied filters.

3. ExpandCategory, and then expand Logdata.

4. Select LOGD.Only wells with log data display on the base map.

5. On theWorkspace tab, click Save to save your work.

Creating a Multi-Well Log1. On theHome tab, in the Launch analysis group, clickMultiple Well Log.

The log opens.

2. Click the first track.At the top, just below theWell Name, a red X displays. This means the selected well is active.

3. On the Format tab, in the Edit group, click Variables.The Edit Multi-Well Logwindow opens.

4. On theWell #1 tab, make the following selections:

n ForWellbore Name, select the BLUE_1 wellbore.

n For Log Trace #1, select SP.

n For the Date Logged, select a date.

70 of 262

User Guides, Tutorials, and Examples

Page 72: UserGuides Tutorials Examples OFM 2014

n For Log Trace #2, select RLD.

n For theDate Logged, select a date.

5. ClickOK.The well data displays.

6. At the top of Track 1, double-click the SP curve.The Log Trace Attributeswindow opens.

7. In the Color field, select Blue.

8. ClickOK.

9. On the Format tab, in the Edit group, click Variables.

10. On theWell #2 tab, make the following selections:

n ForWellbore Name, select BLUE_14.

n For Log Trace #1, select SP and then select aDate Logged.

n For Log Trace #2, select RLD and then select aDate Logged.

11. On theWell #3 tab, make the following selections:

n ForWellbore Name, select BLUE_17.

n For Log Trace #1, select SP and then select aDate Logged.

n For Log Trace #2, select RLD and then select aDate Logged.

12. On theWell #4 tab, make the following selections:

n ForWellbore Name, select BLUE_2.

n For Log Trace #1, select SP and then select aDate Logged.

n For Log Trace #2, select RLD and then select aDate Logged.

13. ClickOK.

14. At the top of tracks 2, 3, and 4, double-click the SP curve.The Log Trace Attributeswindow opens.

15. On the Trace Attributes tab, in the Color field, select Blue and then clickOK.

16. On theWorkspace tab, click Save to save your work.

Adding a New Trace1. Select the first log track to activate it.

2. On the Format tab, in the Edit group, click Add New Trace.The Edit Log Track window opens.

71 of 262

User Guides, Tutorials, and Examples

Page 73: UserGuides Tutorials Examples OFM 2014

3. Click Add a New Trace and then clickOK.A new trace displays at the top of the track.

4. Double-click the new trace.The Log Trace Attributeswindow opens.

5. On the Trace Attributes tab, select ILD in the Log field.

6. Select Green in the Color field.

7. ClickOK.The multi-well log displays.

8. On theWorkspace tab, click Save to save your work.

Editing the Display1. On the Property pane, set Show Markers to Yes.

2. At the top of the first track, double-click the well name (BLUE_1).The Edit (single) Multi-Well Logwindow opens.

3. Select the BLUE_5 wellbore.

4. ClickOK.

5. On the Property pane, set Show Litho Intervals to Yes.The lithology track displays the intervals.

6. On theWorkspace tab, click Save to save your work.

Editing the Depth Range1. On the Format tab, in the Edit group, clickDepth Range.

TheDepth Column Configuration window opens.

2. SelectMD.

3. Select Default.

4. Select Show TVD Sub-Sea Depth.

5. ClickOK.

6. On theWorkspace tab, click Save to save your work.

Editing the Depth Shift1. On the Format tab, in the Edit group, clickDepth Shifts.

TheDepth Shiftwindow opens.

2. Enter the number of feet to shift the depth in the Shifting field.

3. Select Up.

72 of 262

User Guides, Tutorials, and Examples

Page 74: UserGuides Tutorials Examples OFM 2014

4. ClickOK.

5. On theWorkspace tab, click Save to save your work.

Renaming the Log Display1. On the Analysis pane, OFM named the log you createdMultiple Well Log1. Right-click the log and

then select Rename.

2. Enter Standard Multi Well Analysis, and then press Enter.

3. To save the layout as a template file, on the Format tab, in theUtilities group, click SaveAnalysis.

4. Enter a name in the File Name list field and then click Save.

73 of 262

User Guides, Tutorials, and Examples

Page 75: UserGuides Tutorials Examples OFM 2014

Tutorial: Log Cross-SectionYou can create cross-sections to display log traces, wellbore diagrams, and lithologies. In this tutorial, youwill:

1. Create a cross-section

2. Change the cross-section display

3. Edit cross-section markers

4. Edit the cross-section display

5. Edit the cross-section depth range

Creating a Cross-Section1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On the Filter pane, click Clear Filter to remove any previously-applied filters.

3. ExpandCategory, and then expand Logdata.

4. Select LOGD.Only wells with log data display on the base map.

5. With the base map open, on the Property pane, underWell Name Properties, setWell Name toAlias Name.

6. On theHome tab, in the Launch analysis group, click Cross Section.

7. On the base map, press Ctrl and then select the followingwells to include them in the cross section:G-1,O-26,B-2, andB-17.OFM draws a line connecting the wells you selected.

8. Right-click on the base map and then select Done.The Cross-Section Legendwindow opens.

9. ClickOKThe cross-section opens.

10. On theWorkspace tab, click Save Workspace to save your work.

Changing the Cross-Section Display1. On the Format tab, in theDisplay group, make sure Size To Fit is selected.

2. On the Property pane, set Show Wells, Show Depth Scale, andShow Logs to Yes.

3. Click Setup.The Log Trace Setupwindow opens.

74 of 262

User Guides, Tutorials, and Examples

Page 76: UserGuides Tutorials Examples OFM 2014

4. On the Left Trace tab, set the Log Trace to SP.

5. On the Right Trace tab, set the Log Trace toRLD.

6. Select RLD in the Log Trace field.

7. On theWorkspace tab, click Save to save your work.

Editing the Cross-Section Markers1. On the Format tab, in theDisplay group, select Left Marker.

2. In the Edit group, click Interval.The Edit Intervalwindow opens.

3. Make the following selections:

n For theName, enter Layer 1.

n For the Top Marker, selectWinter.

n For the Base Marker, select Screed_1.

n For Lithology, select Shale.

4. Click Save and then click Close.

5. On theWorkspace tab, click Save to save your work.

Editing the Cross-Section DisplayOn the Property pane, set Show Litho Intervals to Yes.

Editing the Cross-Section Depth Range1. On the Format tab, in the Edit group, clickDepth Range.

TheDepth Column Configuration window opens.

2. For theMinimum Depth, enter 5000.

3. For theMaximum Depth, enter 6000.

4. ClickOK.The log display displays data within the given range.

5. On theWorkspace tab, click Save to save your work.

75 of 262

User Guides, Tutorials, and Examples

Page 77: UserGuides Tutorials Examples OFM 2014

Tutorial: Single Phase AnalysisIn this tutorial, you will:

1. Set up a forecast for single phase analysis (oil, gas, water): The demo project is already configured forsingle phase analysis. This part describes the set up.

After setting up a forecast, you are ready to perform history matching. Forecasts assume thatwhatever 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. Todo that, you must constrain the match (or, fit) to occur only through selected data points. Thereare 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 a range: Assuming you have followed the lower-limits steps, you now can define amore detailed acceptable range of data points.

4. Select 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 thefit 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: You can remove points that may be skewing the forecast resultsbecause they fall outside the norm.

7. Control fit parameters: You also can control how OFM performs the fit process.

8. Set up the forecast: There are many parameters that you can set, to control the forecast for a singlephase analysis. This shows you one possible workflow.

9. Save the forecast

Setting Up a Forecast for Single Phase Analysis (Oil, Gas,Water)The demo project is configured for single phase analysis. The followingworkflow describes the set up:

1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

2. On theNavigation pane, select the Blue_1:He_0 completion.

3. On theHome 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 Scenariowindow opens.

76 of 262

User Guides, Tutorials, and Examples

Page 78: UserGuides Tutorials Examples OFM 2014

5. On the Flow Model tab, in the Variable Association section, the default Phase/Analysis isOil.OFM seeks data for three plotting variables:

n Time (Date)

n Cumulative Oil: This is a calculated variable in this project. Oil.CalDay is a calendar day averagerate, from monthly production data. An alternative might be the producing day average rate(the monthly volume divided by the number of days this completion was on line, not by thenumber of days in the month). To do this, you might choose Oil.ProDay for the calculatedvariable. For this tutorial, select Oil.CalDay for your analysis because days on line data is notwidely available in the demo project.

n Oil Rate: This is a calculated variable in this project.

6. In the Model Description section, make sure the Solution is Empirical.

7. ClickOK.OFM applies the changes you made to the completion you selected (Blue_1:He_0). If you selectanother completion, OFM applies the default settings. You can change the default settings on theScenario Manager. (To open the Scenario Manager, on the Format tab, in the Edit group, clickScenario Manager.)

8. On theWorkspace tab, click Save to save your work.

Setting Lower and Upper Limits1. 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 whichyou will not accept any data points in the analysis. OFM will only use the points directly above thislower-limit line.

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

77 of 262

User Guides, Tutorials, and Examples

Page 79: UserGuides Tutorials Examples OFM 2014

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

4. On theWorkspace tab, click Save to save your work.

Setting the Limit as a RangeAssuming you have followed the lower-limits steps, you now can define a more detailed acceptable range ofdata points.

1. On the Format tab, in the Edit group, select Limit > Range.TheData 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. ClickOK.OFM fits the line through only the data points in the date range.

6. On theWorkspace tab, click Save to save your work.

Selecting a VariableFor this method, you must select a project variable that returns True (1) or False (0). This usually is acalculated variable. OFM will use the variable either to keep a data point for the fit analysis (result ofvariable = 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

Page 80: UserGuides Tutorials Examples OFM 2014

2. Click Add Calculated Variable.The Edit Calculated Variable window opens.

3. Enter the following definition: @if(water.cut>0.98,1,0)

4. ClickOK.OFM lists the new calculated variable on the Variable Editor asNewItem.

5. Click in the cell forNewItem and rename the variableWC_Cutoff.

6. ClickOK.

7. To see the effect of the next option, you must recover all the data points for analysis. On the Formattab, in the Edit group, select Limit > Reset.

8. On the Format tab, in the Edit group, select Limit > Variable.TheData Selection Variable window opens.

9. Select Use Variable and then selectWC_Cutoff from the list.

10. ClickOK.OFM removes data points before February 1998. In this completion, the variable represents thetime before the water cut reached 98%. OFM also removes the data point for May 1998 (when thewater cut was temporarily less than 98%).

11. On theWorkspace tab, click Save to save your work.

Digitizing PointsThis choice may be valuable if the real data is sparse, noisy, or not trustworthy.

1.  On the Format tab, in the Edit group, clickDigitize 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 theWorkspace tab, click Save to save your work.

Toggling Between Working PointsYou 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 thedata to explore the next option. On the Format tab, in the Edit group, select Limit > Reset.

2. On the Format tab, in theDisplay 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

Page 81: UserGuides Tutorials Examples OFM 2014

4. When you finish erasing data points, select on the Format tab, in theDisplay group, clear theToggle Working Points check box.OFM adjusts the fit to reflect the change.

5. On theWorkspace tab, click Save to save your work.

Controlling Fit ParametersYou 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), closeto 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 toRate– Cum. The fit changes to the reduced data set.

3. Return to the Rate v. Time view: On the Property pane, set Analysis toRate – Time.

4. On the Property pane, in theHistory 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 straightline.

5. You can override the least squares regression calculation by placing the fit line where you believe itportrays 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 endof the fit line to a new location.The Results legend values change. On the Property pane, underHistory Match, theMethodchanged toManual.

6. Because theMethod isManual, OFMmay no longer reflect changes (like removingmore datapoints) until you change this setting toAuto: On the Property pane, underHistory Match, changetheMethod toAuto.

7. On the Property pane, underHistory Match, change the Fit Type toHyperbolic.OFM tries to fit the line to the data using a variable b value.

8. Force a specific value: On the Property pane, underHistory Match, change the b Value MethodtoUser. In theUser field, enter 0.6.The graph now shows the best fit to the data subject to this new constraint.

9. On theWorkspace tab, click Save to save your work.

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

80 of 262

User Guides, Tutorials, and Examples

Page 82: UserGuides Tutorials Examples OFM 2014

1. On the Format tab, in the Edit group, click Scenario.The Current Scenariowindow 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 StartRate of From Fit.

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

4. Leave all other choices at the default settings.

5. ClickOK.On the Results legend, the Forecast Ended By explains which of your limits (Rate or Time) isstopping 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 theReserves value that displayed on the Results legend.

9. ClickOK.On the Results legend, the Forecast Ended By now explains that your reserves limit is stoppingthe forecast. 

10. On theWorkspace tab, click Save to save your work.

Saving the ForecastTo commit the results of the working forecast to the database, on the Format tab, in theUtilities group,click Save Analysis.A warningmessage may appear, about group forecasts. It is not an error, so clickOK.

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

n The Forecast pane should now show a savedOil forecast, under Case1, for completion Blue_1:He_0.

81 of 262

User Guides, Tutorials, and Examples

Page 83: UserGuides Tutorials Examples OFM 2014

Tutorial: Ratio AnalysisIn this tutorial, you will:

1. Set up a forecast for ratio analysis (GOR,WOR, water cut, oil cut): The demo project is configured forratio analyses. The four ratios are configured the same way, so the tutorial usesWater Cut as anexample.

After setting up a forecast, you are ready to perform history matching. Forecasts assume thatwhatever 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. Todo that, you must constrain the match (or, fit) to occur only through selected data points. Thereare 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 amore 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 pointfor 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, WaterCut, Oil Cut)The demo project is configured for ratio analyses. The four ratios are configured the same way, so thetutorial usesWater Cut as an example.

1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

2. On theNavigation pane, select the Blue_1:He_0 completion.

3. On theHome 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 Scenariowindow opens.

82 of 262

User Guides, Tutorials, and Examples

Page 84: UserGuides Tutorials Examples OFM 2014

5. On the Flow Model tab, in the Variable Association section, change the Phase/Analysis toWater Cut.

6. Make sure the Cum. Oil isOil.Cum.

7. Make sure theWater Cut, % is Water Cut.All ratio analyses use the Empirical (least squares regression)method as the solution type, so theremaining fields are unavailable.

8. ClickOK.OFM applies the changes you made to the completion you selected (Blue_1:He_0). If you selectanother completion, OFM applies the default settings. You can change the default settings on theScenario Manager. (To open the Scenario Manager, on the Format tab, in the Edit group, clickScenario Manager.)

9. On theWorkspace tab, click Save to save your work.

Setting Lower and Upper Limits1. 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 whichyou 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 thepoints you want to keep.

83 of 262

User Guides, Tutorials, and Examples

Page 85: UserGuides Tutorials Examples OFM 2014

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

4. On theWorkspace tab, click Save to save your work.

Setting the Limit as a RangeAssuming you have followed the lower-limits steps, you now can define a more detailed acceptable range ofdata points.

1. On the Format tab, in the Edit group, select Limit > Range.TheData 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. ClickOK.OFM fits the line though only the data points in which the cumulative oil exceeds 73 Mbbl.

6. On theWorkspace tab, click Save to save your work.

Selecting a VariableThis choice requires you to select a project variable that returns True (1) or False (0). This will most likelybe a calculated variable. OFM will use this variable either to keep a data point for the fit analysis (result ofvariable = 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. ClickOK.OFM lists the new calculated variable on the Variable Editor asNewItem.

5. Click in the cell forNewItem and rename the variableWOR_Cutoff.

6. ClickOK.

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.TheData Selection Variable window opens.

9. Select Use Variable and then selectWOR_Cutoff from the list.

10. ClickOK.

84 of 262

User Guides, Tutorials, and Examples

Page 86: UserGuides Tutorials Examples OFM 2014

OFM removes data points with a water-oil ratio that is less than 70 bbl/bbl.

11. On theWorkspace tab, click Save to save your work.

Digitizing PointsThis 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 theWorkspace tab, click Save to save your work.

Toggling Between Working Points1. 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 theDisplay 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 theDisplay group, clear theToggle Working Points check box.OFM adjusts the fit to reflect the change.

5. On theWorkspace tab, click Save to save your work.

Controlling Fit ParametersYou also can control how OFM performs the fit process.

1. On the Property pane, in theHistory 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 plotmay 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 itportrays 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 theright end of the fit line to a new location.On the Results legend, the values change. On the Property pane, under History Match, theMethod changed toManual.

85 of 262

User Guides, Tutorials, and Examples

Page 87: UserGuides Tutorials Examples OFM 2014

3. Because theMethod isManual, OFMmay no longer reflect changes (like removingmore datapoints) until you change this setting toAuto: On the Property pane, underHistory Match, changetheMethod toAuto.

4. On theWorkspace tab, click Save to save your work.

Setting Up the ForecastYou choose all forecast settings for ratio forecasts on the Property pane.

1. In theOFMForecast section, set Start WCUT Option to From Fit.

2. Set End WCUT Option toValue and then set the End WCUT to 99.9.

3. On theWorkspace tab, click Save to save your work.

Saving the ForecastTo commit the results of the working forecast to the database, on the Format tab, in theUtilitiesgroup, click Save Analysis.A warningmessage about group forecasts may appear. It is not an error, so clickOK.

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

n The Forecast pane should now show a savedWCUT forecast under Case1 for completion Blue_1:He_0.

86 of 262

User Guides, Tutorials, and Examples

Page 88: UserGuides Tutorials Examples OFM 2014

Tutorial: Pressure/Z-factor AnalysisYou conduct P/Z analysis on gas wells. The method is a classical tool for assessing several aspects of a groupof 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 bythe 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 forP/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. Todo that, you may constrain the match (or, fit) to occur only through selected data points. Thereare 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 amore detailed acceptable range of data points.

The other forecasting tutorials show how to select a variable. The P/Z plot is a specialized groupplot, and so the variable is evaluated for the group. Therefore, we do not advise using a variable forP/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 forP/Z analysis.

6. Control fit parameters: In addition to selecting data points for analysis, you also can control how OFMperforms the fit process. You can override the least squares regression calculation by placing the fitline where you believe it portrays a better representation (that is, by using your engineeringjudgment 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

Page 89: UserGuides Tutorials Examples OFM 2014

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

Setting Up P/Z Forecast ParametersFor 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 theDAIGLE_1:SU_V completion and then click Invert.OFM selects all completions except DAIGLE_1:SU_V.

3. ClickOK.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 theHome 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 Scenariowindow opens.

7. Set the Phase to P/Z.

8. Set the Time (Date) to Date.

9. Set the Cum. Gas toGas.Cum.

10. Set P/Z to gas.Pz.

11. ClickOK.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 theWorkspace tab, click Save to save your work.

Setting Lower and Upper Limits1. 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 whichyou 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, andabove the points you want to keep.

88 of 262

User Guides, Tutorials, and Examples

Page 90: UserGuides Tutorials Examples OFM 2014

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

4. On theWorkspace tab, click Save to save your work.

Setting the Limit as a RangeAssuming you have followed the lower-limits steps, you now can define a more detailed acceptable range ofdata 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. ClickOK.OFM fits the line though only data points in which the cumulative gas for the group is greater than12 Bcf.

6. On theWorkspace tab, click Save to save your work.

89 of 262

User Guides, Tutorials, and Examples

Page 91: UserGuides Tutorials Examples OFM 2014

Digitizing PointsThis option may be valuable if the real data is sparse, noisy, or not trustworthy.

1. On the Format tab, in the Edit group, clickDigitize 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 theWorkspace tab, click Save to save your work.

Controlling Fit ParametersIn addition to selecting data points for analysis, you also can control how OFM performs the fit process. Youcan override the least squares regression calculation by placing the fit line where you believe it portrays abetter 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 newlocation.The Results legend values change. On the Property pane, in theHistory Match section, theMethod changed toManual.

2. Because theMethod isManual, OFMmay no longer reflect changes (like removingmore datapoints) until you change this setting toAuto: On the Property pane, underHistory Match, changetheMethod toAuto.By default, OFM back-calculates the original value of P/Z (that is, at a value of cumulative gas equalto zero). However, this initial value is often already known, as the most likely time when pressuredata will have been abundant is before first production.

3. To override the OFM default, on the Property pane, in theHistory Match section, set the InitialP/Z Option toValue.

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 fitline no longer represents a true fit through the data. However, the slope of the line is held the same.

5. On theWorkspace tab, click Save to save your work.

Setting up the ForecastYou choose forecast settings for P/Z forecasts on the Property pane.

1. Under OFMForecast, set the End P/Z Option toValue.

2. Set the End P/Z toValue, 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

Page 92: UserGuides Tutorials Examples OFM 2014

limit.

3. On theWorkspace tab, click Save to save your work.

Saving the Forecast1. To commit the results of the working forecast to the database, on the Format tab, in theUtilities

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 clickOK.

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

n The Forecast pane should now show a savedP/Z forecast under Case1 for the groupBreaux.

91 of 262

User Guides, Tutorials, and Examples

Page 93: UserGuides Tutorials Examples OFM 2014

Tutorial: Flow After Flow TestStarting 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 atotal of three or four rates.

n A single formation average pressure: Pavg (Pws)

n Flowing time for each flowing periodmay 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 WorkspaceOpen the WDAExample sample workspace. It is in the OFM installation folder, at ...SampleWorkspaces\Illustrative Databases\Well Deliverability Analysis\WDAExample.ofm.

Entering Test Data1. On the base map, select the Flow-After-Flow well.

2. On the Setup tab, in the Tables group, clickData Grid.The Select OFM Table to Editwindow opens.

3. Select theDailyProd table and clickOK. The table data displays on a separate tab within the OFMmain 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 Analysis1. On theHome 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 Scenariowindow opens.

92 of 262

User Guides, Tutorials, and Examples

Page 94: UserGuides Tutorials Examples OFM 2014

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

Setting Parameters for the AnalysisOn the Property pane, in theHistory Match section, change some of the settings to see theresults of changes.

Evaluating Analysis Results1. View theHistorical Fit Report: On the Format tab, in theDisplay 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.242Mcf/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

Page 95: UserGuides Tutorials Examples OFM 2014

Tutorial: Well Deliverability AnalysisYou 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 forma 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 andequivalent to the y axis intercept on the matched plot) and n (termed the turbulence factor and equivalentto 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 eachtest (if it is considered that the value of Pws has changed appreciably between the start of the firsttest 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 asporadic table if you have more than one data point in a day. The sequence of the test data isimportant although time is not directly used in the calculations of WDA analyses.

3. Set upWDA forecast parameters: To build a meaningful forecast, it is important to get arepresentative fit through historical data. To do that, you may constrain the match (or, fit) to occuronly through selected data points. There are several ways to do that, and you can use the differentways in any combination.

4. Set lower and upper limits: The other forecasting tutorials show how to set the limit as a range andhow 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 OFMperforms the fit process.

7. Save the forecast

Opening the WorkspaceOpen the WDAExample sample workspace. It is in the OFM installation folder, at ...SampleWorkspaces\Illustrative Databases\Well Deliverability Analysis\WDAExample.ofm.

94 of 262

User Guides, Tutorials, and Examples

Page 96: UserGuides Tutorials Examples OFM 2014

Viewing the Test DataAlthough the data used in this example is stored in a daily table, you may use a sporadic table if you havemore than one data point in a day. The sequence of the test data is important although time is not directlyused in the calculations of WDA analyses.

1. Select theModifiedIsochronal completion.

2. On the Setup tab, in the Tables group, clickData Grid.The Select OFM Table to Editwindow opens.

3. Select theDailyProd table and then clickOK.The table data displays on a separate tab within the OFMmain window.

Setting UpWDA Forecast Parameters1. On theHome 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 astraight line fit. The demoWDA project is already configured for analysis.

2. On the Format tab, in the Edit group, click Scenario.The Current Scenariowindow opens.

3. In the Variable Association section, the default Phase/Analysis isWell 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 singlevalue. Leave this set toDailyprod.pws.

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

Setting Lower and Upper Limits1. 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 whichyou will not accept any data points in your analysis.

95 of 262

User Guides, Tutorials, and Examples

Page 97: UserGuides Tutorials Examples OFM 2014

For an upper limit, you must define your line to pass below the points you want to exclude, andabove 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 Points1. On the Format tab, in the Edit group, clickDigitize 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 theWorkspace tab, click Save to save your work.

TogglingWorking Points1. 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 theDisplay 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

Page 98: UserGuides Tutorials Examples OFM 2014

OFM adjusts the fit to reflect the change.

5. On theWorkspace tab, click Save to save your work.

Controlling Fit ParametersIn 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 theDisplay group, select Legend.

2. On the Property pane, in theHistory Match section, set the Pws Option toValue.

3. Set Pws to 1900.This action is the same as choosing the single value option for shut-in pressure on the CurrentScenariowindow, 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 isequivalent to the maximum value found in the test data set (the default). OFM takes a value of Pwffrom the Reference Pressure, Pref setting on the Property pane. For this completion, the Pwsvalue being used is the default value, which is a historical maximum of 1948 psi. To override thedefault Pws value: On the Property pane, in theHistory Match section, set the Pws (AOF)Option toValue and then enter 1900 for the value.On the Results legend, the AOF calculation changes.

Saving the ForecastTo commit the results of the working forecast to the database, on the Format tab, in theUtilitiesgroup, click Save Analysis.The savedWDA forecast displays under Case1 for completion ModifiedIsochronal.

97 of 262

User Guides, Tutorials, and Examples

Page 99: UserGuides Tutorials Examples OFM 2014

Tutorial: Wellbore DiagramYou can create wellbore diagrams from the information stored or calculated in your project data. In thistutorial, 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 Well1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. On theHome tab, in the Launch analysis group, clickWell Diagram.A blank wellbore diagram opens.

3. On the Filter pane, click Clear Filter to remove any previously-applied filters.

4. Click Filter By Completion .

The Filter By Completion window opens.

5. On the list of completions, select Green 7:Ad 2D and then clickOK.

6. On the Format tab, in the Edit group, clickWellbore Diagram.The Edit WBD window opens.

Editing the Casing1. 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 aftereach 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

Page 100: UserGuides Tutorials Examples OFM 2014

n Weight: 72.00

n Comment: Full returns of cement after running csg

3. Click Apply.

Editing the Views1. 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 Casingwindow.

Editing the Tubing1. On the Format tab, in the Edit group, clickWellbore 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

Page 101: UserGuides Tutorials Examples OFM 2014

Changing the Equipment1. 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 Section1. On the Format tab, in the Edit group, clickWellbore Diagram.

2. On theHole 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 Completion1. 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

Page 102: UserGuides Tutorials Examples OFM 2014

n Selection: Perfs

n Type: Open

n Comments: perf w/ 8 SPF - 0

3. Click Apply and then Close.

4. On theWorkspace tab, click Save to save your work.

101 of 262

User Guides, Tutorials, and Examples

Page 103: UserGuides Tutorials Examples OFM 2014

Overview of the ExamplesThe tutorials and the examples in this help system help you understand the different OFM features withinworkflows. You can use the sample workspaces in your OFM installation folder to work through thetutorials 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 ortechniques for the solution or analysis of any problem.

Creating Plots for Waterflooding SurveillanceIn 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 waterproduction plot. This example focuses on:

n Creating new tables and fields from the Edit Schema Tables window, and entering data in the DataGrid

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 NewWell SymbolsIn 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, andmake the associations necessaryto 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 DataThis example shows how to use user functions in OFM. You can use user functions to execute iterativecalculations (among other things). In this example, you execute iterative calculations to create acontinuous stream of pressure data, using a combination of sporadic pressures, production data, and a P/Zline. 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

Page 104: UserGuides Tutorials Examples OFM 2014

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 IndicatorIn this example, you create a grid calculation to indicate relative formation damage. The parametercontrasts actual production with a simple indicator of productive capacity (kh). This example focuses on:

n Creating gridmaps

n Saving grid (.grd) files to the registry

n Using the Calculate Grid feature

Creating a Water Breakthrough Diagnostic (Chan) PlotIn 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 PlotIn this example, you create a Hall plot, which is a useful diagnostic for water injection wells. This examplefocuses 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) PlotIn this example, you create an ABC plot to compare oil andwater between two dates. This example focuseson:

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 andmaximum values

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

103 of 262

User Guides, Tutorials, and Examples

Page 105: UserGuides Tutorials Examples OFM 2014

Displaying Formation or Reservoir Thickness and StructureIn 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 ArithmeticIn this example, you use grid arithmetic to estimate OOIP. This example focuses on:

n Creating and using an OFM Query filter

n Addingmap annotations

n Creating gridmaps

n Creating grid areas

n Adding grid (.grd) files to the registry

n Performing grid arithmetic

Calculating Average Production for NMonthsIn this example, you create a user function that finds the average production for nmonths, excludingmonths without production data. You then create a report to show this information. This example focuseson:

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

Page 106: UserGuides Tutorials Examples OFM 2014

Finding the Monthly Average Value for Sporadic DataIn this example, you create a report that shows the monthly average value for test data. This examplefocuses 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 RangesIn this example, you create a bubble map that displays water cut development in discreet ranges. Eachrange has a specific color. This example focuses on:

n Creating calculated variables

n Creating bubble maps and then changing the bubble properties

n Animatingmaps

n Using the @If and@Null system functions

Using .Las Log DataIn this example, you use the LAS to OFM tool to create a log and definition file from a .las file, and then youload 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 ItsEquationIn this example, you create a variable that curve fits production data. Then you display it on a graph andpost 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 RadiusIn this example, you create a bubble map in which the bubbles are scaled to indicate the drainage radius ofthe well. You addmap annotations to show channel sand and zero pay contours. You then overlay the

105 of 262

User Guides, Tutorials, and Examples

Page 107: UserGuides Tutorials Examples OFM 2014

bubbles onto a gridmap. 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 Addingmap annotations

n Overlaying bubbles from a bubble map onto a gridmap

n Using the @Sqrt system function

Adding a Shapefile for California's Geothermal WellsIn this example, you add a shapefile to the GISmap to show geothermal wells in California. This examplefocuses on:

n Adding a shapefile

n Changing the transparency and symbol color

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

n Adding a shapefile

n Usingmap tips

n Changing the symbol color

n Changing the labels

Connecting to an ArcGIS Map to Add U.S. Topological FeaturesIn this example, you connect the GISmap to an ArcGISmap to add US land cover imagery and detailedtopological features. This example focuses on:

n Making an ArcGIS connection

n Reordering layers on the GISmap

Connecting to an ArcGIS Map to Add Streets and RailroadsIn this example, you connect the GISmap to an ArcGISmap to add streets, railroads, parks, andlandmarks. This example focuses on:

106 of 262

User Guides, Tutorials, and Examples

Page 108: UserGuides Tutorials Examples OFM 2014

n Making an ArcGIS connection

n Changing the transparency

107 of 262

User Guides, Tutorials, and Examples

Page 109: UserGuides Tutorials Examples OFM 2014

Example: Adding New Well SymbolsIn 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 Files1. Open the Demoworkspace. 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.TheWell Symbolswindow opens.

b. In the image preview box, scroll through the different symbol graphics. Notice the first one andanother near the end of the list:

1 92

c. ClickOK to close the window.

3. OFM draws the well symbols using instructions in annotation (.ano) files and theWorkspaceDefaults.xml file. Review these files:

a. The annotation files are in the OFM installation folder, in the Symbols sub-folder. In theSymbols 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 commandstomake the circle.

Each symbol is drawn on a canvas that is 10 units by 10 units.

108 of 262

User Guides, Tutorials, and Examples

Page 110: UserGuides Tutorials Examples OFM 2014

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. Thenext 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 aradius of 1.

b. Close the 1.ano file, and open the 92.ano file in Notepad.This file is for the ninety-secondwell symbol, which is much more complex than the first. Notethat it uses several different draw commands:

LI fills polygons defined after the LI command.

Mmoves 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

Page 111: UserGuides Tutorials Examples OFM 2014

c. Close the 92.ano file.

d. Open theWorkspaceDefaults.xml file. This file is language-specific. Look at the one for thelanguage 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:

<WellType WellTypeName>: Short name for the well symbol

<Label>: Long name for the well symbol

<SymbolID>: The number of the symbol annotation file

<Color>: The color for the symbol

d. Note the row for the first well symbol. It is assigned to the well type "Prospect".

e. Close theWorkspaceDefaults.xml file.

4. Close the Demoworkspace andOFM.

Creating NewWell SymbolsThese 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. Onthe 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 LWcommand. The standard, default width is 1. On the second line, type this: LW 1

110 of 262

User Guides, Tutorials, and Examples

Page 112: UserGuides Tutorials Examples OFM 2014

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 sub-folder) 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. Asolid 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) whichis (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 theWorkspaceDefaults.xml file in Notepad or an XML editor.

b. On the line tagged<AvailableSymbolCount>, change 95 (the number of well symbols) to 97.

c. It would be appropriate to create a new <WellType> 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 Producersymbol.

In the section for Oil Producers, change the symbol ID from 3 to 95 so that OFM will use the95.ano file by default for oil producers.

111 of 262

User Guides, Tutorials, and Examples

Page 113: UserGuides Tutorials Examples OFM 2014

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

e. Save and close the file.

Making the New Associations1. Open the Demoworkspace in OFM.

2. On the Setup tab, in the Tables group, click Association.

3. On theGeneral tab, in theWell Type - Table field, reselect Category.WellType so that OFM willdisplay options for the well symbol file to use.

112 of 262

User Guides, Tutorials, and Examples

Page 114: UserGuides Tutorials Examples OFM 2014

4. ClickOK.TheWell Symbol File window opens. The selected option isDefault.

5. ClickOK.The base mapmarks 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 symbolsyou created.

8. ClickOK to close the window.

113 of 262

User Guides, Tutorials, and Examples

Page 115: UserGuides Tutorials Examples OFM 2014

Example: Calculating Pressure from P/Z andProduction DataThis example shows how to use user functions in OFM. Among other things, you can use user functions toexecute iterative calculations. In this example, you execute iterative calculations to create a continuousstream of pressure data, using a combination of sporadic pressures, production data, and a P/Z line. To dothis, 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 Data1. Open the Demoworkspace. 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 pressuredata, but does not have data. Add pressure data:

a. On the Setup tab, in the Tables group, clickData Grid.The Select OFM Table to Editwindow opens.

b. Select theMonthlyProd table and then clickOK.

c. On theNavigation 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

Page 116: UserGuides Tutorials Examples OFM 2014

Creating a User Function to Calculate the PressureCorresponding to Any Point on a P/Z Line1. On the Setup tab, in the Variable Managers group, clickUser Functions.

TheUser Functionswindow 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 atthe top of the window.

4. This user function will take one input, which is a parameter that represents a P/Z value. It also willcreate 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 bymore than 0.001. In other words, the function has converged, and it outputs its result, which isthe 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

Page 117: UserGuides Tutorials Examples OFM 2014

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. ClickOK.

11. On the Edit User Function window, click Close.

Finding the P/Z Value1. 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 orderthrough 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 avalue 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

Page 118: UserGuides Tutorials Examples OFM 2014

In this workspace, PZ is already defined as a calculated variable.

3. Double-click the items in the System Functions andProject Variables lists to add this equationto the text box at the top of the window: @Fit( Gas.cum, pz, pz>0, Gas.cum,"Deg 1 linear")

4. ClickOK.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, clickDefine to hide the definition columns, and click Plot to show theplot 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 showthe 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 clickUnits to show the unitscolumns.

b. On the row for Fit.PZ, forUnits select psig ==> bar.

c. You need to use this calculated variable in the next calculated variable you will create. It is notavailable until you save your changes. ClickOK to save your changes and close the VariableEditor.

Calculating the Pressure from a Fitted P/Z Curve1. 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 youcreated. Double-click the items in theUser Functions andProject Variables lists to add thisequation to the text box at the top of the window: #PCalc(FIT.PZ)

4. ClickOK.

117 of 262

User Guides, Tutorials, and Examples

Page 119: UserGuides Tutorials Examples OFM 2014

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. ClickDefine 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. ClickOK to save the calculated variable and close the window.

Comparing the Reservoir Pressure to the Fitted Pressure fromthe Fitted P/Z Curve1. On theNavigation pane, select the BLUE_1:Ge_6 completion.

2. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

3. You will create a plot with two graphs. In theGraph section, set the Number of Graphs to 2.

4. Make selections for the first graph:

a. In theGraph 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, andBLUE_1:Ge_6 name.

5. Make selections for the second graph:

a. In theGraph section, change the Current Graph toGraph 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 theMonthlyprod.Pressure variable, the Current category, andthe BLUE_1:Ge_6 name.

f. ClickOK.

6. Change the scale type for the top graph:

118 of 262

User Guides, Tutorials, and Examples

Page 120: UserGuides Tutorials Examples OFM 2014

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

Page 121: UserGuides Tutorials Examples OFM 2014

Example: Creating a Formation DamageIndicatorIn this example, you will create a grid calculation to indicate relative formation damage. The parametercontrasts 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 gridmap and save to the registry.

3. Estimate the formation damage parameter.

Reviewing the Existing Calculated Variable1. 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 gridmap. This is already included as a calculatedvariable in the workspace. Confirm the calculated variable:

a. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.

b. Double-click theName 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 liquidproduction.

d. ClickOK to close the Variable Editor.

Creating a Grid Map and Saving to the Registry1. On theHome tab, in the Launch analysis group, clickGrid.

2. Double-click the followingProject 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 theUtilities group, click Save Analysis > Save As.

b. Save the file as NetPay.grd.The Save Grid File window opens.

c. In theName andDescription fields, type NetPay and then clickOK.

120 of 262

User Guides, Tutorials, and Examples

Page 122: UserGuides Tutorials Examples OFM 2014

5. Save permeability to the registry:

a. On the Properties pane, under Variable Properties, change the Variable toResprop.Perm.

b. On the Format tab, in theUtilities group, click Save Analysis > Save As.

c. Save the file as Permeability.grd.The Save Grid File window opens.

d. In theName andDescription fields, type Permeability and then clickOK.

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 theUtilities group, click Save Analysis > Save As.

c. Save the file as LiquidMonthly.grd.The Save Grid File window opens.

d. In theName andDescription fields, type LiquidMonthly and then clickOK.

Estimating the Formation Damage Parameter1. On the Format tab, in the File Grid Utilities group, click Calculate.

The Calculate Gridwindow opens.

2. ClickNew.

3. In theDescription andName fields, enter Formation Damage.

4. Click Equation.The Edit Calculated Variable window opens. The Project Variables list displays the items in theregistry.

5. You are creating a map of formation damage by combining the other maps via an expression. Eachterm in the expression represents amap (not a number). Double-click the Project Variables to addthis to the text box at the top of the window: LiquidMonthly / (NetPay*Permeability)

6. ClickOK.

7. On the Calculate Gridwindow, clickOK.The formation damage gridmap displays.

Note: The formation damage parameter is not an absolute calculation. Interpret the map in relativeterms.

121 of 262

User Guides, Tutorials, and Examples

Page 123: UserGuides Tutorials Examples OFM 2014

Example: Creating a Water BreakthroughDiagnostic (Chan) PlotThe 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 StartedOpen the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\PilotWaterflood 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 twosystem functions:

n The@If system function evaluates a condition. If the condition is true, the system functionreturns the second argument. If it is false, it returns the third argument. In this case, if oilproduction 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 equationto the text box at the top of the window: @if(Prd.Oil>0,Prd.Water/Prd.Oil,@null())

4. ClickOK.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

Page 124: UserGuides Tutorials Examples OFM 2014

WOR Derivative1. Click Add Calculated Variable.

For this calculated variable, you want to make sure the result is positive (it will be plotted on a logscale), so you want the absolute value of the derivative. You will use these two system functions inthe 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 thecurrent record.

2. Enter this equation: @If(Prd.Days>0, @abs(Ratio.WOR-@Previous(Ratio.WOR))/Prd.days,

@Null())

3. ClickOK.

4. Type the name of the calculate variable and then press Enter: WOR_Deriv

Number of Elapsed Days1. Click Add Calculated Variable.

For this calculated variable, you want to find the number of days that have elapsed between firstproduction and the current date. You will use these two system functions in the calculatedvariable:

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. ClickOK.

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 yousave your changes. ClickOK to save your changes and close the Variable Editor.

Fitting the WOR Derivative1. 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-axisfor the plot should be days, and the Y-axis for the dataset should be the value from this WOR_Derivcalculated variable. You want to exclude the values from WOR_Deriv if that value is not greaterthan zero.

123 of 262

User Guides, Tutorials, and Examples

Page 125: UserGuides Tutorials Examples OFM 2014

You will use one system function in the calculated variable. The @Fit system function fits apolynomial 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_derivvalue 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. ClickOK.

5. Type the name of the calculate variable and then press Enter: WOR_Deriv_Fit

Fitting the WOR1. Click Add Calculated Variable.

This calculated variable is similar to the previous one. You will fit a 5th order polynomial curvethrough the data. The X-axis for the plot should be days, and the Y-axis for the dataset should bethe value from this WOR_Fit calculated variable. You want to exclude the values from WOR_Fit ifthat 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. ClickOK.

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. ClickOK to save your changes andclose the Variable Editor.

Creating the Chan Plot1. Create a plot with the calculated variables you created:

a. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

b. For the X-Axis Variable, select the Elapsed_Days variable you created.

c. For the first curve, select theWOR_Deriv variable and then click Add Curve.

d. For the second curve, select theWOR_Deriv_Fit variable and the click Add Curve.

124 of 262

User Guides, Tutorials, and Examples

Page 126: UserGuides Tutorials Examples OFM 2014

e. For the third curve, select theWOR_Fit variable and then click Add Curve.

f. For the fourth curve, select Ratio.WOR.

g. ClickOK.

h. On theNavigation 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, underGraph 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, underGraph 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, underGraph 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, underGraph 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

Page 127: UserGuides Tutorials Examples OFM 2014

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

3. View the different characteristic trends:

a. On theNavigation pane, select the 3518:B completion. This is an example of normal behavior.

126 of 262

User Guides, Tutorials, and Examples

Page 128: UserGuides Tutorials Examples OFM 2014

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

127 of 262

User Guides, Tutorials, and Examples

Page 129: UserGuides Tutorials Examples OFM 2014

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

128 of 262

User Guides, Tutorials, and Examples

Page 130: UserGuides Tutorials Examples OFM 2014

129 of 262

User Guides, Tutorials, and Examples

Page 131: UserGuides Tutorials Examples OFM 2014

Example: Creating a Hall PlotThe Hall plot is a useful diagnostic for water injection wells, assuming a series of steady-state injectionconditions.

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

2. Verify the project has water injection andwater 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, clickData Grid.The Select OFM Table to Editwindow opens.

b. Select theWIN (water injection) table and then clickOK.

c. On the Filter pane, expand Table Data and then selectWIN show that theNavigation paneonly shows the completions with data in the WIN table.TheNavigation pane lists 16 completions.

d. In the WIN table, water injection is in the WINJ field. Water injection pressure is in the WIPREfield. On theNavigation pane, click through the 16 completions. Note that only thesecompletions have data in the WINJ andWIPRE fields:

502WI:B

503WI:B

504WI:B

505WI:B

515WI:B

e. On theNavigation pane, under Table Data, expand theWIN table. To the left of eachcompletion is a check box. For each completion that does not have data in the WINJ andWIPREfields, click the check box three times so that a redminus sign displays in the check box. Thisremoves the completion from the list on theNavigation 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 threesystem functions to do this:

130 of 262

User Guides, Tutorials, and Examples

Page 132: UserGuides Tutorials Examples OFM 2014

@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 valueswhere the last value remains constant until it is changed by a new data point (a stair-step). Ifit 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 dailybasis.

c. Double-click the items on the Project Variables andSystem Functions lists to add thisequation to the text box at the top of the window: @RSum(@Step(Win.Wipre,Win.Wipre=0)*@Dom(date))

d. ClickOK.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. ClickOK to save the calculated variable and close the window.

4. Create the plot:

a. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

b. For the X-Axis Variable, selectWinj.Cum.

c. For the curve, select theHallPlot calculated variable.

d. ClickOK.

e. On theNavigation pane, select the different water injection completions to view the Hall plotfor the completion.

131 of 262

User Guides, Tutorials, and Examples

Page 133: UserGuides Tutorials Examples OFM 2014

Example: Creating an After-Before-Compare (ABC) PlotAn After-Before-Compare plot uses well test production data from two dates, and compares performancebetween those dates. In this example, you will create calculated variables to display this information. Aspart of the process, you will perform intermediate calculations and display the results in a report, so thatyou 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 Variables1. 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 theName column to sort the list alphabetically by name.

4. Note the Oil.CalDay calculated variable. The equation shows that it divides monthly oil production bythe number of days in the month. You will use this calculated variable in the analyses and calculatedvariables you create in this example.

5. Also note the Water.CalDay calculated variable.

6. ClickOK to close the window.

Reporting the Monthly Oil Rate1. On theHome tab, in the Launch analysis group, click Report.

The Edit Reportwindow 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

Page 134: UserGuides Tutorials Examples OFM 2014

2. Double-click the items in the System Functions andProject Variables lists to add this to the textbox at the top of the window: @Name(), Date, Oil.CalDay

3. ClickOK.

4. On theNavigation pane, select the 1975:B completion.

5. Select the last column on the report. On the Properties pane, under Columns, change theDecimal 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

Page 135: UserGuides Tutorials Examples OFM 2014

Finding the Monthly Oil Rate from Three Months Previous1. 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 thepast) 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, or2 for the end of the month.

3. Double-click the items in the System Functions andProject Variables lists to add this to the textbox at the top of the window: @ValueAt(Oil.CalDay,@AddMonths(Date, -3, 0) )

4. ClickOK.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. ClickOK 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 Reportwindow opens, and displays the variables you selected for the columns in yourreport.

You want to add two columns:

n Oil rate on the last day: This column should show the last oil rate value. The@Last systemfunction 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 thecondition (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 datethree months previously. Use the new Oil.RatePrevious3 calculated variable.

9. Double-click the items in the System Functions andProject Variables lists to add the variablesneeded for the new columns. It should be: @Name( ),Date,Oil.CalDay, @Last(Oil.CalDay,

@Last(1)), Oil.RatePrevious3

10. ClickOK.

11. Select the last column on the report. On the Properties pane, under Columns, change theDecimal Places to 2.

12. For the 1975:B completion, note the row for December 1990:

134 of 262

User Guides, Tutorials, and Examples

Page 136: UserGuides Tutorials Examples OFM 2014

n Oil rate on the last day is 75.43

n Oil rate 3 months previously is 99.31

Finding the Change in Oil Rate1. 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 calculatedvariable.

3. Double-click the items in the System Functions andProject Variables lists to add this to the textbox at the top of the window: @Last(Oil.CalDay, 1) / Oil.RatePrevious3

4. ClickOK.

5. Type this new name for the calculated variable and then press Enter: Oil.RateChange3

6. ClickOK to save the calculated variable and close the window.

135 of 262

User Guides, Tutorials, and Examples

Page 137: UserGuides Tutorials Examples OFM 2014

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 theOil.RateChange3 calculated variable.

9. Double-click the items in the System Functions andProject Variables lists to add the variableneeded for the new column. It should be: @Name( ),Date,Oil.CalDay, @Last(Oil.CalDay, @Last

(1)), Oil.RatePrevious3, Oil.RateChange3

10. ClickOK.

11. Select the last column on the report. On the Properties pane, under Columns, change theDecimal Places to 2.

12. Note that for Completion 1975:B, in December 1990, the oil rate from the last day (75.43) is dividedby 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 Rate1. 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 showsthe three-month change in water rate.

136 of 262

User Guides, Tutorials, and Examples

Page 138: UserGuides Tutorials Examples OFM 2014

3. Double-click the items in the System Functions andProject Variables lists to add this to the textbox at the top of the window: @Last(Water.CalDay, 1) / @ValueAt(Water.CalDay, @AddMonths

(Date, -3, 0) )

4. ClickOK.

5. Type this new name for the calculated variable and then press Enter: Water.RateChange3

6. ClickOK to save the calculated variable and close the window.

Creating an ABC Scatter Plot1. Create a new scatter plot:

a. On theHome tab, in the Launch analysis group, click Scatter.The Create Scatter Plotwindow opens.

b. On the list of Project variables, double-click theWater.RateChange3 variable to move it tothe Selected variables list. Then double-click theOil.RateChange3 variable.

c. Click Finish.The X-axis of the scatter plot shows the ratio of current water to the three-month previouswater 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 Minimumto -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

Page 139: UserGuides Tutorials Examples OFM 2014

c. ClickOK.

4. Each point on the plot represents one well at a single point in time. On the Format tab, in theAnimation Utilities group, select theOctober 1997 date.

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

138 of 262

User Guides, Tutorials, and Examples

Page 140: UserGuides Tutorials Examples OFM 2014

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

Page 141: UserGuides Tutorials Examples OFM 2014

Example: Creating Plots for WaterfloodingSurveillanceIn 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 forintroducing PVT data. In this example, you will assume the properties are constant and so you willuse 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 productionvolumes to injection volumes.

4. Create two recovery plots:

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

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

5. Create two PVI plots:

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

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 theWorkspace1. 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 Tableswindow opens.

140 of 262

User Guides, Tutorials, and Examples

Page 142: UserGuides Tutorials Examples OFM 2014

b. On theOFM Representation pane, right-click the Pilot Waterflood BField.mdb home datasource and then click Add.OFM lists the new table on the OFM Representation pane. By default, OFM names the tableNewItem and you must change the name.

c. Type the new name and then press Enter: STOIIP

d. By default, OFM sets the table to holdmonthly data. On the right side of the window, on theTable tab, change Table Type to Static.

e. OFM asks if you want to keep the DATE key field. ClickNo.

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.TheOFM Representation pane shows two fields in the STOIIP table: The Pattern field (whichis a primary key field) and Volume.

h. ClickOK 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 Editwindow opens.

b. Select the STOIIP table and then clickOK.

c. Enter the following rows of data for the Pattern andVolume columns:

Pattern

Volume

495 77400

496 88200

497 91800

500 120000

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 thatthe Boi is a constant value of 1.2.

141 of 262

User Guides, Tutorials, and Examples

Page 143: UserGuides Tutorials Examples OFM 2014

3. Double-click the items in the Project Variables list to add this equation to the text box at the top ofthe window: Stoiip.Volume*1.2

4. ClickOK.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 yourchanges. ClickOK 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 ofthe window: HCPV*(1-0.2)

4. ClickOK.

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 yourchanges. ClickOK 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 iscumulative 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 variablewhich 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 andProject Variables lists to add this equationto the text box at the top of the window: @CumInput (Win.Winj)/DHCPV

4. ClickOK.

5. Type this new name for the calculated variable and then press Enter: PVI

142 of 262

User Guides, Tutorials, and Examples

Page 144: UserGuides Tutorials Examples OFM 2014

Recovery Factor (RF)1. Click Add Calculated Variable.

Recovery factor is cumulative oil / STOIIP. To find cumulative oil, use the @CumInput systemfunction 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 equationto the text box at the top of the window: @CumInput(Prd.Oil)/Stoiip.Volume

3. ClickOK.

4. Type this new name for the calculated variable and then press Enter: RF

5. ClickOK to save the calculated variables and close the window.

Creating a Conformance PlotThis plot helps characterize injection behavior by comparing production volumes to injection volumes.

1. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow opens.

2. For the X-Axis Variable, selectWinj.Cum.

3. Click Add Multiple Curves.The Add Multiple Curveswindow opens.

4. Make these selections and then clickOK:

n Category: regular_five_spot

n Variable: Oil.Cum

5. On the list of curves on the Edit Plotwindow, highlight rows 7 and 8 (for patterns 510 and 511) andthen click Remove Curve so that you have six curves.

6. ClickOK.

143 of 262

User Guides, Tutorials, and Examples

Page 145: UserGuides Tutorials Examples OFM 2014

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 theDisplay group, clear the Legend check box.

8. On the Properties pane, underGraph settings, change Curve Name toAs 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 theCurves field, select 1: Oil.Cum:regular_five_spot:495. Under Curve Properties, change theLine Color toRed and the Line Width to 3.

11. Make the second curve a thicker blue line: UnderGraph settings, on the Curves field, select 2:Oil.Cum:regular_five_spot:496. Under Curve Properties, change the Line Color toBlue andthe Line Width to 3.

144 of 262

User Guides, Tutorials, and Examples

Page 146: UserGuides Tutorials Examples OFM 2014

12. Make the third curve a thicker teal line: UnderGraph settings, on the Curves field, select 3:Oil.Cum:regular_five_spot:497. Under Curve Properties, change the Line Color to Teal andthe Line Width to 3.

13. Make the fourth curve a thicker green line: UnderGraph settings, on the Curves field, select 4:Oil.Cum:regular_five_spot:500. Under Curve Properties, change the Line Color asGreenand change the Line Width to 3.

14. Make the fifth curve a thicker magenta line: UnderGraph settings, on the Curves field, select 5:Oil.Cum:regular_five_spot:506. Under Curve Properties, change the Line Color toMagentaand the Line Width to 3.

15. Make the sixth curve a thicker brown line: UnderGraph settings, on the Curves field, select 6:Oil.Cum:regular_five_spot:509. Under Curve Properties, change the Line Color toDarkBrown 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 thatdefines 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 graphbelow), that line would show where cumulative oil production equals the cumulative water injected.

145 of 262

User Guides, Tutorials, and Examples

Page 147: UserGuides Tutorials Examples OFM 2014

Viewing the Recovery Factor versus PVIThis plot helps you determine how individual patterns compare to the field average, to find the factoraffecting recovery.

1. Make a copy of the conformance plot: On the Analysis pane, right-click Conformance Plot andthen 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 toRF. Keep the Category andName selections the same.

8. ClickOK.

The plot loses its formatting when you change the curves. You are ready to improve visibility of theplot.

9. On the Format tab, in theDisplay 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 asyou 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

Page 148: UserGuides Tutorials Examples OFM 2014

Viewing the Recovery Factor versus TimeWith 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 theprevious plot: On the Analysis pane, right-click Recovery Factor versus PVI and then clickSave 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 toDate.

5. ClickOK.

147 of 262

User Guides, Tutorials, and Examples

Page 149: UserGuides Tutorials Examples OFM 2014

Viewing the Water Cut versus PVIThis 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 thecurves are different. Make a copy of the plot: On the Analysis pane, right-click Recovery Factorversus 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 toWater.Cut. Keep the Category andName selectionsthe same.

5. ClickOK.

The plot loses its formatting when you change the curves. You are ready to improve visibility of theplot.

6. On the Format tab, in theDisplay 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 didbefore:

148 of 262

User Guides, Tutorials, and Examples

Page 150: UserGuides Tutorials Examples OFM 2014

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 TimePVI helps normalize the quantity of water injection and gives you a basis for comparison. In this plot, youwill 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 andName selections thesame.

5. ClickOK.

149 of 262

User Guides, Tutorials, and Examples

Page 151: UserGuides Tutorials Examples OFM 2014

The plot loses its formatting when you change the curves. You are ready to improve visibility of theplot.

6. On the Format tab, in theDisplay 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 didbefore:

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 WaterProduction1. 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

Page 152: UserGuides Tutorials Examples OFM 2014

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 toWater.Cum.

5. ClickOK.

6. On the Format tab, in theDisplay group, select the Legend check box and then drag the legend toa good location.

151 of 262

User Guides, Tutorials, and Examples

Page 153: UserGuides Tutorials Examples OFM 2014

Example: Displaying Formation or ReservoirThickness and StructureOFM 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 gridmap 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 Data1. Open the Demoworkspace. 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 Tableswindow opens.

b. Right-click theDemo 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 toholdmonthly 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. ClickNo.

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 otherfields: Depth and H.

h. On theOFM Representation pane, select theDepth field.

i. On theUnits tab, select ft ==>m.

j. On theOFM Representation pane, select theH field.

k. On theUnits tab, select ft ==>m.

l. ClickOK to save your changes and close the window.

3. Add data to the new table:

152 of 262

User Guides, Tutorials, and Examples

Page 154: UserGuides Tutorials Examples OFM 2014

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 Thickness1. 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 theHome 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 theGRID 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

Page 155: UserGuides Tutorials Examples OFM 2014

c. On the Properties pane, underGrids and Limits, changeGrid Type toNone.

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 Thickness1. On the Analysis pane, right-click the contour map and then click Clone Map As > Grid Map.

OFM creates a new gridmap 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, changeGrid Type to Frame.

154 of 262

User Guides, Tutorials, and Examples

Page 156: UserGuides Tutorials Examples OFM 2014

4. On the Analysis pane, right-click the gridmap 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 theStructure1. On the Analysis pane, right-clickNet Sand Thickness - Contour Map and then click Save As

New Node.OFMmakes 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 itto the Selected variables list.

6. Click Finish.

155 of 262

User Guides, Tutorials, and Examples

Page 157: UserGuides Tutorials Examples OFM 2014

Displaying the Thickness Map on the Base Map1. Close the Pseudo Structure map and open theNet Sand Thickness - Contour Map.

2. On the Format tab, in theUtilities group, click Save Analysis > Save As.

3. Change the Save as type toAnnotation Files and then save the file with this name:NetSandThickness.ano

4. View the base map.

5. On the Format tab, in theDisplay group, click Annotations.The Map Annotationswindow opens.

6. Click Add.TheData Loader opens.

7. Double-click theNetSandThickness.ano file to move it to the Files list, and then click Load.

8. On theMap Annotationswindow, clickOK.The thickness map you originally created as a contour map displays as an annotation on the basemap.

156 of 262

User Guides, Tutorials, and Examples

Page 158: UserGuides Tutorials Examples OFM 2014

Example: Fitting a Polynomial CurveThrough Plot Data and Displaying ItsEquationIn this example, you will create a variable that curve fits production data. Then you will display it on a graphand 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 tothe plot and plot header.

Getting Started1. Open the Demoworkspace. 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 Setuptab, in the Variable Managers group, click Calculated Variable Editor.The Variable Editor opens with a list of calculated variables.

3. Double-click theName column to sort the list alphabetically by name.

4. Find theOil.CalDay calculated variable and view the Equation.The equation is Prd.Oil/@dom(date). This calculated variable divides oil production by the numberof 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 theMonthsOfProd 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 thedate of initial oil, gas, or water production.

7. ClickOK to close the Variable Editor.

Creating a Plot Showing Calendar Day Oil versus Elapsed Time1. On theHome tab, in the Launch analysis group, click Plot.

The Edit Plotwindow opens.

2. For the X-Axis Variable, selectMonthsOfProd.

3. For the curve, select theOil.CalDay calculated variable.

157 of 262

User Guides, Tutorials, and Examples

Page 159: UserGuides Tutorials Examples OFM 2014

4. ClickOK.

5. On theNavigation 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 toLinear.

Fitting a Polynomial Curve to Data1. 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 orderthrough 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 avalue 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

Page 160: UserGuides Tutorials Examples OFM 2014

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

c. Double-click the items in the System Functions andProject Variables lists to add thisequation to the text box at the top of the window: @Fit( MonthsOfProd, Oil.CalDay,

Oil.CalDay > 0, MonthsOfProd, "deg 3")

d. ClickOK.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 forthe 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 polynomialshould fit this data, but the example illustrates the principle.

b. Double-click the items in the System Functions andProject Variables lists to add thisequation to the text box at the top of the window: @FitEq( Oil.CalDay, "deg 3")

c. ClickOK.

d. Type this new name for the calculated variable and then press Enter: FitEq.OilCalDay

e. ClickOK 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 Plotwindow opens.

b. Click Add Curve.

c. For the new curve, select the Fit.OilCalDay calculated variable.

d. ClickOK.

159 of 262

User Guides, Tutorials, and Examples

Page 161: UserGuides Tutorials Examples OFM 2014

4. Display the equation on the plot:

a. On the Format tab, in the Edit group, clickHeader.TheHeader window opens. You will add both calculated variables to the header, becauseFitEq.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. ClickOK to save and close.

g. To hide the first line of the header, select and right-click it. Change the Font Color toWhite.

160 of 262

User Guides, Tutorials, and Examples

Page 162: UserGuides Tutorials Examples OFM 2014

Example: Estimating OOIP Using GridArithmeticIn this example, you will use grid arithmetic on a grid file to estimate original oil in place (OOIP). The OOIPequation 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 assumethe 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 amap annotation file that helps you create a grid area later

n Create a gridmap 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 Completions1. 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 propertydata:

a. On the Setup tab, in the Tables group, clickData Grid.

b. Select the Resprop table, select the Edit all records check box, and then clickOK.

c. Note that the Resprop table has columns for net pay (NET_PAY), porosity (PHI), and oilsaturation (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-clickOfm Query and then click Add.TheOFM 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 boxat the top: Resprop.Net_pay > 0 & Resprop.Phi > 0 & Resprop.So > 0

161 of 262

User Guides, Tutorials, and Examples

Page 163: UserGuides Tutorials Examples OFM 2014

d. ClickOK to close the Create Query window, and then OK to close theOFM 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 AnnotationThis map annotation will help you create a grid area later. It wasmade of the oil/water contact. Later, youwill consider the area inside the oil/water contact for the calculation.

1. On the Format tab, in theDisplay group, click Annotations.TheOFM Data Loader opens.

2. Double-click this file, which is in the OFM installation folder: ...Sample Workspaces\Pilot WaterfloodSample\Text Load Files\Anno\ZEROPAY.ANOThe Files section shows the file ready to load.

3. Click Load.TheMap Annotationswindow opens.

162 of 262

User Guides, Tutorials, and Examples

Page 164: UserGuides Tutorials Examples OFM 2014

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

Creating the Grid Map1. On theHome tab, in the Launch analysis group, clickGrid.

The Create Grid Mapwindow opens.

2. Double-click each of the Project variables from the Resprop table to move them to the Selectedvariables 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 gridmap displays reservoir porosity. The channel sand is in the center of the reservoir, wherethe high porosity zone displays.

163 of 262

User Guides, Tutorials, and Examples

Page 165: UserGuides Tutorials Examples OFM 2014

Adding Grid Files to the RegistryThe grid area (.ga) file determines the area in your OOIP calculation. You save grid maps asgrid (.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 gridmap. Use the dotted line asa guide to create the grid area:

a. On the Format tab, in theGrid Area Utilities group, click Add.

b. Click around the dotted line to create the grid area. When you are finished, right-click and thenclickDone.The area outside the grid area becomes white.

c. On the Format tab, in theUtilities 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. ClickOK.

164 of 262

User Guides, Tutorials, and Examples

Page 166: UserGuides Tutorials Examples OFM 2014

2. Add control points around the oil/water contact to enter zero net pay values, and then save the gridfile to the registry:

a. The gridmap is showing porosity. Change it to show net pay: On the Properties pane, underVariable Properties, change the Variable toResprop.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. ClickOK.

d. Click around the perimeter of the oil-water contact to add the control points. When you arefinished, right-click and then clickDone.The gridmap displays the net pay.

e. On the Format tab, in theUtilities 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 theName field, type netpay.

165 of 262

User Guides, Tutorials, and Examples

Page 167: UserGuides Tutorials Examples OFM 2014

h. Select the Save Grid Area check box.

i. Select the Save Control Points check box.

j. ClickOK.

3. Save an oil saturation grid file to the registry:

a. Change the gridmap to show oil saturation: On the Properties pane, under VariableProperties, change the Variable to Resprop.So.

b. On the Format tab, in the Control Point Utilities group, clear theUse check box.OFM stops using the control points and the gridmap displays without them.

c. On the Format tab, in theUtilities 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 theName field, type So.

166 of 262

User Guides, Tutorials, and Examples

Page 168: UserGuides Tutorials Examples OFM 2014

f. Select the Save Grid Area check box.

g. ClickOK.

Performing the OOIP Grid Arithmetic1. On the Format tab, in the File Grid Utilities group, click Calculate.

The Calculate Gridwindow opens.

2. If the Equation field is populated with information, clickNew 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 formationvolume 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. ClickOK.

7. On the Calculate Gridwindow, click File and then save the file with this name: OOIP

8. On the Calculate Gridwindow, clickOK.The gridmap displays with the calculated grid.

167 of 262

User Guides, Tutorials, and Examples

Page 169: UserGuides Tutorials Examples OFM 2014

9. On the Format tab, in theUtilities group, clickOpen Analysis > Open.

10. Select the ooip.grd file and then clickOpen.

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 67MMbbls, depending on your grid area points and control points.

168 of 262

User Guides, Tutorials, and Examples

Page 170: UserGuides Tutorials Examples OFM 2014

Example: Calculating Average Productionfor N MonthsIn this example, you create a user function that finds the average production for nmonths, excludingmonths that do not have production data. You then create a report to show this information.

Getting StartedOpen the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

Creating the User Function1. On the Setup tab, in the Variable Managers group, clickUser Functions.

TheUser Functionswindow 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 thetop of the window.

4. The function will require you to provide a value for n, the number of months. So, on the first line ofthe function you specify this input argument. Add this first line and then press Ctrl+Enter to start anew 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 sumsthem as appropriate. It also keeps a count of the non-null values for the subsequent averagingcalculation. The next lines of the user function are:

169 of 262

User Guides, Tutorials, and Examples

Page 171: UserGuides Tutorials Examples OFM 2014

{

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 nottrue. There are two possibilities:

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

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

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

Page 172: UserGuides Tutorials Examples OFM 2014

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. ClickOK.

11. On the Edit User Function window, click Close.

Creating Reports1. On theHome tab, in the Launch analysis group, click Report.

The Edit Reportwindow 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 andUser Functions to add this to the text box at the top ofthe window: Date, Monthlyprod.Oil, #Lastnonnullavgprod(10 )

171 of 262

User Guides, Tutorials, and Examples

Page 173: UserGuides Tutorials Examples OFM 2014

Note: The # sign signifies a user function.

3. ClickOK.

4. On theNavigation pane, select the BLUE_1:Ge_6 completion.The report displays seven dates, from December 1999 through June 2000. The average last tenmonths of production on those dates is 4736.14. If you add the monthly oil production for thesemonths 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. ClickOK.The report displays the same seven dates. The average last three months of production on thosedates 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 theNavigationpane, 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. Ifyou add those together (100 + 103 + 40) and divide the sum by 3, you get 81 just as shown in thelast column.

172 of 262

User Guides, Tutorials, and Examples

Page 174: UserGuides Tutorials Examples OFM 2014

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 clickOK.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

Page 175: UserGuides Tutorials Examples OFM 2014

174 of 262

User Guides, Tutorials, and Examples

Page 176: UserGuides Tutorials Examples OFM 2014

Example: Finding the Best Three Months ofProductionIn this example, you create and use a series of calculated variables to find the best three months of oilproduction.

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 StartedOpen the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

Finding the MaximumMonthly Oil Production1. 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 productionwith 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 equationto the text box at the top of the window: @TMax(MonthlyProd.Oil, MonthlyProd.Oil>0)

4. ClickOK.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 yourchanges. ClickOK to save your changes and close the Variable Editor.

175 of 262

User Guides, Tutorials, and Examples

Page 177: UserGuides Tutorials Examples OFM 2014

Finding the Second-Best Monthly Oil Production1. 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 thanzero and less than the maximum value you just calculated. You will use the @TMax systemfunction for this calculated variable, too.

3. Double-click the items in the System Functions andProject Variables lists to add this equationto the text box at the top of the window: @TMax(MonthlyProd.Oil,MonthlyProd.Oil>0 &

MonthlyProd.Oil<Max_Oil)

4. ClickOK.

5. Type the name of the calculated variable and then press Enter: Max_Oil_2

6. ClickOK to save your changes and close the Variable Editor.

Finding the Third-Best Monthly Oil Production1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click

Calculated Variable Editor.

2. Click Add Calculated Variable.

With this calculated variable, you want to find the total maximum value of monthly oil productionwhen it is greater than zero and less than the value foundwith the Max_Oil_2 calculated variable.You will use the @TMax system function again.

3. Enter this equation: @TMax(MonthlyProd.Oil, MonthlyProd.Oil>0 & MonthlyProd.Oil<Max_

Oil_2)

4. ClickOK.

5. Type the name of the calculated variable and then press Enter: Max_Oil_3

6. ClickOK to save your changes and close the Variable Editor.

Finding the Date of the MaximumMonthly Oil Production1. 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 want to find the first date on which monthly oil production equalsthe value foundwith the Max_Oil calculated variable you created. You will use the @CFirst systemfunction, which finds the first occurrence of a numeric expression with a condition.

176 of 262

User Guides, Tutorials, and Examples

Page 178: UserGuides Tutorials Examples OFM 2014

3. Enter this equation: @CFirst(Date, MonthlyProd.Oil=Max_Oil)

4. ClickOK.

5. Type the name of the calculated variable and then press Enter: Date_Max_Oil

6. You need to use the new calculated variables in the next ones. They are not available until you saveyour changes. ClickOK to save your changes and close the Variable Editor.

Finding the Date of the Second-Best Monthly Oil Production1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click

Calculated Variable Editor.

2. Click Add Calculated Variable.

This calculated variable uses the Max_Oil_2 you created. You want to find the first date on whichmonthly oil production equals the maximum oil production foundwith the Max_Oil_2 calculatedvariable. You will use the @CFirst system function again.

3. Enter this equation: @CFirst(Date, MonthlyProd.Oil = Max_Oil_2)

4. ClickOK.

5. Type the name of the calculated variable and then press Enter: Date_Max_Oil_2

Finding the Date of the Third-Best Monthly Oil Production1. Click Add Calculated Variable.

This is the last of the calculated variables. You want to find the first date on which monthly oilproduction equals the value foundwith the Max_Oil_3 calculated variable. You will use the @CFirstsystem function again.

2. Enter this equation: @CFirst(Date, MonthlyProd.Oil = Max_Oil_3)

3. ClickOK.

4. Type the name of the calculated variable and then press Enter: Date_Max_Oil_3

5. ClickOK to save your changes and close the Variable Editor.

Displaying the Calculated Variables in a Report1. On theHome tab, in the Launch analysis group, click Report.

The Edit Reportwindow opens.

2. In the text field at the top, enter the calculated variables you created: Date_Max_Oil, Max_Oil,

Date_Max_Oil_2, Max_Oil_2, Date_Max_Oil_3, Max_Oil_3

3. ClickOK.

177 of 262

User Guides, Tutorials, and Examples

Page 179: UserGuides Tutorials Examples OFM 2014

4. On theNavigation pane, select the Blue_1:Ge_6 completion.The report shows that the best three months of oil production were January 2000, March 2000, andMay 2000.

5. On theNavigation pane, select the Blue_1:He_0 completion.The report shows that the best three months of oil production were March 1996, February 1996,and January 1996.

6. On theNavigation pane, select the Trammel lease.The report shows that the best three months for the lease were October 1972, July 1972, andNovember 1972.

7. On theNavigation pane, select the A Field fieldname.The report shows that the best three months for the field were October 1972, November 1972, andDecember 1972.

178 of 262

User Guides, Tutorials, and Examples

Page 180: UserGuides Tutorials Examples OFM 2014

Example: Finding the Monthly AverageValue for Sporadic DataYou can create a report that shows the monthly average value for sporadic data. In this example, you findthis for the oil information in the Test table, in the Demo database. In this example, you will:

n Open the Demo project and confirm that it holds sporadic data in the Test table

n Create a report with four columns: Completion name, test date, oil test volume, andmonthlyaverage

n Change the report properties to best display the monthly average

Opening the Project and Confirming the Sporadic Data1. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo

Workspace\demo.ofm.

2. The Test table contains sporadic data. Confirm this:

a. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens.

b. On theOFM Representation pane, click the Test table.

c. On the right, on the Table tab, note that the Table Type is Sporadic.

d. On theOFM Representation pane, expand the Test table.

e. Note that it holds the test date, and data for gas, oil, andwater (as well as other information).

f. ClickOK to close the window.

Creating the ReportYou will create a report with four columns:

n Completion name

n Test date

n Oil test volume

n Monthly average

1. On theHome tab, in the Launch analysis group, click Report.

2. The first column has the completion name, and the @Name system function provides it. ClickSystem Functions and then double-clickName to add it to the text box at the top of the window.Then type a comma tomark a new column.

179 of 262

User Guides, Tutorials, and Examples

Page 181: UserGuides Tutorials Examples OFM 2014

3. The second column has the test date, which is in the Date field of the Test table. Click ProjectVariables and then double-click Test.Date. Then type a comma tomark a new column.

4. The third column has the monthly test volume for oil, which is in the Oil field of the Test table. On thelist of project variables, double-click Test.Oil and then type a comma tomark a new column.

5. The fourth column has the monthly average. The@ClrTAve system function gives the total average.It stops the average when it reaches a condition. In this example, the condition is a new monthwhich can be foundwith the @Change and@Month system functions. Double-click the items in theSystem Functions andProject Variables lists to add this to the text box at the top: @ClrTAve(Test.Oil, @Change(@Month(Date)))

6. Check the report variables. It should be this: @Name( ), Test.Date, Test.Oil, @ClrTAve

(Test.Oil, @Change(@Month(Date)))

7. ClickOK to view the report.

8. On theNavigation pane, select the Blue_1:He_0 completion.

Changing the Report Properties for Monthly Average1. On the Properties pane, under Columns, find the Break field and selectMonthly.

OFM adds an empty row after each month to divide the report by month.

2. Select the last column in the report (the column with the average). On the Properties pane, underColumns, find the Subtotal field and select Average.OFM adds a subtotal for every month, showing the average for that month.

180 of 262

User Guides, Tutorials, and Examples

Page 182: UserGuides Tutorials Examples OFM 2014

Example: Controlling Bubble Map DisplayUsing Data RangesYou can configure bubble maps to show specific attributes for ranges of values, as well as for individualvalues. In this example, you display water cut development in discreet ranges.  You will:

1. Create a bubble map to show the ranges.

2. Animate the bubble map.

Getting StartedOpen the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

Displaying the Water Cut Ranges on a Bubble Map1. On theHome tab, in the Launch analysis group, click Bubble.

The Create Bubble Mapwindow opens.

2. Double-click theWater.Cut project variable to move it to the Selected variables list, and thenclick Finish.The bubble map displays. You are ready to improve its appearance.

181 of 262

User Guides, Tutorials, and Examples

Page 183: UserGuides Tutorials Examples OFM 2014

3. On the Properties pane, underData, in the Attributes section, change Vary Size toNo.

4. Change Lookup Color to Yes.

5. On the Edit Lookup field, click Edit Lookup.The Bubble Lookupwindow opens. On this window, you can assign a color, size, and label for thefour ranges.

6. Make the following selections:

>= < Clr (Color) Size Label0.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%

7. Keep Percent of Width and Show Lookup Legend selected. ClickOK.The colors on the bubblemap represent thewater cut range for a given date.

182 of 262

User Guides, Tutorials, and Examples

Page 184: UserGuides Tutorials Examples OFM 2014

Animating the Map to Show Changes over Time1. 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 defaultdates.

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. ClickOK.The animation automatically runs.

183 of 262

User Guides, Tutorials, and Examples

Page 185: UserGuides Tutorials Examples OFM 2014

Example: Using .Las Log DataIf 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, reviewingthe 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 Demoworkspace.

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

Getting Started1. 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 inMicrosoft Excel:

a. In Excel, click theOffice 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 theMacro Settings section, select Enable all macros and then clickOK.

3. Review the log data in the Demo project:

a. Open the Demoworkspace. It is in the OFM installation folder, at ...Sample Workspaces\DemoWorkspace\demo.ofm.

b. On the Setup tab, in the Tables group, clickOFM-Defined.

c. Click Logs.

d. Note that the Logswindow lists 16 traces. The first one is Acoustic, and the last one is TPhi.

4. ClickOK 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

Page 186: UserGuides Tutorials Examples OFM 2014

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 RESISTIVITY -SHALLOW

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

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 Tool1. 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 Inputwindow, enter the version of Excel that you are using and then clickOK.

4. Select the Sample.las file you copied.

5. In the Inputwindow, enter theWellbore ID you will use and then clickOK: Red_9

6. Save the file to your computer with this name: LAStoLOG.log

7. In the Inputwindow, type y and then clickOK.

You type y (yes) if the .las file has traces in it that are not currently defined in the project. Whenyou type y, the LAS to OFM tool creates a definition (.def) file based on the converted curves thatyou load into the project.

8. Save the file to your computer with this name: LAStoLOG.def

185 of 262

User Guides, Tutorials, and Examples

Page 187: UserGuides Tutorials Examples OFM 2014

Loading the Log and Definition Files into the OFM Project1. 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 Loadsection.

3. Click Load.

4. On the Setup tab, in the Tables group, clickOFM-Defined.

5. Click Logs.

6. Note that the Logswindow now lists 27 traces. The imported traces are listed after TPhi. They startwith DT and endwith FPHI.

7. ClickOK to close the window.

8. ClickOK to close theOFM Defined Table Manager.

Viewing the Log Data in a Single Well Log Display1. On theHome tab, in the Launch analysis group, clickWell Log.

2. On the Set Depth Range window, accept the default range. ClickOK.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 ofmeasurement for the workspace) separates the two tracks. By default, each track can hold twotraces, which you add to the tracks. The trace name displays at the top of each track. To the left ofthe trace name is the minimum trace value. To the right of the trace name is the maximum tracevalue.

3. Double-click the top Trace Name for the left track.The Log Trace Attributeswindow opens.

4. Make these selections and then clickOK:

n Log: ILM

n Color: Green

5. Double-click the bottom Trace Name for the left track.

6. Make these selections and then clickOK:

n Log: RHOB

n Color: Red

7. On theNavigation pane, select the Red_9 wellbore.

186 of 262

User Guides, Tutorials, and Examples

Page 188: UserGuides Tutorials Examples OFM 2014

Example: Estimating and DisplayingDrainage RadiusIn this example, you will create a bubble map in which the bubble size is scaled to indicate the drainageradius 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. Addmap annotations to show channel sand and zero pay contours.

5. Clone the bubble map as a gridmap, and overlay the bubbles onto it.

Getting Started1. 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, andwater injection data in the WINtable. Confirm this:

a. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens.

b. On theOFM 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 theWIN table.

e. Note that the table has a field for water injection (WINJ).

f. ClickOK to close the window.

Setting the Map ScaleThis 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.TheMap Scale window opens.

2. In the Legend section, select English and then select ft for theDisplay unit.

3. In the Scale section, select inch and then enter 2000.

4. ClickOK.

187 of 262

User Guides, Tutorials, and Examples

Page 189: UserGuides Tutorials Examples OFM 2014

Estimating Drainage Radius1. 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 theName columnto sort the list alphabetically by name.

3. Find theOil.Cum calculated variable and view the Equation.The equation is @CumInput(Prd.Oil). This calculated variable uses the @CumInput system functionto find a running sum of oil production.

4. Find theWater.Cum calculated variable and view the Equation.The equation is @CumInput(Win.Winj). This calculated variable finds the running sum of waterinjection.

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 drainageradius in feet. To do this, you will use:

n The@Sqrt system function, which returns the square root

n The existing Oil.Cum andWater.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 replacedwith projectvariables.

6. Double-click the items in the System Functions andProject Variables lists to add this to the textbox 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. ClickOK.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, clickDefine to hide the definition columns, and clickUnits to show theunit columns.

188 of 262

User Guides, Tutorials, and Examples

Page 190: UserGuides Tutorials Examples OFM 2014

10. In theUnits column for theDrainageRadius calculated variable, select ft ==> m.

11. ClickOK to save the calculated variable and close the window.

Creating the Bubble Map1. On theHome tab, in the Launch analysis group, click Bubble.

The Create Bubble Mapwindow opens.

2. On the list of Project variables, double-click theDrainageRadius calculated variable to move it tothe 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

Page 191: UserGuides Tutorials Examples OFM 2014

a. View the Properties pane, underData, and note that theData Range Maximum is948.760986. This value is used to scale the bubble map to the maximum drainage radius, tomatch the map units.

b. On the Properties pane, under Properties, change the Plot Size Units toMap 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 thedrainage radius.

6. Change the colors:

a. On the Properties pane, under Properties, change the Color Scale Style toValue Range.

b. Change the number of Colors to 9.

c. Change the Spectrum toGreen-Blue.

190 of 262

User Guides, Tutorials, and Examples

Page 192: UserGuides Tutorials Examples OFM 2014

Adding Annotations to Show Channel Sand and Zero PayContours1. With the base map open, on the Format tab, in theDisplay group, click Annotations.

The OFM Data Loader opens.

2. This project comes with several annotation files. They are in the OFM installation folder, at ...SampleWorkspaces\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.TheMap Annotationswindow opens.

4. ClickOK.

5. Return to the Drainage Radius Bubble Map.

6. On the Format tab, in theDisplay group, select the Annotations check box.The annotations display on the bubble map.

191 of 262

User Guides, Tutorials, and Examples

Page 193: UserGuides Tutorials Examples OFM 2014

Overlaying the Bubble Map onto a Grid Map1. On the Analysis pane, right-clickDrainage Radius Bubble Map and then click Clone Map As >

Grid Map.

2. Right-clickGrid 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 theUtilities group, click Create Overlay Bubble.The bubbles from the bubble map overlay on the new gridmap.

5. One of the map annotations you added shows a dotted line, which marks oil/water contact. Use thedotted line as a guide to indicate no-flow boundaries:

a. On the Format tab, in theGrid Area Utilities group, click Add.

b. Click around the dotted line to create the grid area. When you are finished, right-click and thenclickDone.The area outside the grid area becomes white.

192 of 262

User Guides, Tutorials, and Examples

Page 194: UserGuides Tutorials Examples OFM 2014

193 of 262

User Guides, Tutorials, and Examples

Page 195: UserGuides Tutorials Examples OFM 2014

Example: Adding a Shapefile for California'sGeothermal WellsIn this example, you will add a shapefile to the GISmap that shows geothermal wells in California. TheCalifornia Department of Conservation provides the shapefile. After you add the shapefile, you will changethe color of the symbols.

1. Download the shapefile from the Internet:

a. Go to the Oil, Gas, & Geothermal maps page athttp://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 GISmap:

a. With the GISmap open, on the Format tab, in the Layers group, click Add Layer > OpenShape File.

b. Select the shapefile and then clickOpen.OFM adds the shapefile as one layer on the GISmap. It marks geothermal wells in Californiawith circles.

3. Improve visibility:

a. On the Format tab, in the Layers group, click Edit Layers.TheMap Layerswindow opens. The left pane lists the layers on the GISmap. The new layerhas the same name as the shapefile. The top layer is the geothermal wells layer. It is selected, sothe properties for the layer display on the right. For this shapefile, you can change thetransparency 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. ClickOK to save your changes and close the window.

194 of 262

User Guides, Tutorials, and Examples

Page 196: UserGuides Tutorials Examples OFM 2014

Example: Adding a Shapefile for the RegionBoundaries of US Oil/Gas AssessmentIn this example, you will add a shapefile that has many more properties than the one displayinggeothermal wells. The shapefile shows region boundaries for US national oil and gas assessment performedby 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 athttp://energy.cr.usgs.gov/oilgas/noga/data.html.

b. On the row for Region Boundaries, click theDownload 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 GISmap:

a. With the GISmap open, on the Format tab, in the Layers group, click Add Layer > OpenShape File.

b. Select the shapefile and then clickOpen.OFM adds the shapefile as one layer on the GISmap. The regional boundaries display in theUnited States.

3. Improve visibility:

a. On the Format tab, in the Layers group, click Edit Layers.TheMap Layerswindow opens. The left pane lists the layers on the GISmap. The new layerhas the same name as the shapefile. The top layer is usregg.shp. It is selected, so the propertiesfor the layer display on the right.

b. The shapefile has map tips. Under Layer, select theMap 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 adifferent color. Under Symbol, change theOutline color.

d. In addition to the map tips, this layer also has labels. Under Label, select the Label check box todisplay them.

e. Change the label Color, Font, andSize to improve visibility of the labels.

f. The label is showing the area of each region. In this layer, you can change the informationdisplayed in the labels. In the Fields field, select a new type of information to display.

g. ClickOK to save your changes and close the window.

195 of 262

User Guides, Tutorials, and Examples

Page 197: UserGuides Tutorials Examples OFM 2014

Example: Connecting to an ArcGIS Map toAdd U.S. Topological FeaturesIn this example, you add land cover imagery to the entire GISmap, and detailed topological features fromthe US Geological Survey to the United States part of the GISmap. You then move the wells above thatlayer, and zoom to the completions.

1. On the Internet, find the URL for the ArcGIS connection:

a. Go to the USA Topographic Maps athttp://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 GISmap open: On the Format tab, in the Layers group, click Add Layer > OpenMap Server.

b. Select Define.

c. View the ArcGIS tab.

d. In theName field, enter a name for the connection. This name displays on the Map Layerswindow. For this example, enterUSGS Survey.

e. In theUrl field, paste the link that you copied from the website.

f. ClickOK.OFM immediately applies the connection to the GISmap as the top layer, and OFM shows thefull GISmap.

3. Improve visibility:

a. On the Format tab, in the Layers group, click Edit Layers.TheMap Layerswindow opens. The left pane lists the layers on the GISmap. USGS Survey isthe top layer.

b. To see the wells (which are on the Wells layer), you can move the Wells layer to be above theUSGS Survey layer. Right-click theWells layer and then click Raise layer to top.

c. ClickOK 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 thecompletions. 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 arepart of the East White Lake oil and gas field.

196 of 262

User Guides, Tutorials, and Examples

Page 198: UserGuides Tutorials Examples OFM 2014

Example: Connecting to an ArcGIS Map toAdd Streets and RailroadsIn this example, you add streets, railroads, parks, and landmarks on the GISmap, for many placesworldwide. You then zoom in to see the details of your city, and change the transparency of the new layerto 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 athttp://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 GISmap open: On the Format tab, in the Layers group, click Add Layer > OpenMap Server.

b. Select Define.

c. View the ArcGIS tab.

d. In theName field, enter a name for the connection. This name displays on the Map Layerswindow. For this example, enterWorld Streets.

e. In theUrl field, paste the link that you copied from the website.

f. ClickOK.OFM immediately applies the connection to the GISmap as the top layer, and OFM shows thefull GISmap.

3. Improve visibility:

a. On the Format tab, in the Zoom group, click Zoom Area.

b. On the GISmap, drag a very small square around your city.

c. On the Format tab, in the Layers group, click Edit Layers.TheMap Layerswindow opens. The left pane lists the layers on the GISmap.World Streets isthe top layer.

d. On the left, selectWorld Streets.

e. On the right, under Layer, move the Transparency toggle to the right to increase thetransparency of the World Streets layer.The GISmap changes the transparency as you move the toggle.

f. ClickOK to save your changes and close the window.

197 of 262

User Guides, Tutorials, and Examples

Page 199: UserGuides Tutorials Examples OFM 2014

Overview of System FunctionsSystem functions are sets of instructions already coded in OFM for you to perform standard operations. Youcan call a system function and provide parameters, expressions, conditions, and values. The standardoperations perform calculations, retrieve information from the database, and perform formattingfunctions. You can use system functions with calculated variables, user functions, reports, queries, andheaders.

OFM hasmore than 200 system functions. Each system function has specific name and syntaxrequirements. Many require data to generate a result. You provide the data with arguments—a comma-separated 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 mustevaluate 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 anyexpression.

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

n Some arguments are labeled "condition", andmay or may not be optional. These allow the result tobe 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 notconstraining the result.

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

Functions Listed AlphabeticallyA

@Abs (Absolute Value)

@AbsDev (Absolute Deviation)

@AddDate (Add Date)

198 of 262

User Guides, Tutorials, and Examples

Page 200: UserGuides Tutorials Examples OFM 2014

@AddDays (Add Days)

@AddMonths (AddMonths)

@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 SecondOrder)

@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

Page 201: UserGuides Tutorials Examples OFM 2014

@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

Page 202: UserGuides Tutorials Examples OFM 2014

@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 (ElapsedMonths)

@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

Page 203: UserGuides Tutorials Examples OFM 2014

@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

Page 204: UserGuides Tutorials Examples OFM 2014

@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

Page 205: UserGuides Tutorials Examples OFM 2014

@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

Page 206: UserGuides Tutorials Examples OFM 2014

@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

Page 207: UserGuides Tutorials Examples OFM 2014

@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

Page 208: UserGuides Tutorials Examples OFM 2014

@YYMM (Date in YYMM Format)

207 of 262

User Guides, Tutorials, and Examples

Page 209: UserGuides Tutorials Examples OFM 2014

@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

Page 210: UserGuides Tutorials Examples OFM 2014

@AddMonths (Add Months) SystemFunction

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

Syntax @AddMonths(Date, NumberOfMonths)

Where Argument Type RequiredDescription

Date Date Yes

Date

Note: OFM requires dates to beentered in YYYYMMDD format.

NumberOfMonths Numeric Yes

Number of months to add orsubtract from the date (positiveto addmonths; negative tosubtract months).

Example The return is represented as a number. In this case, April 15, 2008, at12: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 andThree Months Previous

209 of 262

User Guides, Tutorials, and Examples

Page 211: UserGuides Tutorials Examples OFM 2014

@Area (Area Under a Curve) SystemFunction

Description This system function finds the area under a curve using trapezoidalapproximation.

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 areaunder a curve of oil.cum versus pressure:

@Area (oil.cum, pressure)

210 of 262

User Guides, Tutorials, and Examples

Page 212: UserGuides Tutorials Examples OFM 2014

@ARec (Absolute Value for a Record)System Function

Description This system function gets the value of the input variable for a specifiedrecord row. Use this function with monthly and daily tables.

Note: The@CDataIndex (Conditional Data Index) system functioncan be used to provide input to this function.

Syntax @ARec (Variable, Index)

Where Argument Type RequiredDescription

Variable Numeric Yes Table variable

Index Numeric Yes

Row number in table for specifiedentity

Note: First row is index 0.

Example 1 In this example, the sixth value associated with MonthlyProd.Oil isreturned:

@ARec (MonthlyProd.Oil, 5)

Example 2 In this example, @CDataIndex is used to return the first value ofmonthly 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 NMonths: Creating the User Function

211 of 262

User Guides, Tutorials, and Examples

Page 213: UserGuides Tutorials Examples OFM 2014

@CFirst (Conditional First) System Function

Description When the specified condition is True (1), this system function finds thefirst occurrence of a numeric expression at the specified condition.

Note: This system function requires a condition. The@First (FirstRecord Value of an Expression) system function performs the sametask, but the condition is optional.

Syntax @CFirst (value, condition)

Where Argument Type RequiredDescription

value Numeric YesThe parameter for which the firstconditional entry is being requested

condition String YesRequired condition, which mustevaluate to True (1) or False (0)

Example In this example, the function is when water production is greater thanzero 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

Page 214: UserGuides Tutorials Examples OFM 2014

@Change (Changed from Previous Value)System Function

Description This system function determines if the value of a numeric expressionhas 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. Forinstructions about creating andmodifying reports, see "CreatingReports and Editing Report Variables."

Syntax @Change (Value)

Where Argument Type Required Description

Value Numeric Yes Numeric expression to be evaluated

Example In this example, the function returns True (1) when the"year" part ofthe 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

Page 215: UserGuides Tutorials Examples OFM 2014

@ClrTAve (Clear Total Average) SystemFunction

Description When a specified condition is True (1), this function computes anaverage of the specified numeric expression. The value is reset to zeroby a condition. The function reports only on the date when thecondition 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 ofmonthly oil production. The calculation result is set to zero at the endof 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

Page 216: UserGuides Tutorials Examples OFM 2014

@Dom (Days of Month) System Function

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

Syntax @Dom (Date)

Where Argument Type RequiredDescription

Date Date Yes

Date

Note: OFM requires dates to be enteredin YYYYMMDD format.

Example In this example, the function returns the value of 31 because thereare 31 days in January:

@Dom (19840101)

Note: In this example, the final last two numbers ("01") representsthe 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

Page 217: UserGuides Tutorials Examples OFM 2014

@ElapsedDays (Elapsed Days) SystemFunction

Description This system function calculates the number of elapsed days fromDate1 to Date2.

Syntax @ElapsedDays (Date1, Date2)

Where Argument Type RequiredDescription

Date1 Date Yes

Date

Note: OFM requires dates to be enteredin YYYYMMDD format.

Date2 Date Yes Date

Example In this example, the function returns the value of 31, the number ofelapsed days from 30 June to 31 July, 1983. Note that to return apositive integer, the first date (Date1) should be the later date and thesecond 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

Page 218: UserGuides Tutorials Examples OFM 2014

@ElapsedMonths (Elapsed Months) SystemFunction

Description This system function calculates number of elapsedmonths fromDate2 to Date1.

Syntax @ElapsedMonths (Date1, Date2)

Where Argument Type RequiredDescription

Date1 Date Yes

Date

Note: OFM requires dates to be enteredin YYYYMMDD format.

Date2 Date Yes Date

Example In this example, the function returns the value of 12 (the number ofelapsedmonths from January 1984 to January 1985). Note that toreturn a positive integer, the first date (Date1) should be the laterdate 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

Page 219: UserGuides Tutorials Examples OFM 2014

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

Description This system function finds the first record value of a specified numericexpression, 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 oilproduction 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

Page 220: UserGuides Tutorials Examples OFM 2014

@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 canequal up to 12 degrees.

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

Where Argument Type RequiredDescription

value1Numericor date

YesThe X-axis parameter for thedataset being fitted

value2 Numeric YesThe Y-axis parameter for thedataset being fitted

value3 True/False YesCondition; any value evaluating asFalse will be excluded from the fit

value4Numericor date

YesThe X-axis parameter for the outputfitted curve

option Several Yes

n Date: Use if the input X-axisparameter represents date

n Xlog: Use if the curve is to befitted to the logarithm of X

n Ylog: Use if the curve is to befitted to the logarithm of Y

n deg: Order, n, of fittedpolynomial, where n should notexceed 12

n min val: If any resulting fittedvalue is less than val, thenfunction returns a Null

n max val: If any resulting fittedvalue is greater than val, thenfunction returns a Null

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

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

Example In this example, the function returns an array of points evaluating thefourth degree polynomial fit to monthly oil production, subject to theconstraint 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

Page 221: UserGuides Tutorials Examples OFM 2014

Related Examples

Calculating Pressure from P/Z and Production Data: Finding the P/Z Value

Creating aWater Breakthrough Diagnostic (Chan) Plot: Fitting the WORDerivative

Creating aWater 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

Page 222: UserGuides Tutorials Examples OFM 2014

@FitEq (Fit Equation) System Function

Description This system function determines the equation of the current fittedpolynomial, and returns the polynomial equation as a string. You mustuse 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 RequiredDescription

value Numeric YesThe data (Y variable) which has beenfitted using the @fit variable

options String Yes

n Date: Use if the input X-axisparameter represents date.

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

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

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

n min va: If any resulting fittedvalue is less than val, then functionreturns a Null.

n max va: If any resulting fittedvalue is greater than val, thenfunction returns a Null.

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

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

Example In this example, a fourth-order polynomial fit to the log ofMonthlyProd.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

Page 223: UserGuides Tutorials Examples OFM 2014

@If (If) System Function

Description If a specified condition is True (1), the function returns the secondargument. Otherwise, the function returns the third argument. Itexecutes one of two expressions, depending on the result of aconditional 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 RequiredDescription

Condition String Yes Expression to be evaluated

Value1 Numeric Yes

Value to be returned if condition istrue or equals 1

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

Value2 Numeric Yes

Value to be returned if condition isfalse or equals 0

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.Cutwhen monthly liquid production (oil + water) is non-zero. Otherwise,the function returns Null.

@If (MonthlyProd.Oil + Monthlyprod.Water 0,

Related Examples

Creating aWater Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)

222 of 262

User Guides, Tutorials, and Examples

Page 224: UserGuides Tutorials Examples OFM 2014

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

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

Syntax @Last (value, condition)

Where Argument Type Required Description

value Numeric Yes Parameter to be returned

condition String No Condition that must be satisfied

Example In this example, the function returns the last non-zero value ofmonthly 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 andThree Months Previous

223 of 262

User Guides, Tutorials, and Examples

Page 225: UserGuides Tutorials Examples OFM 2014

@Lookup (Lookup) System Function

Description This system function searches or interpolates the lookup table for aspecific value of a specified variable. It offers a lookup capability, andallows for interpolation between recorded values.

Note: Interpolation requires that the range to be interpolatedmustbe in strict ascending order.

Syntax @Lookup (output_variable, keyname, input_value, option)

Where Argument Type RequiredDescription

output_variable

Numeric YesThe result you wish to extract fromthe lookup table

keyname Text YesThe entity for which your lookup tablehas been populated with data

input_value

Numeric YesThe value of the independent variablefor which you require the lookupresult

option Text Yes See Options list, below

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

n date: Usedwhen 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 ofdata.

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 ofoutput_variable.

n step down: No interpolation; function returns the next value ofoutput_variable.

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

Example 1 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

Page 226: UserGuides Tutorials Examples OFM 2014

Example 2 In this example, the function returns the formation volume factor(FVF) from the Fluid_Data table, for the Reservoir to which thecurrently loaded completion belongs, at a pressure value provided byPrd.Pressure, allowing linear interpolation at pressure values for whichthe fluid data does not exist in the table. Note there is no timedependency 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

Page 227: UserGuides Tutorials Examples OFM 2014

@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 RequiredDescription

Date Date Yes

Date

Note: OFM requires dates to be enteredin YYYYMMDD format.

Example In this example, the function returns 4 because April is the fourthmonth:

@Month (19830409)

Related Examples

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

226 of 262

User Guides, Tutorials, and Examples

Page 228: UserGuides Tutorials Examples OFM 2014

@Name (Name of Loaded Data WithoutPrefix) System Function

Description This system function gets the name of the currently loaded entity. It isuseful in preparing header information on plots and reports.

Note: To return the namewith 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 willreturn “X”.

n If a Category (for example, Lease) is chosen from theNavigationpane, and the Lease named “Smith” is selected as the chosenentity, 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

Page 229: UserGuides Tutorials Examples OFM 2014

@Null (Null) System Function

Description This system function returns a null value. The null value displays as anasterisk (*) in reports.

Note: To convert null values to zero or another value you specify, usethe @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-oilratio (GOR). The@Null system function is used to "trap" potentialerrors. It will force a null result when a "divide by zero" error couldhave occurred:

@If(MonthlyProd.Oil = 0, @Null(), MonthlyProd. Gas /

MonthlyProd.Oil)

Related Examples

Creating aWater Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)

228 of 262

User Guides, Tutorials, and Examples

Page 230: UserGuides Tutorials Examples OFM 2014

@Previous (Value of Expression for PreviousRecord) System Function

Description This system function finds the value of a numeric expression for therecord before the current record. It is applicable only for monthly anddaily 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 RequiredDescription

variable variable YesThe variable for which the previously-available value is required

Example In this example, the difference between the current month's oilproduction and the prior month's production can be found:

MonthlyProd.Oil - @Previous (MonthlyProd.Oil)

Related Examples

Creating a Chan Plot: Finding the WORDerivative

229 of 262

User Guides, Tutorials, and Examples

Page 231: UserGuides Tutorials Examples OFM 2014

@PvtBg (Gas Formation Volume Factor at aPressure) System Function

Description This system function calculates the gas formation volume factor at aspecified 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 gasformation volume factor based on time-dependent pressure data:

@PvtBg(Prd.Pressure)

230 of 262

User Guides, Tutorials, and Examples

Page 232: UserGuides Tutorials Examples OFM 2014

@PvtBo (Oil Formation Volume Factor)System Function

Description This system function calculates the time-dependent oil formationvolume 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 oilformation 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

Page 233: UserGuides Tutorials Examples OFM 2014

@PvtBw (Water Formation Volume Factor ata Pressure) System Function

Description This system function calculates the time-dependent water formationvolume 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 waterformation volume factor based on time-dependent pressure data:

@pvtBw(Prd.Pressure)

232 of 262

User Guides, Tutorials, and Examples

Page 234: UserGuides Tutorials Examples OFM 2014

@PvtRs (Calculate the Solution Gas-OilRatio at a Pressure) System Function

Description This system function calculates the solution gas-oil ratio (GOR) at aspecified 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 solutiongas oil ratio based on time-dependent pressure data:

@PvtRs (Prd.Pressure)

233 of 262

User Guides, Tutorials, and Examples

Page 235: UserGuides Tutorials Examples OFM 2014

@RecCount (Record Count) SystemFunction

Description This system function finds the number of records in a specified table.

Note: Use the @DRecCount (Daily Record Count) system function fordaily tables, and the @MrecCount (Monthly Record Count) systemfunction 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 theTest table:

@RecCount ("test")

Related Examples

Finding the Average Production for NMonths: Creating the User Function

234 of 262

User Guides, Tutorials, and Examples

Page 236: UserGuides Tutorials Examples OFM 2014

@Reg (Value in a Data Register) SystemFunction

Description This system function recalls a value (for a variable used to representparameter Y) stored in the specified Data Register and interpolatesmissing values.

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

Where Argument Type RequiredDescription

regn# Numeric Yes Data Register number (1-40)

value Numeric YesVariable representing the Xparameter usedwhen creating theData Register

"option" String No

n xlog: Performs lookup along X-axis

n ylog: Performs lookup along Y-axis

n linear: Performs linearinterpolation

n lag: Performs lookup Lagrangeinterpolation

n deg: Specifies degree of Lagrangepolynomial

n step up: Performs lookupreturning upward value

n step down: Performs lookupreturning lower value

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

Example In this example, Data Register 5 was previously created to store avariable (Y), representing bottomhole pressure against Date (X). Theexample will return the values of bottomhole pressure, and linearlyinterpolate across missing values.

@Reg (5, Date, "date linear")

235 of 262

User Guides, Tutorials, and Examples

Page 237: UserGuides Tutorials Examples OFM 2014

@RSum (Running Sum) System Function

Description This system function calculates the running sum (cumulative) of aspecified expression, including any prior cumulative.

Note: You must use this system function for summing calculatedvariables.

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 anexpression given by a calculated variable:

@RSum (CV.Corrected_MonthlyProd_Oil)

Related Examples

Creating a Hall Plot

236 of 262

User Guides, Tutorials, and Examples

Page 238: UserGuides Tutorials Examples OFM 2014

@Sqrt (Square Root) System Function

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

Syntax @Sqrt (value)

Where Argument Type RequiredDescription

value Numeric YesNumber to be evaluated, which mustbe positive

Example 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

Page 239: UserGuides Tutorials Examples OFM 2014

@Step (Return Last Value if Condition isTrue) System Function

Description When a specified condition is True, a stair-step function is created for aspecified expression. This has the effect of creating a continuousstream of values, where a value remains constant over time until it ischanged 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 monthlyoil 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

Page 240: UserGuides Tutorials Examples OFM 2014

@TMax (Total Maximum Value) SystemFunction

Description This system function calculates the maximum value of a specifiednumeric expression for all record values, subject to a condition.

Note: Condition = 1 will always evaluate as True.

Syntax @TMax (value, condition)

Where Argument Type RequiredDescription

value Numeric Yes Variable to be evaluated

condition True/False YesCriterion to be applied in evaluatingthe function

Example In this example, the function returns the monthly oil productionmaximum value when the monthly water production maximum valueis 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

Page 241: UserGuides Tutorials Examples OFM 2014

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

Description This system function finds the value of a specific numeric expressionat 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 RequiredDescription

expression Numeric Yes Parameter to be evaluated

date Date Yes

Date at which the value of expressionis required

Note: OFM requires dates to beentered in YYYYMMDD format.

Example In this example, the function returns the monthly oil production forAugust 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 andThree Months Previous

240 of 262

User Guides, Tutorials, and Examples

Page 242: UserGuides Tutorials Examples OFM 2014

Using the Sample WorkspacesOFM hasmany sample workspaces you can use to learn OFM. The sample workspaces are in the OFMinstallation directory, at ...Sample Workspaces. Inside that folder are 11 sub-folders, each with one ormore 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

DemoWorkspace 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 andDisplaying Its Equation

Example: Calculating Average Production for NMonths

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

Page 243: UserGuides Tutorials Examples OFM 2014

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 FileSample

Sample Workspace: CPS-3 Grid File

Illustrative Databases > CrossSections

Sample Workspace: Cross Section

Illustrative Databases > ForecastSchedule Example

Illustrative Databases > MultiplyBy Factor

Sample Workspace: Multiply By Factor

Illustrative Databases >Normalization

Sample Workspace: Normalization

Illustrative Databases > StackedGraphs

Sample Workspace: Stacked Plots

Illustrative Databases > WellDeliverability 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 aWorkspace with PI/Dwights ProductionFiles

Pilot Waterflood Sample Tutorial: Patterns

Example: Creating a Formation Damage Indicator

Example: Creating aWater 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

Page 244: UserGuides Tutorials Examples OFM 2014

Sample Workspace: Workspaces withMultiple KeysYour workspace can have multiple keys. There are two sample workspaces that show this: one with twokeys, 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 DemoDatabase\2 Keyed Demo Database.ofm

b. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens.

c. On theOFM Representation pane, select theHEADERID table, which is the master table.

d. View theMaster tab.The Table Key(s) section lists two table keys. In the Key Delimiters section, the selecteddelimiter is a colon (:).

e. ClickOK 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 DemoDatabase\3 Keyed Demo Database.ofm

b. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens.

c. On theOFM Representation pane, select theHEADERID table, which is the master table.

d. View theMaster tab.The Table Key(s) section lists three table keys. In the Key Delimiters section, the selecteddelimiters are colons (:).

e. ClickOK to close the window.

243 of 262

User Guides, Tutorials, and Examples

Page 245: UserGuides Tutorials Examples OFM 2014

Sample Workspace: Foreign KeysA foreign key is a table that allows you to cross reference from one table to another. One sample workspacehas many foreign keys for you to view.

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\PDSExample\PDSExample.ofm.

2. View the tables in the workspace. On the Setup tab, in the Tables group, click Schema.The Edit Schema Tableswindow opens.

3. Foreign keys can use fields in the master table. Look at the tLease table to see how this is done:

a. View theOFM Representation pane, and notice that the master table (markedwith the

icon) is the xy table.

b. On theOFM Representation pane, expand the xy table. Notice that LeaseID is one field in thexy table. The xy table identifies lease ID numbers.

c. The project also has a table for lease information. On theOFM Representation pane, click thetLease table.

d. On the right, view the Table tab. Notice that the tLease table uses the LeaseID field in the xytable. TheOFM Definition section has the following selections:

Key Type: Foreign

Foreign: xy.LeaseID

e. Look at the fields in the tLease table. On theOFM Representation pane, expand tLease.Two fields are listed under tLease:

The primary key field (markedwith the icon) is LeaseID.

The second field (markedwith the icon) is Lease Name.

The lease names in the tLease table are referencedwith 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 tMonthlyProductiontable to see how this is done:

a. On theOFM Representation pane, expand the tWellProd table. Notice that WellID is one fieldin 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 theOFMRepresentation pane, click the tMonthlyProduction table.

c. On the right, view the Table tab. Notice that the tMonthlyProduction table uses theProductionID field in the tWellProd table. TheOFM Definition section has the followingselections:

Key Type: Foreign

244 of 262

User Guides, Tutorials, and Examples

Page 246: UserGuides Tutorials Examples OFM 2014

Foreign: tWellProd.ProductionID

d. Look at the fields in the tWellProd table. On theOFM Representation pane, expandtWellProd.Two fields are listed under tWellProd:

The primary key field (markedwith the icon) is WellID.

The second field (markedwith the icon) is ProductionID.

The monthly production values in the tMonthlyProduction table are referencedwith the well IDnumbers in the tWellProd table.

245 of 262

User Guides, Tutorials, and Examples

Page 247: UserGuides Tutorials Examples OFM 2014

Sample Workspace: Multiply By FactorThe Multiply By Factor sample workspace shows the effect of using the Multiply By Factor with monthly anddaily data, for static and dynamic factors.

1. Open the Multiply By Factor sample workspace. It is in the OFM installation folder, at ...SampleWorkspaces\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 MultiplyBy Factor works with monthly data:

a. On theHome tab, in the Launch analysis group, click Report.The Edit Reportwindow 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. ClickOK to close the window and display the report.

d. On theNavigation pane, selectWell_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 theWorkspace tab, clickOptions.TheOptionswindow opens.

b. On theMultiply By Factor tab, select Enable factor multiplication.The Static andDynamic selections become available.

c. Select Static and then select Static_factor.Rate.

d. ClickOK 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 theStatic_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

Page 248: UserGuides Tutorials Examples OFM 2014

a. On theWorkspace tab, clickOptions.

b. On theMultiply By Factor tab, clear the Enable factor multiplication check box.

c. ClickOK.

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 theWorkspace tab, clickOptions.

b. On the Multiply By Factor tab, select Dynamic and then selectMonthly_Factor.Rate.

c. ClickOK to save your changes and close the window.

d. Notice that the report displays data that OFMmultiplied by the Monthly Factor Rate (displayed inthe last column). On row 37:

Monthly gas production is 130.

Monthly oil production is 170.

Monthly water production is 250.

6. You now are finishedwith the monthly report, andwill create a daily report.

a. On the Analysis pane, right-click the report you created and then click Rename.

b. TypeMonthly Report and then press Enter.

c. Close the monthly report.

d. On theWorkspace tab, clickOptions.

e. On the Multiply By Factor tab, clear the Enable factor multiplication check box and thenclickOK.

7. Create a report that will show how the Multiply By Factor works with daily data:

a. On theHome tab, in the Launch analysis group, click Report.The Edit Reportwindow 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. ClickOK 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

Page 249: UserGuides Tutorials Examples OFM 2014

Daily oil production is 30.

8. Apply the Multiply By Factor to see the daily data using a static factor:

a. On theWorkspace tab, clickOptions.

b. Select the Enable factor multiplication check box.

c. Select Static and then select Static_factor.Rate.

d. ClickOK.

e. Notice that the report displays data that OFMmultiplied 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 theWorkspace tab, clickOptions.

b. Select Dynamic and then select Daily_factor.Rate.

c. ClickOK.

d. Notice that OFMmultiplied the values in the report by the daily factor rate (in theDaily_FactorRate column).

248 of 262

User Guides, Tutorials, and Examples

Page 250: UserGuides Tutorials Examples OFM 2014

Sample Workspace: CPS-3 Grid FileYou 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

Page 251: UserGuides Tutorials Examples OFM 2014

Example Grid Map After Importing the CPS-3 File:

1. With any gridmap open, on the Format tab, in theUtilities group, clickOpen Analysis > ImportCPS.

2. Navigate to the OFM installation folder and select ...Sample Workspaces\Illustrative Databases\CPSFile Sample\CPS Sample.grd.

3. ClickOpen.

250 of 262

User Guides, Tutorials, and Examples

Page 252: UserGuides Tutorials Examples OFM 2014

Sample Workspace: Cross SectionThere are two sample workspaces that show cross sections. The workspaces are identical, except the datafor reference depth, surveys, markers, andwellbore 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 ...SampleWorkspaces\Illustrative Databases\Cross Sections\Cross Section Illustration - English.ofm or \CrossSection Illustration - Metric.ofm.

2. View the units used for the workspace:

a. On theWorkspace tab, clickOptions.

b. On theUnits tab, if you opened the English project theUse 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 thecross 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).

CompletionMeasuredDepth(MD)

TrueVerticalDepth(TVD)

IntervalA, Top

IntervalA, Bottom

IntervalB, Top

IntervalB, Bottom

ReferenceDepth

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 perfsare abandoned, the bottom set are open. (This doesn't reflect reality, but it shows two differentways of drawing perfs.)

5. When you display the cross section in TVD, all the intervals andwells are the same length. To displayit in TVD, on the Property pane change Show True Vertical Depth to Yes. To return to MD,change Show True Vertical Depth toNo.

6. When you display the cross section at subsea, the intervals will still be the same length, but they willbe at different subsea depths. To display at subsea, on the Property pane changeDepthCorrection to Sub Sea.

7. You can show a stratigraphic cross section at MD or TVD. On the Property pane change DepthCorrection to Stratigraphic. When you do this, you can select which Stratigraphic Marker toview.

251 of 262

User Guides, Tutorials, and Examples

Page 253: UserGuides Tutorials Examples OFM 2014

8. You addmarkers on single or multi-well log displays, but you can show or hide them on the crosssection. To do this, on the Format tab, in theDisplay group, select Left Marker (to display themarker 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 orNo.

10. Cross sections also can have lithology intervals. This sample workspace has two (Interval A andInterval B).

a. On the Format tab, in the Edit group, click Interval.The Edit Intervalwindow opens. It displays the lithology of Interval A, which is sandstone.

b. On theName 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 Intervalsto Yes orNo.

252 of 262

User Guides, Tutorials, and Examples

Page 254: UserGuides Tutorials Examples OFM 2014

Sample Workspace: Defining a Workspacewith PI/Dwights Production FilesIn the OFM installation folder are PI/Dwights production files you can use to create a sample workspace.

1. On theWorkspace tab, clickNew.TheNew OFM Workspace window opens.

2. In theHow do you want to define your project group, select Create it from the data sourcespecified below.

3. In theData Source field, select PI/Dwights DMP2 Production file.

4. On theWorkspace File field, click Browse (...) and navigate to the correct location for your newsample workspace.

5. In the File name field, enter the name of your new project and then clickOK.TheWorkspace File andDatabase fields populate. By default, OFM gives the workspace anddatabase files the same name and location.

6. Select Prompt for Project Filter to limit the number of completions used during an OFM session.

7. ClickOK.The PI/Dwights Production File Loader window opens.

8. Navigate to the sample PI Dwights files. They are in the OFM installation folder, at ...SampleWorkspaces\PI Dwights Sample Files.

9. Select etx_dmp2.dp2 file and then clickOpen.The PI/D Importwizard 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 clickNext.

b. Select the wells. By default, OFM selects all wells. ClickNext.

c. Select the information for sort categories. ClickNext.

d. Select well test items. Gas tests is selected. ClickNext.

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 andvssver.scc.

13. Click Load.

253 of 262

User Guides, Tutorials, and Examples

Page 255: UserGuides Tutorials Examples OFM 2014

A warningmessage confirms your choice.

14. On the warningmessage, clickOK.

254 of 262

User Guides, Tutorials, and Examples

Page 256: UserGuides Tutorials Examples OFM 2014

Sample Workspace: Multiple ProjectsAn 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\MultipleProject Sample\Multiple Project Sample.ofm.

2. Notice that the base map shows three items that look like completions but are actually links thatopen three different workspaces:

n BFIELDWATERFLOOD

n DUSON GAS FIELD

n DEMOOIL 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. Theworkspace 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, clickDuson 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 originalworkspace.

4. View the table that holds the links to the other workspaces:

a. On the Setup tab, in the Tables group, clickData Grid.The Select OFM Table to Editwindow opens.

b. Select the XY table and then clickOK.The XY table opens.

c. Notice that the table has a column named FIELD that lists the three items displayed on the basemap 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 Associationswindow opens.

255 of 262

User Guides, Tutorials, and Examples

Page 257: UserGuides Tutorials Examples OFM 2014

b. Notice that in the Project field, it is associated with the LOCATION field on the XY table(XY.LOCATION).

c. ClickOK to close the Associationswindow.

256 of 262

User Guides, Tutorials, and Examples

Page 258: UserGuides Tutorials Examples OFM 2014

Sample Workspace: NormalizationThere is a sample workspace that shows normalization. The database for the sample consists of simplemonthly data. You can use the normalization feature to shift monthly or daily data in time-based, user-defined criteria. You can shift production, test, or daily production data forward or backward in time tocompare well or group performance.

Before Normalization:

After Normalization

257 of 262

User Guides, Tutorials, and Examples

Page 259: UserGuides Tutorials Examples OFM 2014

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\IllustrativeDatabases\Normalization\Normalization.ofm.

2. If OFM does not list a plot in the Analysis pane, create a plot:

a. On theHome tab, in the Launch analysis group, click Plot.The Edit Plotwindow 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. ClickOK 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 theWorkspace tab, clickOptions.TheOptionswindow opens.

b. On theNormalize Tables tab, select Enable Normalize Tables.

c. In the Starting Condition field, select InitialProdMonth.

d. For Date Option, select Earliest or Latest.

e. ClickOK to close theOptionswindow 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

Page 260: UserGuides Tutorials Examples OFM 2014

Sample Workspace: Stacked PlotsThere is a sample workspace that shows the effect of stacking sporadic data with the carry forward andinterpolate methods, using the sum, average, and percent contribution displays.

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\IllustrativeDatabases\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, clickData Grid.The Select OFM Table to Editwindow opens.

b. Select Prod.

c. Select the Edit all records check box.

d. ClickOK.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 theworkspace:

a. On the Analysis pane, right-clickMy Analysis and then clickOpen > Plot.

b. In the OFM installation folder that has this workspace, select the four .grf files and then clickOK.Four plots open andOFM adds them to the workspace.

Stacked plots are not difficult to make when data is nicely columnar. When data is sporadic,the task needsmore effort. Yet in OFM, we often want to plot sporadic data for more than onewell. For example, we might want to plot oil rate versus gas rate for a series of wells. Each ofthese curves are easy tomake independently. If you stacked this data in Excel, you would geta series of filled-in jagged lines, unless you did somemanipulation to put the data intocolumns. 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 withthose 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

Page 261: UserGuides Tutorials Examples OFM 2014

and second curve. If it doesn't, there are two choices. OFM will either carry forward the lastvalue of the first curve, or it will interpolate between values in the first curve that bound the Xvalue in the second curve. Carry forward allows the first curve's value to be carried forwardeven if the data in the second curve falls beyond that of the first curve; interpolate doesn't dothat.

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 theDisplay group, the Regular button isselected.

b. Click the middle graph.This is a stacked display. On the Format tab, in theDisplay group, the Stacked button isselected.

c. Click Regular to see the stacked display change to a regular display, and then click Stackedagain to return to the original display.

d. Click the curve in the middle graph.

e. On the Property pane, under Axis, theMethod is Interpolation.When the Interpolationmethod is selected for a stacked plot and a discrete data point ismissing, OFM linearly interpolates a value between the data points on either side of the missingvalue.

f. Click the lower graph.This is a percent contribution display. On the Format tab, in theDisplay group, the Percentbutton is selected.

Interpolated plots might be the best choice when you are stacking instantaneous data, such asrates. In this case, you might be able to assume that the rate between two points is the average ofthe rate that came before and the rate that came after. You could use carry forward plots forstacking volumes, especially if you want cumulative graphs, since with carry forward each curve'slast 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 theDisplay group, the Regular button isselected.

b. Click the green curve.

c. On the Property pane, under Curve Properties, Step line between values is set to Yes.Change it toNo to see the graph without steps, and then change it back to Yes.

d. The middle graph uses the carry forwardmethod in a sum display. The lower graph uses thecarry forwardmethod in an average display. When the carry forwardmethod is used in sum or

260 of 262

User Guides, Tutorials, and Examples

Page 262: UserGuides Tutorials Examples OFM 2014

average displays, OFM carries the value of the last discrete data point on the curve that is beingsummed 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 onthe Y-axis. For interpolated plots in a sum or average display, OFM does not interpolate beyond thelast discrete data point for a curve in the data set.

7. View the Stackedwith Interpolate and Carryforward plot.Like the previous two plots, each graph on this plot has Prod.Val1 for the X-axis and shows Prod.Val2on the Y-axis. With a stacked display:

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

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\StackedGraphics\InterpolateAndCarryforwardCalculations.xls.

261 of 262

User Guides, Tutorials, and Examples