You are on page 1of 262

User Guides, Tutorials, and Examples

User Guides, Tutorials, and Examples

Copyright 1998-2014 Schlumberger. All rights reserved.

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

Trademarks & Service Marks

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

Product Information

Country of Origin: USA


Release Date: August 2014

1 of 262
User Guides, Tutorials, and Examples

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

l User Guides, Tutorials, Examples, Videos, and Samples

l Getting Started and Creating Projects

l Importing, Exporting, and Linking to Data

l Data Tables and Fields

l Variable Editor

l Solutions Catalog, Variables, and the Data Dictionary

l Entering and Changing Table Data

l My and Shared Workspaces

l OFM Settings

l Workspace Managers

l Categories

l PVT

l Entity Managers and Advanced Setup Features

l Filtering

l Base Map

l GIS Map

l Maps

l Analytical Maps

l Bubble Maps

l Grid, Contour, and Surface Maps

l Scatter Plots

l Map XY Plots

l Plots

l Forecasts

l Reports

l Log Reports, Well Log Displays, and Cross Sections

2 of 262
User Guides, Tutorials, and Examples

l Wellbore Diagrams

l Creating Calculations

l System Functions

l References

3 of 262
User Guides, Tutorials, and Examples

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

l User Guides, Tutorials, Examples, Videos, and Samples

l Getting Started and Creating Projects

l Importing, Exporting, and Linking to Data

l Data Tables and Fields

l Variable Editor

l Solutions Catalog, Variables, and the Data Dictionary

l Entering and Changing Table Data

l My and Shared Workspaces

l OFM Settings

l Workspace Managers

l Categories

l PVT

l Entity Managers and Advanced Setup Features

l Filtering

l Base Map

l GIS Map

l Maps

l Analytical Maps

l Bubble Maps

l Grid, Contour, and Surface Maps

l Scatter Plots

l Map XY Plots

l Plots

l Forecasts

l Reports

l Log Reports, Well Log Displays, and Cross Sections

4 of 262
User Guides, Tutorials, and Examples

l Wellbore Diagrams

l Creating Calculations

l System Functions

l References

5 of 262
User Guides, Tutorials, and Examples

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

Creating an After-Before-Compare Plot


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

n Watch in English

n Watch in Russian

n Watch in Spanish

Finding the Best Three Months of Production


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

n Watch in English

n Watch in Russian

n Watch in Spanish

Creating Customized Well Symbols


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

n Watch in English

n Watch in Russian

n Watch in Spanish

6 of 262
User Guides, Tutorials, and Examples

OFM Quick Start Tutorials


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

n Patterns

n Plots:

n 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

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

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

In this tutorial, you will:

n Open the waterflood sample project

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

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

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

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

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

8 of 262
User Guides, Tutorials, and Examples

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

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

Opening the Waterflood Sample Project


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

Creating Patterns Interactively


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

Note: Before you start, you may want to print a large map of your area and manually draw the pattern
outlines on that map. This helps organize your work when you configure the patterns interactively in OFM.

1. On the Format tab, in the Zoom group, click Zoom Area.

2. On the base map, drag a frame around the pattern waterflood area in the north (marked with blue
symbols).

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

Regular layout: Inverted layout:

3. On the Property pane, under Well Name Properties, change the Well Name to Alias Name.

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

5. Release the Ctrl key.


The Edit Patterns window opens.

9 of 262
User Guides, Tutorials, and Examples

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

n The right pane lists the five wells you selected.

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

6. Click OK to close the Edit Patterns window.

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

8. Release the Ctrl key.


The Edit Patterns window opens. OFM lists the pattern you created with a default name (P-1) and
the default starting date for the pattern. The wells you selected are listed on the right pane.

9. Click OK to close the Edit Patterns window.

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

1. First, view how you can change the pattern data, one pattern at a time:

a. On the Setup tab, in the Workspace Managers group, click Patterns.


The Edit Patterns window opens. Notice that you can navigate to the pattern you want to edit,
by expanding the pattern folder in the left pane.

b. Click OK to close the Edit Patterns window.

2. Now you will change the pattern data with all sets and all patterns visible. On the Setup tab, in the
Tables group, click Data Grid.
The Select OFM Table to Edit window opens.

3. Select the Pattern table and then click OK.


The contents of the Pattern table display, showing all patterns configured in both pattern sets.

4. Scroll to the bottom of the table and find the records for the patterns you created. They are part of
the inverted_five_spot pattern set, and the pattern name is P-0 and P-1.

5. Highlight all records that are not the patterns you created. Ensure the entire rows are highlighted.
Press Delete.
Only the P-0 and P-1 patterns remain.

6. Change the PatternSet names from inverted_five_spot to Tutorial.

7. Change the PatternNames. A common naming convention is to name the pattern after the center

10 of 262
User Guides, Tutorials, and Examples

well. Name the first pattern you created (with the default name P-0) P-495.

8. Note the other table columns:

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

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

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

The effective factor is the Factor value minus the Loss value. So, instead of setting a Loss, you
can choose to set a lower Factor.

9. Since no single well should be allocated more than 100%, a simple way to set geometric allocation
factors is to sort the table by well. Double-click the Well column heading to sort the table.

10. For each well, do the following:

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

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

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

Make sure to click on a different record after making a change, to save the change.

11. When you finish, close the Pattern table.

Confirming the Pattern Allocation Factors


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

1. On the Home tab, in the Launch analysis group, click Report.


The Edit Report window opens.

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

3. Click OK.
A report opens. It lists the pattern set name, well, pattern name, date, factor, and loss.

4. On the report, click in the @PatWell() column.

5. On the Property pane, under Columns, change the Break when this column changes field to
Yes.

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

11 of 262
User Guides, Tutorials, and Examples

7. On the Property pane, under Columns, change the Subtotal field to SUM.

8. On the report, check the sum values to make sure that none of them are larger than 1.00.

Choosing Variables Affected by Pattern Allocation Factors


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

1. On the Setup tab, in the Tables group, click Schema.


The Edit Schema Tables window opens. In this project, only the PRD and WIN tables store
volumes.

2. Make sure the OIL, GAS, and WATER variables in the PRD table are set for Multiply by Factor because
these store volumes.

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

b. On the right, view the Math tab.

c. In the Grouping Options section, make sure Multiply by Factor is selected.

d. On the PRD table, select the GAS variable.

e. On the Math tab, make sure Multiply by Factor is selected.

f. On the PRD table, select the WATER variable.

g. On the Math tab, make sure Multiply by Factor is selected.

3. Make sure the ACTIVE, DAYS, and PRESS variables in the PRD table are not set for Multiply by Factor:

a. On the left pane, in the PRD table, click the ACTIVE variable.

b. On the Math tab, in the Grouping Options section, make sure the Multiply by Factor check
box is clear.

c. On the PRD table, select the DAYS variable.

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

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

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

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

5. Make sure that all numeric variables in the MASTER, PVT, and RESPROP tables are not set to
Multiply by Factor.

6. Click OK to save your changes and close the Edit Schema Tables window.

12 of 262
User Guides, Tutorials, and Examples

Viewing Pattern Results One at a Time


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

1. On the Home tab, in the Launch analysis group, click Report.


The Edit Report window opens.

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

3. Click OK.
A report opens. An empty report opens with columns for the date and water injection.

4. On the Format tab, in the Edit group, click Date & Sort.
The Edit Report Attributes window opens.

5. Select At Last Date and then click OK.

6. Use patterns for filtering:

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

b. On the Filter pane, expand Category, then Patterns, then Tutorial.

c. Under Tutorial, select the check box to the left of the first pattern (this was the P-0 pattern,
which you may have renamed P-495).

d. Click Group ( ) to view the total pattern results.


The report populates with one row.

7. Compare the difference with and without pattern use:

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

b. View the base map.

c. On the Format tab, in the Zoom group, click Zoom Area and then drag across the map around
the pattern waterflood area in the north.

d. On the Filter pane, click Group ( ).

e. View the report.


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

8. Step by patterns:

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

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

c. On the Navigation pane, select the first pattern listed.


This automatically groups the values for the first pattern, with allocation factors applied.

13 of 262
User Guides, Tutorials, and Examples

Comparing Multiple Patterns on a Plot


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

1. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens.

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

3. On the Category field, select Tutorial.

4. On the Variable field, select Win.Winj.

5. Click OK to close Add Multiple Curves window.

6. On the Edit Plot window, click OK to create the plot.

Creating Patterns from an ASCII File


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

1. Open Notepad or a similar text editor.

2. In a new text file, enter the following:

*Label Pattern

*WELL *Factor *Loss

*Set Tutorial

*Pattern "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

"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 a
well from a pattern at a specific date, change either the pattern allocation factor to zero, or set
the loss factor to 1.0.

4. Save the file with a .pat file extension and then close the text editor.

5. In OFM, on the Setup tab, in the Import/Export group, click Import > Data Loader.
The OFM Data Loader opens.

6. In the upper section, double-click the pattern (.pat) file you created.
The Files to Load section lists the file.

7. Click Load.
A warning message confirms your choice.

8. On the warning message, click OK.


The new patterns are loaded into your project. On the Navigation pane, OFM lists them with the
other patterns. OFM also lists them on the Edit Patterns window. (To see this window, on the
Setup tab, in the Workspace Managers group, click Patterns.)

15 of 262
User Guides, Tutorials, and Examples

Tutorial: PVT
For reservoir engineering, you must convert surface oil and gas production volumes to downhole or
reservoir volumes. With those values, the reservoir engineer monitors the performance of the reservoir
relative to the overall depletion strategy. Fluid properties change as reservoir conditions (especially
pressure) change. The PVT module has many industry-accepted correlations that you can use to calculate
an estimated value for a fluid property (such as viscosity).

In this tutorial, you will:

1. Create a PVT entity for each fluid: In this tutorial, you configure your project to produce from two
separate fluid compartments, named Region_A and Region_B. So, you must define the fluid for each
of these compartments. You can create two PVT entities.

2. Map completions to their PVT entity: In this section of the tutorial, you mark which completion
produces from Region_A, and which completion produces from Region_B. This is generally time-
independent information, and so it can be included in a static table. Any static table in the project is
OK. You will use the master table to create a column in which this information will reside.

3. Use PVT system functions: To use the fluid correlation calculations in your work, you can use of a
group of system functions in that relate directly to the PVT functionality. It is OK to call these
functions directly in your eventual calculation, but to make the feature more visible you can create a
calculated variable specifically to return the Formation Volume Factor.

4. Calculate reservoir oil volume: In this section of the tutorial, you make the final calculation.

Creating a PVT Entity for Each Fluid


In this tutorial, you configure your project to produce from two separate fluid compartments, named
Region_A and

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

2. On the Setup tab, in the Workspace Managers group, click PVT.


The PVT Entity Name window opens. One entity is listed, named Default. You cannot rename or
delete this entity.

3. Click Add.
The Add New PVT Table Entity window opens.

4. Enter Region_A as the name you want to assign the new entity and then click OK.
The Edit PVT Information window opens for Region_A.

5. On the Oil Correlations tab, for the Formation Volume Factor, Bo correlation, select Standing.

6. On the PVT Data tab, confirm that the remaining data required for the correlation are available.
In this case, note that there are already entries for the reservoir initial pressure, oil and gas gravity,
and temperature. The reservoir pressure value is used to determine the solution gas oil ratio, which

16 of 262
User Guides, Tutorials, and Examples

is controlled by a separate correlation choice on the Oil Correlations tab. Therefore, for this
tutorial, you need do nothing on this tab.

7. Click OK.

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

9. Enter Region_B as the name and then click OK.

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

11. Click OK.

12. Click Close.

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

Mapping Completions to their PVT Entity


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

1. On the Setup tab, in the Tables group, click Schema.


The Edit Schema Tables window opens.

2. On the left side of the window, select the HEADERID table.

3. On the right side of the window, select the Fields tab.

4. In the Add New Field section, enter PVT_Region.

5. Select Text from the drop-down list.

6. Click Add.
The new field name appears in the list of Available Fields.

7. Click OK.
Now you can enter the data.

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

9. On the Setup tab, in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

10. Select HEADERID.

11. Select Edit All Records.

12. Click OK.

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

17 of 262
User Guides, Tutorials, and Examples

n On the row for BLUE_1:Ge_6, enter Region_A.

n On the row for BLUE_1:He_0, enter Region_B.

n On the row for BLUE_1:Li_1C, enter Region_A.

14. Close the HEADERID:All Records tab to save your changes.

15. Now you must signal that the new field in the HEADERID table dictates which set of PVT correlation
data to use. On the Setup tab, in the Tables group, click Association.
The Associations window opens.

16. In the PVT field, select HEADERID.PVT_Region.

17. Click OK.


You have fully mapped the two PVT regions to the project.

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

Using PVT System Functions


To use the fluid correlation calculations in your work, you can use of a group of system functions in that
relate directly to the PVT functionality. It is OK to call these functions directly in your eventual calculation,
but to make the feature more visible you can create a calculated variable specifically to return the
Formation Volume Factor.

1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Calculated Variables window opens.

2. Click Add Calculated Variable.


The Edit Calculated Variable window opens.

3. Enter the following expression in the text field: @PvtBo(3000)

Note: @PvtBo is one of many PVT system functions. You can view the full list by clicking on the system
functions button and scrolling to the section beginning Pvt. Most of the @Pvt system functions require
pressure data. In this example, you provided the simplest form of input data, a single number (3000 psi).
In practice, a more useful form of the expression would call a dynamic variable for pressure, such as
@PvtBo (Monthlyprod.pressure). This will result in a continuous estimate of Formation Volume Factor.

4. Click OK.
The new calculated variable displays as the last item on the list. By default, OFM names it NewItem.

5. In the Name column, delete the name NewItem and rename the variable FVF.

6. At the top of the Variable Editor window, click Report.


OFM adds the report columns in the window.

7. In the Report Width Decimals column, for the FVF row, select 3.

8. Click OK.

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

18 of 262
User Guides, Tutorials, and Examples

Calculating Reservoir Oil Volume


In this section of the tutorial, you make the final calculation.

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

2. Click Add Calculated Variable.

3. Enter the following expression in the text field: Monthlyprod.oil * FVF

4. Click OK.
The new calculated variable displays as the last item on the list. By default, OFM names it NewItem.

5. In the Name column, delete the name NewItem and rename the variable Reservoir_Oil_Vol.

6. Assign suitable attributes (such as units).

Note: To test the new calculated variable, you can create a report with the following definition: Date,
Monthlyprod.Oil, FVF, reservoir_Oil_Vol. Note the new functionality for the first three completions
in the project. See how the FVF value changes when selecting completions from the two different PVT
regions.

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

19 of 262
User Guides, Tutorials, and Examples

Tutorial: Creating and Editing Plots


You can create plots to display information graphically. OFM produces plots from stored data or from
calculated results in the project.

In this tutorial, you will:

1. Create a plot that displays data for a single completion: The simplest form of a line plot is a time-
dependent display of monthly oil and gas production for a selected completion. In this section of the
tutorial, you create one.

2. Extend a plot to multiple Y-axes: You can extend the visualization capabilities of the plot.

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

4. Create a plot displaying data for a single variable for multiple completions: One way to compare the
performance of several entities is to display their data on the same plot. In this section, you display
data for a single variable for multiple completions.

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

6. Use categories to display different levels of information: You can configure plots to display data at
more than one level. In this section, you use categories in the plots to compare the performance of
an individual completion with the performance of the reservoir from which it produces.

7. Export a plot template: After you have prepared a plot, you can save the features of the plot (but not
the data) to an external file as a template. With the template, you can share the features with a
colleague while keeping the data confidential. Your colleague can import the template (a .grf file) into
their project, and their plot will have the same structure as the original, plotting the same variable
names but applied to the set of wells in their project.

8. Import a plot template

Creating a Plot that Displays Data for a Single Completion


The simplest form of a line plot is a time-dependent display of monthly oil and gas production for a selected
completion. In this section of the tutorial, you create one.

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

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

20 of 262
User Guides, Tutorials, and Examples

3. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens.

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

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

6. Click Add Curve.


OFM adds a new row.

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

8. Click OK.
The plot (with default features) opens.

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

Extending a Plot to Multiple Y-Axes


You can extend the visualization capabilities of the plot.

1. The curves that display on the primary vertical axis (Y-Axis 1) have been defined. To add another Y-
axis,on the Format tab, in the Edit group, click Variables.
The Edit Plot window opens.

2. On the right, in the Y Axis group, set the Number of Axes to 2.

3. Set the Current Axes to Y-AXIS 2.


Note the Variables list area is empty, because it is for Y-axis 2.

4. In the first row, click the cell in the Variables column and then select Water.Cut.

5. Click OK.
By default, the second Y-axis is on the right side of the graph. You can adjust the attributes of this
axis (for example, linear scale, maximum and minimum values, and so on) by selecting the axis and
then making changes on the Property pane, under Axis.

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

Note: You can create up to six Y-axes for each graph (and up to six graphs) in a single OFM plot. By default,
OFM places the even-numbered Y-axes on the right side of the graph, and the odd-numbered Y-axes on
the left side.

Extending a Plot to Multiple Graphs


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

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

2. On the right, in the Graph group, set the Number of Graphs to 4.

21 of 262
User Guides, Tutorials, and Examples

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

4. First, work with Graph 1:

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

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

c. Click the cell on the first row, in the Variables column, and then select Monthlyprod.Oil as
the Y-axis variable.

5. Next, work with Graph 2:

a. In the Graph group, change the Current Graph to GRAPH 2.

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

c. Click the cell on the first row, in the Variables column, and then select Monthlyprod.Oil as the
Y-axis variable.

6. Then, work with Graph 3:

a. In the Graph group, change the Current Graph to GRAPH 3.

b. In the X-Axis group, set the X-axis variable to Date.

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

7. And last, work with Graph 4:

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

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

22 of 262
User Guides, Tutorials, and Examples

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

8. Click OK.
Notice the layout of the plot. Usually, you will want to set the X-axis variables on the second and
fourth plots to linear.

9. On the plot, click directly on the X-axis scale (the horizontal line).
Handle marks display at both ends and in the middle, confirming that this is the object you want to
adjust.

10. On the Property pane, under Axis, expand Scale.

11. Set Scale Type to Linear.

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

Creating a Plot Displaying Data for a Single Variable for Multiple


Completions
One way to compare the performance of several entities is to display their data on the same plot. In this
section, you display data for a single variable for multiple completions.

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

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

3. Click Add Multiple Curves.


The Add Multiple Curves window opens.

4. On the Category field, you select the level in the project at which you want to display the data.
Select Completion.

5. On the Variable field, you select the single variable whose data you want to display for all
completions. Select Monthlyprod.Oil.

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

6. On the Edit Plot window, click OK to display the plot.


The plot displays monthly oil production for the entities.

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

Editing Plot Headers


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

23 of 262
User Guides, Tutorials, and Examples

1. With your plot open, on the Format tab, in the Edit group, click Header.
The Headers window opens.

2. Click Add.
OFM inserts a blank row.

3. On the blank row, type "MY COMPANY"and then press Enter. When entering a text string, you must
use quotation marks around the text.

4. Click Add.
OFM inserts another blank row.

5. On the new blank row, type "Completion" + @Loadname () and then press Enter. You must
include the space immediately after the word completion for proper spacing.

6. Click OK.
The headers display on the plot.

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

8. On the Navigation pane, select other completions to see how the dynamic portion of the header
changes.

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

Using Categories to Display Different Levels of Information


You can configure plots to display data at more than one level. In this section, you use categories in the
plots to compare the performance of an individual completion with the performance of the reservoir from
which it produces.

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

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

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

4. Click Add Curve.


OFM adds a new row.

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

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

7. Click OK.

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

24 of 262
User Guides, Tutorials, and Examples

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

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

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

Exporting a Plot Template


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

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

1. On the Format tab, in the Utilities group, select Save Analysis > Save As.

2. Select a location and name for the file, including the .grf extension.

3. Click Save.
You now can send the file to your colleague.

Importing a Plot Template


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

2. Do not make any changes. Click OK.


An empty plot opens.

3. On the Format tab, in the Utilities group, click Open Analysis.

4. In the OFM application directory, select ...\Sample Workspaces\Demo Database\Format


Files\prod1.grf, and then click Open.

5. On the Navigation pane, select a new completion.


The plot format will look similar to the following:

25 of 262
User Guides, Tutorials, and Examples

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

26 of 262
User Guides, Tutorials, and Examples

Tutorial: Auditing Plots


You can further increase your analysis of plots with the trace, compute line, flag, tabular report, and 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. The
marked point remains visible while you scroll through other entities in the project. In this way, you
can see the location of a particular data point (for example, the peak production for completion A)
while viewing the same plot for other completions (for example, B, C, and so on).

2. Use the Compute a Line utility: With OFM, you can find the equation of a straight line fit through a
region you define on your plot. Like the trace point feature, you can lock this line to compare the
curve it represents with other entities.

3. Print (Auto Print) the plot: There are two ways to print. If you use the normal printing method, OFM
prints the plot for the currently-selected entity. If you use Auto Print, you can print or save as
graphic files in a batch process the plots for all completions in the current filter.

4. Flag a completion: While viewing plots for each completion in your project, you may want to study
further one or more completions. You can mark (or, flag) completions and later you can return to the
flagged completions as a separate collection.

5. Send a plot to a tabular report: You can transform the display of data from a graphical format (a plot)
to a tabular format (a report).

Getting Started
For this tutorial, you need a plot. If you have already created plots while doing the "Creating and Editing
Plots" tutorial, you can use one of those. If you have not completed that tutorial, follow these steps to
create a quick plot:

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

2. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens.

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

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

5. Click Add Curve.


OFM adds a new row.

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

7. Click OK.
The plot opens.

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

27 of 262
User Guides, Tutorials, and Examples

Using the Trace a Plot Utility


Use this utility to mark or digitize a point anywhere on the plot. The marked point remains visible while you
scroll through other entities in the project. In this way, you can see the location of a particular data point
(for example, the peak production for completion A) while viewing the same plot for other completions (for
example, B, C, and so on).

1. With the plot open, on the Navigation pane select the Blue_1:Li_1C completion.
There is a spike in oil production in 1980 (circled in the following graphic). You want to watch this
event while viewing other completions in the project.

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

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

4. On the Format tab, in the Display group, click Lock Trace.


You should now see a small mark at the selected point.

5. Select another completion with a production history coincident with the previous completion (for
example, Blue_5:Li_1C is a good choice).
Note how the location of the spike in production for completion Blue_1:Li_1C is marked on the
plot for Blue_5:Li_1C.

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

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

28 of 262
User Guides, Tutorials, and Examples

Using the Compute Line Utility


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

1. On the Navigation pane, select the Blue_5:Li_1C completion.

2. Set the Y-axis to logarithmic:

a. On the plot, click the Y-axis scale.


Handle marks display at both ends and in the middle, confirming that this is the object you want
to adjust.

b. On the Property pane, under Axis, expand Scale.

c. Set Scale Type to Logarithmic.

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

29 of 262
User Guides, Tutorials, and Examples

3. On the Format tab, in the Utilities group, click Compute Line.

4. On the plot, drag a representative straight line through the decline period.
Note the information at the bottom of the OFM window. If the plot is a semi log, the relevant
equation of the line will be similar to the following:

5. On the Format tab, in the Utilities group, click Lock Line.


OFM freezes the line.

6. On the Navigation pane, select another completion with a production history coincident with the
previous completion (for example, Blue_1:Li_1C is a good choice).
OFM highlights the locked line (which represents the declining oil production for completion Blue_
5:Li_1C) on the plot for Blue_1:Li_1C.

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

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

Printing (Auto Print) Plot Views


There are two ways to print. If you use the normal printing method, OFM prints the plot for the currently-
selected entity. If you use Auto Print, you can print or save as graphic files in a batch process the plots for
all completions in the current filter.

1. On the Workspace tab, click Auto Print.

2. To print the plot for each of the completions in the current filter, select Printer and then click Print.

3. To save each of the plots as an image file (such as .bmp, .jpg, and .tiff), select Print to multiple
files, select a naming scheme for the output files, and then click Print.

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

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

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

The Filter by Completion window opens.

3. Click Select Flagged.

4. Click OK.

30 of 262
User Guides, Tutorials, and Examples

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

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

Sending a Plot to a Tabular Report


You can transform the display of data from a graphical format (a plot) to a tabular format (a report).

1. On the Format tab, in the Utilities group, click Send to Report.


The report opens, displaying the data that displayed on Graph 1 of the plot.

2. You can edit the attributes of the report on the Property pane.

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

31 of 262
User Guides, Tutorials, and Examples

Tutorial: Bubble Map


You can create bubble maps to visualize one or more variables in a map view. The bubble map displays data
for the completions in the current filter, and you can reuse it for different sets of completions within the
OFM project.

In this tutorial, you will:

1. Create a bubble map

2. Change the bubble color and shape: You can set the shape and color of the bubbles.In this section of
the tutorial, you change the shape and default color of the bubble.

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

4. Move the map legend

5. Add a header to the bubble map: In this section of the tutorial, you edit the headers. You can create
headers for the base map, reports, and analytical maps. You can customize the display format of
each line.

6. Change the grid and frame properties

7. Use the animation tool

8. Move the bubbles from default positions: You can move the bubbles from their default locations.This
is a good idea if they are laying on top of one another.

9. Create a bubble map snapshot: You can create a table in the OFM project database of the data
represented in your bubble map. This is most applicable if you are mapping from a .csv file. When you
are mapping data already in the database, there is no need to store it back into the database via a
map snapshot. See "Saving and Loading Map Results as a .Csv File" and "Creating a Map Snapshot"
for more information.

10. Savethe bubble map file

Creating a Bubble Map


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

2. On the Home tab, in the Launch analysis group, click Bubble.


The Create Bubble Map window opens.

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

4. Click Next.

32 of 262
User Guides, Tutorials, and Examples

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

6. (Optional) Enter a Where clause to filter the data.

7. Click Next.

8. Select the start and end data for which you want to track results.
If left as the default, OFM creates the bubble map from the first to the last date in the project
database.

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

10. Click Finish.


The bubble map opens.

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

Changing the Bubble Color and Shape


You can set the shape and color of the bubbles.In this section of the tutorial, you change the shape and
default color of the bubble.

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

2. Expand Plot Attributes and then expand Method and Shape.

3. Leave Display set to the default of Circle.

4. Set Color to DarkGreen.


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

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

Changing Color Scale Properties


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

1. On the Property pane, under Properties, expand Color Scale.

2. Set Style to Vertical.


On the bubble map, the legend changes appearance. If you map more than one variable, you must
use the Horizontal Style.

3. Set Spectrum to Rainbow.

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

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

33 of 262
User Guides, Tutorials, and Examples

Moving the Map Legend


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

Adding a Header to the Bubble Map


