UserGuides Tutorials Examples OFM 2014 PDF
UserGuides Tutorials Examples OFM 2014 PDF
UserGuides Tutorials Examples OFM 2014 PDF
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.
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
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 Variable Editor
l OFM Settings
l Workspace Managers
l Categories
l PVT
l Filtering
l Base Map
l GIS Map
l Maps
l Analytical Maps
l Bubble Maps
l Scatter Plots
l Map XY Plots
l Plots
l Forecasts
l Reports
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 Variable Editor
l OFM Settings
l Workspace Managers
l Categories
l PVT
l Filtering
l Base Map
l GIS Map
l Maps
l Analytical Maps
l Bubble Maps
l Scatter Plots
l Map XY Plots
l Plots
l Forecasts
l Reports
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.
n Watch in English
n Watch in Russian
n Watch in Spanish
n Watch in English
n Watch in Russian
n Watch in Spanish
n Watch in English
n Watch in Russian
n Watch in Spanish
6 of 262
User Guides, Tutorials, and Examples
n Patterns
n Plots:
n Reports:
n Date-Based Report
n Summary Report
n Display Logs:
n Log Cross-Section
n PVT
n Forecasts:
n Ratio Analysis
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.
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.
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.
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.
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.
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 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.
7. On the base map, press Ctrl and select another five wells to create another pattern.
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:
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.
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.
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.
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.
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.
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.
5. On the Property pane, under Columns, change the Break when this column changes field to
Yes.
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.
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.
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.
d. On the Math tab, make sure the Multiply by Factor 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
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.
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).
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.
8. Step by patterns:
b. On the Navigation pane, on the field at the top, change the step to PATTERN: Tutorial.
13 of 262
User Guides, Tutorials, and Examples
2. Below the main area of the window, click the Add Multiple Curves button.
The Add Multiple Curves window opens.
*Label Pattern
*Set Tutorial
*Pattern "P-0"
*Date 19000101
*Pattern "P-1"
*Date 19000101
14 of 262
User Guides, Tutorials, and Examples
*Pattern "P-2"
*Date 19000101
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.
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).
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.
1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
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.
10. On the Oil Correlations tab, for the Formation Volume Factor, Bo correlation, select Vasquez
and Beggs.
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.
13. In the PVT_Region column (on the far right), enter the following information:
17 of 262
User Guides, Tutorials, and Examples
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.
1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Calculated Variables window opens.
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.
7. In the Report Width Decimals column, for the FVF row, select 3.
8. Click OK.
18 of 262
User Guides, Tutorials, and Examples
1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
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.
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.
19 of 262
User Guides, Tutorials, and Examples
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.
1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
20 of 262
User Guides, Tutorials, and Examples
5. In the table, click the first cell in the Variables column and then select Monthlyprod.Oil.
7. Click the new cell in the Variables column and then select Monthlyprod.Gas.
8. Click OK.
The plot (with default features) opens.
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.
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.
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.
1. Create a new plot: On the Home tab, in the Launch analysis group, click Plot.
The Edit Plot window opens.
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:
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.
c. Click the cell on the first row, in the Variables column, and then select Monthlyprod.Oil as the
Y-axis variable.
c. Click the cell on the first row, in the Variables column, and then select Water.Cut as the Y-
axis variable.
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.
1. Create a new plot: On the Home tab, in the Launch analysis group, click Plot.
The Edit Plot 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.
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.
8. On the Navigation pane, select other completions to see how the dynamic portion of the header
changes.
1. Create a new plot: On the Home tab, in the Launch analysis group, click Plot.
The Edit Plot window opens.
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.
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.
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.
25 of 262
User Guides, Tutorials, and Examples
26 of 262
User Guides, Tutorials, and Examples
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.
4. In the table, click the first cell in the Variables column and then select Monthlyprod.Oil.
6. Click the new cell in the Variables column and then select Monthlyprod.Gas.
7. Click OK.
The plot opens.
27 of 262
User Guides, Tutorials, and Examples
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.
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.
28 of 262
User Guides, Tutorials, and Examples
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
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:
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.
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 ( ).
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.
2. You can edit the attributes of the report on the Property pane.
31 of 262
User Guides, Tutorials, and Examples
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.
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.
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.
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).
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).
1. You set the color and shape on the Property pane. Under Data, view the Attributes section.
4. Set Color to 6.
OFM reduces the color scale to six colors.
33 of 262
User Guides, Tutorials, and Examples
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.
34 of 262
User Guides, Tutorials, and Examples
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.
1. On the Format tab, in the Display group, select Enable Shape Moves.
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.
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.
4. Click Save.
The bubble map is saved as a bubble map (.bub) file.
36 of 262
User Guides, Tutorials, and Examples
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.
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.
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.
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).
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).
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.
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.
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. (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.
1. On the Format tab, in the Control Point Utilities group, click Add.
The Control Point Value window opens.
3. Inside the grid area of your map, south of wells O-33 and G-15, click three points.
5. To use or disable the control points, on the Format tab, in the Control Point Utilities group, select
or clear Use.
1. On the Format tab, in the Utilities group, select Save Analysis > Create Map Snapshot.
The Create Map Snapshot window opens.
41 of 262
User Guides, Tutorials, and Examples
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.
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.
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.
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).
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).
1. On the Property pane, under Properties, expand the Color Scale section.
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.
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.
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.
1. On the Format tab, in the Control Point Utilities group, click Add.
The Control Point Value window opens.
3. In the northeast corner of the map, within the grid area, click a point.
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.
46 of 262
User Guides, Tutorials, and Examples
4. Click Next.
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.
9. Select Finish.
The scatter plot will display.
47 of 262
User Guides, Tutorials, and Examples
2. Click Add.
6. Select Trackable.
8. Click OK.
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.
2. Click Save.
3. Name the scatter set (.set) file Liquids and then click Save.
7. Click OK.
The scatter plot displays.
2. Click Add.
8. Click OK.
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.
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.
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.
5. On the Font Style list, select Bold and then click OK.
6. Click OK.
The plot displays with the new header.
1. On the Format tab, in the Animation Utilities group, click Animate Settings.
The Animate Settings window opens.
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
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.
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.
3. At the top of the Filter pane, click Invert Filter to filter to the wells that do not have deviation
4. On the Home tab, in the Launch analysis group, click Surface Map.
The Create Surface Map window opens.
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.
52 of 262
User Guides, Tutorials, and Examples
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.
53 of 262
User Guides, Tutorials, and Examples
54 of 262
User Guides, Tutorials, and Examples
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.
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.
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.
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.
1. On the Format tab, in the Display group, select Enable Shape Moves.
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
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.
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.
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.
1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
58 of 262
User Guides, Tutorials, and Examples
4. Click OK.
The report opens.
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.
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.
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.
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.
2. Click the cell in the first row, in the Right Aligned column, and type "."
5. Click OK.
The report header has a new line with todays date.
2. On the Property pane, under Columns, expand Current Column and then expand Column
Attributes.
2. Navigate to the folder where you want to save the template file.
60 of 262
User Guides, Tutorials, and Examples
4. Click Save to save a copy of the report attributes (not the report content) as an .rpt file.
2. With the report is open, on the Format tab, in the Utilities group, click Open Analysis.
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.
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).
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
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.
8. In the Access Fields column, click Field1 (on the same row as @Name() in the OFM Columns
column).
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:
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
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
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.
3. In the Select text box, enter this: @Name(), Date, Oil.Cum, Gas.Cum
4. Click OK.
The report opens.
1. On the Format tab, in the Edit group, click Date & Sort.
The Edit Report Attributes window opens.
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.
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.
65 of 262
User Guides, Tutorials, and Examples
5. Add a cutoff
8. Add comments
2. On the Home tab, in the Launch analysis group, click Single Well Log.
The Set Depth Range window opens.
5. Click OK.
The single-well log display template opens, showing placeholders for two traces on each of two
tracks.
66 of 262
User Guides, Tutorials, and Examples
3. Click OK.
The log displays.
6. Click OK.
The log displays.
4. Click OK.
The track displays with a logarithmic scale.
7. Click OK.
The log displays.
67 of 262
User Guides, Tutorials, and Examples
4. Click OK.
The log display shows the new track.
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).
4. Click OK.
Note the effect of the cutoff.
3. Select Up.
4. Click OK.
The log display shows the upward shift of 20 feet.
68 of 262
User Guides, Tutorials, and Examples
Adding Comments
1. On the Property pane, set Show Depth Shift to No.
4. In the Comment field, enter Hole Washout and then click Save.
The text displays in the Comment track.
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
2. On the Filter pane, click Clear Filter to remove any previously-applied filters.
4. Select LOGD.
Only wells with log data display on the base map.
70 of 262
User Guides, Tutorials, and Examples
5. Click OK.
The well data displays.
8. Click OK.
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.
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.
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.
15. On the Trace Attributes tab, in the Color field, select Blue and then click OK.
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
7. Click OK.
The multi-well log displays.
2. At the top of the first track, double-click the well name (BLUE_1).
The Edit (single) Multi-Well Log window opens.
4. Click OK.
2. Select MD.
3. Select Default.
5. Click OK.
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.
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
1. Create a cross-section
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.
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.
9. Click OK
The cross-section opens.
10. On the Workspace tab, click Save Workspace to save your work.
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. Click OK.
The log display displays data within the given range.
75 of 262
User Guides, Tutorials, and Examples
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.
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.
1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
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.
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.)
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
1. On the Format tab, in the Edit group, select Limit > Range.
The Data Range window opens.
5. Click OK.
OFM fits the line through only the data points in the date range.
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
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.
Digitizing Points
This choice may be valuable if the real data is sparse, noisy, or not trustworthy.
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.
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.
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.
80 of 262
User Guides, Tutorials, and Examples
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.
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.
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.
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
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.
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.
8. Set up the forecast: All forecast settings for Ratio forecasts are done on the Property pane.
1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
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.
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.)
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
1. On the Format tab, in the Edit group, select Limit > Range.
The Data Range window opens.
5. Click OK.
OFM fits the line though only the data points in which the cumulative oil exceeds 73 Mbbl.
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.
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.
84 of 262
User Guides, Tutorials, and Examples
OFM removes data points with a water-oil ratio that is less than 70 bbl/bbl.
Digitizing Points
This choice may be valuable if the real data is sparse, noisy, or not trustworthy.
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.
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.
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.
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.
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
The method requires two variables: (Cumulative) gas production; and a value for pressure (P) divided by
the gas deviation factor (Z).
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.
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.
87 of 262
User Guides, Tutorials, and Examples
3. Click OK.
OFM removes the DAIGLE_1:SU_V completion from the list of selected completions.
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
1. On the Format tab, in the Edit group, select Limit > Range.
5. Click OK.
OFM fits the line though only data points in which the cumulative gas for the group is greater than
12 Bcf.
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.
2. Press Ctrl and click to add your own, independent data points on the graph.
The data points display as magenta triangles.
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.
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.
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
n Flowing time for each flowing period may or may not be the same
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.
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.
93 of 262
User Guides, Tutorials, and Examples
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)
Typically four or more tests are conducted to establish a trend in the plot.
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.
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
6. Control fit parameters: In addition to selecting data points for analysis, you can also control how OFM
performs the fit process.
94 of 262
User Guides, Tutorials, and Examples
n Time (Date)
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.)
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.
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. 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
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.
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.
97 of 262
User Guides, Tutorials, and Examples
After you find the correct well, creating the wellbore diagram involves multiple steps:
2. On the Home tab, in the Launch analysis group, click Well Diagram.
A blank wellbore diagram opens.
5. On the list of completions, select Green 7:Ad 2D and then click OK.
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
3. Click Apply.
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.
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.
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
3. Click Apply.
99 of 262
User Guides, Tutorials, and Examples
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.
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
n Top: 000.00
n Bottom: 3850.00
n Size: 10.75
n Top: 3850.00
n Bottom: 9000.00
n Size: 8.50
5. Click Apply.
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
101 of 262
User Guides, Tutorials, and Examples
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.
n Creating new tables and fields from the Edit Schema Tables window, and entering data in the Data
Grid
n Creating plots with multiple curves, and changing the properties of those curves
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
102 of 262
User Guides, Tutorials, and Examples
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
n Creating scatter plots, adding cross hairs, and adjusting the X and Y variable minimum and
maximum values
103 of 262
User Guides, Tutorials, and Examples
n Creating new tables and populating them with a data (.dat) file you create and load
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
104 of 262
User Guides, Tutorials, and Examples
n Creating reports
n Animating maps
n Using the @Dom, @CFirst, @ElapsedMonths, @Fit, and @FitEq system functions
105 of 262
User Guides, Tutorials, and Examples
n Creating bubble maps and changing the plot size and color scale
n Adding a shapefile
n Adding a shapefile
106 of 262
User Guides, Tutorials, and Examples
107 of 262
User Guides, Tutorials, and Examples
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.
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
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.
108 of 262
User Guides, Tutorials, and Examples
In this case, the ARC command is used, which draws a circular arc:
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:
L draws a line.
109 of 262
User Guides, Tutorials, and Examples
d. Open the WorkspaceDefaults.xml file. This file is language-specific. Look at the one for the
language you use in OFM:
d. Note the row for the first well symbol. It is assigned to the well type "Prospect".
95 96
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
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
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.
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.
7. In the image preview box, scroll to the bottom to view the last two symbols. They are the symbols
you created.
113 of 262
User Guides, Tutorials, and Examples
2. Create a user function to calculate the pressure that corresponds to the P/Z line at any given time.
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:
114 of 262
User Guides, Tutorials, and Examples
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:
7. At the end of one loop pass, a variable increments by 1. The next lines are:
{
loops=loops+1;
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.
Pnew=PZ*Zold;
Znew=@PvtZ(Pnew);
DeltaZ = @abs(Zold-Znew);
115 of 262
User Guides, Tutorials, and Examples
Zold=Znew;
}
Pcalc= Pnew;
Pcalc(PZ)
DeltaZ=1;
Zold=1;
loops=0;
loops=loops+1;
Pnew=PZ*Zold;
Znew=@PVTZ(Pnew);
DeltaZ = @abs(Zold-Znew);
Zold=Znew;
Pcalc= Pnew;
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
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
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.
a. At the top of the window, click Plot to hide the plot attribute columns and click Report to show
the report columns.
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.
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
a. Click Define to hide the definition columns and click Plot to show the plot attribute columns.
3. You will create a plot with two graphs. In the Graph section, set the Number of Graphs to 2.
c. In the curve section, select the Fit.PZ variable, Current category, and BLUE_1:Ge_6 name.
e. For the second curve, select the PZ variable, Current category, and BLUE_1:Ge_6 name.
c. In the curve section, select the Fit.Press_PZ variable, the Current category, and the BLUE_
1:Ge_6 name.
e. For the second curve, select the Monthlyprod.Pressure variable, the Current category, and
the BLUE_1:Ge_6 name.
f. Click OK.
118 of 262
User Guides, Tutorials, and Examples
b. On the Properties pane, under Axis, change the Scale Type to Linear.
119 of 262
User Guides, Tutorials, and Examples
1. Open the sample workspace and review the existing calculated variable for the calculation.
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.
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.
a. On the Format tab, in the Utilities group, click Save Analysis > Save As.
c. In the Name and Description fields, type NetPay and then click OK.
120 of 262
User Guides, Tutorials, and Examples
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.
d. In the Name and Description fields, type Permeability and then click OK.
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.
d. In the Name and Description fields, type LiquidMonthly and then click OK.
2. Click New.
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.
Note: The formation damage parameter is not an absolute calculation. Interpret the map in relative
terms.
121 of 262
User Guides, Tutorials, and Examples
n WOR derivative
Getting Started
Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot
Waterflood Sample\Pilot Waterflood BField.ofm.
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.
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 @Previous system function finds the value of a numeric expression for the record before the
current record.
3. Click OK.
4. Type the name of the calculate variable and then press Enter: WOR_Deriv
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.
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.
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 A true/false condition that excludes any false values from the fit (exclude when the WOR_deriv
value is not greater than zero)
n Options (Order of the fitted polynomial to be 5, and the best value for the logarithm of Y)
4. Click OK.
5. Type the name of the calculate variable and then press Enter: WOR_Deriv_Fit
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.
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.
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.
g. Click OK.
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:
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 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 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:
Point Size: 10
125 of 262
User Guides, Tutorials, and Examples
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
127 of 262
User Guides, Tutorials, and Examples
128 of 262
User Guides, Tutorials, and Examples
129 of 262
User Guides, Tutorials, and Examples
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.
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.
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.
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
@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
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
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.
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.
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.
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:
7. On the Analysis pane, right-click the report and then click Rename.
133 of 262
User Guides, Tutorials, and Examples
You want to find the oil rate value, but for the date three months previously.
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
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
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
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
135 of 262
User Guides, Tutorials, and Examples
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
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.
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
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.
a. On the Properties pane, under Scatter Plot Properties, change the X Variable Minimum
to -1 and the X Variable Maximum to 5.
a. On the Format tab, in the Edit group, click Cross Hair Axis.
The Scatter Plot Origin window opens.
X: 1
Y: 1
Color: Blue
Type: Solid
Width: 5
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.
138 of 262
User Guides, Tutorials, and Examples
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
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.
3. Create a conformance plot. This plot helps characterize injection behavior by comparing production
volumes to injection volumes.
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.
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.
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.
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.
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.
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
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.
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.
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 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
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
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.
b. On the Properties pane, under Axis, on the Axis Label field type Cumulative Water
Injection.
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
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.
4. On the Analysis pane, double-click Recovery Factor versus PVI to open it.
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.
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:
146 of 262
User Guides, Tutorials, and Examples
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.
5. Click OK.
147 of 262
User Guides, Tutorials, and Examples
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.
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
1. Make a copy of the Recovery Factor versus Time plot, and rename it PVI.
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:
150 of 262
User Guides, Tutorials, and Examples
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
2. You need a table and field to hold thickness data. Create the table:
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.
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.
152 of 262
User Guides, Tutorials, and Examples
a. Open Notepad.
*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
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.
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.
a. On the Properties pane, under Properties, in the GRID section make these selections:
Number of Neighbors: 2
b. On the Properties pane, under Properties, in the 2D section make these selections:
Show: Yes
Decimal Places: 0
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
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
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
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
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.
156 of 262
User Guides, Tutorials, and Examples
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.
157 of 262
User Guides, Tutorials, and Examples
4. Click OK.
6. On the plot, click the X-axis. On the Properties pane, under Axis, change the Scale Type to
Linear.
a. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
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
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
a. With the plot open, on the Format tab, in the Edit group, click Variables.
The Edit Plot window opens.
d. Click OK.
159 of 262
User Guides, Tutorials, and Examples
b. Click Add.
d. Click Add.
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
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.
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
2. The workspace has reservoir property data in a table named Resprop. Verify the reservoir property
data:
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).
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.
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.
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
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.
165 of 262
User Guides, Tutorials, and Examples
j. Click OK.
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.
166 of 262
User Guides, Tutorials, and Examples
g. Click OK.
2. If the Equation field is populated with information, click New to create a new calculation.
n Name: OOIP
4. Click Equation.
The Edit Calculated Variable window opens.
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
167 of 262
User Guides, Tutorials, and Examples
9. On the Format tab, in the Utilities group, click Open Analysis > 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
Getting Started
Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
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:
5. The calculation will create several intermediate variables. Define them now:
num LastIndex;
num Count;
Count = 0;
num Total;
Total = 0;
6. The main body of the function involves an iterative loop. It begins as follows:
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;
LastIndex = LastIndex - 1;
if(Value != @Null())
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.
if(Count > 0)
LastNonNullAvgProd = Total/Count;
else
LastNonNullAvgProd = @Null();
num LastIndex;
num Count;
Count = 0;
num Total;
170 of 262
User Guides, Tutorials, and Examples
Total = 0;
num Value;
LastIndex = LastIndex - 1;
if(Value != @Null())
Count = Count + 1;
if(Count > 0)
LastNonNullAvgProd = Total/Count;
else
LastNonNullAvgProd = @Null();
Creating Reports
1. On the Home tab, in the Launch analysis group, click Report.
The Edit Report window opens.
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
3. Click OK.
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
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
The first three calculated variables find the monthly oil production:
Getting Started
Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
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
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
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.
4. Click OK.
5. Type the name of the calculated variable and then press Enter: Max_Oil_3
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
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.
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.
4. Click OK.
5. Type the name of the calculated variable and then press Enter: Date_Max_Oil_2
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.
3. Click OK.
4. Type the name of the calculated variable and then press Enter: Date_Max_Oil_3
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
178 of 262
User Guides, Tutorials, and Examples
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
c. On the right, on the Table tab, note that the Table Type is Sporadic.
e. Note that it holds the test date, and data for gas, oil, and water (as well as other information).
n Completion name
n Test date
n Monthly average
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)))
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
Getting Started
Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
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.
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
2. OFM detects the default Start and End dates based on the data in the project. Use these default
dates.
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
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.
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.
c. In the Macro Settings section, select Enable all macros and then click OK.
a. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
c. Click Logs.
d. Note that the Logs window lists 16 traces. The first one is Acoustic, and the last one is TPhi.
5. View the log data in the .las file that you will import into the OFM project:
~C
184 of 262
User Guides, Tutorials, and Examples
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.
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.
5. In the Input window, enter the Wellbore ID you will use and then click OK: Red_9
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.
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.
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.
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.
n Log: ILM
n Color: Green
n Log: RHOB
n Color: Red
186 of 262
User Guides, Tutorials, and Examples
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:
c. Note that the table has fields for net pay (NET_PAY), porosity (PHI), and residual oil saturation
(SO).
e. Note that the table has a field for water injection (WINJ).
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.
4. Click OK.
187 of 262
User Guides, Tutorials, and Examples
2. You will use two calculated variables that already exist in the project. Double-click the Name column
tosort the list alphabetically by name.
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 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
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.
2. On the list of Project variables, double-click the DrainageRadius calculated variable to move it to
the Selected variables list.
3. Click Finish.
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
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.
a. On the Properties pane, under Properties, change the Color Scale Style to Value Range.
190 of 262
User Guides, Tutorials, and Examples
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.
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
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
b. Click Shapefile.
c. Open the compressed (.zip) file and save all the files in it to your computer.
a. With the GIS map open, on the Format tab, in the Layers group, click Add Layer > Open
Shape File.
3. Improve visibility:
194 of 262
User Guides, Tutorials, and Examples
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.
a. With the GIS map open, on the Format tab, in the Layers group, click Add Layer > Open
Shape File.
3. Improve visibility:
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.
195 of 262
User Guides, Tutorials, and Examples
b. On that page, in the REST URL for ArcGIS Web APIs section, copy the URL to your clipboard.
a. With the GIS map open: On the Format tab, in the Layers group, click Add Layer > Open
Map Server.
b. Select Define.
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:
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.
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
b. On that page, in the REST URL for ArcGIS Web APIs section, copy the URL to your clipboard.
a. With the GIS map open: On the Format tab, in the Layers group, click Add Layer > Open
Map Server.
b. Select Define.
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:
b. On the GIS map, drag a very small square around your city.
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.
197 of 262
User Guides, Tutorials, and Examples
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 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.
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).
198 of 262
User Guides, Tutorials, and Examples
@Annually (Annually)
199 of 262
User Guides, Tutorials, and Examples
@Cos (Cosine)
@Daily (Daily)
@Date (Date)
@Day (Day)
200 of 262
User Guides, Tutorials, and Examples
@Diff (Difference)
@Exp (Exponential)
@Fit (Fit)
201 of 262
User Guides, Tutorials, and Examples
@Hour (Hour)
@If (If)
@Lookup (Lookup)
@Metric (Metric)
@Minute (Minute)
202 of 262
User Guides, Tutorials, and Examples
@Month (Month)
@Monthly (Monthly)
@Null (Null)
@PatWell (PatternWell)
203 of 262
User Guides, Tutorials, and Examples
@Quarterly (Quarterly)
204 of 262
User Guides, Tutorials, and Examples
@Second (Second)
@SemiAnnually (Semi-Annually)
@SubStr (Sub-String)
205 of 262
User Guides, Tutorials, and Examples
@Variance (Variance)
206 of 262
User Guides, Tutorials, and Examples
207 of 262
User Guides, Tutorials, and Examples
@Abs (-9500)
208 of 262
User Guides, Tutorials, and Examples
@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
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:
210 of 262
User Guides, Tutorials, and Examples
@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:
Related Examples
Finding the Average Production for N Months: Creating the User Function
211 of 262
User Guides, Tutorials, and Examples
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
Related Examples
Finding the Monthly Average Value for Sporadic Data: Creating the Report
213 of 262
User Guides, Tutorials, and Examples
Related Examples
Finding the Monthly Average Value for Sporadic Data: Creating the Report
214 of 262
User Guides, Tutorials, and Examples
@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
Related Examples
Creating a Chan Plot: Finding the Number of Elapsed Days
216 of 262
User Guides, Tutorials, and Examples
Related Examples
Drawing a Polynomial Curve on a Plot and Displaying Its Equation: Getting Started
217 of 262
User Guides, Tutorials, and Examples
Related Examples
Creating a Chan Plot: Finding the Number of Elapsed Days
218 of 262
User Guides, Tutorials, and Examples
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
Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation: Fitting a Polynomial Curve
220 of 262
User Guides, Tutorials, and Examples
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
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.
Related Examples
Creating a Water Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)
222 of 262
User Guides, Tutorials, and Examples
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
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.
225 of 262
User Guides, Tutorials, and Examples
@Month (19830409)
Related Examples
Finding the Monthly Average Value for Sporadic Data: Creating the Report
226 of 262
User Guides, Tutorials, and Examples
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.
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
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:
Related Examples
Creating a Water Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)
228 of 262
User Guides, Tutorials, and Examples
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:
Related Examples
Creating a Chan Plot: Finding the WOR Derivative
229 of 262
User Guides, Tutorials, and Examples
@PvtBg(Prd.Pressure)
230 of 262
User Guides, Tutorials, and Examples
@pvtBo(Prd.Pressure)
Related Tutorials
PVT: To Use PVT System Functions
231 of 262
User Guides, Tutorials, and Examples
@pvtBw(Prd.Pressure)
232 of 262
User Guides, Tutorials, and Examples
@PvtRs (Prd.Pressure)
233 of 262
User Guides, Tutorials, and Examples
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
235 of 262
User Guides, Tutorials, and Examples
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 (60)
Related Examples
Viewing the Drainage Radius: Finding the Drainage Radius
237 of 262
User Guides, Tutorials, and Examples
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:
Related Examples
Creating a Hall Plot
238 of 262
User Guides, Tutorials, and Examples
Related Examples
Finding the Best Three Months of Production
239 of 262
User Guides, Tutorials, and Examples
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
241 of 262
User Guides, Tutorials, and Examples
242 of 262
User Guides, Tutorials, and Examples
a. In the OFM installation folder, open this workspace: ...Sample Workspaces\2 Keyed Demo
Database\2 Keyed Demo Database.ofm
c. On the OFM Representation pane, select the HEADERID table, which is the master table.
a. In the OFM installation folder, open this workspace:...Sample Workspaces\3 Keyed Demo
Database\3 Keyed Demo Database.ofm
c. On the OFM Representation pane, select the HEADERID table, which is the master table.
243 of 262
User Guides, Tutorials, and Examples
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
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:
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 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:
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 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
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:
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
3. Apply the Multiply By Factor to see the monthly data using a static factor:
e. Notice that the report displays data that has been multiplied by 0.1 (the factor displayed in the
Static_Factor Rate column).
4. Remove the Multiply By Factor to see the original values in the report:
246 of 262
User Guides, Tutorials, and Examples
b. On the Multiply By Factor tab, clear the Enable factor multiplication check box.
c. Click OK.
5. Change the Multiply By Factor to see the monthly data using a dynamic factor:
b. On the Multiply By Factor tab, select Dynamic and then select Monthly_Factor.Rate.
d. Notice that the report displays data that OFM multiplied by the Monthly Factor Rate (displayed in
the last column). On row 37:
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.
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:
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
d. Notice the values in the report, which are the same in every row:
247 of 262
User Guides, Tutorials, and Examples
8. Apply the Multiply By Factor to see the daily data using a static factor:
d. Click OK.
e. Notice that the report displays data that OFM multiplied by 0.1 (the static factor rate).
9. Change the Multiply By Factor to see the daily data using a dynamic factor:
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
249 of 262
User Guides, Tutorials, and Examples
1. With any grid map open, on the Format tab, in the Utilities group, click Open Analysis > Import
CPS.
3. Click Open.
250 of 262
User Guides, Tutorials, and Examples
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.
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).
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
2. In the How do you want to define your project group, select Create it from the data source
specified below.
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.
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.
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.
253 of 262
User Guides, Tutorials, and Examples
254 of 262
User Guides, Tutorials, and Examples
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
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.
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:
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.
5. With this information in the XY table, the workspace can have an association to it.
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).
256 of 262
User Guides, Tutorials, and Examples
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:
Variables: Monthly_prod.Oil
Category: Completion
Name: Well_001
Variables: Monthly_prod.Oil
Category: Completion
Name: Well_002
Variables: Monthly_prod.Oil
Category: Completion
Name: Well_003
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
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:
b. Select Prod.
d. Click OK.
The Prod table opens and displays this sporadic data:
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.
c. Click Regular to see the stacked display change to a regular display, and then click Stacked
again to return to the original display.
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.
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.
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