UserGuides Tutorials Examples OFM 2014
UserGuides Tutorials Examples OFM 2014
Product Information
Country of Origin: USA
Release Date: August 2014
1 of 262
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
OFM Settings
Workspace Managers
Categories
PVT
Filtering
Base Map
GIS Map
Maps
Analytical Maps
Bubble Maps
Scatter Plots
Map XY Plots
Plots
Forecasts
Reports
2 of 262
Wellbore Diagrams
Creating Calculations
System Functions
References
3 of 262
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
OFM Settings
Workspace Managers
Categories
PVT
Filtering
Base Map
GIS Map
Maps
Analytical Maps
Bubble Maps
Scatter Plots
Map XY Plots
Plots
Forecasts
Reports
4 of 262
Wellbore Diagrams
Creating Calculations
System Functions
References
5 of 262
Videos
Note: When you click any of the links below, the video should play in a new browser window.
Watch in English
Watch in Russian
Watch in Spanish
Watch in English
Watch in Russian
Watch in Spanish
Watch in English
Watch in Russian
Watch in Spanish
6 of 262
Patterns
Plots:
Reports:
n
Date-Based Report
Summary Report
Display Logs:
n
Log Cross-Section
PVT
Forecasts:
Ratio Analysis
Maps:
n
Bubble Maps
Grid Maps
Contour Maps
Scatter Plots
Surface Maps
Map XY Plots
7 of 262
Tutorial: Patterns
You can configure waterflood patterns by assigning completions to a pattern and allocating production and
injection volumes from those completions. Typical pattern configurations look like these:
You must use your judgment and knowledge of the reservoir to assign a realistic fraction of each
completion's production or injection to the block of reservoir beneath the pattern. When you do this, you
can compare performance, surveillance, and the optimization of operations at the pattern level,
considering both injection and production.
In this tutorial, you will:
n
Create patterns interactively: Each pattern has several completions. In this section, you select the
completions for each pattern individually.
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.
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.
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.
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
Compare multiple patterns on a plot: In this section, you create a plot that compares multiple
patterns, applying pattern allocation factors.
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.
Inverted layout:
3. On the Property pane, under Well Name Properties, change the Well Name to Alias Name.
4. On the base map, press Ctrl and click wells 491, 492, 495, 498, and 502.
5. Release the Ctrl key.
The Edit Patterns window opens.
9 of 262
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.
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.
Editing Patterns
After you create patterns, you can change the pattern allocation factors or dates. In this section, you edit
the patterns that you created. There are two ways to change the pattern data. You can change one
pattern at a time, or you can change the pattern data with all sets and all patterns visible.
1. First, view how you can change the pattern data, one pattern at a time:
a. On the Setup tab, in the Workspace Managers group, click Patterns.
The Edit Patterns window opens. Notice that you can navigate to the pattern you want to edit,
by expanding the pattern folder in the left pane.
b. Click OK to close the Edit Patterns window.
2. Now you will change the pattern data with all sets and all patterns visible. On the Setup tab, in the
Tables group, click Data Grid.
The Select OFM Table to Edit window opens.
3. Select the Pattern table and then click OK.
The contents of the Pattern table display, showing all patterns configured in both pattern sets.
4. Scroll to the bottom of the table and find the records for the patterns you created. They are part of
the inverted_five_spot pattern set, and the pattern name is P-0 and P-1.
5. Highlight all records that are not the patterns you created. Ensure the entire rows are highlighted.
Press Delete.
Only the P-0 and P-1 patterns remain.
6. Change the PatternSet names from inverted_five_spot to Tutorial.
7. Change the PatternNames. A common naming convention is to name the pattern after the center
10 of 262
well. Name the first pattern you created (with the default name P-0) P-495.
8. Note the other table columns:
n
Date: This is the effective start date of the pattern allocation factors. This does not have to be
the first date of production or injection. The default date (January 1900) means the allocation
factors are in effect from the beginning of the waterflood, and usually can be left unchanged.
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.
Loss: This is the injectant loss factor. For example, a loss of 0.2 implies that 20% of water
injected is being lost to non-pay zones or outside the pattern area.
The effective factor is the Factor value minus the Loss value. So, instead of setting a Loss, you
can choose to set a lower Factor.
9. Since no single well should be allocated more than 100%, a simple way to set geometric allocation
factors is to sort the table by well. Double-click the Well column heading to sort the table.
10. For each well, do the following:
n
If the well only appears one time, leave the Factor value as 1.
If the well appears two times, change the Factor value for each to 0.5.
If the well appears three times, change the Factor value for each to 0.33
Make sure to click on a different record after making a change, to save the change.
11. When you finish, close the Pattern table.
11 of 262
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.
12 of 262
).
).
).
).
b. On the Navigation pane, on the field at the top, change the step to PATTERN: Tutorial.
c. On the Navigation pane, select the first pattern listed.
This automatically groups the values for the first pattern, with allocation factors applied.
13 of 262
Pattern
Tutorial
*Pattern
*Date
"P-0"
19000101
"491WI:B" 1.000000
0.000000
"492WI:B" 0.500000
0.000000
"495:B" 1.000000
0.000000
"498WI:B" 1.000000
0.000000
"502WI:B" 0.500000
0.000000
*Pattern
*Date
"P-1"
19000101
"492WI:B" 0.500000
0.000000
"493WI:B" 0.500000
0.000000
14 of 262
"496:B" 1.000000
0.000000
"502WI:B" 0.500000
0.000000
"503WI:B" 0.500000
0.000000
*Pattern
*Date
"P-2"
19000101
"493WI:B" 0.500000
0.000000
"494WI:B" 1.000000
0.000000
"497:B" 1.000000
0.000000
"503WI:B" 0.500000
0.000000
"507WI:B" 1.000000
0.000000
well from a pattern at a specific date, change either the pattern allocation factor to zero, or set
the loss factor to 1.0.
4. Save the file with a .pat file extension and then close the text editor.
5. In OFM, on the Setup tab, in the Import/Export group, click Import > Data Loader.
The OFM Data Loader opens.
6. In the upper section, double-click the pattern (.pat) file you created.
The Files to Load section lists the file.
7. Click Load.
A warning message confirms your choice.
8. On the warning message, click OK.
The new patterns are loaded into your project. On the Navigation pane, OFM lists them with the
other patterns. OFM also lists them on the Edit Patterns window. (To see this window, on the
Setup tab, in the Workspace Managers group, click Patterns.)
15 of 262
Tutorial: PVT
For reservoir engineering, you must convert surface oil and gas production volumes to downhole or
reservoir volumes. With those values, the reservoir engineer monitors the performance of the reservoir
relative to the overall depletion strategy. Fluid properties change as reservoir conditions (especially
pressure) change. The PVT module has many industry-accepted correlations that you can use to calculate
an estimated value for a fluid property (such as viscosity).
In this tutorial, you will:
1. Create a PVT entity for each fluid: In this tutorial, you configure your project to produce from two
separate fluid compartments, named Region_A and Region_B. So, you must define the fluid for each
of these compartments. You can create two PVT entities.
2. Map completions to their PVT entity: In this section of the tutorial, you mark which completion
produces from Region_A, and which completion produces from Region_B. This is generally timeindependent information, and so it can be included in a static table. Any static table in the project is
OK. You will use the master table to create a column in which this information will reside.
3. Use PVT system functions: To use the fluid correlation calculations in your work, you can use of a
group of system functions in that relate directly to the PVT functionality. It is OK to call these
functions directly in your eventual calculation, but to make the feature more visible you can create a
calculated variable specifically to return the Formation Volume Factor.
4. Calculate reservoir oil volume: In this section of the tutorial, you make the final calculation.
16 of 262
is controlled by a separate correlation choice on the Oil Correlations tab. Therefore, for this
tutorial, you need do nothing on this tab.
7. Click OK.
8. On the PVT Entity Name window, create a second fluid compartment: Click Add.
9. Enter Region_B as the name and then click OK.
10. On the Oil Correlations tab, for the Formation Volume Factor, Bo correlation, select Vasquez
and Beggs.
11. Click OK.
12. Click Close.
13. On the Workspace tab, click Save to save your work.
17 of 262
18 of 262
19 of 262
20 of 262
21 of 262
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:
22 of 262
c. Click the cell on the first row, in the Variables column, and then select Water.Cut as the Yaxis variable.
8. Click OK.
Notice the layout of the plot. Usually, you will want to set the X-axis variables on the second and
fourth plots to linear.
9. On the plot, click directly on the X-axis scale (the horizontal line).
Handle marks display at both ends and in the middle, confirming that this is the object you want to
adjust.
10. On the Property pane, under Axis, expand Scale.
11. Set Scale Type to Linear.
12. On the Workspace tab, click Save to save your work.
23 of 262
1. With your plot open, on the Format tab, in the Edit group, click Header.
The Headers window opens.
2. Click Add.
OFM inserts a blank row.
3. On the blank row, type "MY COMPANY"and then press Enter. When entering a text string, you must
use quotation marks around the text.
4. Click Add.
OFM inserts another blank row.
5. On the new blank row, type "Completion" + @Loadname () and then press Enter. You must
include the space immediately after the word completion for proper spacing.
6. Click OK.
The headers display on the plot.
7. (Optional) Drag the header to a new location on the plot.
8. On the Navigation pane, select other completions to see how the dynamic portion of the header
changes.
9. On the Workspace tab, click Save to save your work.
24 of 262
Curve 1 displays the monthly oil production for the selected completion.
Curve 2 displays the monthly oil production for the reservoir to which the selected completion
belongs.
25 of 262
26 of 262
Getting Started
For this tutorial, you need a plot. If you have already created plots while doing the "Creating and Editing
Plots" tutorial, you can use one of those. If you have not completed that tutorial, follow these steps to
create a quick plot:
1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
2. On the Home tab, in the Launch analysis group, click Plot.
The Edit Plot window opens.
3. Notice that OFM sets the X-Axis Variable to Date by default.
4. In the table, click the first cell in the Variables column and then select Monthlyprod.Oil.
5. Click Add Curve.
OFM adds a new row.
6. Click the new cell in the Variables column and then select Monthlyprod.Gas.
7. Click OK.
The plot opens.
8. On the Workspace tab, click Save Workspace to save your work.
27 of 262
28 of 262
29 of 262
Flagging a Completion
While viewing plots for each completion in your project, you may want to study further one or more
completions. You can mark (or, flag) completions and later you can return to the flagged completions as a
separate collection.
1. When you see a plot that requires further investigation, on the Home tab, select Flag well.
2. When you finish reviewing the plots and you want to study the flagged completions, on the Filter
pane, click Filter by Completion (
).
The Filter by Completion window opens.
3. Click Select Flagged.
4. Click OK.
30 of 262
The Filter pane now shows that your Current Filter contains only the flagged completions.
5. On the Workspace tab, click Save to save your work.
31 of 262
32 of 262
5. Select the category by which you want to group data. In this example, use the default selection
(Completion).
6. (Optional) Enter a Where clause to filter the data.
7. Click Next.
8. Select the start and end data for which you want to track results.
If left as the default, OFM creates the bubble map from the first to the last date in the project
database.
9. Select the method you want to use to sample data in the Data Sampling Frequency field.
If left at as the default, OFM uses the data frequency (that is, monthly data will produce a bubble
map every month, and daily data will produce a bubble map every day).
10. Click Finish.
The bubble map opens.
11. On the Workspace tab, click Save to save your work.
33 of 262
34 of 262
35 of 262
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.
36 of 262
37 of 262
5. Select the method you want to use to group data. In this example, use the default selection
(Completion).
6. (Optional) Enter a Where clause to filter the data.
7. Click Next.
8. Select the start and end data for which you want to track results.
If left as the default, OFM produces the grid map from the first to the last date in the project
database.
9. Select the method you want to use to sample data in the Data Sampling Frequency field.
If left at as the default, OFM uses the frequency of the data (that is, monthly data will produce a map
every month and daily data will produce a map every day).
10. Click Finish.
The grid map opens.
11. On the Workspace tab, click Save to save your work.
38 of 262
3. On the blank row, type "Cumulative Gas" and then press Enter. When entering a text string, you
must use quotation marks around the text.
4. Click Font.
The Font window opens.
5. For Font Style, select Bold and then click OK to return to the Headers window.
6. You can also add input variables or calculated variables as headers. Therefore, click Add again.
7. You can use input or calculated variables in your headers. Click Add again to insert another new
row.
8. Select Assist.
The Edit Header window opens.
9. On the list of project variables, double-click Category.Fieldname to move it into the Header text
box.
Note: Most calculated variables are for calculations of one entity at a time. For this grid map, there arent
any calculated variables in the project that are suitable as a header. A calculated variable that applies to the
project as a whole would be suitable, such as one displaying the most recent date in the database or the
project file path.
11. Click OK to close the Edit Header window, and click OK again to close the Headers window.
The grid map displays the new header.
12. On the Workspace tab, click Save to save your work.
39 of 262
40 of 262
5. To pause or restart the animation, click the control buttons on the Format tab, in the Animation
Utilities group.
41 of 262
42 of 262
8. Select the start and end data for the contour map.
If left as default, OFM will produce the map from the first to the last date in the project database.
9. Select how often you want OFM to sample data from the Data Sampling Frequency.
If left at the default, OFM uses the data frequency (that is, monthly data produces a contour map
every month and daily data produces a contour map every day).
10. Select Finish.
The contour map opens.
11. On the Workspace tab, click Save to save your work.
43 of 262
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
1. On the Format tab, in the Animation Utilities group, click Animate Settings.
The Animate Settings window opens.
2. On the Step field, select 12.
3. Select Forward.
4. (Optional) Select Save Animation to an .AVI file if you want to save a copy of the animation as a
video.
If you save the animation file, you must select a name and file location for the video. Before the
animation starts, you will be asked to select a video compressor format. The codecs available vary
from person to person, and depend on the software installed on your computer. If you want to share
the .avi file with another person, select a codec that person has installed (to avoid compatibility
issues).
5. Click OK.
The animation starts.
6. To pause or restart the animation, click the control buttons on the Format tab, in the Animation
Utilities group.
45 of 262
3. On the blank row, type "Cum Water Cut" and then press Enter. When entering a text string, you
must use quotation marks around the text.
4. Click Font.
The Font window opens.
5. For Font Style, select Bold and then click OK to return to the Headers window.
6. Click OK to close the Headers window.
The contour map displays the new header.
7. On the Workspace tab, click Save to save your work.
46 of 262
4. Click Next.
5. Select Completion as the method you want to use to group data.
6. Click Next.
7. Leave the start and end dates at Default for the scatter plot.
If left as default, OFM will produce the map from the first to the last date in the project database.
8. Leave the Data Sampling Frequency as All Rows.
If left at default, OFM uses the frequency of the data (that is, monthly data produces a scatter plot
every month and daily data produces a scatter plot every day).
9. Select Finish.
The scatter plot will display.
10. On the Workspace tab, click Save to save your work.
47 of 262
48 of 262
5. In the Cumulative Water Production section (which is your Y-coordinate), select <= and enter
the value 4000.
6. Click OK.
The scatter plot displays with the relevant data points overlaid with green circles. Both graphs have
the same completions indicated by the set. This shows you where the high oil completions are
located on the map. The green lines on Graph 1 show the path by which each completions data
traveled through time.
7. On the Workspace tab, click Save to save your work.
49 of 262
cumulative water are overlaid with magenta squares. OFM labels these points with the completion
names.
12. On the Format tab, in the Display group, select Plot Only Sets.
Only the group of points inside the polygon belonging to the two scatter sets display. You now have
an idea of how much the cumulative values vary by completion, and where the high oil and high fluid
completions are located. You may see a correlation between their locations and your knowledge of
the area, or some other performance or completion factor.
13. On the Workspace tab, click Save to save your work.
50 of 262
5. To pause or restart the animation, click the control buttons on the Format tab, in the Animation
Utilities group.
51 of 262
6. Click Finish.
The surface map opens. This map is plotting depths, and would be more representative if it was
plotting elevations instead, so the deepest perfs extend downward rather than upward.
7. On the Workspace tab, click Save to save your work.
52 of 262
53 of 262
54 of 262
55 of 262
6. On the map XY plot, click the well symbols to see individual completion's plots in the Blow Up Plot
window.
7. On the Workspace tab, click Save to save your work.
56 of 262
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
58 of 262
4. Click OK.
The report opens.
5. On the Navigation pane, select the Blue_1:He_0 completion.
OFM displays a grid-style tabular listing of the variables.
6. On the Workspace tab, click Save Workspace to save your work.
59 of 262
16. Click any cell in the Water Cut column of the report to access the Current Column properties for
selected column.
17. On the Property pane, under Columns, expand Column Attributes.
18. Set Subtotal to Average.
The average water cut displays at the end of each calendar year. The average displays on a different
line than the sum, which is helpful if you want to copy the report content to a spreadsheet
application.
19. On the Workspace tab, click Save to save your work.
60 of 262
61 of 262
62 of 262
63 of 262
64 of 262
different completions, depending on their status. To display only a specific, recent date, use the At
Date choice instead.
3. On the Sort tab, set the First sorting to Oil.cum.
4. Select Descending.
5. Click OK.
Before, OFM sorted the completions alpha-numerically. Now OFM sorts the report by cumulative oil
value in descending order. If you do not see all completions in the current filter, on the Format tab,
in the Display group, select Sum By Item.
6. On the Workspace tab, click Save to save your work.
65 of 262
66 of 262
3. Click OK.
The log displays.
4. At the top of Track 1, double-click the second Trace Name.
5. On the Trace Attributes tab, make the following selections:
n
6. Click OK.
The log displays.
7. On the Workspace tab, click Save to save your work.
7. Click OK.
The log displays.
8. On the Workspace tab, click Save to save your work.
67 of 262
Adding a Cutoff
1. On the Navigation pane, select the BLUE_1 wellbore.
2. At the top of Track 1, double-click the first trace name (now named SP).
3. On the Cutoff tab, make the following selections:
n
4. Click OK.
Note the effect of the cutoff.
5. On the Workspace tab, click Save to save your work.
68 of 262
Adding Comments
1. On the Property pane, set Show Depth Shift to No.
2. On the Format tab, in the Display group, click Comments.
OFM adds a comment track to the log display.
3. At a depth of 5000 feet, double-click the comment track.
The Edit Comment window opens.
4. In the Comment field, enter Hole Washout and then click Save.
The text displays in the Comment track.
5. On the Workspace tab, click Save to save your work.
69 of 262
70 of 262
5. Click OK.
The well data displays.
6. At the top of Track 1, double-click the SP curve.
The Log Trace Attributes window opens.
7. In the Color field, select Blue.
8. Click OK.
9. On the Format tab, in the Edit group, click Variables.
10. On the Well #2 tab, make the following selections:
n
For Log Trace #1, select SP and then select a Date Logged.
For Log Trace #2, select RLD and then select a Date Logged.
For Log Trace #1, select SP and then select a Date Logged.
For Log Trace #2, select RLD and then select a Date Logged.
For Log Trace #1, select SP and then select a Date Logged.
For Log Trace #2, select RLD and then select a Date Logged.
71 of 262
72 of 262
4. Click OK.
5. On the Workspace tab, click Save to save your work.
73 of 262
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
74 of 262
75 of 262
76 of 262
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)
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.
77 of 262
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
Digitizing Points
This choice may be valuable if the real data is sparse, noisy, or not trustworthy.
1. On the Format tab, in the Edit group, click Digitize Points.
2. Press Ctrl and click to add your own data points on the graph.
The data points display as magenta triangles.
3. When you finish, right-click the forecast graph and then select Done.
OFM will discard all the historical data points and fit a line through the data points you added.
4. On the Workspace tab, click Save to save your work.
79 of 262
4. When you finish erasing data points, select on the Format tab, in the Display group, clear the
Toggle Working Points check box.
OFM adjusts the fit to reflect the change.
5. On the Workspace tab, click Save to save your work.
80 of 262
In the Oil: Schedule #1 section, select a Start Time of Last Historical Date and a Start
Rate of From Fit.
In the Scheduled Limits section, select an End Time of Months from Start, 120 Months
and an End Rate of 2 bbl/d.
The working forecast on the graph (dark red dots) will be superimposed by a coincident series of light
blue symbols representing the saved values.
The Forecast pane should now show a saved Oil forecast, under Case1, for completion Blue_
1:He_0.
81 of 262
82 of 262
5. On the Flow Model tab, in the Variable Association section, change the Phase/Analysis to
Water Cut.
6. Make sure the Cum. Oil is Oil.Cum.
7. Make sure the Water Cut, % is Water Cut.
All ratio analyses use the Empirical (least squares regression) method as the solution type, so the
remaining fields are unavailable.
8. Click OK.
OFM applies the changes you made to the completion you selected (Blue_1:He_0). If you select
another completion, OFM applies the default settings. You can change the default settings on the
Scenario Manager. (To open the Scenario Manager, on the Format tab, in the Edit group, click
Scenario Manager.)
9. On the Workspace tab, click Save to save your work.
83 of 262
Selecting a Variable
This choice requires you to select a project variable that returns True (1) or False (0). This will most likely
be a calculated variable. OFM will use this variable eitherto keep a data point for the fit analysis (result of
variable = True) or to remove it from the analysis (result = False).
1. On the Setup tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens.
2. Click Add Calculated Variable.
The Edit Calculated Variable window opens.
3. Enter the following definition: @if(Ratio.WOR>70,1,0)
4. Click OK.
OFM lists the new calculated variable on the Variable Editor as NewItem.
5. Click in the cell for NewItem and rename the variable WOR_Cutoff.
6. Click OK.
7. On the Format tab, in the Edit group, select Limit > Reset.
This recovers all data points.
8. On the Format tab, in the Edit group, select Limit > Variable.
The Data Selection Variable window opens.
9. Select Use Variable and then select WOR_Cutoff from the list.
10. Click OK.
84 of 262
OFM removes data points with a water-oil ratio that is less than 70 bbl/bbl.
11. On the Workspace tab, click Save to save your work.
Digitizing Points
This choice may be valuable if the real data is sparse, noisy, or not trustworthy.
1. Select Edit > Digitize Points.
2. Press Ctrl and click to mark your own, independent data points on the graph.
The data points display as magenta triangles. Use them to define a profile that you prefer to accept.
3. When you finish, right-click the forecast graph and then select Done.
OFM discards the historical data points and fits a line through your data points.
4. On the Workspace tab, click Save to save your work.
85 of 262
3. Because the Method is Manual, OFM may no longer reflect changes (like removing more data
points) until you change this setting to Auto: On the Property pane, under History Match, change
the Method to Auto.
4. On the Workspace tab, click Save to save your work.
The working forecast on the graph (dark red dots) will be superimposed by a coincident series of light
blue symbols representing the saved values.
The Forecast pane should now show a saved WCUT forecast under Case1 for completion Blue_
1:He_0.
86 of 262
The method requires two variables: (Cumulative) gas production; and a value for pressure (P) divided by
the gas deviation factor (Z).
In this tutorial, you will:
1. Open the demo project for P/Z analysis: The Duson Gas Field demo project is already configured for
P/Z analysis.
2. Set P/Z forecast parameters: For this project, three of the four completions contain pressure data.
Filter out the other completion.
To build a meaningful forecast, it is important to get a representative fit through historical data. To
do that, you may constrain the match (or, fit) to occur only through selected data points. There
are several ways to do that, and you can use the different ways in any combination.
3. Set lower and upper limits
4. Set the limit as a range: Assuming you have followed the lower-limits steps, you now can define a
more detailed acceptable range of data points.
The other forecasting tutorials show how to select a variable. The P/Z plot is a specialized group
plot, and so the variable is evaluated for the group. Therefore, we do not advise using a variable for
P/Z analysis.
5. Digitize points: This option may be valuable if the real data is sparse, noisy, or not trustworthy.
The other forecasting tutorials show how to toggle between working points. This is not available for
P/Z analysis.
6. Control fit parameters: In addition to selecting data points for analysis, you also can control how OFM
performs the fit process. You can override the least squares regression calculation by placing the fit
line where you believe it portrays a better representation (that is, by using your engineering
judgment instead of statistics).
7. Set up the forecast: You choose forecast settings for P/Z forecasts on the Property pane.
8. Save the forecast
87 of 262
).
).
88 of 262
89 of 262
Digitizing Points
This option may be valuable if the real data is sparse, noisy, or not trustworthy.
1. On the Format tab, in the Edit group, click Digitize Points.
2. Press Ctrl and click to add your own, independent data points on the graph.
The data points display as magenta triangles.
3. When you finish, right-click and select Done.
OFM discards the historical data points and fits a line through your data points.
4. On the Workspace tab, click Save to save your work.
90 of 262
limit.
3. On the Workspace tab, click Save to save your work.
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.
The Forecast pane should now show a saved P/Z forecast under Case1 for the group Breaux.
91 of 262
Flowing time for each flowing period may or may not be the same
92 of 262
3. In the Variable Association section, confirm that the Shut-in Pressure is 410 psia and then
click OK.
93 of 262
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.
In this tutorial, you will:
1. Open the workspace
2. View the test data: Although the data used in this example is stored in a daily table, you may use a
sporadic table if you have more than one data point in a day. The sequence of the test data is
important although time is not directly used in the calculations of WDA analyses.
3. Set up WDA forecast parameters: To build a meaningful forecast, it is important to get a
representative fit through historical data. To do that, you may constrain the match (or, fit) to occur
only through selected data points. There are several ways to do that, and you can use the different
ways in any combination.
4. Set lower and upper limits: The other forecasting tutorials show how to set the limit as a range and
how to select the variable. These choices are not available for WDA.
4. Digitize points
5. Toggle working points
6. Control fit parameters: In addition to selecting data points for analysis, you can also control how OFM
performs the fit process.
7. Save the forecast
94 of 262
Time (Date)
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.)
95 of 262
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. When you finish, right-click and select Done.
OFM discards the historical data points and fits a line through your data points.
4. On the Workspace tab, click Save to save your work.
96 of 262
97 of 262
Top: 0.00
Bottom: 1000.00
OD: 13 3/8
98 of 262
Weight: 72.00
3. Click Apply.
Top: 0.00
Bottom: 10000.00
Fraction: 1.0
3. Select Show Depth Track to display the depth track scale inside the text block.
4. Select Freeze View.
5. Click Apply and then click Close.
6. On the Insert tab, click Casing Strings.
7. On the diagram, drag a box to show where you want the casing string data to display.
Note: You can change the information in the text box by double-clicking it to open the Edit Casing
window.
Top: 0.00
Bottom: 7500.00
OD: 2.375
Grade: N-80
Thread: Upset
3. Click Apply.
99 of 262
Top:7500.00
Bottom: 7510.00
Selection: Packer
Type: Retry
3. Click Apply.
Top: 0.00
Bottom: 1050.00
Size: 14.50
Top: 000.00
Bottom: 3850.00
Size: 10.75
Top: 3850.00
Bottom: 9000.00
Size: 8.50
5. Click Apply.
Top: 7750.00
Bottom: 7800.00
100 of 262
Selection: Perfs
Type: Open
101 of 262
Creating new tables and fields from the Edit Schema Tables window, and entering data in the Data
Grid
Creating plots with multiple curves, and changing the properties of those curves
How OFM uses the WorkspaceDefaults.xml file and the annotation (.ano) files in the Symbols folder
Using the draw commands to create new annotations, such as well symbols
102 of 262
Creating plots with multiple curves, and then changing the properties of those curves
Using the @If, @Null, @Abs, @Previous, @ElapsedDays, and @First system functions
Creating scatter plots, adding cross hairs, and adjusting the X and Y variable minimum and
maximum values
103 of 262
Creating new tables and populating them with a data (.dat) file you create and load
Creating new analyses from existing ones, by saving it as a new node on the Analysis pane
Saving contour maps as annotation files, and then adding them to the base map
104 of 262
Creating reports
Animating maps
Using the @Dom, @CFirst, @ElapsedMonths, @Fit, and @FitEq system functions
105 of 262
Creating bubble maps and changing the plot size and color scale
Adding a shapefile
Adding a shapefile
106 of 262
107 of 262
92
108 of 262
In this case, the ARC command is used, which draws a circular arc:
ARC 5.000000 5.000000 1.000000 0 360
The first two values after the command (5.000000 and 5.000000) identify the center. The
next value (1.000000) is the radius in map units. After that are the starting (0) and ending
(360) points in degrees. OFM draws a full circle (360 degrees), with the center at 5,5 and a
radius of 1.
b. Close the 1.ano file, and open the 92.ano file in Notepad.
This file is for the ninety-second well symbol, which is much more complex than the first. Note
that it uses several different draw commands:
LI fills polygons defined after the LI command.
M moves the pen, but does not draw a point.
D draws a line segment.
LW defines a line width.
L draws a line.
109 of 262
96
110 of 262
d. The line goes from one point to another. The first point (x1,y1) is (3.9, 3.9). The second point
(x2,y2) is (6.8, 6.8). On the third line, type this: L 3.9 3.9 6.8 6.8
e. Save the file with the other annotation files (in the OFM installation folder, in the Symbols subfolder) with this name: 95.ano
2. Create the second new well symbol (symbol 96):
a. Open a new file in Notepad.
b. This symbol is a filled box. Fills are defined before the box command, with the LI command. A
solid fill is identified as 1. On the first line, type this: LI 1
c. The command to draw a box is B. After the command, define the lower-left corner (x1,y1) which
is (4, 3.7). Then identify the upper-right corner (x2,y2) which is (6, 5.3). On the second line,
type this: B 4.000000 3.700000 6.000000 5.300000
d. Save the file with the other annotation files, with this name: 96.ano
3. Update the workspace defaults file:
a. Open the WorkspaceDefaults.xml file in Notepad or an XML editor.
b. On the line tagged <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
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.
112 of 262
4. Click OK.
The Well Symbol File window opens. The selected option is Default.
5. Click OK.
The base map marks oil and gas producers with the new symbols.
6. On the Format tab, in the Edit group, click Symbols.
7. In the image preview box, scroll to the bottom to view the last two symbols. They are the symbols
you created.
8. Click OK to close the window.
113 of 262
12/1/1999
5000
1/1/2000
4789
2/1/2000
4234
3/1/2000
4123
4/1/2000
3900
5/1/2000
3876
6/1/2000
3768
114 of 262
115 of 262
Zold=Znew;
}
Pcalc= Pnew;
9. Double-check your user function. It should be:
Pcalc(PZ)
num Zold, Znew, Pnew, DeltaZ, loops;
DeltaZ=1;
Zold=1;
loops=0;
while(DeltaZ > 0.001 & loops < 50)
{
loops=loops+1;
Pnew=PZ*Zold;
Znew=@PVTZ(Pnew);
DeltaZ = @abs(Zold-Znew);
Zold=Znew;
}
Pcalc= Pnew;
10. Click OK.
11. On the Edit User Function window, click Close.
The X-axis parameter for the dataset being fitted (in this case, cv.cumgas)
The Y-axis parameter for the dataset being fitted (in this case, cv.pz)
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)
The X-axis parameter for the output fitted curve (in this case, cv.cumgas)
An option (in this case, the order of the fitted polynomial, which is 1 linear)
116 of 262
117 of 262
5. Type this for the name of the calculated variable and then press Enter: Fit.Press_PZ
6. Set plot attributes for the new calculated variable:
a. Click Define to hide the definition columns and click Plot to show the plot attribute columns.
b. On the row for Fit.Press_PZ, make these selections:
Curve Name: Fitted Pressure from P/Z
Curve Line Color: Red
7. Click OK to save the calculated variable and close the window.
118 of 262
119 of 262
Resprop.Net_pay
Resprop.Perm
Liq.Monthly
3. Click Finish.
4. Save net pay to the registry:
a. On the Format tab, in the Utilities group, click Save Analysis > Save As.
b. Save the file as NetPay.grd.
The Save Grid File window opens.
c. In the Name and Description fields, type NetPay and then click OK.
120 of 262
121 of 262
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.
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
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.
The @ElapsedDays system function calculates the number of days between two dates.
The @First system function finds the first record value of a numeric expression.
123 of 262
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)
Options (Order of the fitted polynomial to be 5, and the best value for the logarithm of Y)
124 of 262
e. For the third curve, select the WOR_Fit variable and then click Add Curve.
f. For the fourth curve, select Ratio.WOR.
g. Click OK.
h. On the Navigation pane, select the 1975:B completion.
i. On the Analysis pane, right-click Plot1 and then click Rename.
j. Type Chan and then press Enter.
2. Change the curve and axis properties:
a. On the plot, click the X-axis.
b. On the Properties pane, under Graph Settings, change the Curves field to 1:WOR_Deriv.
c. Under Curve Properties, in the Curve Attributes section, select the following:
Line Color: Red
Line Type: None
Point Type: Filled Circle
Point Size: 10
d. On the Properties pane, under Graph Settings, change the Curves field to 2:WOR_Deriv_
Fit.
e. Under Curve Properties, in the Curve Attributes section, select the following:
Line Color: Red
Line Type: Solid
Line Width: 3
f. On the Properties pane, under Graph Settings, change the Curves field to 3:WOR_Fit.
g. Under Curve Properties, in the Curve Attributes section, select the following:
Line Color: Blue
Line Type: Solid
Line Width: 3
h. On the Properties pane, under Graph Settings, change the Curves field to 4:Ratio.Wor.
i. Under Curve Properties, in the Curve Attributes section, select the following:
Line Color: Blue
Line Type: None
Point Type: Filled Circle
Point Size: 10
125 of 262
126 of 262
127 of 262
128 of 262
129 of 262
130 of 262
131 of 262
132 of 262
2. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @Name(), Date, Oil.CalDay
3. Click OK.
4. On the Navigation pane, select the 1975:B completion.
5. Select the last column on the report. On the Properties pane, under Columns, change the
Decimal Places to 2.
6. The report shows oil rates for the 24 months of 1989 and 1990. Note the following dates:
n
7. On the Analysis pane, right-click the report and then click Rename.
8. Type this new name and then press Enter: ABC
133 of 262
The @AddMonths system function increments the date (forward into the future, or back into the
past) by the number of months defined.
You also define a flag, using 0 to indicate the first of the month, 1 for the middle of the month, or
2 for the end of the month.
3. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @ValueAt(Oil.CalDay,@AddMonths(Date, -3, 0) )
4. Click OK.
The new variable displays on the list of variables. By default, OFM names it NewItem.
5. Type this new name for the calculated variable and then press Enter: Oil.RatePrevious3
6. Click OK to save the calculated variable and close the window.
7. Return to the ABC report.
8. On the Format tab, in the Edit group, click Variables.
The Edit Report window opens, and displays the variables you selected for the columns in your
report.
You want to add two columns:
n
Oil rate on the last day: This column should show the last oil rate value. The @Last system
function finds the last record value. This system function requires a condition that must be true
(1) to return the value. Since you want all the values to be returned, you can use 1 as the
condition (so that the condition will always be true).
Oil rate three months previous: This column should show the oil rate value, but for the date
three months previously. Use the new Oil.RatePrevious3 calculated variable.
9. Double-click the items in the System Functions and Project Variables lists to add the variables
needed for the new columns. It should be: @Name( ),Date,Oil.CalDay, @Last(Oil.CalDay,
@Last(1)), Oil.RatePrevious3
10. Click OK.
11. Select the last column on the report. On the Properties pane, under Columns, change the
Decimal Places to 2.
12. For the 1975:B completion, note the row for December 1990:
134 of 262
135 of 262
136 of 262
3. Double-click the items in the System Functions and Project Variables lists to add this to the text
box at the top of the window: @Last(Water.CalDay, 1) / @ValueAt(Water.CalDay, @AddMonths
(Date, -3, 0) )
4. Click OK.
5. Type this new name for the calculated variable and then press Enter: Water.RateChange3
6. Click OK to save the calculated variable and close the window.
137 of 262
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
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.
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
3. Create a conformance plot. This plot helps characterize injection behavior by comparing production
volumes to injection volumes.
4. Create two recovery plots:
n
Recovery Factor versus PVI: This plot helps you determine how individual patterns compare to
the field average, to find the factor affecting recovery.
Recovery Factor versus Time: With this plot, you can track the overall performance of all
patterns on the same plot.
Water Cut versus PVI: This plot shows the development of water cut behavior with water
injection.
PVI versus Time: In this plot, you can see the amount of pore volume injected over time.
140 of 262
b. On the OFM Representation pane, right-click the Pilot Waterflood BField.mdb home data
source and then click Add.
OFM lists the new table on the OFM Representation pane. By default, OFM names the table
NewItem and you must change the name.
c. Type the new name and then press Enter: STOIIP
d. By default, OFM sets the table to hold monthly data. On the right side of the window, on the
Table tab, change Table Type to Static.
e. OFM asks if you want to keep the DATE key field. Click No.
f. On the Table tab, change Key Type to Pattern.
g. On the Fields tab, in the Add New Field field, enter Volume and then click Add.
The OFM Representation pane shows two fields in the STOIIP table: The Pattern field (which
is a primary key field) and Volume.
h. Click OK to save your changes and close the window.
3. Add data in the STOIIP table:
a. On the Setup tab,in the Tables group, click Data Grid.
The Select OFM Table to Edit window opens.
b. Select the STOIIP table and then click OK.
c. Enter the following rows of data for the Pattern and Volume columns:
Patter Volum
n
495
77400
496
88200
497
91800
500
12000
0
506
60000
509
45000
141 of 262
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.
142 of 262
Category: regular_five_spot
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
144 of 262
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
146 of 262
147 of 262
148 of 262
149 of 262
The plot loses its formatting when you change the curves. You are ready to improve visibility of the
plot.
6. On the Format tab, in the Display group, select the Legend check box.
7. As you did for the other plots, change the curve color and line width. Make them the same as you did
before:
n
150 of 262
151 of 262
152 of 262
a. Open Notepad.
b. Paste the following into a new file:
*TableName Iso
*UniqueID *Depth *H
"Blue_12:Li_1C"
6647 0
"Blue_3:Li_1C"
6440 0
"Blue_7:Li_1C"
6440 10
"Green_15:Li_1C"
6500 0
"Green_3:Li_1C"
6500 0
"Green_5:Li_1C"
6441 40
"Orange_16:Li_1C" 6460 10
"Orange_24:Cl_3" 6470 20
"Purple_1:Cl_3"
6494 0
"Red_13:Cl_3"
6495 0
"Red_4:Cl_3" 64980 0
c. Save the file with this name: Iso.dat
d. On the Setup tab, in the Import/Export group, click Import > Data Loader.
e. Double-click the Iso.dat file to move it to the Files to Load section, and then click Load.
153 of 262
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
154 of 262
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
155 of 262
156 of 262
Create a plot that shows calendar day oil versus elapsed time
Create calculated variables to fit a polynomial curve and to show the equation, and then add these to
the plot and plot header.
Getting Started
1. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
2. You will use three of the calculated variables already in this project. To review them, on the Setup
tab, in the Variable Managers group, click Calculated Variable Editor.
The Variable Editor opens with a list of calculated variables.
3. Double-click the Name column to sort the list alphabetically by name.
4. Find the Oil.CalDay calculated variable and view the Equation.
The equation is Prd.Oil/@dom(date). This calculated variable divides oil production by the number
of days in the month. The @Dom system function returns the number of days.
5. Find the InitialProdMonth calculated variable and view the Equation.
The equation is @cfirst(date,MonthlyProd.Oil>0|MonthlyProd.Gas>0|MonthlyProd.Water>0).
This calculated variable uses the @CFirst system function to find the first date on which monthly oil,
gas, or water production is greater than zero.
6. Find the MonthsOfProd calculated variable and view the Equation.
The equation is @ElapsedMonths(date, InitialProdMonth). This calculated variable uses the
@ElapsedMonths system function to find the number of months between the current date and the
date of initial oil, gas, or water production.
7. Click OK to close the Variable Editor.
157 of 262
4. Click OK.
5. On the Navigation pane, select the BLUE_1:He_0 completion.
6. On the plot, click the X-axis. On the Properties pane, under Axis, change the Scale Type to
Linear.
158 of 262
An option (in this case, the order of the fitted polynomial, which is 3)
c. Double-click the items in the System Functions and Project Variables lists to add this
equation to the text box at the top of the window: @Fit( MonthsOfProd, Oil.CalDay,
Oil.CalDay > 0, MonthsOfProd, "deg 3")
d. Click OK.
The new variable displays on the list of variables. By default, OFM names it NewItem.
e. Type this new name for the calculated variable and then press Enter: Fit.OilCalDay
2. Create the second calculated variable:
a. Click Add Calculated Variable.
This calculated variable will use the @FitEq system function, which returns the equation for
the fitted polynomial. The variable that is fitted is Oil.CalDay, to the order of 3.
This is an example of curve fitting in OFM. There is no physical reason a third-order polynomial
should fit this data, but the example illustrates the principle.
b. Double-click the items in the System Functions and Project Variables lists to add this
equation to the text box at the top of the window: @FitEq( Oil.CalDay, "deg 3")
c. Click OK.
d. Type this new name for the calculated variable and then press Enter: FitEq.OilCalDay
e. Click OK to save the calculated variables and close the window.
3. Add the best-fit curve variable to the plot:
a. With the plot open, on the Format tab, in the Edit group, click Variables.
The Edit Plot window opens.
b. Click Add Curve.
c. For the new curve, select the Fit.OilCalDay calculated variable.
d. Click OK.
159 of 262
160 of 262
Filter the completions to show only ones that have net pay, porosity, and oil saturation data
Add a map annotation file that helps you create a grid area later
Create a grid map that shows the reservoir property data in the Resprop table
161 of 262
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.
162 of 262
4. Click OK.
The map annotation displays as a dotted line around the edges of the base map.
Resprop.Perm
Resprop.Phi
Resprop.Net_pay
Resprop.So
Resprop.Hcft
Resprop.Owc
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
164 of 262
2. Add control points around the oil/water contact to enter zero net pay values, and then save the grid
file to the registry:
a. The grid map is showing porosity. Change it to show net pay: On the Properties pane, under
Variable Properties, change the Variable to Resprop.Net_pay.
b. On the Format tab, in the Control Point Utilities group, click Add.
The Control Point Value window opens. The Value is 0.
c. Net pay is likely to be zero at the edges of a reservoir, so accept the default value. Click OK.
d. Click around the perimeter of the oil-water contact to add the control points. When you are
finished, right-click and then click Done.
The grid map displays the net pay.
e. On the Format tab, in the Utilities group, click Save Analysis > Save As.
f. Name the grid (.grd) file netpay and then click Save.
The Save Grid File window opens.
g. In the Name field, type netpay.
165 of 262
c. On the Format tab, in the Utilities group, click Save Analysis > Save As.
d. Name the grid (.grd) file So and then click Save.
The Save Grid File window opens.
e. In the Name field, type So.
166 of 262
Name: OOIP
4. Click Equation.
The Edit Calculated Variable window opens.
Remember that the OOIP equation is:
OOIP = (Area * Net Pay * Porosity * Oil Saturation)/(formation volume factor oil * 5.615)
The grid area you created determines the area in the calculation. You are assuming the formation
volume factor is 1.09 rb/stb. A factor of 5.615 converts cubic feet to barrels.
5. In the text box at the top, enter this calculation: (netpay * phi * So)/(1.09 * 5.615)
6. Click OK.
7. On the Calculate Grid window, click File and then save the file with this name: OOIP
8. On the Calculate Grid window, click OK.
The grid map displays with the calculated grid.
167 of 262
9. On the Format tab, in the Utilities group, click Open Analysis > Open.
10. Select the ooip.grd file and then click Open.
11. On the Layout tab, select the Statistics Panel check box.
12. On the Statistics panel, note the Volume. This is the calculated OOIP for the grid. It is about 67
MMbbls, depending on your grid area points and control points.
168 of 262
Getting Started
Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
169 of 262
{
num Value;
Value = @ARec(Monthlyprod.oil, LastIndex);
LastIndex = LastIndex - 1;
if(Value != @Null())
{
Total = Total + Value;
Count = Count + 1;
}
}
8. You next need to give instructions for when While(LastIndex >= 0 & Count < Months) is not
true. There are two possibilities:
n
If the Count numerical string is greater than zero, then you want the user function to divide the
value of the Total numerical string by the value of the Count numerical string (to calculate the
average).
If the Count numerical string is equal to zero, then you want the user function to return a null
value.
170 of 262
Total = 0;
while(LastIndex >= 0 & Count < Months)
{
num Value;
Value = @ARec(Monthlyprod.oil, LastIndex);
LastIndex = LastIndex - 1;
if(Value != @Null())
{
Total = Total + Value;
Count = Count + 1;
}
}
if(Count > 0)
{
LastNonNullAvgProd = Total/Count;
}
else
{
LastNonNullAvgProd = @Null();
}
10. Click OK.
11. On the Edit User Function window, click Close.
Creating Reports
1. On the Home tab, in the Launch analysis group, click Report.
The Edit Report window opens.
You want to create a report with three columns:
n
Monthly oil production: This is the Oil field in the Monthlyprod table.
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
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
173 of 262
174 of 262
Getting Started
Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
175 of 262
176 of 262
177 of 262
178 of 262
Open the Demo project and confirm that it holds sporadic data in the Test table
Create a report with four columns: Completion name, test date, oil test volume, and monthly
average
Completion name
Test date
Monthly average
179 of 262
3. The second column has the test date, which is in the Date field of the Test table. Click Project
Variables and then double-click Test.Date. Then type a comma to mark a new column.
4. The third column has the monthly test volume for oil, which is in the Oil field of the Test table. On the
list of project variables, double-click Test.Oil and then type a comma to mark a new column.
5. The fourth column has the monthly average. The @ClrTAve system function gives the total average.
It stops the average when it reaches a condition. In this example, the condition is a new month
which can be found with the @Change and @Month system functions. Double-click the items in the
System Functions and Project Variables lists to add this to the text box at the top: @ClrTAve
(Test.Oil, @Change(@Month(Date)))
6. Check the report variables. It should be this: @Name( ), Test.Date, Test.Oil, @ClrTAve
(Test.Oil, @Change(@Month(Date)))
7. Click OK to view the report.
8. On the Navigation pane, select the Blue_1:He_0 completion.
180 of 262
Getting Started
Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
181 of 262
3. On the Properties pane, under Data, in the Attributes section, change Vary Size to No.
4. Change Lookup Color to Yes.
5. On the Edit Lookup field, click Edit Lookup.
The Bubble Lookup window opens. On this window, you can assign a color, size, and label for the
four ranges.
6. Make the following selections:
7.
>=
<
Clr (Color)
Size
Label
0.0
0.0999
0.0
0% - 9%
0.1
0.4999
0.0
10% - 50%
0.5
0.7499
0.0
50% - 75%
0.75
1.0
0.0
75% - 100%
Keep Percent of Width and Show Lookup Legend selected. Click OK.
The colors on the bubble map represent the water cut range for a given date.
182 of 262
183 of 262
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.
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.
b. In the Trust Center section, click Trust Center Settings.
The Trust Center window opens.
c. In the Macro Settings section, select Enable all macros and then click OK.
3. Review the log data in the Demo project:
a. Open the Demo workspace. It is in the OFM installation folder, at ...Sample Workspaces\Demo
Workspace\demo.ofm.
b. On the Setup tab, in the Tables group, click OFM-Defined.
c. Click Logs.
d. Note that the Logs window lists 16 traces. The first one is Acoustic, and the last one is TPhi.
4. Click OK to close the window.
5. View the log data in the .las file that you will import into the OFM project:
a. In Notepad, open the copy of the sample.las file.
b. Note the ~C section:
~C
DEPT.F 00 000 00 00:
DEPTH CURVE
184 of 262
3 DENSITY-BULK DENSITY
4 POROSITY -NEUTRON
5 RESISTIVITY -RXO
7 RESISTIVITY -MEDIUM
RESISTIVITY -DEEP
SPON. POTENTIAL
RESISTIVITY -SHALLOW
10
GAMMA RAY
11 CALIPER
12
DELTA-RHO
13
EPT ATTENUATION
14 TP -EPT
15 PHOTOELECTRIC FACTOR
The log traces you will import into the OFM project are DT, RHOB, NPHI, RXO, ILM, CALI,
DRHO, EATT, TPL, PEF, and FPHI. The demo project already has SFLU, ILD, SP, and GR.
c. Close the .las file.
185 of 262
Loading the Log and Definition Files into the OFM Project
1. Return to the Demo project in OFM. On the Setup tab, in the Import/Export group, click Import
> Data Loader.
2. Double-click the LAStoLOG.def and LAStoLOG.log files to move them to the Files to Load
section.
3. Click Load.
4. On the Setup tab, in the Tables group, click OFM-Defined.
5. Click Logs.
6. Note that the Logs window now lists 27 traces. The imported traces are listed after TPhi. They start
with DT and end with FPHI.
7. Click OK to close the window.
8. Click OK to close the OFM Defined Table Manager.
Log: ILM
Color: Green
Log: RHOB
Color: Red
186 of 262
Getting Started
1. Open the Bfield sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Pilot
Waterflood Sample\Pilot Waterflood BField.ofm.
2. This project has data for the reservoir in the RESPROP table, and water injection data in the WIN
table. Confirm this:
a. On the Setup tab, in the Tables group, click Schema.
The Edit Schema Tables window opens.
b. On the OFM Representation pane, expand the RESPROP table.
c. Note that the table has fields for net pay (NET_PAY), porosity (PHI), and residual oil saturation
(SO).
d. Expand the WIN table.
e. Note that the table has a field for water injection (WINJ).
f. Click OK to close the window.
187 of 262
The net pay data in the NET_PAY field of the RESPROP table
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
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.
189 of 262
a. View the Properties pane, under Data, and note that the Data Range Maximum is
948.760986. This value is used to scale the bubble map to the maximum drainage radius, to
match the map units.
b. On the Properties pane, under Properties, change the Plot Size Units to Map Units.
c. Change the Plot Size Maximum to 948.760986.
The bubbles on the map are scaled to map units, and the radius is scaled to the size of the
drainage radius.
6. Change the colors:
a. On the Properties pane, under Properties, change the Color Scale Style to Value Range.
b. Change the number of Colors to 9.
c. Change the Spectrum to Green-Blue.
190 of 262
191 of 262
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
193 of 262
194 of 262
195 of 262
196 of 262
b. On that page, in the REST URL for ArcGIS Web APIs section, copy the URL to your clipboard.
2. In OFM, add the ArcGIS connection:
a. With the GIS map open: On the Format tab, in the Layers group, click Add Layer > Open
Map Server.
b. Select Define.
c. View the ArcGIS tab.
d. In the Name field, enter a name for the connection. This name displays on the Map Layers
window. For this example, enter World Streets.
e. In the Url field, paste the link that you copied from the website.
f. Click OK.
OFM immediately applies the connection to the GIS map as the top layer, and OFM shows the
full GIS map.
3. Improve visibility:
a. On the Format tab, in the Zoom group, click Zoom Area.
b. On the GIS map, drag a very small square around your city.
c. On the Format tab, in the Layers group, click Edit Layers.
The Map Layers window opens. The left pane lists the layers on the GIS map. World Streets is
the top layer.
d. On the left, select World Streets.
e. On the right, under Layer, move the Transparency toggle to the right to increase the
transparency of the World Streets layer.
The GIS map changes the transparency as you move the toggle.
f. Click OK to save your changes and close the window.
197 of 262
A date
A string of text
An expression which evaluates to a result, which then becomes the input to the system function
Another variable
The result of the argument must be of the same data type that the system function requires. For example,
if a system function requires a numeric argument, then the parameters you enter must be (or must
evaluate to) a number. As long as you follow this rule, you can use any project source for the arguments.
In general, the following statements apply:
n
Some functions apply only to input (table) variables. Other functions can be applied to any
expression.
Many functions have optional arguments. These are enclosed in square brackets ([]).
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.
Dates used as arguments in system functions must evaluate to the OFM standard format for dates
(YYYYMMDD).
198 of 262
199 of 262
200 of 262
201 of 262
202 of 262
203 of 262
204 of 262
205 of 262
206 of 262
207 of 262
Syntax
@Abs (value)
Where
Argument
Type
Required
Description
value
Numeric
Yes
Data stream
Example
208 of 262
Syntax
@AddMonths(Date, NumberOfMonths)
Where
Argument
Type
Required Description
Date
Date
Date
Yes
Example
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
This system function finds the area under a curve using trapezoidal
approximation.
Note: This function uses X- and Y-axes. If the X-axis is a date, use the
@Julian (Julian Date) system function to make it linear.
Syntax
Where
Argument
Type
Required
Description
X-axis
Numeric
Yes
Independent axis
Y-axis
Numeric
Yes
Example
In this example, the system function returns the value of the area
under a curve of oil.cum versus pressure:
@Area (oil.cum, pressure)
210 of 262
This system function gets the value of the input variable for a specified
record row. Use this function with monthly and daily tables.
Note: The @CDataIndex (Conditional Data Index) system function
can be used to provide input to this function.
Syntax
Where
Argument Type
Variable
Required Description
Numeric Yes
Table variable
Row number in table for specified
Index
Numeric Yes
entity
Note: First row is index 0.
Example 1
Example 2
Related Examples
Finding the Average Production for N Months: Creating the User Function
211 of 262
When the specified condition is True (1), this system function finds the
first occurrence of a numeric expression at the specified condition.
Note: This system function requires a condition. The @First (First
Record Value of an Expression) system function performs the same
task, but the condition is optional.
Syntax
Where
Argument Type
Example
Required Description
value
Numeric Yes
condition
String
Yes
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
Syntax
@Change (Value)
Where
Argument Type
Value
Example
Required Description
Numeric Yes
In this example, the function returns True (1) when the"year" part of
the date changes:
@Change (@Year (Date))
Related Examples
Finding the Monthly Average Value for Sporadic Data: Creating the Report
213 of 262
Syntax
Where
Argument
Type
Required
Description
value
Numeric
Yes
Expression to be averaged
condition
String
Yes
Condition to be satisfied
Example
Related Examples
Finding the Monthly Average Value for Sporadic Data: Creating the Report
214 of 262
Syntax
@Dom (Date)
Where
Date Yes
Example
Related Examples
Creating a Hall Plot
Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation: Getting Started
215 of 262
Syntax
Where
Date Yes
Date2
Example
Date Yes
Date
In this example, the function returns the value of 31, the number of
elapsed days from 30 June to 31 July, 1983. Note that to return a
positive integer, the first date (Date1) should be the later date and the
second date (Date2) should be the earlier date.
@ElapsedDays (19830731, 19830630)
Related Examples
Creating a Chan Plot: Finding the Number of Elapsed Days
216 of 262
Syntax
Where
Date Yes
Date2
Example
Date Yes
Date
Related Examples
Drawing a Polynomial Curve on a Plot and Displaying Its Equation: Getting Started
217 of 262
This system function finds the first record value of a specified numeric
expression, subject to an optional condition.
Syntax
Where
Argument
Type
Required
Description
value
Numeric
Yes
Parameter to be returned
condition
String
No
Condition to be satisfied
Example
Related Examples
Creating a Chan Plot: Finding the Number of Elapsed Days
218 of 262
Syntax
Where
Argument Type
value1
Numeric
or date
Required Description
Yes
value2
Numeric
value3
True/False Yes
value4
Numeric
or date
Yes
Yes
option
Several
Yes
Example
219 of 262
Related Examples
Calculating Pressure from P/Z and Production Data: Finding the P/Z Value
Creating a Water Breakthrough Diagnostic (Chan) Plot: Fitting the WOR Derivative
Creating a Water Breakthrough Diagnostic (Chan) Plot: Fitting the WOR
Fitting a Polynomial Curve Through Plot Data and Displaying Its Equation: Fitting a Polynomial Curve
220 of 262
Syntax
Where
Argument Type
value
Required Description
Numeric Yes
options
String
Yes
Example
Related Examples
Drawing a Polynomial Curve on a Plot and Displaying Its Equation: Fitting a Polynomial Curve
221 of 262
Syntax
Where
Argument Type
Required Description
Condition
Yes
String
Expression to be evaluated
Value to be returned if condition is
true or equals 1
Value1
Numeric Yes
Value2
Numeric Yes
Example
Related Examples
Creating a Water Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)
222 of 262
This system function finds the last record value of a specified numeric
expression, subject to an optional condition.
Syntax
Where
Argument Type
Example
Required Description
value
Numeric Yes
Parameter to be returned
condition
String
No
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
Syntax
Where
Argument Type
output_
variable
keyname
input_
value
option
Options
Required Description
Numeric Yes
Text
Yes
Numeric Yes
Text
Yes
Example 1
In this example, the function returns the oil price from the Cost table,
for the entity Sand1 at the corresponding date:
@Lookup (cost.oilprice, "sand1", date, "Date")
224 of 262
Example 2
225 of 262
This system function retrieves the month number for a specified date.
It returns a value between 1 and 12.
Syntax
@Month (Date)
Where
Date Yes
Example
Related Examples
Finding the Monthly Average Value for Sporadic Data: Creating the Report
226 of 262
This system function gets the name of the currently loaded entity. It is
useful in preparing header information on plots and reports.
Note: To return the name with the prefix, use the @LoadName
(Composite Name of Loaded Data) system function.
Syntax
@Name ()
Where
Argument
Type
Required
Description
None
Example
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
This system function returns a null value. The null value displays as an
asterisk (*) in reports.
Note: To convert null values to zero or another value you specify, use
the @NZ (Null to Zero) system function.
Syntax
@Null()
Where
Argument
Type
Required
Description
None
Example
Related Examples
Creating a Water Breakthrough Diagnostic (Chan) Plot: Finding the Water-Oil Ratio (WOR)
228 of 262
This system function finds the value of a numeric expression for the
record before the current record. It is applicable only for monthly and
daily tables.
Note: To find the value of a numeric expression for the next record,
use the @Next (Value of Expression for Next Record) system function.
Syntax
@Previous (variable)
Where
Argument Type
variable
Example
Required Description
variable Yes
Related Examples
Creating a Chan Plot: Finding the WOR Derivative
229 of 262
Syntax
@PvtBg (value)
Where
Argument
Type
Required
Description
value
Numeric
Yes
Pressure value
Example
230 of 262
Syntax
@PvtBo (value)
Where
Argument
Type
Required
Description
value
Numeric
Yes
Pressure value
Example
Related Tutorials
PVT: To Use PVT System Functions
231 of 262
Syntax
@PvtBw (value)
Where
Argument
Type
Required
Description
value
Numeric
Yes
Pressure value
Example
232 of 262
Syntax
@PvtRs (value)
Where
Argument
Type
Required
Description
value
Numeric
Yes
Pressure value
Example
233 of 262
Syntax
@RecCount ("tablename")
Where
Argument
Type
Required
Description
tablename
String
Yes
Table to be evaluated
Example
Related Examples
Finding the Average Production for N Months: Creating the User Function
234 of 262
Syntax
Where
Argument Type
regn#
Required Description
Numeric Yes
value
Numeric Yes
"option"
String
No
Example
235 of 262
Syntax
@RSum (expression)
Where
Argument
Type
Required
Description
expression
Numeric
Yes
Expression to be summed
Example
Related Examples
Creating a Hall Plot
236 of 262
Syntax
@Sqrt (value)
Where
Argument Type
value
Example
Required Description
Numeric Yes
Related Examples
Viewing the Drainage Radius: Finding the Drainage Radius
237 of 262
Syntax
Where
Argument
Type
Required
Description
value
Numeric
Yes
Variable to be stepped
Example
In this example, the function returns the step function when monthly
oil production is greater than 1000:
@Step (MonthlyProd.Oil, MonthlyProd.Oil > 1000)
Related Examples
Creating a Hall Plot
238 of 262
Syntax
Where
Argument Type
Required Description
value
Numeric
Yes
condition
True/False Yes
Example
Variable to be evaluated
Criterion to be applied in evaluating
the function
Related Examples
Finding the Best Three Months of Production
239 of 262
Syntax
Where
Argument Type
Required Description
Parameter to be evaluated
Date at which the value of expression
is required
date
Date
Yes
Note: OFM requires dates to be
entered in YYYYMMDD format.
Example
In this example, the function returns the monthly oil production for
August 31, 1981:
@ValueAt (MonthlyProd.Oil, 19810831)
Related Examples
Creating an After-Before-Compare (ABC) Plot: Creating a Report Showing the Oil Rate on the Last Day and
Three Months Previous
240 of 262
Demo Workspace
Tutorial: PVT
Tutorial: Creating and Editing Plots
Tutorial: Auditing Plots
Tutorial: Bubble Map
Tutorial: Grid Map
Tutorial: Contour Map
Tutorial: Scatter Plot
Tutorial: Surface Map
Tutorial: Map XY Plot
Tutorial: Date-Based Report
Tutorial: Summary Report
Tutorial: Single Well Log Display
Tutorial: Multi-Well Log Display
Tutorial: Log Cross-Section
Tutorial: Single Phase Analysis
Tutorial: Ratio Analysis
Tutorial: Wellbore Diagram
Example: Adding New Well Symbols
Example: Calculating Pressure from P/Z and Production Data
Example: Displaying Formation or Reservoir Thickness and Structure
Example: Fitting a Polynomial Curve Through Plot Data and
Displaying Its Equation
Example: Calculating Average Production for N Months
Example: Finding the Best Three Months of Production
Example: Finding the Monthly Average Value for Sporadic Data
241 of 262
Sample
Illustrative Databases > Cross
Sections
Illustrative Databases > Forecast
Schedule Example
Illustrative Databases > Multiply
By Factor
Illustrative Databases >
Normalization
Illustrative Databases > Stacked
Graphs
Illustrative Databases > Well
Deliverability Analysis
PDS Example
Tutorial: Patterns
Example: Creating a Formation Damage Indicator
Example: Creating a Water Breakthrough Diagnostic (Chan) Plot
Example: Creating a Hall Plot
Example: Creating an After-Before-Compare (ABC) Plot
Example: Creating Plots for Waterflooding Surveillance
Example: Estimating OOIP Using Grid Arithmetic
Example: Estimating and Displaying Drainage Radius
242 of 262
243 of 262
icon) is LeaseID.
The lease names in the tLease table are referenced with the lease ID numbers in the xy table.
4. Foreign keys also can use fields that are not in the master table. Look at the tMonthlyProduction
table to see how this is done:
a. On the OFM Representation pane, expand the tWellProd table. Notice that WellID is one field
in the tWellProd table. The tWellProd table identifies well ID numbers.
b. The well ID numbers are used in the monthly production table. On the On the OFM
Representation pane, click the tMonthlyProduction table.
c. On the right, view the Table tab. Notice that the tMonthlyProduction table uses the
ProductionID field in the tWellProd table. The OFM Definition section has the following
selections:
Key Type: Foreign
244 of 262
Foreign: tWellProd.ProductionID
d. Look at the fields in the tWellProd table. On the OFM Representation pane, expand
tWellProd.
Two fields are listed under tWellProd:
The primary key field (marked with the
The second field (marked with the
icon) is WellID.
icon) is ProductionID.
The monthly production values in the tMonthlyProduction table are referenced with the well ID
numbers in the tWellProd table.
245 of 262
246 of 262
247 of 262
248 of 262
249 of 262
1. With any grid map open, on the Format tab, in the Utilities group, click Open Analysis > Import
CPS.
2. Navigate to the OFM installation folder and select...Sample Workspaces\Illustrative Databases\CPS
File Sample\CPS Sample.grd.
3. Click Open.
250 of 262
Measured
Completion Depth
(MD)
True
Vertical
Interval
Interval
Interval
Interval
Reference
Depth
A, Top
A, Bottom B, Top
B, Bottom Depth
(TVD)
1000
1000
700
800
900
1000
2000
1000
1400
1600
1800
2000
500
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
8. You add markers on single or multi-well log displays, but you can show or hide them on the cross
section. To do this, on the Format tab, in the Display group, select Left Marker (to display the
marker to the left of the well) or Right Marker (to display it to the right of the well).
9. You add perforations to the wellbore diagram, but you can show or hide them on the cross section.
On the Property pane, change Show Perfs to Yes or No.
10. Cross sections also can have lithology intervals. This sample workspace has two (Interval A and
Interval B).
a. On the Format tab, in the Edit group, click Interval.
The Edit Interval window opens. It displays the lithology of Interval A, which is sandstone.
b. On the Name field, select B.
The Lithology displays. It is Limestone.
c. Click Close to close the window.
d. To show or hide the lithology intervals, on the Property pane change Show Litho Intervals
to Yes or No.
252 of 262
253 of 262
254 of 262
BFIELD WATERFLOOD
255 of 262
b. Notice that in the Project field, it is associated with the LOCATION field on the XY table
(XY.LOCATION).
c. Click OK to close the Associations window.
256 of 262
After Normalization
257 of 262
1. Open the sample workspace. It is in the OFM installation folder, at ...Sample Workspaces\Illustrative
Databases\Normalization\Normalization.ofm.
2. If OFM does not list a plot in the Analysis pane, create a plot:
a. On the Home tab, in the Launch analysis group, click Plot.
The Edit Plot window opens. You will add three rows to the table in the middle of the window.
b. On the first row, make these selections:
Variables: Monthly_prod.Oil
Category: Completion
Name: Well_001
c. Click Add Curve to add a second row.
d. On the second row, make these selections:
Variables: Monthly_prod.Oil
Category: Completion
Name: Well_002
e. Click Add Curve to add a third row.
f. On the third row, make these selections:
Variables: Monthly_prod.Oil
Category: Completion
Name: Well_003
g. Click OK to close the window and display the plot.
The plot shows the three wells. Each well starts and ends on a different date.
3. Normalize (time-shift) the tables:
a. On the Workspace tab, click Options.
The Options window opens.
b. On the Normalize Tables tab, select Enable Normalize Tables.
c. In the Starting Condition field, select InitialProdMonth.
d. For Date Option, select Earliest or Latest.
e. Click OK to close the Options window and see the normalized plot.
The date option affects the date to which production for all of the wells is shifted.
258 of 262
Date
Val2
Val1
one
01/01/1990
one
01/01/1991
one
01/01/1992
one
01/01/1993
two
01/01/1990
two
01/01/1991
two
01/01/1991
two
01/01/1993
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
and second curve. If it doesn't, there are two choices. OFM will either carry forward the last
value of the first curve, or it will interpolate between values in the first curve that bound the X
value in the second curve. Carry forward allows the first curve's value to be carried forward
even if the data in the second curve falls beyond that of the first curve; interpolate doesn't do
that.
4. View the Regular, Stacked, Percent Contribution plot.
Each graph on this plot has Date for the X-axis and shows Prod.Val1 and Prod.Val2 on the Y-axis.
a. Click the upper graph.
This is a regular display. On the Format tab, in the Display group, the Regular button is
selected.
b. Click the middle graph.
This is a stacked display. On the Format tab, in the Display group, the Stacked button is
selected.
c. Click Regular to see the stacked display change to a regular display, and then click Stacked
again to return to the original display.
d. Click the curve in the middle graph.
e. On the Property pane, under Axis, the Method is Interpolation.
When the Interpolation method is selected for a stacked plot and a discrete data point is
missing, OFM linearly interpolates a value between the data points on either side of the missing
value.
f. Click the lower graph.
This is a percent contribution display. On the Format tab, in the Display group, the Percent
button is selected.
Interpolated plots might be the best choice when you are stacking instantaneous data, such as
rates. In this case, you might be able to assume that the rate between two points is the average of
the rate that came before and the rate that came after. You could use carry forward plots for
stacking volumes, especially if you want cumulative graphs, since with carry forward each curve's
last point is carried forward to the end, to be included in the total.
5. View the Carryforward with Sum and Average plot.
Each graph on this plot has Prod.Val1 for the X-axis and shows Prod.Val2 on the Y-axis.
a. Click the upper graph.
This is a regular display. On the Format tab, in the Display group, the Regular button is
selected.
b. Click the green curve.
c. On the Property pane, under Curve Properties, Step line between values is set to Yes.
Change it to No to see the graph without steps, and then change it back to Yes.
d. The middle graph uses the carry forward method in a sum display. The lower graph uses the
carry forward method in an average display. When the carry forward method is used in sum or
260 of 262
average displays, OFM carries the value of the last discrete data point on the curve that is being
summed or averaged to the end of the data set.
6. View the Interpolate with Sum and Average plot.
Like the previous plot, each graph on this plot has Prod.Val1 for the X-axis, and shows Prod.Val2 on
the Y-axis. For interpolated plots in a sum or average display, OFM does not interpolate beyond the
last discrete data point for a curve in the data set.
7. View the Stacked with Interpolate and Carryforward plot.
Like the previous two plots, each graph on this plot has Prod.Val1 for the X-axis and shows Prod.Val2
on the Y-axis. With a stacked display:
n
If the method is interpolation and a discrete data point is missing (as shown in the middle
graph), OFM linearly interpolates a value between the data points on either side of the missing
value.
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