In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and
analytical maps. You can customize the display format of each line.

1. On the Format tab, in the Edit group, click Header.


The Headers window opens.

2. Click Add.
OFM inserts a blank row.

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

4. Click Font.
The Font window opens.

5. For Font Style, select Bold and then click OK to return to the Headers window.

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

7. Click Assist.
The Edit Header window opens.

8. On the list of project variables, double-click Category.Fieldname to move it into the Header text
box.

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

11. Click OK to close the Edit Header window, and click OK again to close the Headers window.
The bubble map displays the new header.

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

Changing the Grid and Frame Properties


1. On the Property pane, under Grids and Limits, set Grid Type to Frame.

2. Set Numbers to No.


The bubble map displays without grid lines or numbers.

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

34 of 262
User Guides, Tutorials, and Examples

Using the Animation Tool


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

2. On the Step field, select 12.

3. Select Forward.

4. (Optional) Select Save Animation to an .AVI file if you want to save a copy of the animation as a
video.
If you save the animation file, you must select a name and file location for the video. Before the
animation starts, you select a video compressor format. The codecs available vary from person to
person, and depend on the software installed on your computer. If you want to share the .avi file
with another person, select a codec that person has installed (to avoid compatibility issues).

5. Click OK.
The animation starts.

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

Moving the Bubbles from Default Positions


You can move the bubbles from their default locations.This is a good idea if they are laying on top of one
another.

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

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

3. On the Format tab, in the Utilities group, select Save Analysis > Save Shapes Positions.
The Save Object Locations File window opens.

4. Enter a name for the file, select a location, and then click Save.
The next time you open the bubble map, you can restore the saved bubble positions: On the
Format tab, in the Utilities group, select Open Analysis > Shape Positions File.

5. To move the bubbles back to their default positions, on the Format tab, in the Edit group, click
Default Position.

Creating a Bubble Map Snapshot


You can create a table in the OFM project database of the data represented in your bubble map. This is
most applicable if you are mapping from a .csv file. When you are mapping data already in the database,
there is no need to store it back into the database via a map snapshot. See "Saving and Loading Map
Results as a .Csv File" and "Creating a Map Snapshot" for more information.

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

35 of 262
User Guides, Tutorials, and Examples

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

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

Savingthe Bubble Map File


1. On the Format tab, in the Utilities group, select Save Analysis > Save As.
The Save Bubble Map File window opens.

2. Enter BubbleMap in the File Name field.

3. Navigate to the location in which you want to store the file.

4. Click Save.
The bubble map is saved as a bubble map (.bub) file.

36 of 262
User Guides, Tutorials, and Examples

Tutorial: Grid Map


You can create grid maps to visualize one data variable in a map view. The grid map displays data for the
completions in the current filter, and you can reuse it for different sets of completions within the OFM
project.

In this tutorial, you will:

1. Create a grid map

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

3. Move the legend

4. Add a header to the grid map: In this section of the tutorial, you edit the headers. You can create
headers for the base map, reports, and analytical maps.

5. Change the grid properties

6. Create a grid area

7. Use the animation tool

8. Add control points: Depending on the variable you are gridding, there may be areas of the map with
known values that do not match to a well location. For example, for a net pay grid map, you may
know from the reservoir geology that the net pay is zero around the edges, or perhaps that there is a
fault through the reservoir. With control points, you can set arbitrary values anywhere on the map
(not confined to the location of specific completions).

9. Create a grid map snapshot: You can create a table in the OFM project database of the data
represented in your bubble map. This is most applicable if you are mapping from a .csv file. When you
are mapping data already in the database, there is no need to store it back into the database via a
map snapshot. See "Saving and Loading Map Results as a .Csv File" and "Creating a Map Snapshot"
for more information.

Creating a Grid Map


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

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

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

4. Click Next.

37 of 262
User Guides, Tutorials, and Examples

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

6. (Optional) Enter a Where clause to filter the data.

7. Click Next.

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

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

10. Click Finish.


The grid map opens.

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

Changing Color Scale Properties


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

1. On the Property pane, under Properties, expand Color Scale.

2. Set Spectrum to Red.

3. Set Style to Value Range.


On the grid map, the legend changes appearance and shows the value range for each shade of red.

4. Set Colors to 10.


The color scale limited to 10 colors.

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

Moving the Legend


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

Adding a Header to the Grid Map


In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and
analytical maps.

1. On the Format tab, in the Edit group, click Header.


The Headers window opens.

2. Click Add.
OFM inserts a blank row.

38 of 262
User Guides, Tutorials, and Examples

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

4. Click Font.
The Font window opens.

5. For Font Style, select Bold and then click OK to return to the Headers window.

6. You can also add input variables or calculated variables as headers. Therefore, click Add again.

7. You can use input or calculated variables in your headers. Click Add again to insert another new
row.

8. Select Assist.
The Edit Header window opens.

9. On the list of project variables, double-click Category.Fieldname to move it into the Header text
box.

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

11. Click OK to close the Edit Header window, and click OK again to close the Headers window.
The grid map displays the new header.

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

Changing the Grid Properties


1. On the Property pane, under Grids and Limits, set Grid Type to Frame.

2. Set Numbers to No.


The grid map displays without grid lines or numbers.

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

Creating a Grid Area


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

2. Select points on the grid map to create a polygon shape around a group of wells (as shown
below).OFM automatically connects the last selected point of the polygon to the first point. This
redefines the grid limit area. It is the boundary beyond which gridding will not be extended.

39 of 262
User Guides, Tutorials, and Examples

3. When you finish, right-click and then select Done.


OFM defines the new grid area from the group of wells selected in the polygon.

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

Using the Animation Tool


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

2. On the Step field, select 12.

3. (Optional) Select Save Animation to an .AVI file if you want to save a copy of the animation as a
video.
If you save the animation file, you must select a name and file location for the video. Before the
animation starts, you will be asked to select a video compressor format. The codecs available vary
from person to person, and depend on the software installed on your computer. If you want to share
the .avi file with another person, select a codec that person has installed (to avoid compatibility
issues).

4. Click OK.
The animation starts.

40 of 262
User Guides, Tutorials, and Examples

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

Adding Control Points


Depending on the variable you are gridding, there may be areas of the map with known values that do not
match to a well location. For example, for a net pay grid map, you may know from the reservoir geology
that the net pay is zero around the edges, or perhaps that there is a fault through the reservoir. With
control points, you can set arbitrary values anywhere on the map (not confined to the location of specific
completions).

1. On the Format tab, in the Control Point Utilities group, click Add.
The Control Point Value window opens.

2. In the Value field, enter 5 and then click OK.

3. Inside the grid area of your map, south of wells O-33 and G-15, click three points.

4. When you finish, right-click and then select Done.


The color distribution changes as that area was previously showing with darker red color (indicating
higher values).

5. To use or disable the control points, on the Format tab, in the Control Point Utilities group, select
or clear Use.

Creating a Grid Map Snapshot


You can create a table in the OFM project database of the data represented in your bubble map. This is
most applicable if you are mapping from a .csv file. When you are mapping data already in the database,
there is no need to store it back into the database via a map snapshot. See "Saving and Loading Map
Results as a .Csv File" and "Creating a Map Snapshot" for more information.

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

2. Enter a table name and then click OK.


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

41 of 262
User Guides, Tutorials, and Examples

Tutorial: Contour Map


You can create contour maps to visualize one data variable in a map view. The contour map displays data
for the completions in the current filter, and you can reuse it for different sets of completions within the
OFM project.

In this tutorial, you will:

1. Create a contour map

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

3. Move the legend

4. Edit map parameters: With the map properties, you can set the grid size, data ranges, and scale
types for the variables.

5. Create a grid area: You can create a boundary around a group of wells to redefine the grid limit area.

6. Advance the contour map through time

7. Animate the map: With animation, you can quickly progress through the life of a field.

8. Add control points to the contour map: Depending on which variable you are contouring, there may
be areas of the map with known values that do not match with a well location. For example, for a net
pay contour map, you may know from the reservoir geology that the net pay is zero around the
edges, or perhaps that there is a fault through the reservoir. Use control points to set arbitrary
values anywhere on the map (not confined to the location of specific completions).

9. Add a header to the contour map: In this section of the tutorial, you edit the headers. You can create
headers for the base map, reports, and analytical maps.

Creating a Contour Map


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

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

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

4. Click Next.

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

6. (Optional) Enter a Where clause to filter the data.

7. Click Next.

42 of 262
User Guides, Tutorials, and Examples

8. Select the start and end data for the contour map.
If left as default, OFM will produce the map from the first to the last date in the project database.

9. Select how often you want OFM to sample data from the Data Sampling Frequency.
If left at the default, OFM uses the data frequency (that is, monthly data produces a contour map
every month and daily data produces a contour map every day).

10. Select Finish.


The contour map opens.

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

Changing the Color Scale Properties


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

1. On the Property pane, under Properties, expand the Color Scale section.

2. Set Colors to 24.

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

Moving the Color Scale Legend


On the contour map, drag the legend to the upper-left corner of the map.

Editing Map Parameters


With the map properties, you can set the grid size, data ranges, and scale types for the variables.

1. On the Property pane, under Properties, expand the GRID section.

2. Set the Maximum Grid Size to 250.


This smooths the contour lines because the map is divided into more, and smaller, grid cells.

3. Expand the 2D section.

4. Set Show to Yes.


The numeric values of the contour lines display.

5. Set Decimal Places to 0.

6. Set Distance Between Labels to 4.


The contour line's numeric labels display with no decimal places, and are further apart.

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

Creating a Grid Area


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

43 of 262
User Guides, Tutorials, and Examples

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

2. Select points on the map to create a polygon shape around a group of wells (as shown below). OFM
automatically connects the last selected point of the polygon to the first point. This redefines the grid
limit area.

3. When you finish, right-click and then select Done.


OFM defines the new grid area from the group of wells selected in the polygon.

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

Advancing the Contour Map Through Time


1. On the Format pane, in the Animation Utilities group, click Previous Date to go back by one unit
(month, date, or year). In this case, the data is monthly.

2. Click Backward to reverse the contour map through time.

3. Click Stop to stop.

4. Click Next Date to advance the contour map by one unit.

Animating the Map


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

44 of 262
User Guides, Tutorials, and Examples

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

2. On the Step field, select 12.

3. Select Forward.

4. (Optional) Select Save Animation to an .AVI file if you want to save a copy of the animation as a
video.
If you save the animation file, you must select a name and file location for the video. Before the
animation starts, you will be asked to select a video compressor format. The codecs available vary
from person to person, and depend on the software installed on your computer. If you want to share
the .avi file with another person, select a codec that person has installed (to avoid compatibility
issues).

5. Click OK.
The animation starts.

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

Adding Control Points


Depending on which variable you are contouring, there may be areas of the map with known values that
do not match with a well location. For example, for a net pay contour map, you may know from the
reservoir geology that the net pay is zero around the edges, or perhaps that there is a fault through the
reservoir. Use control points to set arbitrary values anywhere on the map (not confined to the location of
specific completions).

1. On the Format tab, in the Control Point Utilities group, click Add.
The Control Point Value window opens.

2. In the Value field, enter 100 and then click OK.

3. In the northeast corner of the map, within the grid area, click a point.

4. When you finish, right-click and then select Done.


The contouring changes. The area previously showed darker red colors (indicating higher values).

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

Adding a Header to the Contour Map


In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and
analytical maps.

1. On the Format tab, in the Edit group, click Header.


The Headers window opens.

2. Click Add.
OFM inserts t blank row.

45 of 262
User Guides, Tutorials, and Examples

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

4. Click Font.
The Font window opens.

5. For Font Style, select Bold and then click OK to return to the Headers window.

6. Click OK to close the Headers window.


The contour map displays the new header.

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

46 of 262
User Guides, Tutorials, and Examples

Tutorial: Scatter Plot


You can create scatter plots to see relationships and correlations between data variables. The scatter plot
displays data for the completions in the current filter, and you can reuse it for different sets of completions
within the OFM project.

In this tutorial, you will:

1. Create a scatter plot

2. Set up the scatter plot graphs

3. Create a scatter plot set

4. Select completions in the scatter set by value range

5. Save and edit the scatter plot set

6. Pick by bounding polygon

7. Add a header to the scatter plot

8. Animate the map

Creating a Scatter Plot


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

2. On the Home tab, in the Launch analysis group, click Scatter.


The Create Scatter Plot window opens.

3. Select the variables Oil.Cum and Water.Cum and then click .

4. Click Next.

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

6. Click Next.

7. Leave the start and end dates at Default for the scatter plot.
If left as default, OFM will produce the map from the first to the last date in the project database.

8. Leave the Data Sampling Frequency as All Rows.


If left at default, OFM uses the frequency of the data (that is, monthly data produces a scatter plot
every month and daily data produces a scatter plot every day).

9. Select Finish.
The scatter plot will display.

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

47 of 262
User Guides, Tutorials, and Examples

Setting Up the Scatter Plot Graphs


1. On the Property pane, under Scatter Plot Properties, set the Number of Graphs to 2.

2. Set the Current Graph to 1.

3. In the Current Graph Properties section, set the X-Variable to Oil.Cum.

4. Set the Y-Variable to Water.Cum.

5. Change the Current Graph to 2.

6. In the Current Graph Properties section, change the X-Variable to X-Coordinate.


Even though you did not choose the X- and Y-coordinates when creating the scatter plot, OFM
provides them automatically.

7. Change the Y-Variable to Y-Coordinate.


Two scatter plots display. The plot on the right represents a map of the field. Each data point on the
scatter plot represents a completion. The plot on the left shows what the values of cumulative water
and cumulative oil of each completion were at the date indicated.

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

Creating a Scatter Plot Set


1. On the Format tab, in the Edit group, click Scatter Sets.
The Edit Scatter Plot Set window opens.

2. Click Add.

3. For the Name, enter High Oil.

4. Set the Color to Green.

5. Set the Type to Filled Circle.

6. Select Trackable.

7. Set the Size to 7.

8. Click OK.

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

Selecting Completions in the Scatter Set by Value Range


1. Click on the first graph (the one on the left) to make it the Current Graph.

2. On the Format tab, in the Utilities group, click Pick By Value.


The Set By Value window opens.

3. Because you are identifying high oil points, in the Cumulative Oil Production section (which is
your X-coordinate), select >= and enter the value 800.

4. Select And.

48 of 262
User Guides, Tutorials, and Examples

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

6. Click OK.
The scatter plot displays with the relevant data points overlaid with green circles. Both graphs have
the same completions indicated by the set. This shows you where the high oil completions are
located on the map. The green lines on Graph 1 show the path by which each completions data
traveled through time.

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

Saving and Editingthe Scatter Plot Set


1. On the Format tab, in the Edit group, click Scatter Sets.
The Edit Scatter Plot Set window opens.

2. Click Save.

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

4. Set the Color to Dark Green.

5. Set the Type to Filled Up Triangle.

6. Set the Size to 10.

7. Click OK.
The scatter plot displays.

Picking by Bounding Polygon


1. On the Format tab, in the Edit group, click Scatter Sets.
The Edit Scatter Plot Set window opens.

2. Click Add.

3. For the Name, enter High 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. Click OK.

9. On the Format tab, in the Utilities 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 to
the 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

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

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

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

Adding a Header to the Scatter Plot


In this section of the tutorial, you edit the headers. You can create headers for the base map, reports, and
analytical maps. You can customize the display format of each line.

1. On the Format tab, in the Edit group, click Header.


The Headers window opens.

2. Click Add.

3. In the blank line, type "Cumulative Liquids" as title for the scatter plot. When entering a text
string, 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 click OK.

6. Click OK.
The plot displays with the new header.

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

Animating the Map


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

4. Click OK.
The animation starts.

50 of 262
User Guides, Tutorials, and Examples

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

51 of 262
User Guides, Tutorials, and Examples

Tutorial: Surface Map


You can create surface maps to see one data variable in a three-dimensional map display. The surface map
displays data for the completions in the current filter, and you can reuse it for different sets of completions
within the OFM project. Because of its three-dimensional nature, the most logical types of variables to
show 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 color
scale 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 create
headers for the base map, reports, and analytical maps. You can customize the display format for
each 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 Map


1. Open the Demo workspace. 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, a
calculated variable is required to convert measured depth to true vertical depth, so for this example
you 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 the Home tab, in the Launch analysis group, click Surface Map.
The Create Surface Map window 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, and would be more representative if it was
plotting elevations instead, so the deepest perfs extend downward rather than upward.

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

52 of 262
User Guides, Tutorials, and Examples

Changing 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 color scale properties.

1. On the Property pane, under Properties, expand Color Scale.

2. Set Style to Value Range.

3. Set Spectrum to Default.

4. Set Colors to 10.

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

Moving the Color Scale Legend


On the surface map, drag the legend to the upper-left corner of the map.

Adding Headers to the Surface Map


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

1. On the Format tab, in the Edit group, click Header.


The Headers window opens.

2. Click Add.
OFM inserts a blank row.

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

4. Click Font.
The Font window opens.

5. For Font Style, select Bold and then click OK to return to the Headers window.

6. On the Headers window, click OK.


The surface map displays the new header.

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

Changing the Surface Map


1. On the Property pane, under Variable Properties, expand Limit Values.

2. Set Minimum to 3000.

3. Set Maximum to 12000.


The value ranges on the legend changes.

53 of 262
User Guides, Tutorials, and Examples

4. Under Properties, expand 3D.

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 are
looking at a side view. A value of 90 provides a plane view from directly overhead.

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

54 of 262
User Guides, Tutorials, and Examples

Tutorial: Map XY Plot


You can create map XY plots to create a montage that combines the base map and plots of time-dependent
data. 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 create
headers for the base map, reports, and analytical maps. You can customize the display format for
each 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 a
good idea if they are laying on top of one another.

Creating a Map XY Plot


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

2. On the Home tab, in the Launch analysis group, click Map XY Plot.
The Create Map XY Plot window opens.

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

4. Click Finish.
The Plot Setup window opens.

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

6. Click OK.
The map XY plot displays.

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

Changing the Scale Properties


1. On the Property pane, under Data, expand Plot Setup.

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

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

4. On the Format tab, in the Display group, select Blow Up Plot.


The Blow Up Plot window opens.

5. Resize the plot window to be larger.

55 of 262
User Guides, Tutorials, and Examples

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

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

Changing the Curve Properties


1. On the Property pane, under Data, expand Plot Setup and then expand Plot Curve Attribute.

2. Set Plot Curve Attribute to Oil.CalDay.

3. Set Line Color to Green.

4. Set Plot Curve Attribute to Water.CalDay.

5. Set Line Color to Blue.

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

Adding Headers to the Map XY Plot


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

1. On the Format tab, in the Edit group, click Header.


The Headers window opens.

2. Click Add.
OFM inserts a blank row.

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

4. Click Font.
The Font window opens.

5. For Font Style, select Bold and then click OK to return to the Headers window.

6. On the Headers window, click OK.


The map XY plot displays the new header.

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

Moving the Plots from Default Positions


You can move the plots from their default locations.This is a good idea if they are laying on top of one
another.

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

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

56 of 262
User Guides, Tutorials, and Examples

3. On the Format tab, in the Utilities 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 Format
tab, in the Utilities group, selecting Open > Shape Positions File.

5. To move the plots back to their default positions, on the Format tab, in the Edit group, click Default
Position.

57 of 262
User Guides, Tutorials, and Examples

Tutorial: Date-Based Report


You can create reports that display a spreadsheet-style tabular listings of project variables (either table
variables or calculated variables). For most of your reports, you may want to display the variables against
time (date), but you can use other variables. If there is a relationship between the variables, you can
create reports to display the different types of variable dependencies. By default, reports display variables
for only one entity, whether you reporting on a single completion, a single reservoir or other category, or a
single object created by grouping multiple completions.

In this tutorial, you will:

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

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

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 again
in the future. You may want to save an external version of the report format to share with a
colleague.

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 for
capturing 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 writeback
choice. The other two work similarly.

Creating a Simple Date-based Report


You can create a report that displays the project variable MonthlyProd.Oil with the calculated variable
Water.Cut.

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

2. On the Home tab, in the Launch analysis group, click Report.


The Edit Report window opens.

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

58 of 262
User Guides, Tutorials, and Examples

4. Click OK.
The report opens.

5. On the Navigation pane, select the Blue_1:He_0 completion.


OFM displays a grid-style tabular listing of the variables.

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

Editing the Report Features


In this section of the tutorial, you improve the appearance of the report. Many attributes (such as column
width and number of decimal places) are set by the definition of the variable displayed. While you can
customize the appearance of the report by changing the attributes of a column, the changes you make will
not 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, click Date & Sort.
The Edit Report Attributes window 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. Click OK.
The report displays only the data from 1997 and 1998.

6. On the Property pane, under Columns, set Break to Annually.


The report breaks at the end of every calendar year.

7. Click any cell in the Monthly Oil column of the reportto access the Current Column properties for
selected column.
On the Property pane, under Columns, the Current Column shows that you selected
Monthlyprod.Oil.

8. Expand Column Attributes.

9. Set the column Width to 15.

10. Set the Decimal Places to 1.

11. Set the Justification to Center.

12. Set the Display 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. Set Multiplier to M.

59 of 262
User Guides, Tutorials, and Examples

16. Click any cell in the Water Cut column of the report to access the Current Column properties for
selected 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 different
line than the sum, which is helpful if you want to copy the report content to a spreadsheet
application.

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

Adding the Current Date to the Report Header


1. On the Format tab, in the Edit group, click Header.
The Header/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. Click OK.
The report header has a new line with todays date.

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

Adjusting the Column Headers


1. Click on any cell in the Monthly 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 Column
Attributes.

3. Set the Heading Third Row to Oil Volume.


Note the change in the way the data in the column title is displayed.

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

Exporting a Report Template


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

1. On the Format tab, in the Utilities group, click Save Analysis.


The Save Report Format window opens.

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

60 of 262
User Guides, Tutorials, and Examples

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 Template


1. To import report attributes from an .rpt file, first create a blank report.

2. With the report is open, on the Format tab, in the Utilities group, click Open Analysis.

3. Select the saved .rpt file and then click Open.


Note that the report now displays the imported attributes.

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

Saving the Report Content


You 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 the Utilities 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 Access


Data Table
OFM offers more choices for capturing 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
writeback 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 do
this if the results have corrections to the original raw data, and you want to have the corrected and
uncorrected data in your project. Or, you may want to do this if you want to use system functions that only
work on data, and do not work on calculated variables (such as the @CumInput system function).

1. On the Home tab, in the Launch analysis group, click Report.


The Edit Report window opens.

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

3. Click OK.

61 of 262
User Guides, Tutorials, and Examples

4. On the Navigation pane, select the Blue_1:He_0 completion.


The report displays results.

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


The Access window opens.

6. (Optional) Select Automatically update Access when the report is updated to create updates
automatically.
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 create
the 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 the OFM Columns
column).

9. Type Uniqueid and then press Enter.

10. Click Key.

11. In the Access Fields column, click Date.

12. Click Key.

13. In the Access Fields column, click MonthlyprodOil*09.

14. Type OIL and then press Enter.

15. Click MonthlyprodGas*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 Tables window 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 them
correctly. In the Auto-associate Fields window, select Yes to accept OFMs guess.

62 of 262
User Guides, Tutorials, and Examples

d. Click OK to accept the new changes and close the window.


Your project now contains a data table (Corrected_MonthlyProd) with adjusted oil and gas
volume data columns, taken from the report.

23. On the Workspace 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 display
the report for all completions and thus populate the table for all completions, see "To Generate a Summary
Report - Full Detail."

63 of 262
User Guides, Tutorials, and Examples

Tutorial: Summary Report


You can create summary reports to view data for all completions, all reservoirs, and so on, individually. A
summary 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 all
completions in the summary report, you may want to view a single line for each completion (for
example, the current performance). You can customize the summary report to display one line per
completion, with the report ranked according to cumulative oil. This way you get a concise summary
showing the best producers.

Creating a Summary Report - Full Detail


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

2. On the Home tab, in the Launch analysis group, click Report.


The Edit Report window opens.

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

4. Click OK.
The report opens.

5. On the Navigation pane, select the Blue_1:He_0 completion.


A tabular listing of the variables populates the report.

6. On the Format tab, in the Display group, click Sum By Item.


The report shows the history of all the completions in the current filter.

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

Creating a Summary Report One Line for Each Completion


Rather than view the full history for all completions in the summary report, you may want to view a single
line for each completion (for example, the current performance). You can customize the summary report
to display one line for each completion, with the report ranked according to cumulative oil. This way you
get a concise summary showing the best producers.

1. On the Format tab, in the Edit group, click Date & Sort.
The Edit Report Attributes window 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

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

3. On the Sort tab, set the First sorting to Oil.cum.

4. Select Descending.

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

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

65 of 262
User Guides, Tutorials, and Examples

Tutorial: Single Well Log Display


You can create a single-well log display to visualize the digital well log data and create custom templates to
perform 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 Display


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

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

3. In the Top field, enter 1500.

4. In the Bottom field, enter 6750.

5. Click OK.
The single-well log display template opens, showing placeholders for two traces on each of two
tracks.

6. On the Navigation pane, select Wellbores.

7. Select the BLUE_14 well.

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

Assigning Traces to a Track and Editing Trace Attributes


1. At the top of Track 1, double-click the first Trace Name.
The Log Trace Attributes window opens.

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

66 of 262
User Guides, Tutorials, and Examples

n For Log, select SP.

n For Color, select Blue.

n For Min. Reading, enter -151.399.

n For Max. Reading, enter -5.448.

3. Click OK.
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 For Min. Reading, enter 0.26.

n For Max. Reading, enter 7.18.

6. Click OK.
The log displays.

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

Editing the Log Track


1. On the Navigation pane, select the ORANGE_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. Click OK.
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. Click OK.
The log displays.

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

Creating a Log Track


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

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

3. Select Linear as the scale.

4. Click OK.
The log display shows the new track.

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

Adding a Cutoff
1. On the Navigation pane, select the BLUE_1 wellbore.

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

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. Click OK.
Note the effect of the cutoff.

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

Editing the Depth Shift


1. On the Format tab, in the Edit group, click Depth Shift.
The Depth Shift window opens.

2. In the Shifting field, enter 20 feet.

3. Select Up.

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

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

Editing the Lithology Interval


1. On the Format tab, in the Edit group, click Litho Interval.
The Edit Interval window opens.

2. For the Name, enter Henna.

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

6. Click Save and then Close.

7. On the Property pane, set Show Litho Intervals to Yes.


The Henna sandstone section displays.

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

Adding Comments
1. On the Property pane, set Show Depth Shift to No.

2. On the Format tab, in the Display 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 Comment window opens.

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

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

Renaming the Log File


1. 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 the Utilities group, click Save
Analysis.

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

69 of 262
User Guides, Tutorials, and Examples

Tutorial: Multi-Well Log Display


You 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 Filter


1. Open the Demo workspace. 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. Expand Category, and then expand Logdata.

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

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

Creating a Multi-Well Log


1. On the Home tab, in the Launch analysis group, click Multiple Well Log.
The log opens.

2. Click the first track.


At the top, just below the Well 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 Log window opens.

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

n For Wellbore 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

n For Log Trace #2, select RLD.

n For the Date Logged, select a date.

5. Click OK.
The well data displays.

6. At the top of Track 1, double-click the SP curve.


The Log Trace Attributes window opens.

7. In the Color field, select Blue.

8. Click OK.

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

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

n For Wellbore Name, select BLUE_14.

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

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

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

n For Wellbore Name, select BLUE_17.

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

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

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

n For Wellbore Name, select BLUE_2.

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

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

13. Click OK.

14. At the top of tracks 2, 3, and 4, double-click the SP curve.


The Log Trace Attributes window opens.

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

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

Adding a New Trace


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

3. Click Add a New Trace and then click OK.


A new trace displays at the top of the track.

4. Double-click the new trace.


The Log Trace Attributes window opens.

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

6. Select Green in the Color field.

7. Click OK.
The multi-well log displays.

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

Editing the Display


1. 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 Log window opens.

3. Select the BLUE_5 wellbore.

4. Click OK.

5. On the Property pane, set Show Litho Intervals to Yes.


The lithology track displays the intervals.

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

Editing the Depth Range


1. On the Format tab, in the Edit group, click Depth Range.
The Depth Column Configuration window opens.

2. Select MD.

3. Select Default.

4. Select Show TVD Sub-Sea Depth.

5. Click OK.

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

Editing the Depth Shift


1. On the Format tab, in the Edit group, click Depth Shifts.
The Depth Shift window 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

4. Click OK.

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

Renaming the Log Display


1. On the Analysis pane, OFM named the log you created Multiple 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 the Utilities group, click Save
Analysis.

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

73 of 262
User Guides, Tutorials, and Examples

Tutorial: Log Cross-Section


You can create cross-sections to display log traces, wellbore diagrams, and lithologies. In this tutorial, you
will:

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-Section
1. Open the Demo workspace. 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. Expand Category, 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, under Well Name Properties, set Well Name to
Alias Name.

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

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

8. Right-click on the base map and then select Done.


The Cross-Section Legend window opens.

9. Click OK
The cross-section opens.

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

Changing the Cross-Section Display


1. On the Format tab, in the Display group, make sure Size To Fit is selected.

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

3. Click Setup.
The Log Trace Setup window opens.

74 of 262
User Guides, Tutorials, and Examples

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

5. On the Right Trace tab, set the Log Trace to RLD.

6. Select RLD in the Log Trace field.

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

Editing the Cross-Section Markers


1. On the Format tab, in the Display group, select Left Marker.

2. In the Edit group, click Interval.


The Edit Interval window opens.

3. Make the following selections:

n For the Name, enter Layer 1.

n For the Top Marker, select Winter.

n For the Base Marker, select Screed_1.

n For Lithology, select Shale.

4. Click Save and then click Close.

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

Editing the Cross-Section Display


On the Property pane, set Show Litho Intervals to Yes.

Editing the Cross-Section Depth Range


1. On the Format tab, in the Edit group, click Depth Range.
The Depth Column Configuration window opens.

2. For the Minimum Depth, enter 5000.

3. For the Maximum Depth, enter 6000.

4. Click OK.
The log display displays data within the given range.

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

75 of 262
User Guides, Tutorials, and Examples

Tutorial: Single Phase Analysis


In this tutorial, you will:

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

After setting up a forecast, you are ready to perform history matching. Forecasts assume that
whatever governed a completion's performance in the past will continue to govern it in the future.
To build a meaningful forecast, it is important to get a representative fit through historical data. To
do that, you must constrain the match (or, fit) to occur only through selected data points. There
are several ways to do that, and you can use the different ways in any combination.

2. Set lower and upper limits

3. Set the limit as a range: Assuming you have followed the lower-limits steps, you now can define a
more 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 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: You can remove points that may be skewing the forecast results
because 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 single
phase 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 following workflow describes the set up:

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

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

3. On the Home tab, in the Launch analysis group, click Forecast.


The forecast graph for the Blue_1:He_0 completion displays.

4. On the Format tab, in the Edit group, click Scenario.


The Current Scenario window opens.

76 of 262
User Guides, Tutorials, and Examples

5. On the Flow Model tab, in the Variable Association section, the default Phase/Analysis is Oil.
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 average
rate, 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 the
number of days in the month). To do this, you might choose Oil.ProDay for the calculated
variable. For this tutorial, select Oil.CalDay for your analysis because days on line data is not
widely 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. Click OK.
OFM applies the changes you made to the completion you selected (Blue_1:He_0). If you select
another completion, OFM applies the default settings. You can change the default settings on the
Scenario Manager. (To open the Scenario Manager, on the Format tab, in the Edit group, click
Scenario Manager.)

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

Setting Lower and Upper Limits


1. To set a lower limit, on the Format tab, in the Edit group, select Limit > Lower. To set an upper
limit, select Limit > Upper.

2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which
you will not accept any data points in the analysis. OFM will only use the points directly above this
lower-limit line.

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

77 of 262
User Guides, Tutorials, and Examples

3. When you finish, right-click and select Done.


OFM recalculates the best least-squares regression fit through the acceptable data points.

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

Setting the Limit as a Range


Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of
data points.

1. On the Format tab, in the Edit group, select Limit > Range.
The Data Range window opens.

2. Select Set X axis.

3. In the X Minimum field, enter 19970901.

4. In the X Maximum field, enter 19990601.

5. Click OK.
OFM fits the line through only the data points in the date range.

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

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

1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens.

78 of 262
User Guides, Tutorials, and Examples

2. Click Add Calculated Variable.


The Edit Calculated Variable window opens.

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

4. Click OK.
OFM lists the new calculated variable on the Variable Editor as NewItem.

5. Click in the cell for NewItem and rename the variable WC_Cutoff.

6. Click OK.

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

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

9. Select Use Variable and then select WC_Cutoff from the list.

10. Click OK.


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

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

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

1. On the Format tab, in the Edit group, click Digitize Points.

2. Press Ctrl and click to add your own data points on the graph.
The data points display as magenta triangles.

3. When you finish, right-click the forecast graph and then select Done.
OFM will discard all the historical data points and fit a line through the data points you added.

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

Toggling Between Working Points


You can remove points that may be skewing the forecast results because they fall outside the norm.

1. Assuming you are following each of the procedures in this tutorial in sequence, you must reset the
data to explore the next option. On the Format tab, in the Edit group, select Limit > Reset.

2. On the Format tab, in the Display group, select Toggle Working Points.
OFM displays the cursor as a small eraser.

3. On the graph, press the left mouse button and use the mouse to erase data points.

79 of 262
User Guides, Tutorials, and Examples

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

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

Controlling Fit Parameters


You also can control how OFM performs the fit process.

1. First, remove data points before 1997. Set the lower limits option to do this.
The default fit to this data set returns a value in the Results legend for the Arps exponent (b), close
to 1, suggesting that the (default) best fit is close to a harmonic fit.

2. Switch to a Rate v. Cum view: On the Property pane, under OFM Forecast, set Analysis to Rate
Cum.
The fit changes to the reduced data set.

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

4. On the Property pane, in the History Match section, set the Fit Type to Exponential.
On the Results legend, the resultant b value is now zero. The fit, on a semi-log plot, is a straight
line.

5. You can override the least squares regression calculation by placing the fit line where you believe it
portrays a better representation (that is, by using your engineering judgment instead of statistics).
To override the calculation, drag the fit (dark green) line upwards. Drag the blue point on either end
of the fit line to a new location.
The Results legend values change. On the Property pane, under History Match, the Method
changed to Manual.

6. Because the Method is Manual, OFM may no longer reflect changes (like removing more data
points) until you change this setting to Auto: On the Property pane, under History Match, change
the Method to Auto.

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

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

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

Setting Up the Forecast


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

80 of 262
User Guides, Tutorials, and Examples

1. On the Format tab, in the Edit group, click Scenario.


The Current Scenario window opens.

2. On the Forecast tab, select the following:

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

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

4. Leave all other choices at the default settings.

5. Click OK.
On the Results legend, the Forecast Ended By explains which of your limits (Rate or Time) is
stopping the forecast.

6. Make a note of the value (in Mbbl) for Reserves, because we will use this value next.

7. On the Format tab, in the Edit group, click Scenario.

8. On the Forecast tab, in the Sch. Reserves field, enter a number that is smaller than the
Reserves value that displayed on the Results legend.

9. Click OK.
On the Results legend, the Forecast Ended By now explains that your reserves limit is stopping
the forecast.

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

Saving the Forecast


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

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

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

81 of 262
User Guides, Tutorials, and Examples

Tutorial: Ratio Analysis


In this tutorial, you will:

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

After setting up a forecast, you are ready to perform history matching. Forecasts assume that
whatever governed a completion's performance in the past will continue to govern it in the future.
To build a meaningful forecast, it is important to get a representative fit through historical data. To
do that, you must constrain the match (or, fit) to occur only through selected data points. There
are several ways to do that, and you can use the different ways in any combination.

2. Set lower and upper limits

3. Set the limit as range: Assuming you have followed the lower-limits steps, you now can define a
more detailed acceptable range of data points.

4. Select the variable: This choice requires you to select a project variable that returns True (1) or False
(0). This will most likely be a calculated variable. OFM will use this variable either to keep a data point
for the fit analysis (result of variable = True) or to remove it from the analysis (result = False).

5. Digitize points: This choice may be valuable if the real data is sparse, noisy, or not trustworthy.

6. Toggle between working points

7. Control fit parameters

8. Set up the forecast: All forecast settings for Ratio forecasts are done on the Property pane.

9. Save the forecast

Setting Up a Forecast for Ratio Analysis (GOR, WOR, Water


Cut, Oil Cut)
The demo project is configured for ratio analyses. The four ratios are configured the same way, so the
tutorial uses Water Cut as an example.

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

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

3. On the Home tab, in the Launch analysis group, click Forecast.


The forecast graph for the Blue_1:He_0 completion displays.

4. On the Format tab, in the Edit group, click Scenario.


The Current Scenario window opens.

82 of 262
User Guides, Tutorials, and Examples

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

6. Make sure the Cum. Oil is Oil.Cum.

7. Make sure the Water Cut, % is Water Cut.


All ratio analyses use the Empirical (least squares regression) method as the solution type, so the
remaining fields are unavailable.

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

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

Setting Lower and Upper Limits


1. To set a lower limit, on the Format tab, in the Edit group, select Limit > Lower. To set an upper
limit, select Limit > Upper.

2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which
you will not accept any data point in the analysis.

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

83 of 262
User Guides, Tutorials, and Examples

3. When you finish, right-click and select Done.


OFM recalculates the best least-squares regression fit through the acceptable data points.

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

Setting the Limit as a Range


Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of
data points.

1. On the Format tab, in the Edit group, select Limit > Range.
The Data Range window opens.

2. Select Set X axis.

3. In the X Minimum field, enter 73.

4. In the X Maximum field, enter 85.

5. Click OK.
OFM fits the line though only the data points in which the cumulative oil exceeds 73 Mbbl.

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

Selecting a Variable
This choice requires you to select a project variable that returns True (1) or False (0). This will most likely
be a calculated variable. OFM will use this variable eitherto keep a data point for the fit analysis (result of
variable = True) or to remove it from the analysis (result = False).

1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens.

2. Click Add Calculated Variable.


The Edit Calculated Variable window opens.

3. Enter the following definition: @if(Ratio.WOR>70,1,0)

4. Click OK.
OFM lists the new calculated variable on the Variable Editor as NewItem.

5. Click in the cell for NewItem and rename the variable WOR_Cutoff.

6. Click OK.

7. On the Format tab, in the Edit group, select Limit > Reset.
This recovers all data points.

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

9. Select Use Variable and then select WOR_Cutoff from the list.

10. Click OK.

84 of 262
User Guides, Tutorials, and Examples

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

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

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

1. Select Edit > Digitize Points.

2. Press Ctrl and click to mark your own, independent data points on the graph.
The data points display as magenta triangles. Use them to define a profile that you prefer to accept.

3. When you finish, right-click the forecast graph and then select Done.
OFM discards the historical data points and fits a line through your data points.

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

Toggling Between Working Points


1. Assuming you are following each of the procedures in this tutorial in sequence, you must reset the
data to explore the next option. On the Format tab, in the Edit group, select Limit > Reset.

2. On the Format tab, in the Display group, select Toggle Working Points.
OFM displays the cursor as a small eraser.

3. On the graph, press the left mouse button and use the mouse to erase data points.

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

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

Controlling Fit Parameters


You also can control how OFM performs the fit process.

1. On the Property pane, in the History Match section, set Fit Type to Semilog.
This causes a new fit, and new results. The option is provided here to explore whether a semilog plot
may suggest a better straight line for fitting purposes.

2. You can override the least squares regression calculation by placing the fit line where you believe it
portrays a better representation (that is, by using your engineering judgment instead of statistics).
To override the calculation, drag the fit (dark green) line upwards. Drag the blue dots that anchor the
right end of the fit line to a new location.
On the Results legend, the values change. On the Property pane, under History Match, the
Method changed to Manual.

85 of 262
User Guides, Tutorials, and Examples

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

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

Setting Up the Forecast


You choose all forecast settings for ratio forecasts on the Property pane.

1. In the OFM Forecast section, set Start WCUT Option to From Fit.

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

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

Saving the Forecast


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

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

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

86 of 262
User Guides, Tutorials, and Examples

Tutorial: Pressure/Z-factor Analysis


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

n A determination of whether the entities are in pressure communication

n An estimate of remaining reserves for the reservoir

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

The method requires two variables: (Cumulative) gas production; and a value for pressure (P) divided by
the gas deviation factor (Z).

In this tutorial, you will:

1. Open the demo project for P/Z analysis: The Duson Gas Field demo project is already configured for
P/Z analysis.

2. Set P/Z forecast parameters: For this project, three of the four completions contain pressure data.
Filter out the other completion.

To build a meaningful forecast, it is important to get a representative fit through historical data. To
do that, you may constrain the match (or, fit) to occur only through selected data points. There
are several ways to do that, and you can use the different ways in any combination.

3. Set lower and upper limits

4. Set the limit as a range: Assuming you have followed the lower-limits steps, you now can define a
more detailed acceptable range of data points.

The other forecasting tutorials show how to select a variable. The P/Z plot is a specialized group
plot, and so the variable is evaluated for the group. Therefore, we do not advise using a variable for
P/Z analysis.

5. Digitize points: This option may be valuable if the real data is sparse, noisy, or not trustworthy.

The other forecasting tutorials show how to toggle between working points. This is not available for
P/Z analysis.

6. Control fit parameters: In addition to selecting data points for analysis, you also can control how OFM
performs the fit process. You can override the least squares regression calculation by placing the fit
line where you believe it portrays a better representation (that is, by using your engineering
judgment instead of statistics).

7. Set up the forecast: You choose forecast settings for P/Z forecasts on the Property pane.

8. Save the forecast

87 of 262
User Guides, Tutorials, and Examples

Opening the Demo Project for P/Z Analysis


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

Setting Up P/Z Forecast Parameters


For this project, three of the four completions contain pressure data. Filter out the other completion.

1. On the Filter pane, click Filter by Completion ( ).

The Filter by Completion window opens.

2. Select the DAIGLE_1:SU_V completion and then click Invert.


OFM selects all completions except DAIGLE_1:SU_V.

3. Click OK.
OFM removes the DAIGLE_1:SU_V completion from the list of selected completions.

4. Group the remaining three completions: ClickGroup All Filtered Wells ( ).

5. On the Home tab, in the Launch analysis group, click Forecast.


The forecast graph for the group of completions displays.

6. On the Format tab, in the Edit group, click Scenario.


The Current Scenario window opens.

7. Set the Phase to P/Z.

8. Set the Time (Date) to Date.

9. Set the Cum. Gas to Gas.Cum.

10. Set P/Z to gas.Pz.

11. Click OK.


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

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

Setting Lower and Upper Limits


1. To set a lower limit, on the Format tab, in the Edit group, select Limit > Lower. To set an upper
limit, select Limit > Upper.

2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which
you will not accept any data points in your analysis.

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

88 of 262
User Guides, Tutorials, and Examples

3. When complete, right-click and select Done.


OFM recalculates the best least-squares regression fit through the acceptable data points.

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

Setting the Limit as a Range


Assuming you have followed the lower-limits steps, you now can define a more detailed acceptable range of
data points.

1. On the Format tab, in the Edit group, select Limit > Range.

2. Select Set X axis.

3. In the X Minimum field, enter 12000.

4. In the X Maximum field, enter 16000.

5. Click OK.
OFM fits the line though only data points in which the cumulative gas for the group is greater than
12 Bcf.

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

89 of 262
User Guides, Tutorials, and Examples

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

1. On the Format tab, in the Edit group, click Digitize Points.

2. Press Ctrl and click to add your own, independent data points on the graph.
The data points display as magenta triangles.

3. When you finish, right-click and select Done.


OFM discards the historical data points and fits a line through your data points.

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

Controlling Fit Parameters


In addition to selecting data points for analysis, you also can control how OFM performs the fit process. You
can override the least squares regression calculation by placing the fit line where you believe it portrays a
better representation (that is, by using your engineering judgment instead of statistics).

1. Drag the fit (dark green) line upwards. Drag the blue point on the right end of the fit line to a new
location.
The Results legend values change. On the Property pane, in the History Match section, the
Method changed to Manual.

2. Because the Method is Manual, OFM may no longer reflect changes (like removing more data
points) until you change this setting to Auto: On the Property pane, under History Match, change
the Method to Auto.
By default, OFM back-calculates the original value of P/Z (that is, at a value of cumulative gas equal
to zero). However, this initial value is often already known, as the most likely time when pressure
data will have been abundant is before first production.

3. To override the OFM default, on the Property pane, in the History Match section, set the Initial
P/Z Option to Value.

4. Change the Initial P/Z value to 1400.


The fit line passes through the new value (1400)on the Y axis. Because of this requirement, the fit
line no longer represents a true fit through the data. However, the slope of the line is held the same.

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

Setting up the Forecast


You choose forecast settings for P/Z forecasts on the Property pane.

1. Under OFM Forecast, set the End P/Z Option to Value.

2. Set the End P/Z to Value, and enter 10 for the value.
The Reserves and EUR change, but the OGIP does not change. The value set is the abandonment

90 of 262
User Guides, Tutorials, and Examples

limit.

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

Saving the Forecast


1. To commit the results of the working forecast to the database, on the Format tab, in the Utilities
group, click Save Analysis.
Because you did the analysis on an arbitrary group of completions, OFM asks you to name the group.

2. In the Edit Group Name window, type Breaux, and click OK.

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

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

91 of 262
User Guides, Tutorials, and Examples

Tutorial: Flow After Flow Test


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

n A single formation average pressure: Pavg (Pws)

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

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

In this tutorial, you will:

1. Open the workspace

2. Enter test data

3. Create a forecast analysis

4. Set parameters for the analysis

5. Evaluate analysis results

Opening the Workspace


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

Entering Test Data


1. On the base map, select the Flow-After-Flow well.

2. On the Setup tab, in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

3. Select the DailyProd table and click OK. The table data displays on a separate tab within the OFM
main window.

The data used in this example was taken from well testing. OFM stores the data in a daily table.
You may use a sporadic table if you have more than one data point in a day.

Creating a Forecast Analysis


1. On the Home tab, in the Launch analysis group, click Forecast.
The forecast graph displays.

2. On the Format tab, in the Edit group, click Scenario.


The Current Scenario window opens.

92 of 262
User Guides, Tutorials, and Examples

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

Setting Parameters for the Analysis


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

Evaluating Analysis Results


1. View the Historical Fit Report: On the Format tab, in the Display group, select Historical Fit
Report.
The results show that n=0.829 and C=3.443. The absolute open flow potential (AOF) is 74,215.242
Mcf/d. By default, the

Note: Asterisks display to the right of selected points.

2. You may also calculate an AOF by entering a different

93 of 262
User Guides, Tutorials, and Examples

Tutorial: Well Deliverability Analysis


You only use well deliverability analysis (WDA) for gas wells. In principle, a log-log plot of data points
(representing the stabilized flow rate and flowing pressure for a series of production well tests) should form
a straight line. This form of analysis is also called conventional backpressure analysis.

Two of the primary results of this analysis are C (termed the stabilized performance coefficient and
equivalent to the y axis intercept on the matched plot) and n (termed the turbulence factor and equivalent
to the slope of the matched history line). Data required for this analysis are:

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

n A stabilized flow rate and flowing pressure for each test

Typically four or more tests are conducted to establish a trend in the plot.

In this tutorial, you will:

1. Open the workspace

2. View the test data: Although the data used in this example is stored in a daily table, you may use a
sporadic table if you have more than one data point in a day. The sequence of the test data is
important although time is not directly used in the calculations of WDA analyses.

3. Set up WDA forecast parameters: To build a meaningful forecast, it is important to get a


representative fit through historical data. To do that, you may constrain the match (or, fit) to occur
only through selected data points. There are several ways to do that, and you can use the different
ways in any combination.

4. Set lower and upper limits: The other forecasting tutorials show how to set the limit as a range and
how to select the variable. These choices are not available for WDA.

4. Digitize points

5. Toggle working points

6. Control fit parameters: In addition to selecting data points for analysis, you can also control how OFM
performs the fit process.

7. Save the forecast

Opening the Workspace


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

94 of 262
User Guides, Tutorials, and Examples

Viewing the Test Data


Although the data used in this example is stored in a daily table, you may use a sporadic table if you have
more than one data point in a day. The sequence of the test data is important although time is not directly
used in the calculations of WDA analyses.

1. Select the ModifiedIsochronal completion.

2. On the Setup tab, in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

3. Select the DailyProd table and then click OK.


The table data displays on a separate tab within the OFM main window.

Setting Up WDA Forecast Parameters


1. On the Home tab, in the Launch analysis group, click Forecast.
Data displays in the Forecast pane in the form of a log-log plot of (Pws2 Pwf2) against gas rate.
Each data point (red dot) represents one of the stabilized production well tests. OFM produces a
straight line fit. The demo WDA project is already configured for analysis.

2. On the Format tab, in the Edit group, click Scenario.


The Current Scenario window opens.

3. In the Variable Association section, the default Phase/Analysis is Well Deliverability


(WDA). OFM seeks data for four plotting variables:

n Time (Date)

n Rate (the stabilized gas flow rate per test)

n Flowing Pressure (the stabilized flowing pressure per test)

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

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

Setting Lower and Upper Limits


1. To set a lower limit, on the Format tab, in the Edit group, select Limits > Lower. To set an upper
limit, select Limit > Upper.

2. Use the graphic below as a guide. For a lower limit, click a series of points to define a line below which
you will not accept any data points in your analysis.

95 of 262
User Guides, Tutorials, and Examples

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

3. When complete, right-click and select Done.


OFM recalculates the best least-squares regression fit through the acceptable data points.

Digitizing Points
1. On the Format tab, in the Edit group, click Digitize Points.

2. Press Ctrl and click to add your own, independent data points on the graph.
The data points display as magenta triangles.

3. When you finish, right-click and select Done.


OFM discards the historical data points and fits a line through your data points.

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

Toggling Working Points


1. Assuming you are following each of these options in sequence, you must reset the data to explore
this next option. On the Format tab, in the Edit group, select Limit > Reset.

2. In the Display group, select Toggle Working Points.


OFM displays the cursor as a small eraser.

3. On the graph, press the left mouse button down and use the mouse to erase data points.

4. When you are finish erasing data points, clear the Toggle Working Points check box.

96 of 262
User Guides, Tutorials, and Examples

OFM adjusts the fit to reflect the change.

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

Controlling Fit Parameters


In addition to selecting data points for analysis, you can also control how OFM performs the fit process.

1. If the legend is not visible, on the Format tab, in the Display group, select Legend.

2. On the Property pane, in the History Match section, set the Pws Option to Value.

3. Set Pws to 1900.


This action is the same as choosing the single value option for shut-in pressure on the Current
Scenario window, and then overriding the value for current shut-in pressure.

4. OFM calculates Absolute Open Flow Potential (AOF) from the fit, assuming a value for Pws is
equivalent to the maximum value found in the test data set (the default). OFM takes a value of Pwf
from the Reference Pressure, Pref setting on the Property pane. For this completion, the Pws
value being used is the default value, which is a historical maximum of 1948 psi. To override the
default Pws value: On the Property pane, in the History Match section, set the Pws (AOF)
Option to Value and then enter 1900 for the value.
On the Results legend, the AOF calculation changes.

Saving the Forecast


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

97 of 262
User Guides, Tutorials, and Examples

Tutorial: Wellbore Diagram


You can create wellbore diagrams from the information stored or calculated in your project data. In this
tutorial, you will:

1. Find a specific well

After you find the correct well, creating the wellbore diagram involves multiple steps:

2. Edit the casing

3. Edit the views

4. Edit the tubing

5. Change the equipment

6. Edit the hole section

7. Change the completion

Finding a Specific Well


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

2. On the Home tab, in the Launch analysis group, click Well Diagram.
A blank wellbore diagram opens.

3. On the Filter pane,click Clear Filter 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 click OK.

6. On the Format tab, in the Edit group, click Wellbore Diagram.


The Edit WBD window opens.

Editing the Casing


1. On the Casing tab, in the Type field, select Casing.

2. In the table, make the following selections on the first row of the columns. If you press TAB after
each entry, you move to the next column.

n Top: 0.00

n Bottom: 1000.00

n OD: 13 3/8

98 of 262
User Guides, Tutorials, and Examples

n Weight: 72.00

n Comment: Full returns of cement after running csg

3. Click Apply.

Editing the Views


1. On the Views tab, in the View field select 1.

2. In column 1, enter the following:

n Top: 0.00

n Bottom: 10000.00

n Fraction: 1.0

3. Select Show Depth Track to display the depth track scale inside the text block.

4. Select Freeze View.

5. Click Apply and then click Close.

6. On the Insert tab, click Casing Strings.

7. On the diagram, drag a box to show where you want the casing string data to display.

Note: You can change the information in the text box by double-clicking it to open the Edit Casing
window.

Editing the Tubing


1. On the Format tab, in the Edit group, click Wellbore Diagram.

2. On the Tubing tab, enter the following information on the first row of the columns in the table:

n Top: 0.00

n Bottom: 7500.00

n OD: 2.375

n Grade: N-80

n Thread: Upset

n Comments: Internally test to 1500 psi

3. Click Apply.

99 of 262
User Guides, Tutorials, and Examples

Changing the Equipment


1. On the Equipment tab, in the String field, select Tubing 1.

2. Enter the following information on the first row of the columns in the table:

n Top:7500.00

n Bottom: 7510.00

n Selection: Packer

n Type: Retry

3. Click Apply.

Editing the Hole Section


1. On the Format tab, in the Edit group, click Wellbore Diagram.

2. On the Hole Sections tab, enter the following information in Row 1 of the table:

n Top: 0.00

n Bottom: 1050.00

n Size: 14.50

3. In Row 2, enter the following information:

n Top: 000.00

n Bottom: 3850.00

n Size: 10.75

4. In Row 3, enter the following information:

n Top: 3850.00

n Bottom: 9000.00

n Size: 8.50

5. Click Apply.

Changing the Completion


1. On the Completions tab, in the String field, select Casing 1.

2. Enter the following information in the first row of the columns in the table:

n Top: 7750.00

n Bottom: 7800.00

100 of 262
User Guides, Tutorials, and Examples

n Selection: Perfs

n Type: Open

n Comments: perf w/ 8 SPF - 0

3. Click Apply and then Close.

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

101 of 262
User Guides, Tutorials, and Examples

Overview of the Examples


The tutorials and the examples in this help system help you understand the different OFM features within
workflows. You can use the sample workspaces in your OFM installation folder to work through the
tutorials and examples. Below is a brief description of each example.

Note: These are simply examples of OFM usage. They are not intended to be definitive methods or
techniques for the solution or analysis of any problem.

Creating Plots for Waterflooding Surveillance


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

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

n Creating simple calculated variables

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

n Using the @CumInput system function

Adding New Well Symbols


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

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

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

n Associating new well symbols on the Association window

Calculating Pressure from P/Z and Production Data


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

n Adding data to a table with the Data Grid

n Creating user functions

n Creating calculated variables

102 of 262
User Guides, Tutorials, and Examples

n Setting plot, report, and unit attributes for calculated variables

n Creating plots with multiple graphs

n Using the @Fit system function

Creating a Formation Damage Indicator


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

n Creating grid maps

n Saving grid (.grd) files to the registry

n Using the Calculate Grid feature

Creating a Water Breakthrough Diagnostic (Chan) Plot


In this example, you create a Chan plot, which is a log-log plot of the time derivative of WOR versus time.
This example focuses on:

n Creating calculated variables

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

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

Creating a Hall Plot


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

n Creating calculated variables

n Creating a simple plot

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

Creating an After-Before-Compare (ABC) Plot


In this example, you create an ABC plot to compare oil and water between two dates. This example focuses
on:

n Creating reports to quickly confirm calculated variables

n Renaming analyses on the Analysis pane

n Creating calculated variables

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

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

103 of 262
User Guides, Tutorials, and Examples

Displaying Formation or Reservoir Thickness and Structure


In this example, you create and display an effective isopach map. This example focuses on:

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

n Creating contour maps and changing its properties

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

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

Estimating Original Oil in Place (OOIP) Using Grid Arithmetic


In this example, you use grid arithmetic to estimate OOIP. This example focuses on:

n Creating and using an OFM Query filter

n Adding map annotations

n Creating grid maps

n Creating grid areas

n Adding grid (.grd) files to the registry

n Performing grid arithmetic

Calculating Average Production for N Months


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

n Creating user functions

n Creating reports that display the results of a user function

n Using the @RecCount and @ARec system functions

Finding the Best Three Months of Production


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

n Creating calculated variables

n Creating reports that display the results of calculated variables

n Using the @TMax and @CFirst system functions

104 of 262
User Guides, Tutorials, and Examples

Finding the Monthly Average Value for Sporadic Data


In this example, you create a report that shows the monthly average value for test data. This example
focuses on:

n Creating reports

n Changing report properties to break at every month and show subtotals

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

Controlling Bubble Map Display Using Data Ranges


In this example, you create a bubble map that displays water cut development in discreet ranges. Each
range has a specific color. This example focuses on:

n Creating calculated variables

n Creating bubble maps and then changing the bubble properties

n Animating maps

n Using the @If and @Null system functions

Using .Las Log Data


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

n Understanding the .las file contents

n Using the LAS to OFM tool

n Loading log and definition files

n Creating single well log displays

Fitting a Polynomial Curve Through Plot Data and Displaying Its


Equation
In this example, you create a variable that curve fits production data. Then you display it on a graph and
post the equation of the line as a label. This example focuses on:

n Creating simple plots and adding headers to them

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

Estimating and Displaying Drainage Radius


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

105 of 262
User Guides, Tutorials, and Examples

bubbles onto a grid map. This example focuses on:

n Changing the map scale

n Creating calculated variables

n Creating bubble maps and changing the plot size and color scale

n Adding map annotations

n Overlaying bubbles from a bubble map onto a grid map

n Using the @Sqrt system function

Adding a Shapefile for California's Geothermal Wells


In this example, you add a shapefile to the GIS map to show geothermal wells in California. This example
focuses on:

n Adding a shapefile

n Changing the transparency and symbol color

Adding a Shapefile for the Region Boundaries of US Oil/Gas


Assessment
In this example, you add a shapefile to the GIS map to show the region boundaries for US
national oil and gas assessment. This example focuses on:

n Adding a shapefile

n Using map tips

n Changing the symbol color

n Changing the labels

Connecting to an ArcGIS Map to Add U.S. Topological Features


In this example, you connect the GIS map to an ArcGIS map to add US land cover imagery and detailed
topological features. This example focuses on:

n Making an ArcGIS connection

n Reordering layers on the GIS map

Connecting to an ArcGIS Map to Add Streets and Railroads


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

106 of 262
User Guides, Tutorials, and Examples

n Making an ArcGIS connection

n Changing the transparency

107 of 262
User Guides, Tutorials, and Examples

Example: Adding New Well Symbols


In this example, you will:

1. Become familiar with the well symbols, and the files that OFM uses to draw them.

2. Create new well symbols and save the well symbols as an annotation file.

3. Make the associations necessary to use the well symbols.

Reviewing the Files


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

2. Review the current 94 well symbols available in OFM:

a. On the Format tab, in the Edit group, click Symbols.


The Well Symbols window opens.

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

1 92

c. Click OK to close the window.

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

a. The annotation files are in the OFM installation folder, in the Symbols sub-folder. In the
Symbols folder, open the 1.ano file in Notepad.
This is the file for the first well symbol, which is a simple circle. OFM reads the draw commands
to make the circle.

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

108 of 262
User Guides, Tutorials, and Examples

In this case, the ARC command is used, which draws a circular arc:

ARC 5.000000 5.000000 1.000000 0 360

The first two values after the command (5.000000 and 5.000000) identify the center. The
next value (1.000000) is the radius in map units. After that are the starting (0) and ending
(360) points in degrees. OFM draws a full circle (360 degrees), with the center at 5,5 and a
radius of 1.

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

LI fills polygons defined after the LI command.

M moves the pen, but does not draw a point.

D draws a line segment.

LW defines a line width.

L draws a line.

109 of 262
User Guides, Tutorials, and Examples

c. Close the 92.ano file.

d. Open the WorkspaceDefaults.xml file. This file is language-specific. Look at the one for the
language you use in OFM:

English: The file is in the main installation folder.

Russian: The file is in the ru sub-folder.

Spanish: The file is in the es sub-folder.

e. Note the structure of the file:

<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 the WorkspaceDefaults.xml file.

4. Close the Demo workspace and OFM.

Creating New Well Symbols


These are the new well symbols you will create:

95 96

1. Create the first new well symbol (symbol 95):

a. Open a new file in Notepad.

b. Like well symbol 1, the new well symbol has a circle. Use the ARC command to draw a circle. On
the first line, type this: ARC 5.000000 5.000000 1.000000 0 360

c. Now draw the diagonal line. Line widths are defined before the line command, with the LW
command. The standard, default width is 1. On the second line, type this: LW 1

110 of 262
User Guides, Tutorials, and Examples

d. The line goes from one point to another. The first point (x1,y1) is (3.9, 3.9). The second point
(x2,y2) is (6.8, 6.8). On the third line, type this: L 3.9 3.9 6.8 6.8

e. Save the file with the other annotation files (in the OFM installation folder, in the Symbols 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. A
solid fill is identified as 1. On the first line, type this: LI 1

c. The command to draw a box is B. After the command, define the lower-left corner (x1,y1) which
is (4, 3.7). Then identify the upper-right corner (x2,y2) which is (6, 5.3). On the second line,
type this: B 4.000000 3.700000 6.000000 5.300000

d. Save the file with the other annotation files, with this name: 96.ano

3. Update the workspace defaults file:

a. Open the WorkspaceDefaults.xml file in Notepad or an XML editor.

b. On the line tagged <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 Producer
symbol.

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

111 of 262
User Guides, Tutorials, and Examples

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

e. Save and close the file.

Making the New Associations


1. Open the Demo workspace in OFM.

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

3. On the General tab, in the Well Type - Table field, reselect Category.WellType so that OFM will
display options for the well symbol file to use.

112 of 262
User Guides, Tutorials, and Examples

4. Click OK.
The Well Symbol File window opens. The selected option is Default.

5. Click OK.
The base map marks oil and gas producers with the new symbols.

6. On the Format tab, in the Edit group, click Symbols.

7. In the image preview box, scroll to the bottom to view the last two symbols. They are the symbols
you created.

8. Click OK to close the window.

113 of 262
User Guides, Tutorials, and Examples

Example: Calculating Pressure from P/Z and


Production Data
This example shows how to use user functions in OFM. Among other things, you can use user functions to
execute iterative calculations. In this example, you execute iterative calculations to create a continuous
stream of pressure data, using a combination of sporadic pressures, production data, and a P/Z line. To do
this, you will:

1. Add sporadic pressure data to the monthly production table.

2. Create a user function to calculate the pressure that corresponds to the P/Z line at any given time.

3. Create two calculated variables:

n Fitted P/Z value

n Calculated pressure from a fitted P/Z curve

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

Adding Sporadic Pressure Data


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

2. In this workspace pressure data is stored in the MonthlyProd table. The table has a field for pressure
data, but does not have data. Add pressure data:

a. On the Setup tab, in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

b. Select the MonthlyProd table and then click OK.

c. On the Navigation pane, select the Blue_1:Ge_6 completion.

d. In the Pressure column, add the following pressure data:

For this date... Enter this pressure...


12/1/1999 5000
1/1/2000 4789
2/1/2000 4234
3/1/2000 4123
4/1/2000 3900
5/1/2000 3876
6/1/2000 3768

e. Close the data grid to save your entries.

114 of 262
User Guides, Tutorials, and Examples

Creating a User Function to Calculate the Pressure


Corresponding to Any Point on a P/Z Line
1. On the Setup tab, in the Variable Managers group, click User Functions.
The User Functions window opens.

2. In the top field, enter the name of your new user function: Pcalc

3. Click Add.
The Edit User Function window opens. The name of the user function displays in the text field at
the top of the window.

4. This user function will take one input, which is a parameter that represents a P/Z value. It also will
create five temporary variables for the calculation. So, the first lines are this:

Pcalc(PZ)
num Zold, Znew, Pnew, DeltaZ, loops;

5. You then set the initial values. The next two lines are:

DeltaZ=1;
Zold=1;
loops=0;

6. The calculation has a loop. On the next lines, set the exit criteria for the loop:

while(DeltaZ > 0.001 & loops < 50)

7. At the end of one loop pass, a variable increments by 1. The next lines are:

{
loops=loops+1;

8. Inside the loop, the following takes place:

a. Pressure (P) is calculated at a Z value of 1.

b. The Z value is re-evaluated at this pressure.

c. The new Z value is used to re-calculate P (in step a).

d. These steps are repeated until the re-evaluated value of Z has not changed the value of Z by
more than 0.001. In other words, the function has converged, and it outputs its result, which is
the current value of P.

To do this, the next lines of the user function are:

Pnew=PZ*Zold;

Znew=@PvtZ(Pnew);

DeltaZ = @abs(Zold-Znew);

115 of 262
User Guides, Tutorials, and Examples

Zold=Znew;
}

Pcalc= Pnew;

9. Double-check your user function. It should be:

Pcalc(PZ)

num Zold, Znew, Pnew, DeltaZ, loops;

DeltaZ=1;

Zold=1;

loops=0;

while(DeltaZ > 0.001 & loops < 50)

loops=loops+1;

Pnew=PZ*Zold;

Znew=@PVTZ(Pnew);

DeltaZ = @abs(Zold-Znew);

Zold=Znew;

Pcalc= Pnew;

10. Click OK.

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

Finding the P/Z Value


1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens with a list of all calculated variables.

2. Click Add Calculated Variable.

The calculated variable will use the @Fit system function, which fits a polynomial of n order
through the data. When you use this system function, you identify:

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

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

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

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

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

116 of 262
User Guides, Tutorials, and Examples

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

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

4. Click OK.
The new variable displays on the list of variables. By default, OFM names it NewItem.

5. Type this new name for the calculated variable and then press Enter: Fit.PZ

6. Set plot attributes for the new calculated variable:

a. At the top of the window, click Define to hide the definition columns, and click Plot to show the
plot attribute columns.

b. On the row for the new Fit.PZ calculated variable, for Curve Name select Fit P/Z.

7. Set report attributes for the new calculated variable:

a. At the top of the window, click Plot to hide the plot attribute columns and click Report to show
the report columns.

b. On the row for Fit.PZ, make these selections:

Report Heading 1: Fitted

Report Heading 2: Pressure

Report Heading 3: from P/Z

8. Set unit attributes for the new calculated variable:

a. At the top of the window, click Report to hide those columns and click Units to show the units
columns.

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

c. You need to use this calculated variable in the next calculated variable you will create. It is not
available until you save your changes. Click OK to save your changes and close the Variable
Editor.

Calculating the Pressure from a Fitted P/Z Curve


1. Reopen the Variable Editor: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

3. The calculated variable will use the user function you created with the Fit.Pz calculated variable you
created. Double-click the items in the User Functions and Project Variables lists to add this
equation to the text box at the top of the window: #PCalc(FIT.PZ)

4. Click OK.

117 of 262
User Guides, Tutorials, and Examples

5. Type this for the name of the calculated variable and then press Enter: Fit.Press_PZ

6. Set plot attributes for the new calculated variable:

a. Click Define to hide the definition columns and click Plot to show the plot attribute columns.

b. On the row for Fit.Press_PZ, make these selections:

Curve Name: Fitted Pressure from P/Z

Curve Line Color: Red

7. Click OK to save the calculated variable and close the window.

Comparing the Reservoir Pressure to the Fitted Pressure from


the Fitted P/Z Curve
1. On the Navigation pane, select the BLUE_1:Ge_6 completion.

2. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens.

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

4. Make selections for the first graph:

a. In the Graph section, for the Current Graph select Graph 1.

b. For the X-Axis Variable, select Gas.Cum.

c. In the curve section, select the Fit.PZ variable, Current category, and BLUE_1:Ge_6 name.

d. Click Add Curve.

e. For the second curve, select the PZ variable, Current category, and BLUE_1:Ge_6 name.

5. Make selections for the second graph:

a. In the Graph section, change the Current Graph to Graph 2.

b. For the X-Axis Variable, select Date.

c. In the curve section, select the Fit.Press_PZ variable, the Current category, and the BLUE_
1:Ge_6 name.

d. Click Add Curve.

e. For the second curve, select the Monthlyprod.Pressure variable, the Current category, and
the BLUE_1:Ge_6 name.

f. Click OK.

6. Change the scale type for the top graph:

118 of 262
User Guides, Tutorials, and Examples

a. On the top graph, click the X-axis.

b. On the Properties pane, under Axis, change the Scale Type to Linear.

119 of 262
User Guides, Tutorials, and Examples

Example: Creating a Formation Damage


Indicator
In this example, you will create a grid calculation to indicate relative formation damage. The parameter
contrasts actual production with a simple indicator of productive capacity. You will:

1. Open the sample workspace and review the existing calculated variable for the calculation.

2. Create a grid map and save to the registry.

3. Estimate the formation damage parameter.

Reviewing the Existing Calculated Variable


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

2. You will include monthly liquid production in your grid map. This is already included as a calculated
variable in the workspace. Confirm the calculated variable:

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

b. Double-click the Name column to sort the list of calculated variables alphabetically by name.

c. View the equation for Liq.Monthly. It is Prd.Oil + Prd.Water. This will give you the monthly liquid
production.

d. Click OK to close the Variable Editor.

Creating a Grid Map and Saving to the Registry


1. On the Home tab, in the Launch analysis group, click Grid.

2. Double-click the following Project variables to move them to the Selected variables list:

n Resprop.Net_pay

n Resprop.Perm

n Liq.Monthly

3. Click Finish.

4. Save net pay to the registry:

a. On the Format tab, in the Utilities group, click Save Analysis > Save As.

b. Save the file as NetPay.grd.


The Save Grid File window opens.

c. In the Name and Description fields, type NetPay and then click OK.

120 of 262
User Guides, Tutorials, and Examples

5. Save permeability to the registry:

a. On the Properties pane, under Variable Properties, change the Variable to Resprop.Perm.

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

c. Save the file as Permeability.grd.


The Save Grid File window opens.

d. In the Name and Description fields, type Permeability and then click OK.

6. Save monthly liquid production to the registry:

a. On the Properties pane, under Variable Properties, change the Variable to Liq.Monthly.

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

c. Save the file as LiquidMonthly.grd.


The Save Grid File window opens.

d. In the Name and Description fields, type LiquidMonthly and then click OK.

Estimating the Formation Damage Parameter


1. On the Format tab, in the File Grid Utilities group, click Calculate.
The Calculate Grid window opens.

2. Click New.

3. In the Description and Name fields, enter Formation Damage.

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

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

6. Click OK.

7. On the Calculate Grid window, click OK.


The formation damage grid map displays.

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

121 of 262
User Guides, Tutorials, and Examples

Example: Creating a Water Breakthrough


Diagnostic (Chan) Plot
The Chan plot is a useful tool for diagnosing causes of water production. In this example, you will:

1. Create five calculated variables needed for the plot:

n Water-oil ratio (WOR)

n WOR derivative

n Number of elapsed days

n Fitting the WOR derivative

n Fitting the WOR

2. Create the Chan plot

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

Water-Oil Ratio (WOR)


1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens, with the list of variables filtered to show only calculated variables.

2. Click Add Calculated Variable.

For this calculated variable, you want to evaluate oil production. The calculated variable uses two
system functions:

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

n The @Null system function returns a null value.

3. Double-click the items in the System Functions and Project Variables lists to add this equation
to the text box at the top of the window: @if(Prd.Oil>0,Prd.Water/Prd.Oil,@null())

4. Click OK.
The Variable Editor lists the new calculated variable. By default the name is NewItem.

5. Type the name of the calculated variable and then press Enter: WOR

122 of 262
User Guides, Tutorials, and Examples

WOR Derivative
1. Click Add Calculated Variable.

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

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

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

2. Enter this equation: @If(Prd.Days>0, @abs(Ratio.WOR-@Previous(Ratio.WOR))/Prd.days,


@Null())

3. Click OK.

4. Type the name of the calculate variable and then press Enter: WOR_Deriv

Number of Elapsed Days


1. Click Add Calculated Variable.

For this calculated variable, you want to find the number of days that have elapsed between first
production and the current date. You will use these two system functions in the calculated
variable:

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

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

2. Enter this equation: @elapseddays(date,@first(date))

3. Click OK.

4. Type the name of the calculate variable and then press Enter: Elapsed_Days

5. You will need to use this calculated variable when you create next one. It is not available until you
save your changes. Click OK to save your changes and close the Variable Editor.

Fitting the WOR Derivative


1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

For this calculated variable, you will fit a 5th order polynomial curve through the data. The X-axis
for the plot should be days, and the Y-axis for the dataset should be the value from this WOR_Deriv
calculated variable. You want to exclude the values from WOR_Deriv if that value is not greater
than zero.

123 of 262
User Guides, Tutorials, and Examples

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

n The X-axis parameter for the dataset (Elapsed_Days)

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

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

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

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

3. Enter this equation: @fit(Elapsed_Days,WOR_deriv,WOR_deriv>0,Elapsed_Days,"deg 5 opt


ylog")

4. Click OK.

5. Type the name of the calculate variable and then press Enter: WOR_Deriv_Fit

Fitting the WOR


1. Click Add Calculated Variable.

This calculated variable is similar to the previous one. You will fit a 5th order polynomial curve
through the data. The X-axis for the plot should be days, and the Y-axis for the dataset should be
the value from this WOR_Fit calculated variable. You want to exclude the values from WOR_Fit if
that value is not greater than zero.

You will use the @Fit system function in this calculated variable.

2. Enter this equation: @fit(Elapsed_Days,ratio.wor,ratio.wor>0,Elapsed_Days,"deg 5 opt


ylog")

3. Click OK.

4. Type the name of the calculate variable and then press Enter: WOR_Fit

5. You are finished creating calculated variables for the Chan plot. Click OK to save your changes and
close the Variable Editor.

Creating the Chan Plot


1. Create a plot with the calculated variables you created:

a. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens.

b. For the X-Axis Variable, select the Elapsed_Days variable you created.

c. For the first curve, select the WOR_Deriv variable and then click Add Curve.

d. For the second curve, select the WOR_Deriv_Fit variable and the click Add Curve.

124 of 262
User Guides, Tutorials, and Examples

e. For the third curve, select the WOR_Fit variable and then click Add Curve.

f. For the fourth curve, select Ratio.WOR.

g. Click OK.

h. On the Navigation pane, select the 1975:B completion.

i. On the Analysis pane, right-click Plot1 and then click Rename.

j. Type Chan and then press Enter.

2. Change the curve and axis properties:

a. On the plot, click the X-axis.

b. On the Properties pane, under Graph Settings, change the Curves field to 1:WOR_Deriv.

c. Under Curve Properties, in the Curve Attributes section, select the following:

Line Color: Red

Line Type: None

Point Type: Filled Circle

Point Size: 10

d. On the Properties pane, under Graph Settings, change the Curves field to 2:WOR_Deriv_
Fit.

e. Under Curve Properties, in the Curve Attributes section, select the following:

Line Color: Red

Line Type: Solid

Line Width: 3

f. On the Properties pane, under Graph Settings, change the Curves field to 3:WOR_Fit.

g. Under Curve Properties, in the Curve Attributes section, select the following:

Line Color: Blue

Line Type: Solid

Line Width: 3

h. On the Properties pane, under Graph Settings, change the Curves field to 4:Ratio.Wor.

i. Under Curve Properties, in the Curve Attributes section, select the following:

Line Color: Blue

Line Type: None

Point Type: Filled Circle

Point Size: 10

125 of 262
User Guides, Tutorials, and Examples

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

3. View the different characteristic trends:

a. On the Navigation pane, select the 3518:B completion. This is an example of normal behavior.

126 of 262
User Guides, Tutorials, and Examples

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

127 of 262
User Guides, Tutorials, and Examples

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

128 of 262
User Guides, Tutorials, and Examples

129 of 262
User Guides, Tutorials, and Examples

Example: Creating a Hall Plot


The Hall plot is a useful diagnostic for water injection wells, assuming a series of steady-state injection
conditions.

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

2. Verify the project has water injection and water injection pressure data:

To create the Hall plot, you need data for volume injected and injection pressure.

a. On the Setup tab, in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

b. Select the WIN (water injection) table and then click OK.

c. On the Filter pane, expand Table Data and then select WIN show that the Navigation pane
only shows the completions with data in the WIN table.
The Navigation pane lists 16 completions.

d. In the WIN table, water injection is in the WINJ field. Water injection pressure is in the WIPRE
field. On the Navigation pane, click through the 16 completions. Note that only these
completions have data in the WINJ and WIPRE fields:

502WI:B

503WI:B

504WI:B

505WI:B

515WI:B

e. On the Navigation pane, under Table Data, expand the WIN table. To the left of each
completion is a check box. For each completion that does not have data in the WINJ and WIPRE
fields, click the check box three times so that a red minus sign displays in the check box. This
removes the completion from the list on the Navigation pane.

f. Close the data grid.

3. Create the calculated variable:

a. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens with a list of all calculated variables.

b. Click Add Calculated Variable.


The Edit Calculated Variable window opens.

You will create the Hall function, which is essentially a pressure integral. You will use three
system functions to do this:

130 of 262
User Guides, Tutorials, and Examples

@RSum calculates a running sum of an expression.

@Step determines if a condition is true. If it is true, it creates a continuous stream of values


where the last value remains constant until it is changed by a new data point (a stair-step). If
it is not true, it returns the last value in the expression when the condition is met.

@Dom finds the number of days for a calendar month. The integral will be performed on a daily
basis.

c. Double-click the items on the Project Variables and System Functions lists to add this
equation to the text box at the top of the window: @RSum(@Step(Win.Wipre,Win.Wipre=0)
*@Dom(date))

d. Click OK.
The new variable displays on the list of variables. By default, OFM names it NewItem.

e. Type this new name for the calculated variable and then press Enter: HallPlot

f. Click OK to save the calculated variable and close the window.

4. Create the plot:

a. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens.

b. For the X-Axis Variable, select Winj.Cum.

c. For the curve, select the HallPlot calculated variable.

d. Click OK.

e. On the Navigation pane, select the different water injection completions to view the Hall plot
for the completion.

131 of 262
User Guides, Tutorials, and Examples

Example: Creating an After-Before-


Compare (ABC) Plot
An After-Before-Compare plot uses well test production data from two dates, and compares performance
between those dates. In this example, you will create calculated variables to display this information. As
part of the process, you will perform intermediate calculations and display the results in a report, so that
you can see their contributions. You then will create a scatter plot.

1. Review the existing calculated variables.

2. Report the monthly oil rate.

3. Find the monthly oil rate from three months previous.

4. Find the change in oil rate.

5. Create a similar calculated variable, to find the change in water rate.

6. Create an ABC scatter plot.

Reviewing Existing Calculated Variables


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

2. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens with a list of all calculated variables.

3. Double-click the Name column to sort the list alphabetically by name.

4. Note the Oil.CalDay calculated variable. The equation shows that it divides monthly oil production by
the number of days in the month. You will use this calculated variable in the analyses and calculated
variables you create in this example.

5. Also note the Water.CalDay calculated variable.

6. Click OK to close the window.

Reporting the Monthly Oil Rate


1. On the Home tab, in the Launch analysis group, click Report.
The Edit Report window opens.

You want to create a report with three columns:

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

n Date: This is the Date project variable.

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

132 of 262
User Guides, Tutorials, and Examples

2. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @Name(), Date, Oil.CalDay

3. Click OK.

4. On the Navigation pane, select the 1975:B completion.

5. Select the last column on the report. On the Properties pane, under Columns, change the
Decimal Places to 2.

6. The report shows oil rates for the 24 months of 1989 and 1990. Note the following dates:

n September 1990: 99.31 bbl/d

n December 1990: 75.43 bbl/d

7. On the Analysis pane, right-click the report and then click Rename.

8. Type this new name and then press Enter: ABC

133 of 262
User Guides, Tutorials, and Examples

Finding the Monthly Oil Rate from Three Months Previous


1. You need a new calculated variable: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

You want to find the oil rate value, but for the date three months previously.

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

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

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

3. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @ValueAt(Oil.CalDay,@AddMonths(Date, -3, 0) )

4. Click OK.
The new variable displays on the list of variables. By default, OFM names it NewItem.

5. Type this new name for the calculated variable and then press Enter: Oil.RatePrevious3

6. Click OK to save the calculated variable and close the window.

7. Return to the ABC report.

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


The Edit Report window opens, and displays the variables you selected for the columns in your
report.

You want to add two columns:

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

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

9. Double-click the items in the System Functions and Project Variables lists to add the variables
needed for the new columns. It should be: @Name( ),Date,Oil.CalDay, @Last(Oil.CalDay,
@Last(1)), Oil.RatePrevious3

10. Click OK.

11. Select the last column on the report. On the Properties pane, under Columns, change the
Decimal Places to 2.

12. For the 1975:B completion, note the row for December 1990:

134 of 262
User Guides, Tutorials, and Examples

n Oil rate on the last day is 75.43

n Oil rate 3 months previously is 99.31

Finding the Change in Oil Rate


1. You need another new calculated variable: On the Setup tab, in the Variable Managers group,
click Calculated Variable Editor.

2. Click Add Calculated Variable.

You want to find the change in the oil rate by dividing the oil rate on the last day (which is @Last
(Oil.CalDay, 1)) by the oil rate three months previously (which is the Oil.RatePrevious3 calculated
variable.

3. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @Last(Oil.CalDay, 1) / Oil.RatePrevious3

4. Click OK.

5. Type this new name for the calculated variable and then press Enter: Oil.RateChange3

6. Click OK to save the calculated variable and close the window.

135 of 262
User Guides, Tutorials, and Examples

7. Return to the ABC report.

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

You want to add a new column to the report, to show the change in the oil rate. This is the
Oil.RateChange3 calculated variable.

9. Double-click the items in the System Functions and Project Variables lists to add the variable
needed for the new column. It should be: @Name( ),Date,Oil.CalDay, @Last(Oil.CalDay, @Last
(1)), Oil.RatePrevious3, Oil.RateChange3

10. Click OK.

11. Select the last column on the report. On the Properties pane, under Columns, change the
Decimal Places to 2.

12. Note that for Completion 1975:B, in December 1990, the oil rate from the last day (75.43) is divided
by the oil rate of the previous three months (99.31) to show a rate change of 0.76.

Creating a Calculated Variable to Show Change in Water Rate


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

2. Click Add Calculated Variable.

You want to create a calculated variable that is similar to Oil.RateChange3, except that it shows
the three-month change in water rate.

136 of 262
User Guides, Tutorials, and Examples

3. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @Last(Water.CalDay, 1) / @ValueAt(Water.CalDay, @AddMonths
(Date, -3, 0) )

4. Click OK.

5. Type this new name for the calculated variable and then press Enter: Water.RateChange3

6. Click OK to save the calculated variable and close the window.

Creating an ABC Scatter Plot


1. Create a new scatter plot:

a. On the Home tab, in the Launch analysis group, click Scatter.


The Create Scatter Plot window opens.

b. On the list of Project variables, double-click the Water.RateChange3 variable to move it to


the Selected variables list. Then double-click the Oil.RateChange3 variable.

c. Click Finish.
The X-axis of the scatter plot shows the ratio of current water to the three-month previous
water rate. The Y-axis shows the corresponding calculation for oil rate.

2. Change the X- and Y-axis properties:

a. On the Properties pane, under Scatter Plot Properties, change the X Variable Minimum
to -1 and the X Variable Maximum to 5.

b. Change the Y Variable Minimum to -1 and the Y Variable Maximum to 5.

3. Add cross hairs at the 1,1 point:

a. On the Format tab, in the Edit group, click Cross Hair Axis.
The Scatter Plot Origin window opens.

b. Make the following selections:

X: 1

Y: 1

Color: Blue

Type: Solid

Width: 5

Clear the two Center check boxes.

Select the Show check box.

137 of 262
User Guides, Tutorials, and Examples

c. Click OK.

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

Interpreting the Scatter Plot


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

138 of 262
User Guides, Tutorials, and Examples

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

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

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

139 of 262
User Guides, Tutorials, and Examples

Example: Creating Plots for Waterflooding


Surveillance
In this example, you create several plots that illustrate the performance of a waterflood. You will:

1. Create a table and field, and then add STOIIP data to it.

2. Create four calculated variables to use in the plots. In OFM, you can explore different methods for
introducing PVT data. In this example, you will assume the properties are constant and so you will
use calculated variables.

n Hydrocarbon pore volume (HCPV)

n Displaceable hydrocarbon pore volume (DHCPV)

n Pore volumes injected (PVI)

n Recovery factor (RF)

3. Create a conformance plot. This plot helps characterize injection behavior by comparing production
volumes to injection volumes.

4. Create two recovery plots:

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

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

5. Create two PVI plots:

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

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

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

Adding Stock Tank Oil Initially in Place (STOIIP) to the


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

2. Add a table for stock tank oil initially in place (STOIIP):

a. On the Setup tab, in the Tables group, click Schema.


The Edit Schema Tables window opens.

140 of 262
User Guides, Tutorials, and Examples

b. On the OFM Representation pane, right-click the Pilot Waterflood BField.mdb home data
source and then click Add.
OFM lists the new table on the OFM Representation pane. By default, OFM names the table
NewItem and you must change the name.

c. Type the new name and then press Enter: STOIIP

d. By default, OFM sets the table to hold monthly data. On the right side of the window, on the
Table tab, change Table Type to Static.

e. OFM asks if you want to keep the DATE key field. Click No.

f. On the Table tab, change Key Type to Pattern.

g. On the Fields tab, in the Add New Field field, enter Volume and then click Add.
The OFM Representation pane shows two fields in the STOIIP table: The Pattern field (which
is a primary key field) and Volume.

h. Click OK to save your changes and close the window.

3. Add data in the STOIIP table:

a. On the Setup tab,in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

b. Select the STOIIP table and then click OK.

c. Enter the following rows of data for the Pattern and Volume columns:

Patter Volum
n e
495 77400
496 88200
497 91800
500 12000
0
506 60000
509 45000

d. Close the data grid to save your entries.

Hydrocarbon Pore Volume (HCPV)


1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens with a list of all calculated variables.

2. Click Add Calculated Variable.


The Edit Calculated Variable window opens.

The HCPV is the STOIIP * Boi (initial oil formation volume factor). For this example, assume that
the Boi is a constant value of 1.2.

141 of 262
User Guides, Tutorials, and Examples

3. Double-click the items in the Project Variables list to add this equation to the text box at the top of
the window: Stoiip.Volume*1.2

4. Click OK.
The new variable displays on the list of variables. By default, OFM names it NewItem.

5. Type this new name for the calculated variable and then press Enter: HCPV

6. You need to use this calculated variable in the next one. It is not available until you save your
changes. Click OK to save your changes and close the Variable Editor.

Displaceable Hydrocarbon Pore Volume (DHCPV)


1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

You now want to create a calculated variable for DHCPV by allowing for residual oil saturation (Sor).
DHCPV is HCPV (1-Sor). For this example, assume that Sor (residual oil saturation) is 0.2.

3. Double-click the items in the Project Variables list to add this equation to the text box at the top of
the window: HCPV*(1-0.2)

4. Click OK.

5. Type this new name for the calculated variable and then press Enter: DHCPV

6. You need to use this calculated variable in the next one. It is not available until you save your
changes. Click OK to save your changes and close the Variable Editor.

Pore Volumes Injected (PVI)


1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

You now use the DHCPV calculated variable to created a calculated variable for PVI. PVI is
cumulative water injection / DHCPV. You can find the cumulative water injection with the
@CumInput system function. This system function returns the running sum of an input variable
which in this example is the water injection (WINJ) data in the water injection volumes (WIN)
table.

3. Double-click the items in the System Functions and Project Variables lists to add this equation
to the text box at the top of the window: @CumInput (Win.Winj)/DHCPV

4. Click OK.

5. Type this new name for the calculated variable and then press Enter: PVI

142 of 262
User Guides, Tutorials, and Examples

Recovery Factor (RF)


1. Click Add Calculated Variable.

Recovery factor is cumulative oil / STOIIP. To find cumulative oil, use the @CumInput system
function again. This time, use it with the oil production data in the PRD table.

2. Double-click the items in the System Functions and Project Variables lists to add this equation
to the text box at the top of the window: @CumInput(Prd.Oil)/Stoiip.Volume

3. Click OK.

4. Type this new name for the calculated variable and then press Enter: RF

5. Click OK to save the calculated variables and close the window.

Creating a Conformance Plot


This plot helps characterize injection behavior by comparing production volumes to injection volumes.

1. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens.

2. For the X-Axis Variable, select Winj.Cum.

3. Click Add Multiple Curves.


The Add Multiple Curves window opens.

4. Make these selections and then click OK:

n Category: regular_five_spot

n Variable: Oil.Cum

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

6. Click OK.

143 of 262
User Guides, Tutorials, and Examples

5. On the Analysis pane, right-click Plot1 and then click Rename.

4. Type Conformance Plot and then press Enter.

You are now ready to enhance the plot.

7. Hide the legend: On the Format tab, in the Display group, clear the Legend check box.

8. On the Properties pane, under Graph settings, change Curve Name to As Labels.

9. Make changes to the X axis:

a. On the plot, click the X axis.

b. On the Properties pane, under Axis, on the Axis Label field type Cumulative Water
Injection.

c. Change the Scale Type to Linear.

10. Make the first curve a thicker red line: On the Properties pane, under Graph settings, on the
Curves field, select 1: Oil.Cum:regular_five_spot:495. Under Curve Properties, change the
Line Color to Red and the Line Width to 3.

11. Make the second curve a thicker blue line: Under Graph settings, on the Curves field, select 2:
Oil.Cum:regular_five_spot:496. Under Curve Properties, change the Line Color to Blue and
the Line Width to 3.

144 of 262
User Guides, Tutorials, and Examples

12. Make the third curve a thicker teal line: Under Graph settings, on the Curves field, select 3:
Oil.Cum:regular_five_spot:497. Under Curve Properties, change the Line Color to Teal and
the Line Width to 3.

13. Make the fourth curve a thicker green line: Under Graph settings, on the Curves field, select 4:
Oil.Cum:regular_five_spot:500. Under Curve Properties, change the Line Color as Green
and change the Line Width to 3.

14. Make the fifth curve a thicker magenta line: Under Graph settings, on the Curves field, select 5:
Oil.Cum:regular_five_spot:506. Under Curve Properties, change the Line Color to Magenta
and the Line Width to 3.

15. Make the sixth curve a thicker brown line: Under Graph settings, on the Curves field, select 6:
Oil.Cum:regular_five_spot:509. Under Curve Properties, change the Line Color to Dark
Brown and the Line Width to 3.

16. On the plot, drag each of the curve names close to the line it defines. For example, drag the line that
defines regular_five_spot_500 near the green line.

If you were to draw a unit slope line on this plot (the dotted line from 0,0 to 500000,50 in the graph
below), that line would show where cumulative oil production equals the cumulative water injected.

145 of 262
User Guides, Tutorials, and Examples

Viewing the Recovery Factor versus PVI


This plot helps you determine how individual patterns compare to the field average, to find the factor
affecting recovery.

1. Make a copy of the conformance plot: On the Analysis pane, right-click Conformance Plot and
then click Save As New Node.
OFM names the copy Copy of Conformance Plot.

2. Right-click Copy of Conformance Plot and then click Rename.

3. Type Recovery Factor versus PVI and then press Enter.

4. On the Analysis pane, double-click Recovery Factor versus PVI to open it.

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

6. Change the X-Axis Variable to PVI.

7. For the curves, change all the Variables to RF. Keep the Category and Name selections the same.

8. Click OK.

The plot loses its formatting when you change the curves. You are ready to improve visibility of the
plot.

9. On the Format tab, in the Display group, select the Legend check box.

10. Change the X-axis scale:

a. On the plot, click the X-axis.

b. On the Properties pane, under Axis, make sure the Scale Type is Linear.

11. As you did for the conformance plot, change the curve color and line width. Make them the same as
you did for the conformance plot:

n 495: Red, line width 3

n 496: Blue, line width 3

n 497: Teal, line width 3

n 500: Green, line width 3

n 506: Magenta, line width 3

n 509: Dark brown, line width 3

146 of 262
User Guides, Tutorials, and Examples

Viewing the Recovery Factor versus Time


With this plot, you can track the overall performance of all patterns on the same plot.

1. This plot is the same as the previous, except the X-axis is Date instead of PVI. Make a copy of the
previous plot: On the Analysis pane, right-click Recovery Factor versus PVI and then click
Save As New Node.

2. Rename the copy Recovery Factor and then open the plot.

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

4. Change the X-Axis Variable to Date.

5. Click OK.

147 of 262
User Guides, Tutorials, and Examples

Viewing the Water Cut versus PVI


This plot shows the development of water cut behavior with water injection.

1. Like the Recovery Factor versus PVI, the X-axis variable for this plot is PVI. The variables for the
curves are different. Make a copy of the plot: On the Analysis pane, right-click Recovery Factor
versus PVI and then click Save As New Node.

2. Rename the copy Water Cut versus PVI and then open the plot.

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

4. For the curves, change all the Variables to Water.Cut. Keep the Category and Name selections
the same.

5. Click OK.

The plot loses its formatting when you change the curves. You are ready to improve visibility of the
plot.

6. On the Format tab, in the Display group, select the Legend check box.

7. As you did for the other plots, change the curve color and line width. Make them the same as you did
before:

148 of 262
User Guides, Tutorials, and Examples

n 495: Red, line width 3

n 496: Blue, line width 3

n 497: Teal, line width 3

n 500: Green, line width 3

n 506: Magenta, line width 3

n 509: Dark brown, line width 3

Viewing PVI versus Time


PVI helps normalize the quantity of water injection and gives you a basis for comparison. In this plot, you
will see the number of pore volumes injected over time.

1. Make a copy of the Recovery Factor versus Time plot, and rename it PVI.

2. Open the plot to change its variables.

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

4. For the curves, change all the Variables to PVI. Keep the Category and Name selections the
same.

5. Click OK.

149 of 262
User Guides, Tutorials, and Examples

The plot loses its formatting when you change the curves. You are ready to improve visibility of the
plot.

6. On the Format tab, in the Display group, select the Legend check box.

7. As you did for the other plots, change the curve color and line width. Make them the same as you did
before:

n 495: Red, line width 3

n 496: Blue, line width 3

n 497: Teal, line width 3

n 500: Green, line width 3

n 506: Magenta, line width 3

n 509: Dark brown, line width 3

Viewing Cumulative Oil Production versus Cumulative Water


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

150 of 262
User Guides, Tutorials, and Examples

2. Open the plot to change its variables.

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

4. Change the X-Axis Variable to Water.Cum.

5. Click OK.

6. On the Format tab, in the Display group, select the Legend check box and then drag the legend to
a good location.

151 of 262
User Guides, Tutorials, and Examples

Example: Displaying Formation or Reservoir


Thickness and Structure
OFM can create effective isopach maps. In this example, you will:

1. Add a new table with depth and height data.

2. Create a contour map showing thickness.

3. Create a grid map showing thickness.

4. Create a contour map showing a pseudo top or bottom of the structure.

5. Display the thickness map on the base map.

Adding a New Table with Depth and Height Data


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

2. You need a table and field to hold thickness data. Create the table:

a. On the Setup tab, in the Tables group, click Schema.


The Edit Schema Tables window opens.

b. Right-click the Demo data source and click Add.

c. Type Iso for the table name and then press Enter.
By default, OFM adds UniqueID and Date as the primary key fields, and the table is defined to
hold monthly data with a Completion key type.

d. On the Table tab, change the Table Type to Static.

e. OFM asks if you want to keep the Date field. Click No.

f. On the Fields tab, in the Add New Field field, enter Depth and then click Add.

g. In the Add New Field field, enter H and then click Add.
The Demo data source now has an Iso table. The primary key field is UniqueID. It has two other
fields: Depth and H.

h. On the OFM Representation pane, select the Depth field.

i. On the Units tab, select ft ==>m.

j. On the OFM Representation pane, select the H field.

k. On the Units tab, select ft ==>m.

l. Click OK to save your changes and close the window.

3. Add data to the new table:

152 of 262
User Guides, Tutorials, and Examples

a. Open Notepad.

b. Paste the following into a new file:

*TableName Iso
*UniqueID *Depth *H
"Blue_12:Li_1C" 6647 0
"Blue_3:Li_1C" 6440 0
"Blue_7:Li_1C" 6440 10
"Green_15:Li_1C" 6500 0
"Green_3:Li_1C" 6500 0
"Green_5:Li_1C" 6441 40
"Orange_16:Li_1C" 6460 10
"Orange_24:Cl_3" 6470 20
"Purple_1:Cl_3" 6494 0
"Red_13:Cl_3" 6495 0
"Red_4:Cl_3" 64980 0

c. Save the file with this name: Iso.dat

d. On the Setup tab, in the Import/Export group, click Import > Data Loader.

e. Double-click the Iso.dat file to move it to the Files to Load section, and then click Load.

Creating a Contour Map Showing Thickness


1. On the Filter pane, expand Table Data and then select the new Iso table to show only the
completions with data in that table.

2. On the Home tab, in the Launch analysis group, click Contour.

3. On the list of Project variables, double-click Iso.H to move it to the Selected variables list.

4. Click Finish.
The contour map displays the thickness.

5. Improve the appearance of the contour map:

a. On the Properties pane, under Properties, in the GRID section make these selections:

Number of Neighbors: 2

Maximum Grid Size: 14

Search Radius: 304801

b. On the Properties pane, under Properties, in the 2D section make these selections:

Show: Yes

Decimal Places: 0

Distance Between Labels: 10

153 of 262
User Guides, Tutorials, and Examples

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

6. On the Analysis pane, right-click the contour map and then click Rename.

7. Type this for the new name and then press Enter: Net Sand Thickness - Contour Map

Creating a Grid Map Showing Thickness


1. On the Analysis pane, right-click the contour map and then click Clone Map As > Grid Map.
OFM creates a new grid map displaying the same variable as the contour map.

2. On the Properties pane, under Variable Properties, change Exclude out of range to Yes.

3. On the Properties pane, under Grids and Limits, change Grid Type to Frame.

154 of 262
User Guides, Tutorials, and Examples

4. On the Analysis pane, right-click the grid map and then click Rename.

5. Type this for the new name and then press Enter: Net Sand Thickness - Grid Map

Creating a Contour Map Showing a Pseudo Top or Bottom of the


Structure
1. On the Analysis pane, right-click Net Sand Thickness - Contour Map and then click Save As
New Node.
OFM makes a copy of the map.

2. On the Analysis pane, right-click the copy and then click Rename.

3. Type this for the new name and then press Enter: Pseudo Structure

4. With the Pseudo Structure map open, on the Format tab, in the Edit group, click Variables.

5. Remove the Iso.H variable from the Selected variables list, and double-click Iso.Depth to add it
to the Selected variables list.

6. Click Finish.

155 of 262
User Guides, Tutorials, and Examples

Displaying the Thickness Map on the Base Map


1. Close the Pseudo Structure map and open the Net Sand Thickness - Contour Map.

2. On the Format tab, in the Utilities group, click Save Analysis > Save As.

3. Change the Save as type to Annotation Files and then save the file with this name:
NetSandThickness.ano

4. View the base map.

5. On the Format tab, in the Display group, click Annotations.


The Map Annotations window opens.

6. Click Add.
The Data Loader opens.

7. Double-click the NetSandThickness.ano file to move it to the Files list, and then click Load.

8. On the Map Annotations window, click OK.


The thickness map you originally created as a contour map displays as an annotation on the base
map.

156 of 262
User Guides, Tutorials, and Examples

Example: Fitting a Polynomial Curve


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

n Create a plot that shows calendar day oil versus elapsed time

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

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

2. You will use three of the calculated variables already in this project. To review them, on the Setup
tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens with a list of calculated variables.

3. Double-click the Name column to sort the list alphabetically by name.

4. Find the Oil.CalDay calculated variable and view the Equation.


The equation is Prd.Oil/@dom(date). This calculated variable divides oil production by the number
of days in the month. The @Dom system function returns the number of days.

5. Find the InitialProdMonth calculated variable and view the Equation.


The equation is @cfirst(date,MonthlyProd.Oil>0|MonthlyProd.Gas>0|MonthlyProd.Water>0).
This calculated variable uses the @CFirst system function to find the first date on which monthly oil,
gas, or water production is greater than zero.

6. Find the MonthsOfProd calculated variable and view the Equation.


The equation is @ElapsedMonths(date, InitialProdMonth). This calculated variable uses the
@ElapsedMonths system function to find the number of months between the current date and the
date of initial oil, gas, or water production.

7. Click OK to close the Variable Editor.

Creating a Plot Showing Calendar Day Oil versus Elapsed Time


1. On the Home tab, in the Launch analysis group, click Plot.
The Edit Plot window opens.

2. For the X-Axis Variable, select MonthsOfProd.

3. For the curve, select the Oil.CalDay calculated variable.

157 of 262
User Guides, Tutorials, and Examples

4. Click OK.

5. On the Navigation pane, select the BLUE_1:He_0 completion.

6. On the plot, click the X-axis. On the Properties pane, under Axis, change the Scale Type to
Linear.

Fitting a Polynomial Curve to Data


1. You will create calculated variables for the fit and its equation. Create the first calculated variable:

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

b. Click Add Calculated Variable.

This calculated variable will use the @Fit system function, which fits a polynomial of n order
through the data. When you use this system function, you identify:

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

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

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

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

158 of 262
User Guides, Tutorials, and Examples

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

c. Double-click the items in the System Functions and Project Variables lists to add this
equation to the text box at the top of the window: @Fit( MonthsOfProd, Oil.CalDay,
Oil.CalDay > 0, MonthsOfProd, "deg 3")

d. Click OK.
The new variable displays on the list of variables. By default, OFM names it NewItem.

e. Type this new name for the calculated variable and then press Enter: Fit.OilCalDay

2. Create the second calculated variable:

a. Click Add Calculated Variable.

This calculated variable will use the @FitEq system function, which returns the equation for
the fitted polynomial. The variable that is fitted is Oil.CalDay, to the order of 3.

This is an example of curve fitting in OFM. There is no physical reason a third-order polynomial
should fit this data, but the example illustrates the principle.

b. Double-click the items in the System Functions and Project Variables lists to add this
equation to the text box at the top of the window: @FitEq( Oil.CalDay, "deg 3")

c. Click OK.

d. Type this new name for the calculated variable and then press Enter: FitEq.OilCalDay

e. Click OK to save the calculated variables and close the window.

3. Add the best-fit curve variable to the plot:

a. With the plot open, on the Format tab, in the Edit group, click Variables.
The Edit Plot window opens.

b. Click Add Curve.

c. For the new curve, select the Fit.OilCalDay calculated variable.

d. Click OK.

159 of 262
User Guides, Tutorials, and Examples

4. Display the equation on the plot:

a. On the Format tab, in the Edit group, click Header.


The Header window opens. You will add both calculated variables to the header, because
FitEq.OilCalDay requires Fit.OilCalDay to do its calculation.

b. Click Add.

c. On the new row, type: Fit.OilCalDay

d. Click Add.

e. On the new row, type: FitEq.OilCalDay

f. Click OK to save and close.

g. To hide the first line of the header, select and right-click it. Change the Font Color to White.

160 of 262
User Guides, Tutorials, and Examples

Example: Estimating OOIP Using Grid


Arithmetic
In this example, you will use grid arithmetic on a grid file to estimate original oil in place (OOIP). The OOIP
equation is:

OOIP = (Area * Net Pay * Porosity * Oil Saturation)/(formation volume factor oil * 5.615)

The grid area that you will create determines the area in the calculation. For this example, you will assume
the formation volume factor is 1.09 rb/stb. A factor of 5.615 converts cubic feet to barrels.

In this example, you will:

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

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

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

n Add grid files to the registry

n Perform the OOIP grid arithmetic

Opening the Workspace and Filtering the Completions


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

2. The workspace has reservoir property data in a table named Resprop. Verify the reservoir property
data:

a. On the Setup tab, in the Tables group, click Data Grid.

b. Select the Resprop table, select the Edit all records check box, and then click OK.

c. Note that the Resprop table has columns for net pay (NET_PAY), porosity (PHI), and oil
saturation (SO).

d. Close the data grid.

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

a. On the Filter pane, right-click Ofm Query and then click Add.
The OFM Query window opens.

b. Click Edit.
The Create Query window opens.

c. Using the project variables for data you noted in the Resprop table, add this query to the text box
at the top: Resprop.Net_pay > 0 & Resprop.Phi > 0 & Resprop.So > 0

161 of 262
User Guides, Tutorials, and Examples

d. Click OK to close the Create Query window, and then OK to close the OFM Query window.
OFM lists the new query with a default name.

e. Type Res Prop Query for the name of your new query and then press Enter.
The map displays 14 completions.

Adding a Map Annotation


This map annotation will help you create a grid area later. It was made of the oil/water contact. Later, you
will consider the area inside the oil/water contact for the calculation.

1. On the Format tab, in the Display group, click Annotations.


The OFM Data Loader opens.

2. Double-click this file, which is in the OFM installation folder: ...Sample Workspaces\Pilot Waterflood
Sample\Text Load Files\Anno\ZEROPAY.ANO
The Files section shows the file ready to load.

3. Click Load.
The Map Annotations window opens.

162 of 262
User Guides, Tutorials, and Examples

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

Creating the Grid Map


1. On the Home tab, in the Launch analysis group, click Grid.
The Create Grid Map window opens.

2. Double-click each of the Project variables from the Resprop table to move them to the Selected
variables box:

n Resprop.Perm

n Resprop.Phi

n Resprop.Net_pay

n Resprop.So

n Resprop.Hcft

n Resprop.Owc

n Resprop.Perf_ft

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

163 of 262
User Guides, Tutorials, and Examples

Adding Grid Files to the Registry


The grid area (.ga) file determines the area in your OOIP calculation. You save grid maps as
grid (.grd) files to the registry so that you can use them for calculations.

1. The map annotation displays as a dotted line around the edges of the grid map. Use the dotted line as
a guide to create the grid area:

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

b. Click around the dotted line to create the grid area. When you are finished, right-click and then
click Done.
The area outside the grid area becomes white.

c. On the Format tab, in the Utilities group, click Save Analysis > Save As.

d. Save the grid (.grd) file with the File name phi and then click Save.
The Save Grid File window opens.

e. Click OK.

164 of 262
User Guides, Tutorials, and Examples

2. Add control points around the oil/water contact to enter zero net pay values, and then save the grid
file to the registry:

a. The grid map is showing porosity. Change it to show net pay: On the Properties pane, under
Variable Properties, change the Variable to Resprop.Net_pay.

b. On the Format tab, in the Control Point Utilities group, click Add.
The Control Point Value window opens. The Value is 0.

c. Net pay is likely to be zero at the edges of a reservoir, so accept the default value. Click OK.

d. Click around the perimeter of the oil-water contact to add the control points. When you are
finished, right-click and then click Done.
The grid map displays the net pay.

e. On the Format tab, in the Utilities group, click Save Analysis > Save As.

f. Name the grid (.grd) file netpay and then click Save.
The Save Grid File window opens.

g. In the Name field, type netpay.

165 of 262
User Guides, Tutorials, and Examples

h. Select the Save Grid Area check box.

i. Select the Save Control Points check box.

j. Click OK.

3. Save an oil saturation grid file to the registry:

a. Change the grid map to show oil saturation: On the Properties pane, under Variable
Properties, change the Variable to Resprop.So.

b. On the Format tab, in the Control Point Utilities group, clear the Use check box.
OFM stops using the control points and the grid map displays without them.

c. On the Format tab, in the Utilities group, click Save Analysis > Save As.

d. Name the grid (.grd) file So and then click Save.


The Save Grid File window opens.

e. In the Name field, type So.

166 of 262
User Guides, Tutorials, and Examples

f. Select the Save Grid Area check box.

g. Click OK.

Performing the OOIP Grid Arithmetic


1. On the Format tab, in the File Grid Utilities group, click Calculate.
The Calculate Grid window opens.

2. If the Equation field is populated with information, click New to create a new calculation.

3. Enter the following information:

n Description: Reservoir OOIP

n Name: OOIP

4. Click Equation.
The Edit Calculated Variable window opens.

Remember that the OOIP equation is:

OOIP = (Area * Net Pay * Porosity * Oil Saturation)/(formation volume factor oil * 5.615)

The grid area you created determines the area in the calculation. You are assuming the formation
volume factor is 1.09 rb/stb. A factor of 5.615 converts cubic feet to barrels.

5. In the text box at the top, enter this calculation: (netpay * phi * So)/(1.09 * 5.615)

6. Click OK.

7. On the Calculate Grid window, click File and then save the file with this name: OOIP

8. On the Calculate Grid window, click OK.


The grid map displays with the calculated grid.

167 of 262
User Guides, Tutorials, and Examples

9. On the Format tab, in the Utilities group, click Open Analysis > Open.

10. Select the ooip.grd file and then click Open.

11. On the Layout tab, select the Statistics Panel check box.

12. On the Statistics panel, note the Volume. This is the calculated OOIP for the grid. It is about 67
MMbbls, depending on your grid area points and control points.

168 of 262
User Guides, Tutorials, and Examples

Example: Calculating Average Production


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

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

Creating the User Function


1. On the Setup tab, in the Variable Managers group, click User Functions.
The User Functions window opens.

2. In the top field, enter the name of your new user function: LastNonNullAvgProd

3. Click Add.
The Edit User Function window opens. The name of the user function displays in the field at the
top of the window.

4. The function will require you to provide a value for n, the number of months. So, on the first line of
the function you specify this input argument. Add this first line and then press Ctrl+Enter to start a
new line:

Lastnonnullavgprod( num Months)

5. The calculation will create several intermediate variables. Define them now:

num LastIndex;

LastIndex = @RecCount( "Monthlyprod" )-1;

num Count;

Count = 0;

num Total;

Total = 0;

6. The main body of the function involves an iterative loop. It begins as follows:

While(LastIndex >= 0 & Count < Months)

7. You are now ready to define the set of instructions. The function checks for null values, and sums
them as appropriate. It also keeps a count of the non-null values for the subsequent averaging
calculation. The next lines of the user function are:

169 of 262
User Guides, Tutorials, and Examples

num Value;

Value = @ARec(Monthlyprod.oil, LastIndex);

LastIndex = LastIndex - 1;

if(Value != @Null())

Total = Total + Value;

Count = Count + 1;

8. You next need to give instructions for when While(LastIndex >= 0 & Count < Months) is not
true. There are two possibilities:

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

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

The last lines of the user function are:

if(Count > 0)

LastNonNullAvgProd = Total/Count;

else

LastNonNullAvgProd = @Null();

9. Double-check your user function. It should be:

Lastnonnullavgprod( num Months)

num LastIndex;

LastIndex = @RecCount( "Monthlyprod" )-1;

num Count;

Count = 0;

num Total;

170 of 262
User Guides, Tutorials, and Examples

Total = 0;

while(LastIndex >= 0 & Count < Months)

num Value;

Value = @ARec(Monthlyprod.oil, LastIndex);

LastIndex = LastIndex - 1;

if(Value != @Null())

Total = Total + Value;

Count = Count + 1;

if(Count > 0)

LastNonNullAvgProd = Total/Count;

else

LastNonNullAvgProd = @Null();

10. Click OK.

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

Creating Reports
1. On the Home tab, in the Launch analysis group, click Report.
The Edit Report window opens.

You want to create a report with three columns:

n Date: This is the Date project variable.

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

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

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

171 of 262
User Guides, Tutorials, and Examples

Note: The # sign signifies a user function.

3. Click OK.

4. On the Navigation pane, select the BLUE_1:Ge_6 completion.


The report displays seven dates, from December 1999 through June 2000. The average last ten
months of production on those dates is 4736.14. If you add the monthly oil production for these
months and divide that sum by 10, you get 4736.14.

5. Change the number of months: On the Format tab, in the Edit group, click Variables.

6. Type 3 between the parentheses following the user function, so that it is this: Date,
Monthlyprod.Oil, #Lastnonnullavgprod(3)

7. Click OK.
The report displays the same seven dates. The average last three months of production on those
dates is 5051. If you add the monthly oil production for the last three dates (4642 + 5264 + 5247)
and divide that sum by 3, you get 5051.

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

172 of 262
User Guides, Tutorials, and Examples

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

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

173 of 262
User Guides, Tutorials, and Examples

174 of 262
User Guides, Tutorials, and Examples

Example: Finding the Best Three Months of


Production
In this example, you create and use a series of calculated variables to find the best three months of oil
production.

The first three calculated variables find the monthly oil production:

n Maximum monthly oil production

n Second-best monthly oil production

n Third-best monthly oil production

The next three calculated variables find the corresponding dates:

n Date of maximum monthly oil production

n Date of the second-best monthly oil production

n Date of the third-best monthly oil production

You then run a report that shows this information.

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

Finding the Maximum Monthly Oil Production


1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor displays calculated variables.

2. Click Add Calculated Variable.


The Edit Calculated Variable window opens.

For this calculated variable, you want to find the total maximum value of monthly oil production
with the condition that it should be greater than zero. The @TMax system function does this.

3. Double-click the items in the System Functions and Project Variables lists to add this equation
to the text box at the top of the window: @TMax(MonthlyProd.Oil, MonthlyProd.Oil>0)

4. Click OK.
The Variable Editor lists the new calculated variable. By default the name is NewItem.

5. Type the name of the calculated variable and then press Enter: Max_Oil

6. You need to use this calculated variable in the next calculation. It is not available until you save your
changes. Click OK to save your changes and close the Variable Editor.

175 of 262
User Guides, Tutorials, and Examples

Finding the Second-Best Monthly Oil Production


1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

Now you want to find the total maximum value of monthly oil production, which is greater than
zero and less than the maximum value you just calculated. You will use the @TMax system
function for this calculated variable, too.

3. Double-click the items in the System Functions and Project Variables lists to add this equation
to the text box at the top of the window: @TMax(MonthlyProd.Oil,MonthlyProd.Oil>0 &
MonthlyProd.Oil<Max_Oil)

4. Click OK.

5. Type the name of the calculated variable and then press Enter: Max_Oil_2

6. Click OK to save your changes and close the Variable Editor.

Finding the Third-Best Monthly Oil Production


1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

With this calculated variable, you want to find the total maximum value of monthly oil production
when it is greater than zero and less than the value found with 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. Click OK.

5. Type the name of the calculated variable and then press Enter: Max_Oil_3

6. Click OK to save your changes and close the Variable Editor.

Finding the Date of the Maximum Monthly Oil Production


1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

For this calculated variable, you want to find the first date on which monthly oil production equals
the value found with the Max_Oil calculated variable you created. You will use the @CFirst system
function, which finds the first occurrence of a numeric expression with a condition.

176 of 262
User Guides, Tutorials, and Examples

3. Enter this equation: @CFirst(Date, MonthlyProd.Oil=Max_Oil)

4. Click OK.

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 save
your changes. Click OK to save your changes and close the Variable Editor.

Finding the Date of the Second-Best Monthly Oil Production


1. Open the Variable Editor again: On the Setup tab, in the Variable Managers group, click
Calculated Variable Editor.

2. Click Add Calculated Variable.

This calculated variable uses the Max_Oil_2 you created. You want to find the first date on which
monthly oil production equals the maximum oil production found with the Max_Oil_2 calculated
variable. You will use the @CFirst system function again.

3. Enter this equation: @CFirst(Date, MonthlyProd.Oil = Max_Oil_2)

4. Click OK.

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 Production


1. Click Add Calculated Variable.

This is the last of the calculated variables. You want to find the first date on which monthly oil
production equals the value found with the Max_Oil_3 calculated variable. You will use the @CFirst
system function again.

2. Enter this equation: @CFirst(Date, MonthlyProd.Oil = Max_Oil_3)

3. Click OK.

4. Type the name of the calculated variable and then press Enter: Date_Max_Oil_3

5. Click OK to save your changes and close the Variable Editor.

Displaying the Calculated Variables in a Report


1. On the Home tab, in the Launch analysis group, click Report.
The Edit Report window 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. Click OK.

177 of 262
User Guides, Tutorials, and Examples

4. On the Navigation pane, select the Blue_1:Ge_6 completion.


The report shows that the best three months of oil production were January 2000, March 2000, and
May 2000.

5. On the Navigation 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 the Navigation pane, select the Trammel lease.


The report shows that the best three months for the lease were October 1972, July 1972, and
November 1972.

7. On the Navigation pane, select the A Field fieldname.


The report shows that the best three months for the field were October 1972, November 1972, and
December 1972.

178 of 262
User Guides, Tutorials, and Examples

Example: Finding the Monthly Average


Value for Sporadic Data
You can create a report that shows the monthly average value for sporadic data. In this example, you find
this 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, and monthly
average

n Change the report properties to best display the monthly average

Opening the Project and Confirming the Sporadic Data


1. Open the Demo workspace. 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 Tables window opens.

b. On the OFM Representation pane, click the Test table.

c. On the right, on the Table tab, note that the Table Type is Sporadic.

d. On the OFM Representation pane, expand the Test table.

e. Note that it holds the test date, and data for gas, oil, and water (as well as other information).

f. Click OK to close the window.

Creating the Report


You will create a report with four columns:

n Completion name

n Test date

n Oil test volume

n Monthly average

1. On the Home tab, in the Launch analysis group, click Report.

2. The first column has the completion name, and the @Name system function provides it. Click
System Functions and then double-click Name to add it to the text box at the top of the window.
Then type a comma to mark a new column.

179 of 262
User Guides, Tutorials, and Examples

3. The second column has the test date, which is in the Date field of the Test table. Click Project
Variables and then double-click Test.Date. Then type a comma to mark 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 the
list of project variables, double-click Test.Oil and then type a comma to mark 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 month
which can be found with the @Change and @Month system functions. Double-click the items in the
System Functions and Project 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. Click OK to view the report.

8. On the Navigation pane, select the Blue_1:He_0 completion.

Changing the Report Properties for Monthly Average


1. On the Properties pane, under Columns, find the Break field and select Monthly.
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, under
Columns, 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

Example: Controlling Bubble Map Display


Using Data Ranges
You can configure bubble maps to show specific attributes for ranges of values, as well as for individual
values. 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 Started
Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.

Displaying the Water Cut Ranges on a Bubble Map


1. On the Home tab, in the Launch analysis group, click Bubble.
The Create Bubble Map window opens.

2. Double-click the Water.Cut project variable to move it to the Selected variables list, and then
click Finish.
The bubble map displays. You are ready to improve its appearance.

181 of 262
User Guides, Tutorials, and Examples

3. On the Properties pane, under Data, in the Attributes section, change Vary Size to No.

4. Change Lookup Color to Yes.

5. On the Edit Lookup field, click Edit Lookup.


The Bubble Lookup window opens. On this window, you can assign a color, size, and label for the
four ranges.

6. Make the following selections:

>= < Clr (Color) Size Label


0.0 0.0999 3 0.0 0% - 9%
0.1 0.4999 7 0.0 10% - 50%
0.5 0.7499 4 0.0 50% - 75%
0.75 1.0 1 0.0 75% - 100%

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

182 of 262
User Guides, Tutorials, and Examples

Animating the Map to Show Changes over Time


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

2. OFM detects the default Start and End dates based on the data in the project. Use these default
dates.

3. Change the Step to 12, to show every 12 months.

4. Change the Pause to 5 to make the changes appear slightly slower than the default.

5. Click OK.
The animation automatically runs.

183 of 262
User Guides, Tutorials, and Examples

Example: Using .Las Log Data


If you have a log ASCII standard (.las) file with log data, you can convert it to a .log file and then import the
.log file into your OFM project. The LAS to OFM tool converts the file for you.

In this example, you will:

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

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

n Load the files into the Demo workspace.

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

Getting Started
1. Make a copy of the sample .las file. It is in the OFM installation folder, at
...OfmPlus\Samples\Sample.las.

2. The Excel file that changes your .las file to a .log file uses a macro. You must have macros enabled in
Microsoft Excel:

a. In Excel, click the Office button in the upper-left corner and then click Excel Options.

b. In the Trust Center section, click Trust Center Settings.


The Trust Center window opens.

c. In the Macro Settings section, select Enable all macros and then click OK.

3. Review the log data in the Demo project:

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

b. On the Setup tab, in the Tables group, click OFM-Defined.

c. Click Logs.

d. Note that the Logs window lists 16 traces. The first one is Acoustic, and the last one is TPhi.

4. Click OK to close the window.

5. View the log data in the .las file that you will import into the OFM project:

a. In Notepad, open the copy of the sample.las file.

b. Note the ~C section:

~C

DEPT.F 00 000 00 00: 1 DEPTH CURVE

DT.US/F 00 000 00 00: 2 SONIC TRAVEL TIME

184 of 262
User Guides, Tutorials, and Examples

RHOB.G/C3 42 350 02 00: 3 DENSITY-BULK DENSITY

NPHI.V/V 42 890 00 00: 4 POROSITY -NEUTRON

RXO.OHMM 07 220 01 00: 5 RESISTIVITY -RXO

SFLU.OHMM 07 222 01 00: 6 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 Tool


1. Open the LAS to OFM file, at ...OfmPlus\LAS to OFM.xls.

2. Click the Click to convert LAS log format (*.as) to OilField Manager log format (*.log)
button.

3. In the Input window, enter the version of Excel that you are using and then click OK.

4. Select the Sample.las file you copied.

5. In the Input window, enter the Wellbore ID you will use and then click OK: Red_9

6. Save the file to your computer with this name: LAStoLOG.log

7. In the Input window, type y and then click OK.

You type y (yes) if the .las file has traces in it that are not currently defined in the project. When
you type y, the LAS to OFM tool creates a definition (.def) file based on the converted curves that
you load into the project.

8. Save the file to your computer with this name: LAStoLOG.def

185 of 262
User Guides, Tutorials, and Examples

Loading the Log and Definition Files into the OFM Project
1. Return to the Demo project in OFM. On the Setup tab, in the Import/Export group, click Import
> Data Loader.

2. Double-click the LAStoLOG.def and LAStoLOG.log files to move them to the Files to Load
section.

3. Click Load.

4. On the Setup tab, in the Tables group, click OFM-Defined.

5. Click Logs.

6. Note that the Logs window now lists 27 traces. The imported traces are listed after TPhi. They start
with DT and end with FPHI.

7. Click OK to close the window.

8. Click OK to close the OFM Defined Table Manager.

Viewing the Log Data in a Single Well Log Display


1. On the Home tab, in the Launch analysis group, click Well Log.

2. On the Set Depth Range window, accept the default range. Click OK.
A blank log template for your single well log display opens.

The template has two tracks. A depth track (which shows the depth scale in the units of
measurement for the workspace) separates the two tracks. By default, each track can hold two
traces, which you add to the tracks. The trace name displays at the top of each track. To the left of
the trace name is the minimum trace value. To the right of the trace name is the maximum trace
value.

3. Double-click the top Trace Name for the left track.


The Log Trace Attributes window opens.

4. Make these selections and then click OK:

n Log: ILM

n Color: Green

5. Double-click the bottom Trace Name for the left track.

6. Make these selections and then click OK:

n Log: RHOB

n Color: Red

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

186 of 262
User Guides, Tutorials, and Examples

Example: Estimating and Displaying


Drainage Radius
In this example, you will create a bubble map in which the bubble size is scaled to indicate the drainage
radius of the well. You will:

1. Set the map scale.

2. Create a calculated variable to find the drainage radius.

3. Create a bubble map to show drainage radius.

4. Add map annotations to show channel sand and zero pay contours.

5. Clone the bubble map as a grid map, and overlay the bubbles onto it.

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

2. This project has data for the reservoir in the RESPROP table, and water injection data in the WIN
table. Confirm this:

a. On the Setup tab, in the Tables group, click Schema.


The Edit Schema Tables window opens.

b. On the OFM Representation pane, expand the RESPROP table.

c. Note that the table has fields for net pay (NET_PAY), porosity (PHI), and residual oil saturation
(SO).

d. Expand the WIN table.

e. Note that the table has a field for water injection (WINJ).

f. Click OK to close the window.

Setting the Map Scale


This example will show the drainage radius in feet, so change the map scale to show 2000 feet as one inch.

1. With the base map open, on the Format tab, in the Edit group, click Scale.
The Map Scale window opens.

2. In the Legend section, select English and then select ft for the Display unit.

3. In the Scale section, select inch and then enter 2000.

4. Click OK.

187 of 262
User Guides, Tutorials, and Examples

Estimating Drainage Radius


1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens, with the list of variables filtered to show only calculated variables.

2. You will use two calculated variables that already exist in the project. Double-click the Name column
tosort the list alphabetically by name.

3. Find the Oil.Cum calculated variable and view the Equation.


The equation is @CumInput(Prd.Oil). This calculated variable uses the @CumInput system function
to find a running sum of oil production.

4. Find the Water.Cum calculated variable and view the Equation.


The equation is @CumInput(Win.Winj). This calculated variable finds the running sum of water
injection.

5. Click Add Calculated Variable.


The Edit Calculated Variable window opens.

You will use a simple expression for original oil in place (OOIP) calculation, solved for drainage
radius in feet. To do this, you will use:

n The @Sqrt system function, which returns the square root

n The existing Oil.Cum and Water.Cum calculated variables

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

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

n A conversion factor of 5.615 to convert cubic feet to barrels

n The porosity data in the PHI field of the RESPROP table

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

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

n A constant for water saturation (Sw): 0.22

This example uses a number of constants. Any of the constants can be replaced with project
variables.

6. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @Sqrt(((Oil.Cum * 1.1 + Water.Cum * 1.002) * 5.615) /
(Resprop.Phi * Resprop.Net_pay * 3.14159 * (1 - Resprop.So - 0.22)))

7. Click OK.
The new variable displays in the list of variables. By default, OFM names it NewItem.

8. Type this new name for the calculated variable and then press Enter: DrainageRadius

9. At the top of the window, click Define to hide the definition columns, and click Units to show the
unit columns.

188 of 262
User Guides, Tutorials, and Examples

10. In the Units column for the DrainageRadius calculated variable, select ft ==> m.

11. Click OK to save the calculated variable and close the window.

Creating the Bubble Map


1. On the Home tab, in the Launch analysis group, click Bubble.
The Create Bubble Map window opens.

2. On the list of Project variables, double-click the DrainageRadius calculated variable to move it to
the Selected variables list.

3. Click Finish.

4. Rename the analysis:

a. On the Analysis pane, right-click Bubble Map1 and then click Rename.

b. Type this for the new name and then press Enter: Drainage Radius Bubble Map

5. Change the plot size:

189 of 262
User Guides, Tutorials, and Examples

a. View the Properties pane, under Data, and note that the Data Range Maximum is
948.760986. This value is used to scale the bubble map to the maximum drainage radius, to
match the map units.

b. On the Properties pane, under Properties, change the Plot Size Units to Map Units.

c. Change the Plot Size Maximum to 948.760986.


The bubbles on the map are scaled to map units, and the radius is scaled to the size of the
drainage radius.

6. Change the colors:

a. On the Properties pane, under Properties, change the Color Scale Style to Value Range.

b. Change the number of Colors to 9.

c. Change the Spectrum to Green-Blue.

190 of 262
User Guides, Tutorials, and Examples

Adding Annotations to Show Channel Sand and Zero Pay


Contours
1. With the base map open, on the Format tab, in the Display group, click Annotations.
The OFM Data Loader opens.

2. This project comes with several annotation files. They are in the OFM installation folder, at ...Sample
Workspaces\Pilot Waterflood Sample\Text Load Files\Anno. Double-click each of the five annotation
(.ano) files in this folder to add them to the Files list.

3. Click Load.
The Map Annotations window opens.

4. Click OK.

5. Return to the Drainage Radius Bubble Map.

6. On the Format tab, in the Display group, select the Annotations check box.
The annotations display on the bubble map.

191 of 262
User Guides, Tutorials, and Examples

Overlaying the Bubble Map onto a Grid Map


1. On the Analysis pane, right-click Drainage Radius Bubble Map and then click Clone Map As >
Grid Map.

2. Right-click Grid Map1 and then click Rename.

3. Type this for the new name and then press Enter: Drainage Radius Grid Map

4. On the Format tab, in the Utilities group, click Create Overlay Bubble.
The bubbles from the bubble map overlay on the new grid map.

5. One of the map annotations you added shows a dotted line, which marks oil/water contact. Use the
dotted line as a guide to indicate no-flow boundaries:

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

b. Click around the dotted line to create the grid area. When you are finished, right-click and then
click Done.
The area outside the grid area becomes white.

192 of 262
User Guides, Tutorials, and Examples

193 of 262
User Guides, Tutorials, and Examples

Example: Adding a Shapefile for California's


Geothermal Wells
In this example, you will add a shapefile to the GIS map that shows geothermal wells in California. The
California Department of Conservation provides the shapefile. After you add the shapefile, you will change
the color of the symbols.

1. Download the shapefile from the Internet:

a. Go to the Oil, Gas, & Geothermal maps page at


http://conservation.ca.gov/dog/maps/Pages/goto_wellloc_geotherm.aspx.

b. Click Shapefile.

c. Open the compressed (.zip) file and save all the files in it to your computer.

2. In OFM, add the shapefile as a layer on the GIS map:

a. With the GIS map open, on the Format tab, in the Layers group, click Add Layer > Open
Shape File.

b. Select the shapefile and then click Open.


OFM adds the shapefile as one layer on the GIS map. It marks geothermal wells in California
with circles.

3. Improve visibility:

a. On the Format tab, in the Layers group, click Edit Layers.


The Map Layers window opens.The left pane lists the layers on the GIS map. The new layer
has the same name as the shapefile. The top layer is the geothermal wells layer. It is selected, so
the properties for the layer display on the right. For this shapefile, you can change the
transparency and color of the dots that mark the geothermal wells.

b. Move the Transparency toggle to the right to increase the transparency.

c. Select a new symbol Color.

d. Click OK to save your changes and close the window.

194 of 262
User Guides, Tutorials, and Examples

Example: Adding a Shapefile for the Region


Boundaries of US Oil/Gas Assessment
In this example, you will add a shapefile that has many more properties than the one displaying
geothermal wells. The shapefile shows region boundaries for US national oil and gas assessment performed
by the US Geological Survey.

1. Download the shapefile from the Internet:

a. Go to the page for GIS data of the US national oil and gas assessment at
http://energy.cr.usgs.gov/oilgas/noga/data.html.

b. On the row for Region Boundaries, click the Download link in the Shapefile column.

c. Open the compressed (.zip) file and save all the files in it to your computer.

2. In OFM, add the shapefile as a layer on the GIS map:

a. With the GIS map open, on the Format tab, in the Layers group, click Add Layer > Open
Shape File.

b. Select the shapefile and then click Open.


OFM adds the shapefile as one layer on the GIS map. The regional boundaries display in the
United States.

3. Improve visibility:

a. On the Format tab, in the Layers group, click Edit Layers.


The Map Layers window opens. The left pane lists the layers on the GIS map. The new layer
has the same name as the shapefile. The top layer is usregg.shp. It is selected, so the properties
for the layer display on the right.

b. The shapefile has map tips. Under Layer, select the Map Tip check box to display them.

c. The shapefile marks the entire area with one color, and separates the regions with a line that is a
different color. Under Symbol, change the Outline color.

d. In addition to the map tips, this layer also has labels. Under Label, select the Label check box to
display them.

e. Change the label Color, Font, and Size to improve visibility of the labels.

f. The label is showing the area of each region. In this layer, you can change the information
displayed in the labels. In the Fields field, select a new type of information to display.

g. Click OK to save your changes and close the window.

195 of 262
User Guides, Tutorials, and Examples

Example: Connecting to an ArcGIS Map to


Add U.S. Topological Features
In this example, you add land cover imagery to the entire GIS map, and detailed topological features from
the US Geological Survey to the United States part of the GIS map. You then move the wells above that
layer, and zoom to the completions.

1. On the Internet, find the URL for the ArcGIS connection:

a. Go to the USA Topographic Maps at


http://www.arcgis.com/home/item.html?id=99cd5fbd98934028802b4f797c4b1732.

b. On that page, in the REST URL for ArcGIS Web APIs section, copy the URL to your clipboard.

2. In OFM, add the ArcGIS connection:

a. With the GIS map open: On the Format tab, in the Layers group, click Add Layer > Open
Map Server.

b. Select Define.

c. View the ArcGIS tab.

d. In the Name field, enter a name for the connection. This name displays on the Map Layers
window. For this example, enter USGS Survey.

e. In the Url field, paste the link that you copied from the website.

f. Click OK.
OFM immediately applies the connection to the GIS map as the top layer, and OFM shows the
full GIS map.

3. Improve visibility:

a. On the Format tab, in the Layers group, click Edit Layers.


The Map Layers window opens. The left pane lists the layers on the GIS map. USGS Survey is
the top layer.

b. To see the wells (which are on the Wells layer), you can move the Wells layer to be above the
USGS Survey layer. Right-click the Wells layer and then click Raise layer to top.

c. Click OK to save your changes and close the window.

d. If you are using the demo.ofm project for this example, you can see the field details below the
completions. On the Format tab, in the Zoom group, click Zoom to Fit.
You can see that the completions are off Schooner Bayou Canal near Little Bear Lake, and are
part of the East White Lake oil and gas field.

196 of 262
User Guides, Tutorials, and Examples

Example: Connecting to an ArcGIS Map to


Add Streets and Railroads
In this example, you add streets, railroads, parks, and landmarks on the GIS map, for many places
worldwide. You then zoom in to see the details of your city, and change the transparency of the new layer
to see the features of the basemap under it.

1. On the Internet, find the URL for the ArcGIS connection:

a. Go to the World Street Map at


http://www.arcgis.com/home/item.html?id=3b93337983e9436f8db950e38a8629af

b. On that page, in the REST URL for ArcGIS Web APIs section, copy the URL to your clipboard.

2. In OFM, add the ArcGIS connection:

a. With the GIS map open: On the Format tab, in the Layers group, click Add Layer > Open
Map Server.

b. Select Define.

c. View the ArcGIS tab.

d. In the Name field, enter a name for the connection. This name displays on the Map Layers
window. For this example, enter World Streets.

e. In the Url field, paste the link that you copied from the website.

f. Click OK.
OFM immediately applies the connection to the GIS map as the top layer, and OFM shows the
full GIS map.

3. Improve visibility:

a. On the Format tab, in the Zoom group, click Zoom Area.

b. On the GIS map, drag a very small square around your city.

c. On the Format tab, in the Layers group, click Edit Layers.


The Map Layers window opens. The left pane lists the layers on the GIS map. World Streets is
the top layer.

d. On the left, select World Streets.

e. On the right, under Layer, move the Transparency toggle to the right to increase the
transparency of the World Streets layer.
The GIS map changes the transparency as you move the toggle.

f. Click OK to save your changes and close the window.

197 of 262
User Guides, Tutorials, and Examples

Overview of System Functions


System functions are sets of instructions already coded in OFM for you to perform standard operations. You
can call a system function and provide parameters, expressions, conditions, and values. The standard
operations perform calculations, retrieve information from the database, and perform formatting
functions. You can use system functions with calculated variables, user functions, reports, queries, and
headers.

OFM has more than 200 system functions. Each system function has specific name and syntax
requirements. Many require data to generate a result. You provide the data with argumentsa 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 must
evaluate to) a number. As long as you follow this rule, you can use any project source for the arguments.

In general, the following statements apply:

n System functions are identified by the @ character prefix.

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

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

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

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

Functions Listed Alphabetically


A

@Abs (Absolute Value)

@AbsDev (Absolute Deviation)

@AddDate (Add Date)

198 of 262
User Guides, Tutorials, and Examples

@AddDays (Add Days)

@AddMonths (Add Months)

@AddYears (Add Years)

@Alloc (Well Allocation Factor)

@Annually (Annually)

@AppendFile (Append Data from File)

@Area (Area Under a Curve)

@ARec (Absolute Value for a Record)

@AsktoStore (Prompt for Values to Store in Memory Registers)

@AtD (Alpha to Date)

@AtoN (Convert an Alpha Character String to a Number)

@AveInput (Average Value of Input Variable)

@BesselJ1 (Bessel Function First Order)

@BesselJ2 (Bessel Function Second Order)

@Between (Between Values)

@BHP (Bottomhole Pressure)

@Blank (Blank Space)

@CAbsDev (Conditional Absolute Deviation)

@CArea (Area Under a Curve, When Condition is True)

@CategoryName (Currently Selected Category)

@CDataIndex (Conditional Data Index)

@CDataValue (Conditional Data Value)

@Ceil (Ceiling Value)

@Cf (Formation Compressibility)

@CFirst (Conditional First)

@CFirstStr (Conditional First String)

@Change (Changed from Previous Value)

@CLast (Conditional Last Value)

@CLastStr (Conditional Last String)

@CloseFile (Close a Text File)

@ClrRSum (Clear Running Sum)

199 of 262
User Guides, Tutorials, and Examples

@ClrTAve (Clear Total Average)

@ClrTSum (Clear Total Sum)

@CmpStr (Compare Strings Alphabetically)

@CMvAve (Conditional Moving Average)

@CorrelationCoeff (Correlation Coefficient)

@Cos (Cosine)

@Count (Count Contributing Categories)

@CountInput (Number of Entries)

@CRAve (Conditional Running Average)

@CRSum (Conditional Running Sum)

@CStdDev (Conditional Standard Deviation)

@CTAve (Conditional Total Average)

@CTSum (Conditional Total Sum)

@CumInput (Cumulative Input)

@CVariance (Conditional Variance)

@Daily (Daily)

@DataCount (Number of Rows in Report)

@DataIndex (Data Index)

@DataIndexRange (Data Index Range)

@DataInterpolator (Interpolate Value)

@Date (Date)

@DateCmp (Date Compare)

@DateRange (Date Range)

@Day (Day)

@DayName (Name of Day)

@DayofWeek (Day of Week)

@DBDate (Table Date)

@DBExecute (Run SQL Statement Against OFM Database)

@DCACalc (Saved Forecast Ratio)

@DCACaseComment (DCA Case Comment)

@DCACaseInitials (DCA Case Initials)

@DCACaseName (DCA Case Name)

200 of 262
User Guides, Tutorials, and Examples

@DcaCum (DCA Forecasted Cumulative Production)

@DCAReserveType (DCA Reserve Type)

@DcaResults (DCA Results)

@dForecast (Daily Forecasted Rates)

@Diff (Difference)

@Discount (Monthly Discount Factor)

@Distance (Distance Between)

@Dom (Days of Month)

@DRecCount (Daily Record Count)

@DtoN (Date to Numeric)

@DualKeyCount (Number of Primary Keys)

@DualKeySelect (List of Primary Keys)

@DualKeyValue (Value of Primary Keys)

@ElapsedDays (Elapsed Days)

@ElapsedMonths (Elapsed Months)

@EquationGraphLine (Equation of a Locked Line)

@EvalGraphLine (Evaluate Graph Line)

@Exp (Exponential)

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

201 of 262
User Guides, Tutorials, and Examples

@GetDataIndex (Find Current Record Index)

@GroupData (Grouped Data for Entity)

@Hour (Hour)

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

@Julian (Julian Date)

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

@Marker (Marker Name)

@Markerdepth (Marker Depth)

@Max (Largest of Two Numbers)

@MdfromTvd (Measured from True Vertical Depth)

@Metric (Metric)

@Min (Smallest of Two Numbers)

@Minute (Minute)

202 of 262
User Guides, Tutorials, and Examples

@Mod (Modulus Division)

@Month (Month)

@Monthly (Monthly)

@MonthName (Month Name)

@MrecCount (Monthly Record Count)

@MvAve (Moving Average)

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

@OpenFile (Open Text File)

@PatCurSet (Current Pattern Set)

@PatDate (Pattern Date)

@PatFact (Pattern Well Allocation Factor)

@PatLFct (Pattern Loss Factor)

@PatLoss (Pattern Loss)

@PatName (Pattern Name)

@PatSets (Pattern Sets)

@PatWell (PatternWell)

@PctChange (Percentage Change)

@phi (Porosity from Log Trace)

@PlotFile (Load Graph File)

@PlotFromFile (Plot Data at Keyname in External File)

@PlotHeaderFile (Load Plot Header File)

@Pow (Base Value Raised to the Power)

@PfromPoZ (Pressure From a P/Z Value)

@Previous (Value of Expression for Previous Record)

@PrintError (Display Custom Error Message)

203 of 262
User Guides, Tutorials, and Examples

@PrintStatus (Display Custom Status Bar Message)

@ProjectFilterName (Project Filter Name)

@ProjectPath (OFM Project Path)

@PvtBg (Gas Formation Volume Factor at a Pressure)

@PvtBo (Oil Formation Volume Factor)

@PvtBt (Total Formation Volume Factor at a Pressure)

@PvtBw (Water Formation Volume Factor at a Pressure)

@PvtCg (Gas Compressibility at a Pressure)

@PvtCo (Oil Compressibility at a Pressure)

@PvtCw (Water Compressibility at a Pressure)

@PvtFile (Load a PVT File)

@PvtGORStk (Stock Tank GOR)

@PvtPb (Calculate Bubblepoint Pressure)

@PvtPc (Critical Pressure of Gas)

@PvtRsb (Calculate the Solution Gas-Oil Ratio at a Pressure)

@PvtRsw (Calculate the Solution Gas-Water Ratio at a Pressure)

@PVTSetAPI (Override API Gravity Value)

@PVTSetPB (Override Bubblepoint Pressure)

@PvtSetPC (Override Critical Pressure Value)

@PVTSetRS (Override Bubblepoint Solution-Gas Ratio)

@PvtSetSg (Override Gas Specific Gravity)

@PvtSetT (Override Reservoir Temperature)

@PvtSetTc (Override Critical Temperature Value)

@PvtTc (Critical Temperature of Gas Component)

@PvtVg (Gas Viscosity at a Pressure)

@PvtVo (Oil Viscosity at a Pressure)

@PvtVw (Water Viscosity at a Pressure)

@PvtWrho (Water Density at a Pressure)

@PvtZ (Gas Z-Factor at a Pressure)

@Quarterly (Quarterly)

@Radian (Radian Value of an Angle)

204 of 262
User Guides, Tutorials, and Examples

@Random (Random Number)

@RAve (Running Average)

@Recall (Find Value from Memory Location)

@RecallStr (Find Alpha Value String by ID)

@RecCount (Record Count)

@Reg (Value in a Data Register)

@ResetSums (Clear Internal Sums)

@ReverseOrder (Print Report in Reverse Order)

@Root (Root of User Function)

@RowAverage (Row Average)

@RowSum (Row Sum)

@RRec (Relative Record)

@RSum (Running Sum)

@Rw (Water Resistivity Calculation)

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

@Tab (Insert Tabs)

@TAve (Total Average)

@Time (Operating System Time)

@TMax (Total Maximum Value)

205 of 262
User Guides, Tutorials, and Examples

@TMin (Total Minimum Value)

@Today (Current Date)

@TraceAt (Trace for Date)

@TraceDate (Date at Trace Position)

@TraceDates (Number of Dates for Recorded Log Traces)

@TrendChecker (Check Trend)

@TSum (Total Sum)

@TVD (True Vertical Depth)

@Underscore (Replace Spaces with Underscores)

@UTMX (UTM X-Coordinate)

@UTMY (UTM Y-Coordinate)

@ValueAt (Value of Expression on a Date)

@ValueAtStr (String Value on a Date)

@Variance (Variance)

@vshale (Volume of Shale)

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

@XGraphTrace (X-Axis Value of a Trace Point)

@XRefAlpha (Cross-Reference String)

@XRefValue (Cross-Reference Value)

@Year (Year for Date)

@YGraphTrace (Y-Axis Value of a Trace Point)

@YoGraphLine (Y-Intersect of a Locked Line)

206 of 262
User Guides, Tutorials, and Examples

@YYMM (Date in YYMM Format)

207 of 262
User Guides, Tutorials, and Examples

@Abs (Absolute Value) System Function


Description This system function returns the absolute value of an expression.
Syntax @Abs (value)
Where Argument Type Required Description
value Numeric Yes Data stream
Example In this example, the function returns 9500:

@Abs (-9500)

208 of 262
User Guides, Tutorials, and Examples

@AddMonths (Add Months) System


Function
Description This system function increments the date by the number of months
defined, for a date in the future or the past.
Syntax @AddMonths(Date, NumberOfMonths)
Where Argument Type Required Description
Date
Date Date Yes Note: OFM requires dates to be
entered in YYYYMMDD format.
Number of months to add or
subtract from the date (positive
NumberOfMonths Numeric Yes
to add months; negative to
subtract months).
Example The return is represented as a number. In this case, April 15, 2008, at
12:00:00, is 20080415:

@AddMonths (20080101, 3, 1)

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

209 of 262
User Guides, Tutorials, and Examples

@Area (Area Under a Curve) System


Function
Description This system function finds the area under a curve using trapezoidal
approximation.

Note: This function uses X- and Y-axes. If the X-axis is a date, use the
@Julian (Julian Date) system function to make it linear.
Syntax @Area (X-axis, Y-axis)
Where Argument Type Required Description
X-axis Numeric Yes Independent axis
Y-axis Numeric Yes Dependent or function axis
Example In this example, the system function returns the value of the area
under a curve of oil.cum versus pressure:

@Area (oil.cum, pressure)

210 of 262
User Guides, Tutorials, and Examples

@ARec (Absolute Value for a Record)


System Function
Description This system function gets the value of the input variable for a specified
record row. Use this function with monthly and daily tables.

Note: The @CDataIndex (Conditional Data Index) system function


can be used to provide input to this function.
Syntax @ARec (Variable, Index)
Where Argument Type Required Description
Variable Numeric Yes Table variable
Row number in table for specified
Index Numeric Yes entity

Note: First row is index 0.


Example 1 In this example, the sixth value associated with MonthlyProd.Oil is
returned:

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

@ARec (MonthlyProd.Oil, @CDataIndex(MonthlyProd.Water > 0,


1))

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

211 of 262
User Guides, Tutorials, and Examples

@CFirst (Conditional First) System Function


Description When the specified condition is True (1), this system function finds the
first occurrence of a numeric expression at the specified condition.

Note: This system function requires a condition. The @First (First


Record Value of an Expression) system function performs the same
task, but the condition is optional.
Syntax @CFirst (value, condition)
Where Argument Type Required Description
The parameter for which the first
value Numeric Yes
conditional entry is being requested
Required condition, which must
condition String Yes
evaluate to True (1) or False (0)
Example In this example, the function is when water production is greater than
zero after December 15, 1990:

@CFirst (Date, MonthlyProd.Water > 0)

Related Examples
Finding the Best Three Months of Production

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

Related Topics
Sample User Function: First Oil

212 of 262
User Guides, Tutorials, and Examples

@Change (Changed from Previous Value)


System Function
Description This system function determines if the value of a numeric expression
has changed from the previous value. It returns True (1) or False (0)
when the test parameter has changed from its previous value.

Use this function to create effective breaks in an OFM report. For


instructions about creating and modifying reports, see "Creating
Reports and Editing Report Variables."
Syntax @Change (Value)
Where Argument Type Required Description
Value Numeric Yes Numeric expression to be evaluated
Example In this example, the function returns True (1) when the"year" part of
the date changes:

@Change (@Year (Date))

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

213 of 262
User Guides, Tutorials, and Examples

@ClrTAve (Clear Total Average) System


Function
Description When a specified condition is True (1), this function computes an
average of the specified numeric expression. The value is reset to zero
by a condition. The function reports only on the date when the
condition is satisfied (that is, before the average being zeroed).
Syntax @ClrTAve (value, condition)
Where Argument Type Required Description
value Numeric Yes Expression to be averaged
condition String Yes Condition to be satisfied
Example In this example, the function returns the total average to date of
monthly oil production. The calculation result is set to zero at the end
of the year (that is, when the Year portion of the date changes).

@ClrTAve (MonthlyProd.Oil, @year (date))

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

214 of 262
User Guides, Tutorials, and Examples

@Dom (Days of Month) System Function


Description This system function retrieves the number of days for a calendar
month based on specified date. This function can be used to compute
calendar day rates from monthly data.
Syntax @Dom (Date)
Where Argument Type Required Description
Date
Date Date Yes Note: OFM requires dates to be entered
in YYYYMMDD format.
Example In this example, the function returns the value of 31 because there
are 31 days in January:

@Dom (19840101)

Note: In this example, the final last two numbers ("01") represents
the first day of the month, but does not affect the calculation.

Related Examples
Creating a Hall Plot

Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation: Getting Started

215 of 262
User Guides, Tutorials, and Examples

@ElapsedDays (Elapsed Days) System


Function
Description This system function calculates the number of elapsed days from
Date1 to Date2.
Syntax @ElapsedDays (Date1, Date2)
Where Argument Type Required Description
Date
Date1 Date Yes Note: OFM requires dates to be entered
in YYYYMMDD format.
Date2 Date Yes Date
Example In this example, the function returns the value of 31, the number of
elapsed days from 30 June to 31 July, 1983. Note that to return a
positive integer, the first date (Date1) should be the later date and the
second date (Date2) should be the earlier date.

@ElapsedDays (19830731, 19830630)

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

216 of 262
User Guides, Tutorials, and Examples

@ElapsedMonths (Elapsed Months) System


Function
Description This system function calculates number of elapsed months from
Date2 to Date1.
Syntax @ElapsedMonths (Date1, Date2)
Where Argument Type Required Description
Date
Date1 Date Yes Note: OFM requires dates to be entered
in YYYYMMDD format.
Date2 Date Yes Date
Example In this example, the function returns the value of 12 (the number of
elapsed months from January 1984 to January 1985). Note that to
return a positive integer, the first date (Date1) should be the later
date and the second date (Date2) should be the earlier date.

@ElapsedMonths (19850101, 19840101)

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

217 of 262
User Guides, Tutorials, and Examples

@First (First Record Value of an Expression)


System Function
Description This system function finds the first record value of a specified numeric
expression, subject to an optional condition.
Syntax @First (value, condition)
Where Argument Type Required Description
value Numeric Yes Parameter to be returned
condition String No Condition to be satisfied
Example In this example, the function returns the value of monthly oil
production when water is first greater than zero:

@First (MonthlyProd.Oil, Monthly Prod.Water > 0)

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

218 of 262
User Guides, Tutorials, and Examples

@Fit (Fit) System Function


Description This system function fits a polynomial of order n through the data,
using the least squares method. It can be used across tables and n can
equal up to 12 degrees.
Syntax @Fit (value1, value2, value3, value4, option)
Where Argument Type Required Description
Numeric The X-axis parameter for the
value1 Yes
or date dataset being fitted
The Y-axis parameter for the
value2 Numeric Yes
dataset being fitted
Condition; any value evaluating as
value3 True/False Yes
False will be excluded from the fit
Numeric The X-axis parameter for the output
value4 Yes
or date fitted curve
n Date: Use if the input X-axis
parameter represents date

n Xlog: Use if the curve is to be


fitted to the logarithm of X

n Ylog: Use if the curve is to be


fitted to the logarithm of Y

n deg: Order, n, of fitted


polynomial, where n should not
exceed 12

option Several Yes n min val: If any resulting fitted


value is less than val, then
function returns a Null

n max val: If any resulting fitted


value is greater than val, then
function returns a Null

n opt: Finds the best value for n


(between 1 and 12)

n abs val: Fit the curve. Exclude


the point if abs (resulting data) >
val, then refit the curve
Example In this example, the function returns an array of points evaluating the
fourth degree polynomial fit to monthly oil production, subject to the
constraint that values below 500 are not reported:

@fit(Date, Prd.oil, Prd.oil>0, Date, "Date deg 4 min 500")

219 of 262
User Guides, Tutorials, and Examples

Related Examples
Calculating Pressure from P/Z and Production Data: Finding the P/Z Value

Creating a Water Breakthrough Diagnostic (Chan) Plot: Fitting the WOR Derivative

Creating a Water Breakthrough Diagnostic (Chan) Plot: Fitting the WOR

Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation: Fitting a Polynomial Curve

220 of 262
User Guides, Tutorials, and Examples

@FitEq (Fit Equation) System Function


Description This system function determines the equation of the current fitted
polynomial, and returns the polynomial equation as a string. You must
use the Y variable and the same options (in the same order) from the
@Fit variable which you are now evaluating.
Syntax @FitEq (value, options)
Where Argument Type Required Description
The data (Y variable) which has been
value Numeric Yes
fitted using the @fit variable
n Date: Use if the input X-axis
parameter represents date.

n Xlog: Use if the curve is to be fitted


to the logarithm of X.

n Ylog: Use if the curve is to be fitted


to the logarithm of Y.

n deg: Order, n, of fitted polynomial,


where n should not exceed 12.

n min va: If any resulting fitted


options String Yes value is less than val, then function
returns a Null.

n max va: If any resulting fitted


value is greater than val, then
function returns a Null.

n opt: Finds the best value for n


(between 1 and 12).

n abs val: Fit the curve. Exclude the


point if abs (resulting data) > val,
then refit the curve.
Example In this example, a fourth-order polynomial fit to the log of
MonthlyProd.Oil has been performed:

@Fiteq (MonthlyPrd.Oil, "date ylog deg 4")

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

221 of 262
User Guides, Tutorials, and Examples

@If (If) System Function


Description If a specified condition is True (1), the function returns the second
argument. Otherwise, the function returns the third argument. It
executes one of two expressions, depending on the result of a
conditional text.

This system function is used frequently in advanced applications.

Note: This system function returns a number; the @IfStr (If String)
system function returns a number.
Syntax @If (Condition, Value1, Value2)
Where Argument Type Required Description
Condition String Yes Expression to be evaluated
Value to be returned if condition is
true or equals 1
Value1 Numeric Yes Note: Value1 can be an expression,
such as a further (nested) @if()
statement.
Value to be returned if condition is
false or equals 0
Value2 Numeric Yes Note: Value2 can be an expression,
such as a further (nested) @if()
statement.
Example In this example, the system function returns the value of Water.Cut
when monthly liquid production (oil + water) is non-zero. Otherwise,
the function returns Null.

@If (MonthlyProd.Oil + Monthlyprod.Water 0,

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

222 of 262
User Guides, Tutorials, and Examples

@Last (Last Record Value of an Expression)


System Function
Description This system function finds the last record value of a specified numeric
expression, subject to an optional condition.
Syntax @Last (value, condition)
Where Argument Type 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 of
monthly oil production:

@Last (MonthlyProd.Oil, MonthlyProd.Oil>0)

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

223 of 262
User Guides, Tutorials, and Examples

@Lookup (Lookup) System Function


Description This system function searches or interpolates the lookup table for a
specific value of a specified variable. It offers a lookup capability, and
allows for interpolation between recorded values.

Note: Interpolation requires that the range to be interpolated must


be in strict ascending order.
Syntax @Lookup (output_variable, keyname, input_value, option)
Where Argument Type Required Description
output_ The result you wish to extract from
Numeric Yes
variable the lookup table
The entity for which your lookup table
keyname Text Yes
has been populated with data
The value of the independent variable
input_
Numeric Yes for which you require the lookup
value
result
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 time
dependent lookup data, prohibiting extrapolation outside the range of
existing data).

n date: Used when input_value refers to a date.

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

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

n linear: Performs linear interpolation between known values of


data.

n lag: Performs Lagrange interpolation.

n deg: Specifies degree of the Lagrange polynomial (for example,


"deg3").

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


output_variable.

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


output_variable.

n 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

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

@Lookup (Fluid_Data.FVF, Sc.Reservoir, Prd.Pressure,


lin)

225 of 262
User Guides, Tutorials, and Examples

@Month (Month) System Function


Description This system function retrieves the month number for a specified date.
It returns a value between 1 and 12.
Syntax @Month (Date)
Where Argument Type Required Description
Date
Date Date Yes Note: OFM requires dates to be entered
in YYYYMMDD format.
Example In this example, the function returns 4 because April is the fourth
month:

@Month (19830409)

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

226 of 262
User Guides, Tutorials, and Examples

@Name (Name of Loaded Data Without


Prefix) System Function
Description This system function gets the name of the currently loaded entity. It is
useful in preparing header information on plots and reports.

Note: To return the name with the prefix, use the @LoadName
(Composite Name of Loaded Data) system function.
Syntax @Name ()
Where Argument Type Required Description
None
Example n If a completion X is the active entity, then the system function will
return X.

n If a Category (for example, Lease) is chosen from the Navigation


pane, and the Lease named Smith is selected as the chosen
entity, then the system function will return Smith.

Related Examples
Creating an After-Before-Compare (ABC) Plot: Creating a Report Showing the Monthly Oil Rate

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

227 of 262
User Guides, Tutorials, and Examples

@Null (Null) System Function


Description This system function returns a null value. The null value displays as an
asterisk (*) in reports.

Note: To convert null values to zero or another value you specify, use
the @NZ (Null to Zero) system function.
Syntax @Null()
Where Argument Type Required Description
None
Example In this example, a calculated variable is created that returns a gas-oil
ratio (GOR). The @Null system function is used to "trap" potential
errors. It will force a null result when a "divide by zero" error could
have occurred:

@If(MonthlyProd.Oil = 0, @Null(), MonthlyProd. Gas /


MonthlyProd.Oil)

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

228 of 262
User Guides, Tutorials, and Examples

@Previous (Value of Expression for Previous


Record) System Function
Description This system function finds the value of a numeric expression for the
record before the current record. It is applicable only for monthly and
daily tables.

Note: To find the value of a numeric expression for the next record,
use the @Next (Value of Expression for Next Record) system function.
Syntax @Previous (variable)
Where Argument Type Required Description
The variable for which the previously-
variable variable Yes
available value is required
Example In this example, the difference between the current month's oil
production and the prior month's production can be found:

MonthlyProd.Oil - @Previous (MonthlyProd.Oil)

Related Examples
Creating a Chan Plot: Finding the WOR Derivative

229 of 262
User Guides, Tutorials, and Examples

@PvtBg (Gas Formation Volume Factor at a


Pressure) System Function
Description This system function calculates the gas formation volume factor at a
specified pressure.
Syntax @PvtBg (value)
Where Argument Type Required Description
value Numeric Yes Pressure value
Example In this example, the system function returns a time-dependent gas
formation volume factor based on time-dependent pressure data:

@PvtBg(Prd.Pressure)

230 of 262
User Guides, Tutorials, and Examples

@PvtBo (Oil Formation Volume Factor)


System Function
Description This system function calculates the time-dependent oil formation
volume factor at a specified time-dependent pressure.
Syntax @PvtBo (value)
Where Argument Type Required Description
value Numeric Yes Pressure value
Example In this example, the system function returns a time-dependent oil
formation volume factor based on time-dependent pressure data:

@pvtBo(Prd.Pressure)

Related Tutorials
PVT: To Use PVT System Functions

231 of 262
User Guides, Tutorials, and Examples

@PvtBw (Water Formation Volume Factor at


a Pressure) System Function
Description This system function calculates the time-dependent water formation
volume factor at a specified time-dependent pressure.
Syntax @PvtBw (value)
Where Argument Type Required Description
value Numeric Yes Pressure value
Example In this example, the system function returns a time-dependent water
formation volume factor based on time-dependent pressure data:

@pvtBw(Prd.Pressure)

232 of 262
User Guides, Tutorials, and Examples

@PvtRs (Calculate the Solution Gas-Oil


Ratio at a Pressure) System Function
Description This system function calculates the solution gas-oil ratio (GOR) at a
specified pressure, based on the previously selected oil correlation.
Syntax @PvtRs (value)
Where Argument Type Required Description
value Numeric Yes Pressure value
Example In this example, the system function returns time-dependent solution
gas oil ratio based on time-dependent pressure data:

@PvtRs (Prd.Pressure)

233 of 262
User Guides, Tutorials, and Examples

@RecCount (Record Count) System


Function
Description This system function finds the number of records in a specified table.

Note: Use the @DRecCount (Daily Record Count) system function for
daily tables, and the @MrecCount (Monthly Record Count) system
function for the number of monthly records.
Syntax @RecCount ("tablename")
Where Argument Type Required Description
tablename String Yes Table to be evaluated
Example In this example, the function returns the number of records in the
Test table:

@RecCount ("test")

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

234 of 262
User Guides, Tutorials, and Examples

@Reg (Value in a Data Register) System


Function
Description This system function recalls a value (for a variable used to represent
parameter Y) stored in the specified Data Register and interpolates
missing values.
Syntax @Reg (regn#, value, "option")
Where Argument Type Required Description
regn# Numeric Yes Data Register number (1-40)
Variable representing the X
value Numeric Yes parameter used when creating the
Data Register
n xlog: Performs lookup along X-axis

n ylog: Performs lookup along Y-axis

n linear: Performs linear


interpolation

n lag: Performs lookup Lagrange


interpolation

"option" String No n deg: Specifies degree of Lagrange


polynomial

n step up: Performs lookup


returning upward value

n step down: Performs lookup


returning lower value

n in: Value must exist within range.


Do not extrapolate.
Example In this example, Data Register 5 was previously created to store a
variable (Y), representing bottomhole pressure against Date (X). The
example will return the values of bottomhole pressure, and linearly
interpolate across missing values.

@Reg (5, Date, "date linear")

235 of 262
User Guides, Tutorials, and Examples

@RSum (Running Sum) System Function


Description This system function calculates the running sum (cumulative) of a
specified expression, including any prior cumulative.

Note: You must use this system function for summing calculated
variables.
Syntax @RSum (expression)
Where Argument Type Required Description
expression Numeric Yes Expression to be summed
Example In this example, the function returns the cumulative value of an
expression given by a calculated variable:

@RSum (CV.Corrected_MonthlyProd_Oil)

Related Examples
Creating a Hall Plot

236 of 262
User Guides, Tutorials, and Examples

@Sqrt (Square Root) System Function


Description This system function calculates the square root of a specified number.
Syntax @Sqrt (value)
Where Argument Type Required Description
Number to be evaluated, which must
value Numeric Yes
be 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

@Step (Return Last Value if Condition is


True) System Function
Description When a specified condition is True, a stair-step function is created for a
specified expression. This has the effect of creating a continuous
stream of values, where a value remains constant over time until it is
changed by a new data point.

It returns the last value in the expression when the condition is met.
Syntax @Step (value, condition)
Where Argument Type Required Description
value Numeric Yes Variable to be stepped
Example In this example, the function returns the step function when monthly
oil production is greater than 1000:

@Step (MonthlyProd.Oil, MonthlyProd.Oil > 1000)

Related Examples
Creating a Hall Plot

238 of 262
User Guides, Tutorials, and Examples

@TMax (Total Maximum Value) System


Function
Description This system function calculates the maximum value of a specified
numeric expression for all record values, subject to a condition.

Note: Condition = 1 will always evaluate as True.


Syntax @TMax (value, condition)
Where Argument Type Required Description
value Numeric Yes Variable to be evaluated
Criterion to be applied in evaluating
condition True/False Yes
the function
Example In this example, the function returns the monthly oil production
maximum value when the monthly water production maximum value
is also greater than zero:

@TMax (MonthlyProd.Oil, MonthlyProd.Water>0)

Related Examples
Finding the Best Three Months of Production

239 of 262
User Guides, Tutorials, and Examples

@ValueAt (Value of Expression on a Date)


System Function
Description This system function finds the value of a specific numeric expression
at a specified date.

Note: To find the string value of an expression, use the @ValueAtStr


(String Value on a Date) system function.
Syntax @ValueAt (expression, date)
Where Argument Type Required Description
expression Numeric Yes Parameter to be evaluated
Date at which the value of expression
is required
date Date Yes
Note: OFM requires dates to be
entered in YYYYMMDD format.
Example In this example, the function returns the monthly oil production for
August 31, 1981:

@ValueAt (MonthlyProd.Oil, 19810831)

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

240 of 262
User Guides, Tutorials, and Examples

Using the Sample Workspaces


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

This folder... Has workspaces used in...


2 Keyed Demo Database Sample Workspace: Workspaces with Multiple Keys
3 Keyed Demo Database Sample Workspace: Workspaces with Multiple Keys
Demo Workspace Tutorial: PVT

Tutorial: Creating and Editing Plots

Tutorial: Auditing Plots

Tutorial: Bubble Map

Tutorial: Grid Map

Tutorial: Contour Map

Tutorial: Scatter Plot

Tutorial: Surface Map

Tutorial: Map XY Plot

Tutorial: Date-Based Report

Tutorial: Summary Report

Tutorial: Single Well Log Display

Tutorial: Multi-Well Log Display

Tutorial: Log Cross-Section

Tutorial: Single Phase Analysis

Tutorial: Ratio Analysis

Tutorial: Wellbore Diagram

Example: Adding New Well Symbols

Example: Calculating Pressure from P/Z and Production Data

Example: Displaying Formation or Reservoir Thickness and Structure

Example: Fitting a Polynomial Curve Through Plot Data and


Displaying Its Equation

Example: Calculating Average Production for N Months

Example: Finding the Best Three Months of Production

Example: Finding the Monthly Average Value for Sporadic Data

241 of 262
User Guides, Tutorials, and Examples

Example: Controlling Bubble Map Display Using Data Ranges

Example: Using .Las Log Data


Duson Gas Field Sample Tutorial: Pressure/Z-factor Analysis
Illustrative Databases > CPS File Sample Workspace: CPS-3 Grid File
Sample
Illustrative Databases > Cross Sample Workspace: Cross Section
Sections
Illustrative Databases > Forecast
Schedule Example
Illustrative Databases > Multiply Sample Workspace: Multiply By Factor
By Factor
Illustrative Databases > Sample Workspace: Normalization
Normalization
Illustrative Databases > Stacked Sample Workspace: Stacked Plots
Graphs
Illustrative Databases > Well Tutorial: Flow After Flow Test
Deliverability Analysis
Tutorial: Well Deliverability Analysis
Multiple Project Sample Sample Workspace: Multiple Projects
PDS Example Sample Workspace: Foreign Keys
PI Dwights Sample Files Sample Workspace: Defining a Workspace with PI/Dwights Production
Files
Pilot Waterflood Sample Tutorial: Patterns

Example: Creating a Formation Damage Indicator

Example: Creating a Water Breakthrough Diagnostic (Chan) Plot

Example: Creating a Hall Plot

Example: Creating an After-Before-Compare (ABC) Plot

Example: Creating Plots for Waterflooding Surveillance

Example: Estimating OOIP Using Grid Arithmetic

Example: Estimating and Displaying Drainage Radius


Provo Training Dataset Schlumberger's OFM training courses
User Function Sample

242 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Workspaces with


Multiple Keys
Your workspace can have multiple keys. There are two sample workspaces that show this: one with two
keys, and one with three keys.

1. View the sample workspace with two keys:

a. In the OFM installation folder, open this workspace: ...Sample Workspaces\2 Keyed Demo
Database\2 Keyed Demo Database.ofm

b. On the Setup tab, in the Tables group, click Schema.


The Edit Schema Tables window opens.

c. On the OFM Representation pane, select the HEADERID table, which is the master table.

d. View the Master tab.


The Table Key(s) section lists two table keys. In the Key Delimiters section, the selected
delimiter is a colon (:).

e. Click OK to close the window.

2. View the sample workspace with three keys:

a. In the OFM installation folder, open this workspace:...Sample Workspaces\3 Keyed Demo
Database\3 Keyed Demo Database.ofm

b. On the Setup tab, in the Tables group, click Schema.


The Edit Schema Tables window opens.

c. On the OFM Representation pane, select the HEADERID table, which is the master table.

d. View the Master tab.


The Table Key(s) section lists three table keys. In the Key Delimiters section, the selected
delimiters are colons (:).

e. Click OK to close the window.

243 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Foreign Keys


A foreign key is a table that allows you to cross reference from one table to another. One sample workspace
has many foreign keys for you to view.

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\PDS
Example\PDSExample.ofm.

2. View the tables in the workspace. On the Setup tab, in the Tables group, click Schema.
The Edit Schema Tables window opens.

3. Foreign keys can use fields in the master table. Look at the tLease table to see how this is done:

a. View the OFM Representation pane, and notice that the master table (marked with the

icon) is the xy table.

b. On the OFM Representation pane, expand the xy table. Notice that LeaseID is one field in the
xy table. The xy table identifies lease ID numbers.

c. The project also has a table for lease information. On the OFM Representation pane, click the
tLease table.

d. On the right, view the Table tab. Notice that the tLease table uses the LeaseID field in the xy
table. The OFM Definition section has the following selections:

Key Type: Foreign

Foreign: xy.LeaseID

e. Look at the fields in the tLease table. On the OFM Representation pane, expand tLease.
Two fields are listed under tLease:

The primary key field (marked with the icon) is LeaseID.

The second field (marked with the icon) is Lease Name.

The lease names in the tLease table are referenced with the lease ID numbers in the xy table.

4. Foreign keys also can use fields that are not in the master table. Look at the tMonthlyProduction
table to see how this is done:

a. On the OFM Representation pane, expand the tWellProd table. Notice that WellID is one field
in the tWellProd table. The tWellProd table identifies well ID numbers.

b. The well ID numbers are used in the monthly production table. On the On the OFM
Representation pane, click the tMonthlyProduction table.

c. On the right, view the Table tab. Notice that the tMonthlyProduction table uses the
ProductionID field in the tWellProd table. The OFM Definition section has the following
selections:

Key Type: Foreign

244 of 262
User Guides, Tutorials, and Examples

Foreign: tWellProd.ProductionID

d. Look at the fields in the tWellProd table. On the OFM Representation pane, expand
tWellProd.
Two fields are listed under tWellProd:

The primary key field (marked with the icon) is WellID.

The second field (marked with the icon) is ProductionID.

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

245 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Multiply By Factor


The Multiply By Factor sample workspace shows the effect of using the Multiply By Factor with monthly and
daily data, for static and dynamic factors.

1. Open the Multiply By Factor sample workspace. It is in the OFM installation folder, at ...Sample
Workspaces\Illustrative Databases\Multiply By Factor\Multiply By Factor.ofm.

2. This project does not use the Multiply By Factor yet. Create a report that will show how the Multiply
By Factor works with monthly data:

a. On the Home tab, in the Launch analysis group, click Report.


The Edit Report window opens.

b. In the Select text box at the top of the window, enter: Date, Monthly_prod.Gas, Monthly_
prod.Oil, Monthly_prod.Water, Static_factor.Rate, Monthly_factor.Rate

c. Click OK to close the window and display the report.

d. On the Navigation pane, select Well_001.

e. Notice the values in the first row:

Monthly gas production is 500.

Monthly oil production is 1000.

Monthly water production is 1000.

3. Apply the Multiply By Factor to see the monthly data using a static factor:

a. On the Workspace tab, click Options.


The Options window opens.

b. On the Multiply By Factor tab, select Enable factor multiplication.


The Static and Dynamic selections become available.

c. Select Static and then select Static_factor.Rate.

d. Click OK to save your selections and close the window.

e. Notice that the report displays data that has been multiplied by 0.1 (the factor displayed in the
Static_Factor Rate column).

Monthly gas production is 50.

Monthly oil production is 100.

Monthly water production is 100.

4. Remove the Multiply By Factor to see the original values in the report:

246 of 262
User Guides, Tutorials, and Examples

a. On the Workspace tab, click Options.

b. On the Multiply By Factor tab, clear the Enable factor multiplication check box.

c. Click OK.

d. Notice the values in row 37:

Monthly gas production is 650.

Monthly oil production is 850.

Monthly water production is 1250.

5. Change the Multiply By Factor to see the monthly data using a dynamic factor:

a. On the Workspace tab, click Options.

b. On the Multiply By Factor tab, select Dynamic and then select Monthly_Factor.Rate.

c. Click OK to save your changes and close the window.

d. Notice that the report displays data that OFM multiplied by the Monthly Factor Rate (displayed in
the last column). On row 37:

Monthly gas production is 130.

Monthly oil production is 170.

Monthly water production is 250.

6. You now are finished with the monthly report, and will create a daily report.

a. On the Analysis pane, right-click the report you created and then click Rename.

b. Type Monthly Report and then press Enter.

c. Close the monthly report.

d. On the Workspace tab, click Options.

e. On the Multiply By Factor tab, clear the Enable factor multiplication check box and then
click OK.

7. Create a report that will show how the Multiply By Factor works with daily data:

a. On the Home tab, in the Launch analysis group, click Report.


The Edit Report window opens.

b. In the Select text box at the top of the window, enter: Date, Daily_prod.Gas, Daily_
prod.Water, Daily_prod.Oil, Daily_factor.Rate, Static_factor.Rate

c. Click OK to close the window and display the report.

d. Notice the values in the report, which are the same in every row:

Daily gas production is 20.

Daily water production is 30.

247 of 262
User Guides, Tutorials, and Examples

Daily oil production is 30.

8. Apply the Multiply By Factor to see the daily data using a static factor:

a. On the Workspace tab, click Options.

b. Select the Enable factor multiplication check box.

c. Select Static and then select Static_factor.Rate.

d. Click OK.

e. Notice that the report displays data that OFM multiplied by 0.1 (the static factor rate).

Daily gas production is 2.

Daily water production is 3.

Daily oil production is 3.

9. Change the Multiply By Factor to see the daily data using a dynamic factor:

a. On the Workspace tab, click Options.

b. Select Dynamic and then select Daily_factor.Rate.

c. Click OK.

d. Notice that OFM multiplied the values in the report by the daily factor rate (in the Daily_Factor
Rate column).

248 of 262
User Guides, Tutorials, and Examples

Sample Workspace: CPS-3 Grid File


You can import grid files from CPS-3 (Contour Plotting System) instead of computing the grids within OFM.
The OFM installation folder has a sample CPS-3 file. It is with the sample workspaces.

Example Grid Map Before Importing the CPS-3 File:

249 of 262
User Guides, Tutorials, and Examples

Example Grid Map After Importing the CPS-3 File:

1. With any grid map open, on the Format tab, in the Utilities group, click Open Analysis > Import
CPS.

2. Navigate to the OFM installation folder and select...Sample Workspaces\Illustrative Databases\CPS


File Sample\CPS Sample.grd.

3. Click Open.

250 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Cross Section


There are two sample workspaces that show cross sections. The workspaces are identical, except the data
for reference depth, surveys, markers, and wellbore diagram equipment are in feet in the English
(Imperial) workspace, and they are in meters in the metric workspace.

1. Open the English or metric sample workspace. They are in the OFM installation folder, at ...Sample
Workspaces\Illustrative Databases\Cross Sections\Cross Section Illustration - English.ofm or \Cross
Section Illustration - Metric.ofm.

2. View the units used for the workspace:

a. On the Workspace tab, click Options.

b. On the Units tab, if you opened the English project the Use Metric Units check box is cleared.
If you opened the Metric project, the check box is selected.

3. On the Analysis pane, double-click the Cross Section analysis to view the graphical display of the
cross section, and Log Report to view actual values.

4. Note that there are three completions (1, 2, and 3) and two intervals (A and B).

True
Measured
Vertical Interval Interval Interval Interval Reference
Completion Depth
Depth A, Top A, Bottom B, Top B, Bottom Depth
(MD)
(TVD)
1 1000 1000 700 800 900 1000 0
2 2000 1000 1400 1600 1800 2000 500
3 3000 1000 2100 2400 2700 3000 1000

Each well is perforated completely through the A interval and the B interval. The upper set of perfs
are abandoned, the bottom set are open.(This doesn't reflect reality, but it shows two different
ways of drawing perfs.)

5. When you display the cross section in TVD, all the intervals and wells are the same length. To display
it in TVD, on the Property pane change Show True Vertical Depth to Yes. To return to MD,
change Show True Vertical Depth to No.

6. When you display the cross section at subsea, the intervals will still be the same length, but they will
be at different subsea depths. To display at subsea, on the Property pane change Depth
Correction to Sub Sea.

7. You can show a stratigraphic cross section at MD or TVD. On the Property pane change Depth
Correction to Stratigraphic. When you do this, you can select which Stratigraphic Marker to
view.

251 of 262
User Guides, Tutorials, and Examples

8. You add markers on single or multi-well log displays, but you can show or hide them on the cross
section. To do this, on the Format tab, in the Display group, select Left Marker (to display the
marker to the left of the well) or Right Marker (to display it to the right of the well).

9. You add perforations to the wellbore diagram, but you can show or hide them on the cross section.
On the Property pane, change Show Perfs to Yes or No.

10. Cross sections also can have lithology intervals. This sample workspace has two (Interval A and
Interval B).

a. On the Format tab, in the Edit group, click Interval.


The Edit Interval window opens. It displays the lithology of Interval A, which is sandstone.

b. On the Name field, select B.


The Lithology displays. It is Limestone.

c. Click Close to close the window.

d. To show or hide the lithology intervals, on the Property pane change Show Litho Intervals
to Yes or No.

252 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Defining a Workspace


with PI/Dwights Production Files
In the OFM installation folder are PI/Dwights production files you can use to create a sample workspace.

1. On the Workspace tab, click New.


The New OFM Workspace window opens.

2. In the How do you want to define your project group, select Create it from the data source
specified below.

3. In the Data Source field, select PI/Dwights DMP2 Production file.

4. On the Workspace File field, click Browse (...) and navigate to the correct location for your new
sample workspace.

5. In the File name field, enter the name of your new project and then click OK.
The Workspace File and Database fields populate. By default, OFM gives the workspace and
database files the same name and location.

6. Select Prompt for Project Filter to limit the number of completions used during an OFM session.

7. Click OK.
The PI/Dwights Production File Loader window opens.

8. Navigate to the sample PI Dwights files. They are in the OFM installation folder, at ...Sample
Workspaces\PI Dwights Sample Files.

9. Select etx_dmp2.dp2 file and then click Open.


The PI/D Import wizard opens. This panel has five panels.

10. Complete each panel of the wizard as follows, and click next to advance to the next panel:

a. Choose how OFM creates well names. Select Prod ID and then click Next.

b. Select the wells. By default, OFM selects all wells. Click Next.

c. Select the information for sort categories. Click Next.

d. Select well test items. Gas tests is selected. Click Next.

e. Select the monthly production/injection data.

f. Click Finish.
The new workspace opens. You now are ready to add the other PI/Dwights production files.

11. On the Setup tab, in the Import/Export group, click Import > Data Loader.

12. In the top section, double-click each of the PI/Dwights sample files except etx_dmp2.dp2 and
vssver.scc.

13. Click Load.

253 of 262
User Guides, Tutorials, and Examples

A warning message confirms your choice.

14. On the warning message, click OK.

254 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Multiple Projects


An OFM workspace can have links that open other OFM workspaces.

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Multiple
Project Sample\Multiple Project Sample.ofm.

2. Notice that the base map shows three items that look like completions but are actually links that
open three different workspaces:

n BFIELD WATERFLOOD

n DUSON GAS FIELD

n DEMO OIL FIELD

3. Use the links to open other workspaces:

a. On the base map, click BField Waterflood, right-click, and then click To Project.
The base map changes. You are now in the Pilot Waterflood Bfield.ofm workspace. The
workspace name displays at the top of the OFM window.

b. On the base map, right-click and then click Previous Project.


The base map changes. You are now in the Multiple Project Sample.ofm workspace.

c. On the base map, click Duson Gas Field, right-click, and then click To Project.
You are now in the Duson Gas Field.ofm workspace.

d. On the base map, right-click and then click Previous Project to return to the original
workspace.

4. View the table that holds the links to the other workspaces:

a. On the Setup tab, in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

b. Select the XY table and then click OK.


The XY table opens.

c. Notice that the table has a column named FIELD that lists the three items displayed on the base
map as completions. For each item, the LOCATION column has a relative path to OFM projects.

BFIELD_WATERFLOOD is at ...\Pilot Waterflood Sample\Pilot Waterflood Bfield.ofm.

DEMO_OIL _FIELD is at ...\Demo Database\Demo2009.ofm.

DUSON_GAS_FIELD is at ...\Duson Gas Field Sample\Duson Gas Field.ofm.

5. With this information in the XY table, the workspace can have an association to it.

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


The Associations window opens.

255 of 262
User Guides, Tutorials, and Examples

b. Notice that in the Project field, it is associated with the LOCATION field on the XY table
(XY.LOCATION).

c. Click OK to close the Associations window.

256 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Normalization


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

Before Normalization:

After Normalization

257 of 262
User Guides, Tutorials, and Examples

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative
Databases\Normalization\Normalization.ofm.

2. If OFM does not list a plot in the Analysis pane, create a plot:

a. On the Home tab, in the Launch analysis group, click Plot.


The Edit Plot window opens. You will add three rows to the table in the middle of the window.

b. On the first row, make these selections:

Variables: Monthly_prod.Oil

Category: Completion

Name: Well_001

c. Click Add Curve to add a second row.

d. On the second row, make these selections:

Variables: Monthly_prod.Oil

Category: Completion

Name: Well_002

e. Click Add Curve to add a third row.

f. On the third row, make these selections:

Variables: Monthly_prod.Oil

Category: Completion

Name: Well_003

g. Click OK to close the window and display the plot.


The plot shows the three wells. Each well starts and ends on a different date.

3. Normalize (time-shift) the tables:

a. On the Workspace tab, click Options.


The Options window opens.

b. On the Normalize Tables tab, select Enable Normalize Tables.

c. In the Starting Condition field, select InitialProdMonth.

d. For Date Option, select Earliest or Latest.

e. Click OK to close the Options window and see the normalized plot.
The date option affects the date to which production for all of the wells is shifted.

258 of 262
User Guides, Tutorials, and Examples

Sample Workspace: Stacked Plots


There is a sample workspace that shows the effect of stacking sporadic data with the carry forward and
interpolate methods, using the sum, average, and percent contribution displays.

1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative
Databases\Stacked Graphs\Stacked Graph Illustration.ofm.

2. This workspace has two completions with sporadic data in a table named Prod. View this table:

a. On the Setup tab, in the Tables group, click Data Grid.


The Select OFM Table to Edit window opens.

b. Select Prod.

c. Select the Edit all records check box.

d. Click OK.
The Prod table opens and displays this sporadic data:

UniqueID Date Val2 Val1


one 01/01/1990 1 1
one 01/01/1991 3 3
one 01/01/1992 5 5
one 01/01/1993 7 7
two 01/01/1990 2 2
two 01/01/1991 4 4
two 01/01/1991 6 6
two 01/01/1993 8 8

e. Close the table.

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

a. On the Analysis pane, right-click My Analysis and then click Open > Plot.

b. In the OFM installation folder that has this workspace, select the four .grf files and then click OK.
Four plots open and OFM adds them to the workspace.

Stacked plots are not difficult to make when data is nicely columnar. When data is sporadic,
the task needs more effort. Yet in OFM, we often want to plot sporadic data for more than one
well. For example, we might want to plot oil rate versus gas rate for a series of wells. Each of
these curves are easy to make independently. If you stacked this data in Excel, you would get
a series of filled-in jagged lines, unless you did some manipulation to put the data into
columns. OFM does that manipulation for you.

OFM starts with the first curve in the list. It then compares the X values in the next curve with
those in the first. If the X values match exactly, the stacked value is simply the sum of the first

259 of 262
User Guides, Tutorials, and Examples

and second curve. If it doesn't, there are two choices. OFM will either carry forward the last
value of the first curve, or it will interpolate between values in the first curve that bound the X
value in the second curve. Carry forward allows the first curve's value to be carried forward
even if the data in the second curve falls beyond that of the first curve; interpolate doesn't do
that.

4. View the Regular, Stacked, Percent Contribution plot.


Each graph on this plot has Date for the X-axis and shows Prod.Val1 and Prod.Val2 on the Y-axis.

a. Click the upper graph.


This is a regular display. On the Format tab, in the Display group, the Regular button is
selected.

b. Click the middle graph.


This is a stacked display. On the Format tab, in the Display group, the Stacked button is
selected.

c. Click Regular to see the stacked display change to a regular display, and then click Stacked
again to return to the original display.

d. Click the curve in the middle graph.

e. On the Property pane, under Axis, the Method is Interpolation.


When the Interpolation method is selected for a stacked plot and a discrete data point is
missing, OFM linearly interpolates a value between the data points on either side of the missing
value.

f. Click the lower graph.


This is a percent contribution display. On the Format tab, in the Display group, the Percent
button is selected.

Interpolated plots might be the best choice when you are stacking instantaneous data, such as
rates. In this case, you might be able to assume that the rate between two points is the average of
the rate that came before and the rate that came after. You could use carry forward plots for
stacking volumes, especially if you want cumulative graphs, since with carry forward each curve's
last point is carried forward to the end, to be included in the total.

5. View the Carryforward with Sum and Average plot.


Each graph on this plot has Prod.Val1 for the X-axis and shows Prod.Val2 on the Y-axis.

a. Click the upper graph.


This is a regular display. On the Format tab, in the Display group, the Regular button is
selected.

b. Click the green curve.

c. On the Property pane, under Curve Properties, Step line between values is set to Yes.
Change it to No to see the graph without steps, and then change it back to Yes.

d. The middle graph uses the carry forward method in a sum display. The lower graph uses the
carry forward method in an average display. When the carry forward method is used in sum or

260 of 262
User Guides, Tutorials, and Examples

average displays, OFM carries the value of the last discrete data point on the curve that is being
summed or averaged to the end of the data set.

6. View the Interpolate with Sum and Average plot.


Like the previous plot, each graph on this plot has Prod.Val1 for the X-axis, and shows Prod.Val2 on
the Y-axis. For interpolated plots in a sum or average display, OFM does not interpolate beyond the
last discrete data point for a curve in the data set.

7. View the Stacked with Interpolate and Carryforward plot.


Like the previous two plots, each graph on this plot has Prod.Val1 for the X-axis and shows Prod.Val2
on the Y-axis. With a stacked display:

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

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

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

261 of 262