OpenServer Complete
OpenServer Complete
OpenServer Complete
User Manual
IPM
OpenServer
January 2011
OpenServer
Communication Protocols to use IPM tools using external commands
by Petroleum Experts Limited
OpenServer is designed to provide an Open Architecture for all the Petroleum Experts IPM
products. This will allow the programs to be directly accessed and be driven by other third party
programs.
Applications for OpenServer are in Connections to:
Third Party Reservoir Simulator.
Process Simulators.
Economics Packages.
Data Base.
Field Control System.
In House and Proprietary Applications.
Specifically, the OpenServer allows other programs (such as Excel or
programs written in Visual Basic) to access public functions in Petroleum
Experts programs. An external program, in an automated procedure,
can then access the Petroleum Experts products.
As of IPM 7.0 OpenServer is a separately licenced product.
Copyright Notice
The copyright in this manual and the associated computer program are the property of Petroleum Experts
Ltd. All rights reserved. Both, this manual and the computer program have been provided pursuant to a
Licence Agreement containing restriction of use.
No part of this manual may be reproduced, transmitted, transcribed, stored in a retrieval system, or translated
into any language, in any form or by any means, electronic, mechanical, magnetic, optical or otherwise, or
disclose to third parties without prior written consent from Petroleum Experts Ltd., Petex House, 10 Logie
Mill, Edinburgh, EH7 4HG, Scotland, UK.
Petroleum Experts Ltd. All rights reserved.
IPM Suite, GAP, PROSPER, MBAL, PVTP, REVEAL, RESOLVE, IFM and OpenServer are trademarks of
Petroleum Experts Ltd.
Microsoft (Windows), Windows (2000) and Windows (XP) are registered trademarks of the Microsoft
Corporation
The software described in this manual is furnished under a licence agreement. The software may be used or
copied only in accordance with the terms of the agreement. It is against the law to copy the software on any
medium except as specifically allowed in the license agreement. No part of this documentation may be
reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying,
recording, or information storage and retrieval systems for any purpose other than the purchaser's personal
use, unless express written consent has been given by Petroleum Experts Limited.
Address:
Petroleum Experts Limited
Petex House
10 Logie Mill
Edinburgh, Scotland
EH7 4HG
Tel : (44 131) 474 7030
Fax : (44 131) 474 7031
email: [email protected]
Internet: www.petex.com
1990-2011 Petroleum Experts Limited
OpenServer
Table of Contents
0
1 Basic Functions
................................................................................................................................... 4
2 Calling...................................................................................................................................
Public Functions
5
Part 2 Support
10
1 Tag Strings
................................................................................................................................... 10
2 Automation
................................................................................................................................... 11
Exam ple Macro
.......................................................................................................................................................... 11
Macro Fram ew
..........................................................................................................................................................
ork
14
DoCm d
.......................................................................................................................................................... 15
DoSet Sub Com
..........................................................................................................................................................
m and
16
DoCom m andAsync
.......................................................................................................................................................... 16
DoGet Sub Com
..........................................................................................................................................................
m and
17
3 Batch ...................................................................................................................................
File
18
Running a Batch
..........................................................................................................................................................
File
18
Form atting Com
..........................................................................................................................................................
m ands
19
DoCom m and .......................................................................................................................................................... 20
SetValue
.......................................................................................................................................................... 20
GetValue and ..........................................................................................................................................................
GetValPrint
21
4 Arrays...................................................................................................................................
and List Variables
21
Special Array ..........................................................................................................................................................
Operations
22
COUNT ......................................................................................................................................................... 22
NDIM
......................................................................................................................................................... 22
DIMSIZE ......................................................................................................................................................... 23
RESET
......................................................................................................................................................... 23
SORT
......................................................................................................................................................... 24
ADD
......................................................................................................................................................... 24
DELETE ......................................................................................................................................................... 24
INSERT ......................................................................................................................................................... 25
5 Multiple
...................................................................................................................................
Values for Arrays
25
Multiple DoGet
..........................................................................................................................................................
Values
25
Multiple DoSet..........................................................................................................................................................
Values
26
Using More than
..........................................................................................................................................................
One Multiple Array
26
6 Units ................................................................................................................................... 27
7 Start/Shutdown
...................................................................................................................................
Commands
29
32
1 Introduction
...................................................................................................................................
and Variable Lists
32
Ctrl + Right m ouse
..........................................................................................................................................................
click
33
Execute OpenServer
..........................................................................................................................................................
Statem ent
34
January, 2011
Contents
II
January, 2011
II
III
OpenServer
SubFlow Sheets
.......................................................................................................................................................... 95
2 GAP OpenServer
...................................................................................................................................
Functions
95
GAP OpenServer
..........................................................................................................................................................
Functions Overview
96
CALCCOMPDP
..........................................................................................................................................................
(com p) / CALCPUMPDP (pum p)
102
CALCPIPEDP(pipe)
.......................................................................................................................................................... 103
COPYITEM( EquipDest,
..........................................................................................................................................................
EquipSrc )
105
DELITEM (node)
.......................................................................................................................................................... 105
ISMEMBEROFGROUP(Group)
.......................................................................................................................................................... 105
LINKITEMS ( equip1,
..........................................................................................................................................................
equip2, linklabel )
106
NEWFILE( ) .......................................................................................................................................................... 106
NEWITEM( type,
..........................................................................................................................................................
label, iposcode, equip, m odel )
106
Working w.........................................................................................................................................................
ith Flow sheets
107
OPENFILE( filenam
..........................................................................................................................................................
e)
108
PCCALC (equip,
..........................................................................................................................................................
PcCurve)
109
PCGMAX (equip,
..........................................................................................................................................................
PcCurve)
110
PCGSOLV (equip,
..........................................................................................................................................................
PcCurve)
110
PCPSOLV (equip,
..........................................................................................................................................................
PcCurve)
111
PREDDOSTEP..........................................................................................................................................................
(optim ise, potential)
112
PREDDOSOLVER
..........................................................................................................................................................
(tim estepsize, optim ise, potential, m odel)
113
PREDEND(dorest,
..........................................................................................................................................................
optim ise, potential)
114
PREDINIT (ignore
..........................................................................................................................................................
internal tim estep, ignore internal scheduling)
115
PURGEALLRESULTS
..........................................................................................................................................................
(m odel)
116
PURGEPREDLOG
..........................................................................................................................................................
(m odel)
116
PURGEPREDRESULTS
..........................................................................................................................................................
(m odel)
116
PURGEPREDSNAPSHOT
..........................................................................................................................................................
(m odel)
117
PURGESOLVERLOG
..........................................................................................................................................................
(m odel)
117
PURGESOLVERRESULTS
..........................................................................................................................................................
(m odel)
117
REFITPC(w ell)
.......................................................................................................................................................... 117
RESETSOLVERINPUTS
..........................................................................................................................................................
()
118
SAVEFILE( filenam
..........................................................................................................................................................
e)
118
SHUTDOWN (save)
.......................................................................................................................................................... 118
SOLVENETWORK()
.......................................................................................................................................................... 119
TRANSFERPROSPERIPR
..........................................................................................................................................................
(w ell, layernum ber, PVTMethod)
120
UNLINKITEMS..........................................................................................................................................................
(equip1, equip2)
120
VALIDATE (solverorpred)
.......................................................................................................................................................... 121
VLPIMPORT (equip,
..........................................................................................................................................................
filenam e)
121
VLPIPRPCGEN
..........................................................................................................................................................
(w ell, autow hp)
122
WELLCALC (w
..........................................................................................................................................................
ell)
122
MOD[i].CopyControls
..........................................................................................................................................................
(from , to, SkipFNAs)
123
MOD[i].ResetControls
..........................................................................................................................................................
(colum n)
124
MOD[i].RESETSCHEDULE
..........................................................................................................................................................
(type, equiptype)
124
MOD[i].VALIDATE
..........................................................................................................................................................
(solverorpred)
124
GROUPS
.......................................................................................................................................................... 125
EQUIP[i].ADDTOGROUP
..........................................................................................................................................................
(group)
126
EQUIP[i].BYPASS
..........................................................................................................................................................
()
126
EQUIP[i].DISABLE
..........................................................................................................................................................
()
126
EQUIP[i].ENABLE
..........................................................................................................................................................
()
126
EQUIP[i].IsMem
..........................................................................................................................................................
berOfGroup(group)
127
EQUIP[i].MASK
..........................................................................................................................................................
()
127
EQUIP[i].REMOVEALLGROUPMEMBERSHIPS
..........................................................................................................................................................
()
127
EQUIP[i].REMOVEFROMGROUP
..........................................................................................................................................................
(group)
127
EQUIP[i].UNBYPASS
..........................................................................................................................................................
()
128
EQUIP[i].UNMASK
..........................................................................................................................................................
()
128
EQUIP[i].VALIDATE
..........................................................................................................................................................
(solverorpred)
128
January, 2011
Contents
IV
TANK[i].CalcDCTankCurPres(CurProd)
.......................................................................................................................................................... 128
PIPE[i].DOMATCH
..........................................................................................................................................................
()
129
IPR[i].CONINGMATCH
..........................................................................................................................................................
()
129
IPR[i].DISABLE
..........................................................................................................................................................
()
129
IPR[i].ENABLE..........................................................................................................................................................
()
130
IPR[i].IPRMATCH
..........................................................................................................................................................
()
130
IPR[i].MASK ()
.......................................................................................................................................................... 130
IPR[i].UNMASK
..........................................................................................................................................................
()
131
IPR[i].VALIDATE
..........................................................................................................................................................
(solverorpred)
131
3 GAP ...................................................................................................................................
Internal Script
131
134
1 Finding
...................................................................................................................................
a Variable Text String
134
2 Date ...................................................................................................................................
Handling within MBAL
135
3 Commands
................................................................................................................................... 135
General
.......................................................................................................................................................... 136
Material Balance
..........................................................................................................................................................
Com m ands
136
Monte Carlo .......................................................................................................................................................... 138
1D Model
.......................................................................................................................................................... 138
Decline Curve
.......................................................................................................................................................... 138
Multi-Layer .......................................................................................................................................................... 138
Production Allocation
.......................................................................................................................................................... 138
Tight Gas
.......................................................................................................................................................... 139
PVT
.......................................................................................................................................................... 139
4 OpenServer
...................................................................................................................................
Code Examples
140
DoGet, DoSet..........................................................................................................................................................
and DoCm d Exam ple
140
List Variables
.......................................................................................................................................................... 141
Material Balance
..........................................................................................................................................................
Step-by-Step Prediction
142
Production Allocation
..........................................................................................................................................................
Step-by-Step Prediction
144
5 Direct...................................................................................................................................
Access OPENSERVER
145
Overview
.......................................................................................................................................................... 145
Sum m ary .......................................................................................................................................................... 146
High Level Exam
..........................................................................................................................................................
ple
147
Low Level Exam
..........................................................................................................................................................
ple
155
Datablock Variable
..........................................................................................................................................................
Nam es
170
6 Variable
...................................................................................................................................
Text Strings
173
1D Model
.......................................................................................................................................................... 173
Monte Carlo .......................................................................................................................................................... 174
Decline Curve
.......................................................................................................................................................... 175
Multi-Layer Tool
.......................................................................................................................................................... 175
PVT
.......................................................................................................................................................... 177
Material Balance
.......................................................................................................................................................... 179
Production Allocation
.......................................................................................................................................................... 185
Tight Gas
.......................................................................................................................................................... 186
Relative Perm
..........................................................................................................................................................
eability Curves
186
189
1 General
...................................................................................................................................
Comments
189
Getting the strings
..........................................................................................................................................................
through Ctrl+Right Click
190
List of variables
..........................................................................................................................................................
in PROSPER file (NEW!!!)
190
January, 2011
IV
OpenServer
Evaluate OpenServer
..........................................................................................................................................................
Statem ent Section (NEW!!!!)
195
Setting the Units
..........................................................................................................................................................
and Validation Lim its
196
Counting num
..........................................................................................................................................................
ber of entry data points or calculated results
198
2 Options
...................................................................................................................................
Summary Data
199
3 PVT Data
...................................................................................................................................
Section
202
INPUT - Input..........................................................................................................................................................
Data
202
MATCH - PVT..........................................................................................................................................................
Match Data
204
TABLE - Setting
..........................................................................................................................................................
data to the PVT Lookup Tables
205
CORREL Correlation
..........................................................................................................................................................
Matching Param eters
206
Black Oil -.........................................................................................................................................................
Oil
206
Black Oil -.........................................................................................................................................................
Gas
208
Black Oil -.........................................................................................................................................................
Retrograde Condensate
208
CALC - Calculation
..........................................................................................................................................................
Results
209
EOS - Equation
..........................................................................................................................................................
of State Data
211
DLL - External
..........................................................................................................................................................
PVT DLL Data
214
EMULSION - Em
..........................................................................................................................................................
ulsion Data
215
VISC - Viscosity
..........................................................................................................................................................
Data
215
HYD - Hydrates
..........................................................................................................................................................
Form ation Data
216
4 INPUT
...................................................................................................................................
Data Section
216
IPR Data
.......................................................................................................................................................... 217
Overview......................................................................................................................................................... 217
Single Branch
.........................................................................................................................................................
Data
217
Common Parameters
......................................................................................................................................... 217
Model Selection .........................................................................................................................................
and PVT Screen
218
Test/PI Entered Models
......................................................................................................................................... 219
MultiRate Models......................................................................................................................................... 220
Darcy-based Models
......................................................................................................................................... 221
External Entry Model
.........................................................................................................................................
Parameters
223
Multi-layer (no friction
.........................................................................................................................................
dP loss) Table
223
Horizontal Well w
.........................................................................................................................................
ith dP Friction Loss Table, Including Coning Screen
224
Multi-layer w ith dP
.........................................................................................................................................
Friction Loss Table
226
Skin Aide Model.........................................................................................................................................
Parameters
228
Tw o-term Model.........................................................................................................................................
Parameters
231
Fracture Model ......................................................................................................................................... 231
SPOT
......................................................................................................................................... 232
Mechanical Skin.........................................................................................................................................
Parameters
238
Deviation Skin-Specific
.........................................................................................................................................
Parameters
239
Gravel Pack-Specific
.........................................................................................................................................
Parameters
240
Relative Permeability
.........................................................................................................................................
Screen
241
Gas Coning Parameters
.........................................................................................................................................
for Oil
241
Multi-lateral
.........................................................................................................................................................
Well Data
242
Netw ork items ......................................................................................................................................... 242
Branch, Layer and
.........................................................................................................................................
Segment Details
248
Calculation Control
.........................................................................................................................................
Data
249
Visualisation Data
......................................................................................................................................... 249
Multilateral Results
......................................................................................................................................... 250
Equipm ent Data
.......................................................................................................................................................... 251
Overview......................................................................................................................................................... 251
DEVN Deviation
.........................................................................................................................................................
Survey Equipment
252
TEMP Flow
.........................................................................................................................................................
ing Temperature Survey
252
GEO Geothermal
.........................................................................................................................................................
Gradient
253
SURF Surface
.........................................................................................................................................................
Equipment
253
TURF Surface
.........................................................................................................................................................
Equipment (Enthalpy Balance)
254
January, 2011
Contents
VI
DOWN Dow
.........................................................................................................................................................
n Hole Equipment
255
TOWN Dow
.........................................................................................................................................................
n Hole Equipment (Enthalpy Balance)
256
SHC Fluid
.........................................................................................................................................................
Properties Average Heat Capacities
256
ENV Surface
.........................................................................................................................................................
Environment Data (Enthalpy Balance / Rough Approx.)
257
DRILL Drilling
.........................................................................................................................................................
Data (Enthalpy Balance)
257
LITHO Lithology
.........................................................................................................................................................
(Enthalpy Balance)
259
DB Databases
.........................................................................................................................................................
(Enthalpy Balance)
259
Artificial Lift ..........................................................................................................................................................
Data Section
260
Gas Lift (Continuous)
......................................................................................................................................................... 261
Electircal .........................................................................................................................................................
Submersible Pump
262
Hydraulic .........................................................................................................................................................
Drive Dow nhole PUmp
263
Progressive
.........................................................................................................................................................
Cavity Pump
263
Coil Tubing
.........................................................................................................................................................
Gas Lift
263
Jet Pump ......................................................................................................................................................... 264
Multiphase
.........................................................................................................................................................
Pump
264
Sucker Rod
.........................................................................................................................................................
Pump
264
Gas Lift (Intermittent)
......................................................................................................................................................... 265
5 Calculation
...................................................................................................................................
Input Data
265
INF - Inflow Sensitivity
..........................................................................................................................................................
Calculations
273
SYS - System..........................................................................................................................................................
Sensitivity Calculations
275
SYS - System..........................................................................................................................................................
Multi-Variable Calculations
279
GRD - Gradient
..........................................................................................................................................................
Sensitivity Calculations
281
VL3 - VLP Sensitivity
..........................................................................................................................................................
Calculations (3 Variables)
283
VL4 - VLP Sensitivity
..........................................................................................................................................................
Calculations (4 Variables)
286
VLM - Multi-Variable
.......................................................................................................................................................... 289
QLG - QuickLook
..........................................................................................................................................................
GasLift
290
QLE - QuickLook
..........................................................................................................................................................
ESP
291
QLH - QuickLook
..........................................................................................................................................................
HSP
292
TCC - Tubing..........................................................................................................................................................
Correlation Com parison
293
PCC - Pipeline
..........................................................................................................................................................
Correlation Com parison
295
GMT - Gradient
..........................................................................................................................................................
Matching
297
GDT - Gradient
..........................................................................................................................................................
Test Data
298
VMT - VLP Matching
.......................................................................................................................................................... 299
PMT - PipeLine
..........................................................................................................................................................
Matching
300
CHK - Choke ..........................................................................................................................................................
Perform ance
301
GEN - Generate
..........................................................................................................................................................
For GAP
302
WHP - BHP from
..........................................................................................................................................................
WHP
303
PLD - Plot Details
.......................................................................................................................................................... 304
COR - Flow Correlation
..........................................................................................................................................................
Data
308
THR - Correlation
..........................................................................................................................................................
Threshold Data
309
CST - Constrained
..........................................................................................................................................................
System Calculations
309
CVT - Constrained
..........................................................................................................................................................
VLP Calculations
311
UST - Unconstrained
..........................................................................................................................................................
System Calculations
313
UVT - Unconstrained
..........................................................................................................................................................
VLP Calculations
315
UGT - Unconstrained
..........................................................................................................................................................
Gradient Calculations
318
6 Artificial
...................................................................................................................................
Lift Design Input Data
320
GasLift Design
.......................................................................................................................................................... 320
Electical Subm
..........................................................................................................................................................
ersible Pum p Design
324
Hydraulic Drive
..........................................................................................................................................................
Dow nhole Pum p Design
324
Progressive ..........................................................................................................................................................
Cavity Pum p Design
325
Jet Pum p Design
.......................................................................................................................................................... 325
Sucker Rod Pum
..........................................................................................................................................................
p Design
326
7 Calculation
...................................................................................................................................
Results
327
OpenServer User's Manual
January, 2011
VI
VII
OpenServer
8 Commands
................................................................................................................................... 404
9 Functions
................................................................................................................................... 413
10 Code...................................................................................................................................
Samples
415
426
1 OverView
................................................................................................................................... 426
2 File and
...................................................................................................................................
Streams
426
3 BLACKOIL
................................................................................................................................... 427
4 OPTIONS
................................................................................................................................... 428
5 STREAMBASE
...................................................................................................................................
[stream no. or stream name]
431
6 STREAMRUN[stream
...................................................................................................................................
no. or stream name]
435
7 CALCUL[stream
...................................................................................................................................
no. or stream name]
437
8 Carrying
...................................................................................................................................
out Calculations and Obtaining Results
444
Analysis
.......................................................................................................................................................... 447
Flash Calculation
.......................................................................................................................................................... 449
Sm all Separator
..........................................................................................................................................................
Calculation
449
Saturation Pressure
..........................................................................................................................................................
at Reference Conditions
451
Recom bination
..........................................................................................................................................................
Calculation
451
Allocate: Blending
..........................................................................................................................................................
to a Target GOR
452
455
1 Scope
................................................................................................................................... 455
January, 2011
Contents
VIII
2 Commands
................................................................................................................................... 455
3 Script...................................................................................................................................
Data
456
4 Results
...................................................................................................................................
Data
457
5 Runtime
...................................................................................................................................
Data
458
467
1 Overview
................................................................................................................................... 467
2 Top Level
...................................................................................................................................
Variables
468
Module variables
.......................................................................................................................................................... 470
Module Optimisation
.........................................................................................................................................................
variables
473
SrcSnk variables
......................................................................................................................................................... 474
Driver variables
.......................................................................................................................................................... 475
ModLink variables
.......................................................................................................................................................... 476
Schedule variables
.......................................................................................................................................................... 477
Scenario Manager
..........................................................................................................................................................
Variables
478
Connection variables
.......................................................................................................................................................... 478
Properties variables
.......................................................................................................................................................... 479
Optim iser param
..........................................................................................................................................................
eter variables
479
Optim iser schedule
..........................................................................................................................................................
variables
480
3 Commands
...................................................................................................................................
(COPY)
481
4 Sample
...................................................................................................................................
macros
482
484
1 OpenServer
...................................................................................................................................
VBA Template
484
2 GAP ...................................................................................................................................
Examples
484
Basic Code Structure
.......................................................................................................................................................... 484
Exam ple 1 GAP
..........................................................................................................................................................
Open Server Exam ple A
487
Exam ple 2 GAP
..........................................................................................................................................................
Open Server Exam ple B
489
Exam ple 3 GAP
..........................................................................................................................................................
Open Server Exam ple C
500
Exam ple 4 GAP
..........................................................................................................................................................
Open Server Exam ple D
500
3 MBAL...................................................................................................................................
Examples
503
Step-by-Step..........................................................................................................................................................
Material Balance Prediction Exam ples
504
4 Step-by-Step
...................................................................................................................................
Production Allocation Examples
505
5 Direct...................................................................................................................................
Access Examples
505
6 PROSPER
...................................................................................................................................
Example
505
January, 2011
VIII
Chapter
Technical Overview
Technical Overview
OpenServer is a powerful utility that allows other programs (such as Excel, programs
written in Visual Basic) to access public functions in IPM to automate data input and
model calculations.
Specifically, OpenServer allows other programs such as Excel or programs written in
Visual Basic, to access public functions in the IPM Suite of tools. An external program,
in an automated procedure, can then access the IPM Suite of tools.
OpenServer can be used to run the IPM Suite of tools in conjunction with other
software applications and exchange data between them. For example, a Visual Basic
program or batch file could be used to successively initialize all IPRs in GAP from
MBAL simulations then retrieve all current IPR data.
OpenServer provides seamless data transfer to and from the PETEX tools to other
applications and database utilities. Also, the client program can use any technique to
access the values in the database, e.g. ODBC, DAO, SQL and then transfer them with
OpenServer to IPM.
Being able to automate data transfer, automate calculations and automatically
interrogate existing IPM model inputs provides a basis to develop streamline workflows that serves to free up valuable engineering time.
The following OpenServer uses is not an exhaustive list, and illustrates some
OpenServer possibilities:
Batch Runs
Consider a situation where a prediction calculation in MBAL has been set up and it is of
interest to check the final recovery for a range of OOIP values.
A spreadsheet in Excel can be created that lists all the OOIP's to be used in the
prediction.
A VBA macro can be written within Excel which:- Gets the first OOIP value from the spreadsheet and sets it in the MBAL tank
- Runs a production prediction
- Queries the final recovery from the production results and writes into the
spreadsheet.
- Repeat for the next OOIP, etc.
Custom Reporting
Although PETEX products provide a variety of report formats, it is possible that specific
reporting structures are required. A VBA macro within Excel can be written to query the
required values from a PETEX product and then written in the required format to the
1990-2011 Petroleum Experts Limited
OpenServer
spreadsheet.
Data Import/Export
The OpenServer can be used for transferring data to or from a database and PETEX
programs. The client program can use any technique to access the values in the
database (e.g. ODBC, DAO, and SQL) and then transfer them with OpenServer.
For example, production data may be stored in an Access database, a VBA macro can
be written in Access to query the data from the database and then use OpenServer to
set the data in MBAL for instance.
An example is available in the installed MBAL examples OPENSERV.MDB.
Enhanced Prediction Runs in GAP
Using OpenServer with GAP provides the ability to control field development strategies
during the prediction by performing a task such as well drilling and completing from
using OpenServer to dynamically monitor an overall facilities rate constraint. This
means that wells will now be drilled and completed based on the overall model
response, rather than driving well drilling scheduling from a scheduled date perspective.
Please see the GAP OpenServer Example D.GAR file that also contains the completed
drilling queue macro.
Running PETEX programs with other engineering software applications
OpenServer can be used to run the PETEX programs in conjunction with other software
applications and exchange data between them.
For example, a visual basic program or batch file could be used to successively:
- Run a process simulator to calculate a feed separator pressure
- Set the separator pressure in GAP
- Optimize the production system in GAP
- Pass the GAP rates onto the process simulator
-Run the process simulator, etc.
It is important to note that dynamic links to industry standards process and numerical
reservoir simulators are now available through RESOLVE.
Technical Overview
1.1
Basic Functions
There are a number of public functions that have been made available. However the
three most important functions are as follows.
DoGet
This function allows an external program to query a data value in a PETEX program. It
should be possible to obtain the value of any data item that can normally be viewed
using the user interface of the PETEX programs. Each data item is defined by a unique
text string.
DoSet
This function allows an external program to change a data value in a PETEX program. It
should be possible to change the value of any data item that can normally be viewed
using the user interface of the PETEX programs. It should be possible to build a data
set from scratch using the DoSet function.
However, it is recommended that the user interface is still used to build parts of a data
set which do not require any automation. This will allow the normal quality checking to
take place which is a very important aspect of the model building process.
Each data item is defined by a unique text string.
These basic functions are already setup in the OpenServer template provided with the
software installation.
The OpenServer template is called OpenServer Template.xls and can be found at the
following location:
- C:\Program Files\Petroleum Experts\IPM 7.0\Samples\openserver\Template
This template should be used as a starting point when building an Excel based
OpenServer utility.
DoCmd
This function allows calculations to be performed in a PETEX program. Each calculation
type is defined by a unique text string.
Only a subset of calculations available via the normal user interface of the PETEX
products are available using the OpenServer.
In particular, the DoCommand function supports those calculations which are applicable
to automated use e.g. a GAP prediction.
However it generally does not support those calculations that require the user interface
for correct use e.g. MBAL graphical matching.
Different syntaxes can be used in certain cases to replace the command.
These different syntaxes can be:
- DoCmd (used to perform a PROSPER calculation)
- DoGAPFunc (used to perform a GAP calculation)
- DoSlowCmd (See note below)
1990-2011 Petroleum Experts Limited
OpenServer
The code for these commands has already been setup in the OpenServer template
provided with the software installation.
This OpenServer template is called OpenServer Template.xls and can be found at the
following location:
- C:\Program Files\Petroleum Experts\IPM 6.0\Samples\openserver\Template.
The OpenServer template can be used as a starting point when building an Excel
based OpenServer utility. Also, the variety of OpenServer example files that have
been constructed for each IPM tool can also be modified to meet individual needs.
Note:
Unfortunately, VBA was designed for use with simple functions that take only a few
seconds. If a function is called that takes more than one minute to complete, a timeout
error in Excel may occur depending on operating system, Excel version, setup etc. This
is where the DoSlowCmd would be required to replace the DoCmd sub fuction.
The DoSlowCmd will also be required if the license server has high traffic where the
speed of communication from the local PC to obtain a license has been reduced.
1.2
Technical Overview
individual documentation.
Batch File
To avoid dependence on Automation, it is also possible to call the public functions in
the PETEX programs using a simple batch file.
The functions required are typed into a text file.
A program is supplied by Petroleum Experts (PXBATCH) which will interpret the text file
and call the functions in the PETEX programs.
It also writes the output of the DoGet function to another text file which can be viewed
afterwards.
Chapter
Support
Support
The main strength of the OpenServer is that users are now free to develop their own
applications which utilise the public functions within PETEX products. However this
does mean that a user of the OpenServer will require more computing knowledge than
a user of the standard PETEX programs. This is particularly the case where a user
writes a client application in VBA or Visual Basic. The user is expected to have (or be
trained in) the requisite computing skills to write these client applications.
Petroleum Experts will not be able to undertake to train users in these
computing skills.
The boundary of the PETEX products and the users applications needs to be defined
with respect to support provided by Petroleum Experts of the OpenServer feature.
Firstly, as with normal support, a maintenance agreement between the user and
Petroleum Experts must be in place.
Unfortunately, Petroleum Experts will not be able to undertake development of
VBA macros, batch files or other OpenServer clients for a particular user. The
strength of the feature is to allow the user to implement these client applications without
any further input by Petroleum Experts.
Similarly Petroleum Experts will be unable to assist in fixing bugs in users VBA macros,
batch files or any other OpenServer client.
Petroleum Experts will undertake to support any user who can demonstrate
(through a simple fragment of a batch file or VBA macro etc) that a public
function call to a PETEX product fails to work correctly.
Chapter
Using OpenServer
10
Using OpenServer
This chapter describes in detail how to access the public function in PETEX programs.
The TagStrings section describes how each data item is defined in the PETEX
programs using a variable text string.
The Automation section describes how to call the public functions using Automation.
We first describe the framework needed to use the OpenServer, then each function is
described in detail.
The Batch File section describes how to call the public functions using a batch file
system. We describe the framework and then describe each function in detail.
This section does not deal with specific issues relating to particular products e.g. GAP
or MBAL.
To use the public function for a particular PETEX program, the tools must be installed
on the local hard disk with access to a valid security authentication e.g. security key or
HARDLOCK.
When the public functions are being called (either using Automation or a batch file), the
appropriate PETEX product must be running. However, it does not need to be visible on
the screen (i.e. it can be minimized). Commands are available to start each of the
programs. Alternatively one can start the programs manually before running a macro/
batch file.
3.1
Tag Strings
Tag strings describe each data item in the PETEX programs. It is a string of characters
which is broken into a number of subnames separated by full stops. As one moves from
left to right along the string, the definition of the variable becomes more detailed.
The tag string of any data item in MBAL always begins with the subname MBAL.
Similarly, any data item from GAP, PVTP, REVEAL, RESOLVE or PROSPER will begin
with the subname
GAP, PVTP, REVEAL, "RESOLVE" or PROSPER
respectively.
The rest of the string depends on the section of the program. There may be several
subnames if the data item is part of a complex hierarchy.
For example, for the start time in the material balance prediction we may have MBAL.
MB.PRED.STARTTIME".
For this tag string:
- MBAL From the MBAL program
1990-2011 Petroleum Experts Limited
11
OpenServer
3.2
Automation
This section describes how to access the public functions using Automation. This is a
Microsoft Windows standard (formally known as OLE Automation). This method
requires software which can act as an Automation client to call the public functions.
Probably the most commonly used example of such an Automation client that is used
in the engineering industry is the VBA macro language within Excel. We will therefore
demonstrate how the public functions are called by such macros the same rules
should extend to other Automation clients.
Rather than describing the functions in isolation, an example of an Excel VBA macro is
presented that uses all the available public functions. Each function within this example
will be described including macro error handling.
It is important to note that the OpenServer template already contains the necessary
macro communication error handling already built in.
Using OpenServer
12
If the MBAL file name was placed at a certain cell reference in Excel, then the
following File | Open approach could be used: "MBAL.OpenFile(""" + Range
("E12") + """)"
OpenServer Template Error Handling Code
The following code is part of the OpenServer template and manages error handling
between the application and macro:
Sub DoCmd(Cmd)
Dim lErr As Long
lErr = Server.DoCommand(Cmd)
If lErr > 0 Then
MsgBox Server.GetErrorDescription(lErr)
Set Server = Nothing
End
End If
End Sub
13
OpenServer
Using OpenServer
14
15
OpenServer
3.2.3 DoCmd
The DoCmd function is used to perform calculations and other functions such as file
opening and saving in the PETEX programs.
Only a subset of the commands available using the user interface are available. The
commands that are not supported are those that require some graphical interaction
such as graphical history matching in MBAL.
In the above example, DoCmd is used twice. The first time it is used to open the Oil.
MBI data file.
The second time it is used for running a prediction. The text string after the DoCmd
statement describes the command to be performed.
The text string always starts with the name of the program in which the calculation is to
be done. The rest of the text string describes the command check the following
sections describing each PETEX program for a list of possible calculations.
There is no output to the PXR file for this command. If there is any error, a message will
be written to PXBATCH.LOG.
Note that the abbreviation dc can be used in the batch file instead of DoCmd.
Note:
As previously mentioned, VBA was designed for use with simple functions that take only
a few seconds. If a function is called that takes more than one minute to complete, a
timeout error in Excel may occur depending on operating system, Excel version, setup
etc. If this happens, the DoSlowCmd should be used instead of the DoCmd.
OpenServer User's Manual
Using OpenServer
16
3.2.5 DoCommandAsync
This function is a variation of the DoCmd function. It is nearly always used in conjunction
with the IsBusy() function.
When a VBA macro is run, it executes and completes each line before moving onto the
next line. So when the DoCmd function is called for a long prediction, it may take
several minutes (or even hours) before the VBA can move onto the next line in the
macro.
Unfortunately, VBA was designed for use with simple functions that take only a few
seconds. If a function is called that takes more than one minute to complete, a timeout
error in Excel may occur depending on operating system, Excel version, setup etc..
The DoCommandAsync functions to be called that take a long time to complete without
any risk of timeouts. When a DoCommandAsync is called, the OpenServer starts the
calculation in the PETEX program but lets the VBA carry immediately on to the next line
in the macro. This avoids the timeout error in Excel.
Unfortunately it introduces another problem. What if the next line in the macro was a call
to the GetValue function to get the results of the calculation? The macro is likely to try to
1990-2011 Petroleum Experts Limited
17
OpenServer
get the calculated value before the calculation is finished! So the VBA still needs some
way of knowing when the calculation has finished.
Therefore it is usually necessary to append some VBA code after a call to
DoCommandAsync which loops until the calculation is finished. The inserted code uses
another function called IsBusy() to check if the calculation is finished.
This VBA code to do this is in the macro subroutine DoSlowCmd() in the example
macro. The code loops round until the IsBusy function returns a value greater than zero.
The only input argument is the name of the PETEX program in which the calculation was
called. Within the loop the code will wait 2 seconds before looping again. It also calls the
VBA function, DoEvents, which will allow other windows program to work whilst the VBA
is waiting for the calculation to finish.
It is recommended that the DoSlowCmd macro subroutine shown in the
example macro and provided in the OpenServer Template.xls file is used for all
applications as it already has error handling built in as well as the code to wait
for the function to finish.
Using OpenServer
3.3
18
Batch File
This section describes how to access the public functions using a batch file. Each
command is typed into an ASCII file. A program is supplied by Petroleum Experts which
reads this ASCII file and calls the public functions in the PETEX programs and writes
the output to another ASCII file.
19
OpenServer
An example batch will be presented which shows calls to all the public functions in the
PETEX products. Then each function used in the example batch file will be described in
turn.
The example batch file is as follows (this file is available in the installed MBAL
examples, MBALTEST.PXB).:# Example batch file
PRINT Example batch file output
PRINT
docommand MBAL.OpenFile("C:\PETEX\SAMPLES\OIL.MBI")
setvalue MBAL.MB.TANK.OOIP 250.0
docommand MBAL.MB.RUNPREDICTION
getvalprint MBAL.MB.TANK.OOIP
PRINT "First oil rate ="
PRINTTAB
PRINTTAB
getvalue MBAL.MB.TRES[2][0][0].OILRATE
PRINT " bbls/day"
PRINT
PRINT End of example batch file output
The output PXR file from the above batch file is as follows:
250 ! MBAL.MB.TANK.OOIP
First oil rate =
16516.8 bbls/day
End of example batch file output
Using OpenServer
20
The second formatting command is PRINTTAB. This command simply writes a tab
character to the PXR file.
3.3.3 DoCommand
The DoCmd function is used to perform calculations and other functions such as file
opening and saving in the PETEX programs.
Only a subset of the commands available using the user interface are available. The
commands that are not supported are those that require some graphical interaction
such as graphical history matching in MBAL.
In the above example, DoCmd is used twice. The first time it is used to open the Oil.
MBI data file.
The second time it is used for running a prediction. The text string after the DoCmd
statement describes the command to be performed.
The text string always starts with the name of the program in which the calculation is to
be done. The rest of the text string describes the command check the following
sections describing each PETEX program for a list of possible calculations.
There is no output to the PXR file for this command. If there is any error, a message will
be written to PXBATCH.LOG.
Note that the abbreviation dc can be used in the batch file instead of DoCmd.
Note:
As previously mentioned, VBA was designed for use with simple functions that take only
a few seconds. If a function is called that takes more than one minute to complete, a
timeout error in Excel may occur depending on operating system, Excel version, setup
etc. If this happens, the DoSlowCmd should be used instead of the DoCmd.
3.3.4 SetValue
This function is used to set the value of a data item. It should be possible to change
most of the values that can normally be accessed via the user interface.
In the example we use SetValue once to change the original oil in place to 250.0. The
first text string after SetValue defines the variable to be changed. The second text string
defines the new value of the variable. This function expects the value to be in the units
currently displayed in the user interface.
There is no output to the PXR file for this command. If there is any error, a message will
be written to PXBATCH.LOG.
Note that the abbreviation sv can be used in the batch file instead of SetValue.
21
OpenServer
3.4
Using OpenServer
22
One must place {} brackets around the label so the program will not interpret the label as
a numerical index.
NOTE: The label is the only part of a tag string which is case sensitive.
If there is only one item in the list, then the index is optional. For example, if there is only
one tank, the following tag string can be used:
MBAL.MB.TANK.OOIP
There are also some variables that are arrays with two or more dimensions. These
variables will require two or more indices in the tag string.
For example, consider the prediction results for the material balance tool in MBAL.
These have three indices where the first index indicates the result type, the second
index is the tank and the third index is the row.
A tag string for a result may look like:
MBAL.MB[0].TRES[0][0][3].GASSAT
3.4.1.1 COUNT
The COUNT feature returns the number of items that exist in an array. This feature only
works for arrays that have a variable size.
For example, the number of tanks in an MBAL model can be found using the command:
Range("C11") = DoGet("MBAL.MB.TANK.COUNT")
This command can also be used in multi-dimensional arrays to count the number of tank
prediction results for instance using the command:
Range("C11") = DoGet("MBAL.MB.TRES[2][3].COUNT")
3.4.1.2 NDIM
The NDIM feature can only be used for fixed length arrays. It is used to find the number
of dimensions in the array.
23
OpenServer
3.4.1.3 DIMSIZE
The DIMSIZE feature can only be used for fixed length arrays. It is used to find the fixed
number of items for a given dimension of the array.
Consider a variable which is a three-dimensional array (this is not an actual variable).
Now, this array has 3 items in the 1st dimension, 8 in the 2nd dimension and 20 in the
3rd dimension. So the maximum indices we can access would be (remembering that
the indices are zero based):
Range("C11") = DoGet("MBAL.MB.TANK.PV[2][7][19]")
One can find the fixed number of items in the second dimensions by calling the following
function:
Range("C11") = DoGet("MBAL.MB.TANK.PV.DIMSIZE[1]")
This function will return the value 8.
Similarly, DIMSIZE[0] will return 3 and DIMSIZE[2] will return 20.
3.4.1.4 RESET
The RESET feature can only be used for arrays with a variable number of items. It is
used to delete all the items in the array and thus reduce the number of items in the array
to zero.
For example, to delete all the items in the tank production history for an MBAL model,
use the command:
DoSet "MBAL.MB.TANK.PRODHIST.RESET", ""
Using OpenServer
24
3.4.1.5 SORT
The SORT feature can only be used for arrays with a variable number of items. It is
used to sort all the items in the array in order. The method of sorting is the same as
used in the corresponding dialog of the program.
For example, the tank production history for an MBAL model is sorted by the date of
each item in the array.
To sort the production history, use the command:
DoSet "MBAL.MB.TANK.PRODHIST.SORT", ""
3.4.1.6 ADD
The ADD feature can only be used for arrays with a variable number of items. It is used
to add a new item to the end of an array.
For example, to add two rows to an empty table of tank production history for an MBAL
model, use the commands:
DoSet
DoSet
DoSet
DoSet
DoSet
DoSet
DoSet
DoSet
"MBAL.MB.TANK.PRODHIST.ADD", ""
"MBAL.MB.TANK.PRODHIST[0].TIME", "01/01/2009"
"MBAL.MB.TANK.PRODHIST[0].PRESS", "6980.0"
"MBAL.MB.TANK.PRODHIST[0].CUMGAS", "0.0"
"MBAL.MB.TANK.PRODHIST.ADD", ""
"MBAL.MB.TANK.PRODHIST[1].TIME", "01/02/2009"
"MBAL.MB.TANK.PRODHIST[1].PRESS", "6589.0"
"MBAL.MB.TANK.PRODHIST[1].CUMGAS", "12.8"
3.4.1.7 DELETE
The DELETE feature can only be used for arrays with a variable number of items. It is
used to delete a particular item in the list and it will reduce the number of items in the list
by one.
For example, the following command will delete the 4th row in the production history
table of an MBAL model:
DoSet "MBAL.MB.TANK.PRODHIST[3].DELETE", ""
25
OpenServer
3.4.1.8 INSERT
The INSERT feature can only be used for arrays with a variable number of items and it
is used to insert a new item at a particular position in the list. All the items at and above
the position to insert will be moved up one position in the list, so the new item can be
inserted.
For example, the following command will insert a new row in the production history table
of an MBAL model. The new row will become the 7th row:
DoSet
DoSet
DoSet
DoSet
DoSet
3.5
"MBAL.MB.TANK.PRODHIST[6].INSERT", ""
"MBAL.MB.TANK.PRODHIST[6].TIME", "10/01/2000"
"MBAL.MB.TANK.PRODHIST[6].PRESS", "2700.0"
"MBAL.MB.TANK.PRODHIST[6].CUMOIL", "4.0"
"MBAL.MB.TANK.PRODHIST[6].CUMGAS", "4000.0"
=
=
=
=
=
DoGet("MBAL.MB.TANK[0].PRESS")
DoGet("MBAL.MB.TANK[1].PRESS")
DoGet("MBAL.MB.TANK[2].PRESS")
DoGet("MBAL.MB.TANK[3].PRESS")
DoGet("MBAL.MB.TANK[4].PRESS")
A quicker method is to get all the pressures in one DoGet call, and there are two
options to achieve the objective:
- Get the pressures for all the available tanks: Range("C1") = DoGet("
MBAL.MB.TANK[$].PRESS")
- Get the pressures for tank index zero through to tank index four: Range
("C1") = DoGet("MBAL.MB.TANK[0,1,2,3,4].PRESS")
The above example using multiple DoGet calls will return all the tank pressures in the
model.
Using OpenServer
26
The values will be returned in a single text variable separated by the | character e.g.
5132.0|4893.0|4598.3|4882.0|4976.6
There are several other variations which can be used to extract data from multiple tanks
using the following syntax:
- Return the pressure for tank 0,1,2 and 4: Range("C1") = DoGet("MBAL
.MB.TANK[0:2,4].PRESS")
- Return the pressure for tank 1 and 3: Range("C1") = DoGet("MBAL.
MB.TANK[1,3].PRESS")
27
OpenServer
tank.
We have already seen how we could access more than one production history record or
more than one tank e.g. :
MBAL.MB.TANK[2].PRODHIST[3 :7].CUMOIL
MBAL.MB.TANK[$].PRODHIST[4].CUMOIL
However we can also have multiple indices for both the production history records and
the tank in the same tag name.
For example :
DoSet "MBAL.MB.TANK[1,2].PRODHIST[4:6]", "11.2|14.5|16.3|
5.2|6.1|7.5"
The above command sets indices 4, 5 and 6 of the production history for both tanks 1
and 2. The data in the values to set is ordered such that the index to the right varies
first.
In other words the order is:
MBAL.MB.TANK[1].PRODHIST[4].CUMOIL
MBAL.MB.TANK[1].PRODHIST[5].CUMOIL
MBAL.MB.TANK[1].PRODHIST[6].CUMOIL
MBAL.MB.TANK[2].PRODHIST[4].CUMOIL
MBAL.MB.TANK[2].PRODHIST[5].CUMOIL
MBAL.MB.TANK[2].PRODHIST[6].CUMOIL
As before, this method will work equally well for the DoGet function.
The example shown above has two arrays. However, it is possible to use multiple
indices for any number of arrays in a tag string e.g. :
MBAL.MB.WELL[1:3].IPR[4,7].CONEMATCH[$][3,5:8].PRESS
3.6
Units
Units are handled the same way in all the IPM programs.
Use of Units in OpenServer:
By default, when a variable is accessed from the OpenServer using the DoGet function,
the value returned is in the same units as defined for the current model.
For example, if a GAP model has degrees Celcius selected for the surface temperature
variable of pipes, and the value entered for pipe pipe3 is 10 degrees C, then
performing a DoGet on the tag GAP.MOD[0].PIPE[{pipe3}].TMPSUR will return 10.
Using OpenServer
28
Similarly, when a DoSet function is used, the value passed to the function is interpreted
as being in the current unit displayed in the interface.
The units a variable is using can be queried using the UNITNAME(tag) function. This
function will return the units label currently in use for that variable.
For example, performing a DoGet function on the string GAP.UNITNAME(MOD[0].
PIPE[{pipe3}].TMPSUR) would return the string degrees C.
The same information can be obtained by appending UNITNAME to a tag e.g. GAP.
MOD[0].PIPE[{pipe3}].TMPSUR.UNITNAME
There are a number of ways of modifying the above behaviour.
Variables are normally stored internally in the programs in field units. To access a
variable in field units, not the currently selected unit, use the RAWVAL(tag) function.
For example, performing a DoGet on the string GAP.RAWVAL(GAP.MOD[0].PIPE
[{pipe3}].TMPSUR) would return 50, since field units for temperature are degrees F.
Similarly, if the RAWVAL modifier is used for a tag name with a DoSet function, the
OpenServer will interpret the passed value as being in Oil Field units.
The automatic conversion of variable values from field units to user selected units can
be switched off completely if desired. This is accomplished by setting the global
variable DOUNITCONV, which is 1 by default, to zero. E.g.:
DoSet PROSPER.DOUNITCONV, 0
Setting the above flag means all subsequent DoGet and DoSet calls will use Oilfield
units. Note that unit conversion can be switched on again by setting the DOUNITCONV
variable back to 1.
The currently selected units system can be set using the SETUNITSYS() function.
Performing a DoCmd on the string MBAL.SETUNITSYS(""Norwegian S.I."") will set
the input and output units to the Norwegian S.I. system for the current MBAL model.
Use of Units Validation Ranges in OpenServer:
There are also methods to get and set the minimum and maximum validation ranges as
defined in the units system dialog.
To get the minimum value of variable, add UNITMIN to the end of the tag name e.g.
Range("C1") = DoGet("MBAL.MB.TANK[0].PRESS.UNITMIN")
Similarly, the maximum validation range of a unit value can be obtained by appending
1990-2011 Petroleum Experts Limited
29
OpenServer
3.7
Start/Shutdown Commands
To use the OpenServer to communicate with a particular IPM program, the IPM
program must be running.
The program can be started manually e.g. using the Start menu.
Alternatively there are two special commands that can be used to start an IPM program
and to shut down an IPM program.
To start an IPM program, use the command:DoCmd GAP.START()
This will start the GAP program that was last installed on the working PC.
Other IPM programs can be started using the same syntax by replacing GAP with the
appropriate program name i.e., MBAL, PVTp, PROSPER, REVEAL, and RESOLVE.
To start an IPM program installed in a particular directory, use the command:DoCmd GAP.START(C:\PETEXPROGS)
This will start the GAP program that has been installed in the directory C:
\PETEXPROGS.
Another method to start a particular program is to use the command SHELL. SHELL is
a Visual Basic command to run a particular executable.
For example, to start GAP, the command line will be
SHELL (C:\Program Files\Petroleum Experts\IPM 7\GAP.exe)
It is also possible to start a given IPM program with the users own timeout period. This
is particularly useful if the IPM executable and licenses are located on a network where
it takes a long period of time to access them. In such cases, the classic timeout period
might be too short.
To start an IPM program with this timeout option, use the command:
Using OpenServer
30
DoCmd "GAP.STARTASYNC()"
It will be possible to check whether the program is ready to use by using the following
command:
DoGet "GAP.ISREADY"
This will return
0 : if the program is not ready
1 : if the program is ready
2 : if the program has not yet started or has been unable to find a license.
The ISREADY command can also be used with the other applications of IPM.
To shut down an IPM program, use the command:
DoCmd GAP.SHUTDOWN
This will shutdown the GAP program. It will close the program without asking if the
current data is to be saved, thus it is necessary to make sure the appropriate command
has been used to save the data file prior to using the SHUTDOWN command. Other
IPM programs can be shut down using the same syntax by replacing GAP with the
appropriate program name (MBAL, PVTP, PROSPER, REVEAL, RESOLVE).
Chapter
4.1
32
OpenServer provides GAP with a completely open architecture that enables access to
modify and control any data item within a given GAP model from any client application
capable of supporting Automation. OpenServer functionality with GAP provides
complete freedom with regard to importing, exporting or reporting data to and from
virtually any data source.
OpenServer also provides the added ability to execute field development decisions
during a GAP prediction from dynamically monitoring results at any level of a given
production system. For example, well drilling schedules can be developed from using
OpenServer to monitor an overall plant capacity, then perform drilling and completion
tasks to open new wells to maintain a given plant capacity.
GAP has also made a set of OpenServer commands available, which in addition to
providing a batch mode of working, can also be used to interfaceGAP to other
applications such as process simulators, external optimizers or reservoir simulators.
GAP has also been given a new prediction mode, the step-by-step mode, which allows
users, via OpenServer, to customize GAP prediction runs.
This section lists the variables available to the OpenServer from GAP. Most variables
in GAP are accessed using a tag string consisting of several levels (sections), each
level identifying a record (structure).
All variables from GAP begin with the string GAP. This is to allow OpenServer to
differentiate between the different Petroleum Experts products, and the remaining part
of the string identifies the OpenServer variable.
EXAMPLE: if we wish to access the surface temperature of the pipe with label pipe3
in the currently loaded GAP model, we would use the string GAP.MOD[0].PIPE[{pipe3}].
TMPSUR.
The first section of the string is GAP, which identifies the Petroleum Experts product
taken into account. This level is further defined as Top Level.
The next section is MOD[0], which identifies the currently loaded GAP model. This
level is further defined as MOD Level.
The next section is PIPE[{pipe3}], which identifies the pipe element with label pipe3.
This level is further defined as Node Level.
-
The final section is TMPSUR, the name of the field in the pipe record that
contains the surface temperature.
Depending of the type of variable to access, all these OpenServer string sections or
1990-2011 Petroleum Experts Limited
33
OpenServer
34
The OpenServer variable accessed through this screen can be directly copied on the
clipboard by clicking on the Copy button in the screen. The OpenServer variable can
then be directly pasted into the macro code for instance.
A particular string can be entered by hand or copied from the clipboard. Then, the Eval
button will do the requested operation of:
- DoGet (i.e. obtain the current value of the variable considered)
- DoSet (i.e. set the value of the variable considered)
- DoCommand (i.e. execute a GAP calculation for instance).
Global Element Changes using OpenServer
This can be used for instance to change the value of a specific variable for all the wells
of a system simultaneously. To act on all elements of a specific type (i.e. all the wells, all
the pipelines, etc), it is possible to replace the label of the element by a $ sign.
For instance, the string GAP.MOD[{PROD}].WELL[$].IPR[0].PI will link to the
productivity indexes of all the wells of the system, and can be used to change the
productivity indexes of all the wells of the system in one operation.
35
OpenServer
Preferences option allows the user to specify the DEFAULT input and output Unit
System that will be used as a reference. If in this case GAP file is opened or reloaded it
will be automatically converted into the specified DEFAULT Unit System.
The following OpenServer commands are available:
DoSet ("GAP.Preferences.DefaultInputUnitSystem", "OilField")
DoSet ("GAP.Preferences.DefaultOutputUnitSystem", "OilField)
36
EXAMPLE
The following example of code will define default Units System and reloads the GAP file,
to ensure that the file is successfully converted into the units specified:
set default Unit System
DoSet ("GAP.Preferences.DefaultInputUnitSystem", "CanadianSI")
DoSet ("GAP.Preferences.DefaultOutputUnitSystem", "CanadianSI)
DoSet ("GAP.Preferences.AlwaysUseDefaultUnitSystems", 1)
reload GAP file
DoGAPFunc ("GAP.OPENFILE(""file_path"")")
37
OpenServer
We highly
To eliminate the short term incompatibility issue of existing scripts when considering a
DoGet command, a new OpenServer variable called OpenServerUseKeywords has
been added. It allows the script to switch on or off the use of literal constants (see
OpenServerUseKeywords below). The default value for this variable is 1 which means
that GAP will use literal constants whenever possible.
It is highly recommended that new OpenServer scripts use literal constants, and that
existing scripts are upgraded as soon as possible. This will hugely reduce the amount of
maintenance required on these scripts in the future.
In the following descriptions, the variables using literal constants will be marked
by an asterisk *.
38
format.
If the suffix DATESTR is added after the suffix DATE, i.e. DATE.DATESTR, then the
date will be converted automatically from a numerical format to a day/month/year format,
or month/day/year, depending on the regional settings of the machine.
If the suffix DATETIMESTR is added after the suffix date, then the date will be
converted automatically from a numerical format to a day/month/year hrs/min/sec format.
If the suffix TIMESTR is added after the suffix date, then the date will be converted
automatically from a numerical format to a hrs/min/sec format.
NOTE: In some cases when the date is retrieved from GAP into the Excel spreadsheet
using DATE keyword, and then internal Excel conversion is used to translate it from
numerical into dd/mm/yyyy format day and month numbers can be flipped with
erroneous date in result. To avoid this CDate() VBA command can be used for date
conversion.
39
OpenServer
40
FNA
41
OpenServer
Description
Contains the IPR dP shift status in the Actual/Production Validation
section.
The values characterising this variable are defined as follows:
0 - No IPR dP shift is taken into account
1- The IPR dP shift facility is activated.
ASSOCFLAG
BGCORR
BOCORR
COMPMODE *
CORRNAME[i] *
Currency
CurrShort
DefaultGasLiftFlui
dID
DefaultTaxRegim
eID
DefaultWatInjFluid
ID
EmulsionCorrecti
onList[i].Label
EmulsionCorrecti
42
43
OpenServer
onList[i].
MatchParam[0]
EmulsionCorrecti
onList[i].
MatchParam[1]
EmulsionCorrecti
onList[i].
MatchParam[2]
EmulsionCorrecti
onList[i].
MatchParam[3]
EmulsionCorrecti
onList[i].
MatchParam[4]
EmulsionCorrecti
onList[i].WctMax1
EmulsionCorrecti
onList[i].WctMax2
ExtraMultiplier
viscosity model.
Contains the value of the second match parameter used in the
emulsion viscosity model.
Contains the value of the third match parameter used in the
emulsion viscosity model.
Contains the value of the fourth match parameter used in the
emulsion viscosity model.
Contains the value of the fifth match parameter used in the emulsion
viscosity model.
Contains the value of the maximum left water cut used to match the
emulsion viscosity model.
Contains the value of the maximum rigth water cut used to match the
emulsion viscosity model.
Contains the multiplier used to convert from the default currency (i.e.
US Dollars) to the currency chosen for revenue calculations.
FILENAME
Contains the file name of the model and its corresponding path.
FlashOptions.EoS Contains the type of equation of state model used to characterise
*
the fluids in the model.
Two equation of state models are available using the following literal
constants:
PR Peng Robinson
SRK Soave Redlich Kwong
FlashOptions.
Contains the type of optimisation mode used to characterize the
OPTMODE *
fluid.
Three optimisation mode are available using the following literal
constants:
LOW Low optimisation mode
MEDIUM Medium optimisation mode
OFF No optimisation mode
FlashOptions.
Refers to the type of separator calculation used in the model.
SEPCALCMODE Three type of separator calculations are available, using the
*
following literal constants:
NOSEPTRAIN The model will not be using a specific
separator train
SEPTRAIN The model will be using a specific separator
train
KVALUES The model will be using K values
FlashOptions.
Refers to the set of separator pressures used when the model
SEPPRES[i]
selected uses a specific separator train.
Up to ten values of separator pressures can be entered, using the
44
Refers to the gas gravity of the ith fluid of the fluid list.
Refers to the water cut of the ith fluid of the fluid list.
Refers to the WGR of the ith fluid of the fluid list.
45
OpenServer
0 - The model has not been modified since its last version.
1 - The model has been modified since its last version.
OptMethod
Contains the type of optimisation method used in the model.
The numerical indexes characterising this variable are defined as
follows:
0 - Production
1 - Revenue
2 - Oil Rate Only
3 - Gas Rate Only
4 - Water Rate Only
Predict
Contains the prediction method used in the model.
The values characterising this variable are defined as follows:
(previously
0 - Only the pressure drops are calculated in the system
ISPANDT)
pipelines
1 - Both pressure drops and temperature are calculated in
the system pipelines
PredMode *
Contains the status of the model in terms of prediction:
OFF - The prediction mode of GAP is not activated.
ON - The prediction mode of GAP is activated.
SYSLOG
Contains the text comments linked to the system. These comments
will be displayed in GAP in the Options / System Summary
screen.
SYSTITLE
Contains the system title. This title will be displayed in GAP in the
Options / System Summary screen.
SYSTYPE *
Contains the type of system considered.
Three type of systems are listed using the following literal constants:
- Production
- WaterInjection
- GasInjection
- GasLIftInjection
Example: DoSet ("GAP.MOD[{PROD}].SysType"), "gasliftinjection"
The above DoSet function would set the method to be able to
construct a gas lift injection network, etc.
TaxRegimeList[i]. Refers to the cost of diluent in the ith tax regime of the tax regime
CostDiluent
list.
TaxRegimeList[i]. Refers to the cost of injected gas in the ith tax regime of the tax
CostInjGas
regime list.
TaxRegimeList[i]. Refers to the cost of power in the ith tax regime of the tax regime list.
CostPower
TaxRegimeList[i]. Refers to the cost of power fluid in the ith tax regime of the tax
CostPowerFluid regime list.
TaxRegimeList[i]. Refers to the cost of water processing in the ith tax regime of the tax
CostWater
regime list.
46
NumSensitivity
(previously NALLOCED)
SolverCalculatePotential
SolverOptimiseMode
Description
Array [10] of gaslift injection gas available
amounts.
Enables to set up to 10 different amounts of gas
lift injection gas available in the system when
using the Solve Network calculation.
Example:the
DoSet(GAP.MOD[{PROD}].
GASAV[0]), 1 command will fix the first value of
gas lift injection gas available in the system to 1
MMSCF/d.
Returns the number of values of separator
pressures or gas lift gas available allocated and
used in the model as sensitivity variables.
If there is no gas lifted wells in the model, it will
return the number of separator pressure
sensitivities considered.
If there is gas lift wells in the system, it will return
the number of gas lift gas injection rates
sensitivities considered.
Enables to select whether to calculate or not the
model potential when solving the network.
The values associated to this variable are the
following:
0 - The model potential is not calculated
1 - The model potential is calculated
Enables to select whether the solver calculation to
perform is to be optimised or not.
The values associated to this variable are the
following:
OptOff - The solver will be run without
optimisation
OptAllCnst - The solver run will be
optimised and will
respect all the model
1990-2011 Petroleum Experts Limited
47
OpenServer
constraints
SolverStatus
SolverStatusText
SolverStatusList[i] variables
SolverStatusList[i].LastError
SolverStatusList[i].
MaxMassBalanceDiff
SolverStatusList.count
SolverStatusList[i].CPUTime
SolverStatusList[i].ElapsedTime
SolverStatusList[i].
MaxPressureBalanceDiff
SolverStatusList[i].NumIteration
solver.
Returns
the
maximum
pressure balance
difference associated with the ith sensitivity case
of the solver.
Returns the number of iterations associated with
the ith sensitivity case of the solver.
SolverStatusList[i].Status
SolverStatusList[i].StatusText
SolverStatusList[i].
ViolatedConstraint.count
SolverStatusList[i].
ViolatedConstraint[j].EquipType
48
Returns the status of the last solver run for the ith
solver sensitivity.
The values characterising this variable are as
follows:
0 - the last solver run did not experience any
error
#0 - the last solver run did experience an
error.
Returns a text string describing the last solver run
error for the ith solver sensitivity case.
Returns the amount of constraints violated during
the ith Solver run.
Returns the type of equipment to which the jth
violated constraint message of the ith Solver run
refers to.
SolverStatusList[i].
Returns the ID of the system equipment to which
ViolatedConstraint[j].EquipUniqueID the jth violated constraint message of the ith
Solver run refers to.
SolverStatusList[i].
Returns the label of the system equipment to
ViolatedConstraint[j].EquipLabel
which the jth violated constraint message of the ith
Solver run refers to.
SolverStatusList[i].
ViolatedConstraint[j].Binding
SolverStatusList[i].
ViolatedConstraint[j].CalcValue
SolverStatusList[i].
ViolatedConstraint[j].CnstValue
SolverStatusList[i].
ViolatedConstraint[j].CnstDesc
SolverStatusList[i].
ViolatedConstraint[j].msg
Solver run.
Returns the text message of the solver log related
to the jth violated constraint message of the ith
Solver run.
Description
1990-2011 Petroleum Experts Limited
49
OpenServer
DCQSCHEDULE[i].date
DCQSCHEDULE[i].date.
DATESTR
DCQSCHEDULE[i].date.
DATETIMESTR
DCQSCHEDULE[i].date.
TIMESTR
DCQSCHEDULE[i].val
DCQSCHEDULE[i].
useswing
PredCalculatePotential
PREDINFO.PERIOD
PREDINFO.START
PREDINFO.START.
DATESTR
PREDINFO.START.
DATETIMESTR
PREDINFO.START.
TIMESTR
PREDINFO.END
50
51
OpenServer
Example:
NumSteps
PREDRESTART()")
DoGAPFunc("GAP.
PredTimeStep[i].
SolverStatus.StatusText
PredTimeStep[i].
SolverStatus.LastError
PredTimeStep[i].
SolverStatus.
MaxFlowBalanceDiff
PredTimeStep[i].
SolverStatus.
MaxPressureBalanceDiff
PredTimeStep[i].
SolverStatus.NumIteration
PredTimeStep[i].
SolverStatus.
OptNumIteration
PredTimeStep[i].
SolverStatus.
OptBestGuess
difference
For more information on macro code structure to perform a prediction, please see
Basic_Code_Structure.
52
Description
53
OpenServer
Description
Refers to the comment field of the node.
Contains the number of nodes of the same type present in the GAP
model.
ISBYPASSED Contains the status of the node relative to node bypass as set by the
user.
Read-Only variable.
If the value returned is:
- 0: the node is not bypassed
- 1: the node is bypassed
ISDISABLED Contains the status of the node relative to node disabling as set by the
user.
Read-Only variable.
If the value returned is:
- 0: the node is not disabled
- 1: the node is disabled
ISMASKED
Contains the status of the node relative to node masking as set by the
user (i.e. if a node is not masked by the user but greyed-out by the
software: ISMASKED will return 0 and MASKFLAG will be # 0).
If the value returned is:
- 0: the node is not masked
OpenServer User's Manual
LABEL
MASKFLAG
NAME
PREDRES[i].
var
SolverResults
[i].var
TYPE
54
55
OpenServer
TYPENUM
UniqueID
EndA
EndB
Description
Contains the name and path of the MBAL data file associated
to the tank.
MAINSUBTANK.File When considering a multiple tank model, this will return the path
of the MBAL file corresponding to this tank model.
MBINUMTANKSINFIL This will return the number of tanks included in the model
E
considered.
It will return 1 for a single tank model and a value higher than 1
for a multiple tank model.
Model
Contains the type of tank model used to model the reservoir.
The values returned can be:
- 0: Material Balance model
- 1: Decline Curves
NUMPROD
Number of production data points entered (decline curve tanks).
PRODDATA[i][j]
Refers to the production data array [20][2] (decline curve tanks).
OpenServer User's Manual
56
57
OpenServer
58
FRACFLOWi.FFTABLE[j]. Pressure
PRESS
FRACFLOWi.FFTABLE[j]. Cumulative Production
CUMOIL
for example the following code may be used to extract the Water Cut for data point
number 1 set in TABLE 1 option that is defined for IPR Layer 0 for Well W1 to cell (10,3)
Cells(10, 3) = Doget("GAP.MOD[{PROD}].WELL[{Well1}].IPR[0].FRACFLOW1.
FFTABLE[0].WATCUT")
4.1.9.3.1 Fields specific to all well models
All the following variables will need to be preceded by the following OpenServer string
structure:
GAP.MOD[i].WELL[j]
Where the index i refers to the type of model considered at the MOD level i.e., MOD[i]
section and the index j refers to the name or numerical index of the element
considered i.e., EQUIP[i] section.
Variable Name
File
PowerFluidMode *
TypeWell *
Description
Well Summary Section
Contains the name and path of the PROSPER file associated
with the well considered.
Contains the type of power fluid system used (i.e. Oil Producer
well with diluent injection).
The following keywords are used:
- ClosedLoop
- Commingled
Contains the type of well considered.
The following keywords are used:
- CondensateProducer
- GasInjector
- GasProducer
- OilProducerDILUENT
- OilProducerESP
- OilProducerGL
- OilProducerHSP
- OilProducerJETPUMP
- OilProducerNoLift
- OilProducerPCP
- WaterInjector
- WaterProducer
59
OpenServer
WellModel
RateType *
DOWNTIME
AlqControl *
AlqValue
AlqValueMax
AlqValueMin
DPControl *
DPControlValue
InjectedFluidLabel
MAXQINJ
MeasuredAlq
MINQINJ
PowerFluidMode*
60
IPR[i].BrkGasCon
IPR[i].BrkGasSat
IPR[i].BrkPerfTop
IPR[i].BrkPerfBot
IPR[i].BrkWatCon
IPR[i].BrkWatSat
IPR[i].C
IPR[i].CGR
IPR[i].
CORRRELPERM
IPR[i].DarcyCoeff
Description
IPR Section
Contains the numerical index of the layer considered.
Will return 0 for the first layer, 1 for the second layer and so on.
Contains the array of the IPR record.
If located before a specific parameter, this string refers to the
value of this specific parameter for the ith IPR description
considered.
Example: The DoGet(GAP.MOD[0].Well[{Well 1}].IPR[0].
ResPres) command will return the reservoir pressure
associated with the oth layer of the well 1.
Contains the Gas Oil Contact depth at breakthrough
Contains the Gas Saturation at breakthrough
Contains the top depth of the perforated interval
Contains the bottom depth of the perforated interval
Contains the Water Oil Contact depth at breakthrough
Contains the Water Saturation at breakthrough
Contains the C factor value used for gas wells IPRs
Contains the CGR of the layer fluid
Contains the status of the shift relative permeabilities to
breakthrough facility.
The following numerical indexes are used:
- 0: The option is not activated
- 1: The option is activated
Contains the Darcy coefficient value for gas wells IPRs
1990-2011 Petroleum Experts Limited
61
OpenServer
IPR[i].DISABLE()
Used together with a DoCmd structure, will disable the ith layer
of the well. See IPR[i].MASK()
IPR[i].ENABLE()
Used together with a DoCmd structure, will enable the ith layer
of the well
IPR[i].GasGravity
Contains the gas specific gravity for the layer fluid
IPR[i].GOR
Contains the current GOR of the layer fluid
IPR[i].IPRType *
Contains the type of IPR model used to characterize the inflow
performance of the well.
The following keywords are used:
- Lookup: A P vs. rate table is used to define the well
IPR.
- PI: A Productivity index is used to define the well IPR
(oil wells only).
- Cn: A C and n relationship is used to define the well
IPR (gas wells only).
- Forcheimer: A Forcheimer relationship is used to
define the well IPR (gas wells only).
- Forcheimer Pseudo Pressure (gas wells only)
IPR[i].ISLAYERVALID Check the validity of the IPR dataset.
The following numerical indexes are used:
- 0: The IPR dataset considered is not valid.
- 1: The IPR dataset considered is valid
IPR[i].Label
Contains the label of IPR considered
IPR[i].LayerType *
Contains the type of layer considered.
The following keywords are used:
- CONDENSATE
- GAS
- OIL
IPR[i].MASK()
Used together with a DoCmd structure, will mask the ith layer of
the well.
Example: If used as such, the DoCmd(GAP.MOD[0].Well[{Well
1}].IPR[0].MASK()) command will mask the 0th layer production
until otherwise specified by the end user or the scheduling
IPR[i].MASKFLAG() Contains the status of layer considered.
The following numerical indexes are used:
- 0: The IPR considered is included in the system.
- #0: The IPR considered is not included in the system
IPR[i].MGasRate[j]
Contains an array (i.e. 20 values maximum) of gas rates used
for IPR matching
IPR[i].MGOR
Contains the layer test GOR (with PI correction for mobility
activated and Vogel correction for GOR options activated)
IPR[i].MLiqRate[j]
Contains an array (i.e. 20 values maximum) of oil rates used for
IPR matching
IPR[i].MNUMPOINTS Contains the number of IPR match point used
IPR[i].MPB
Contains the layer test bubble point pressure
IPR[i].MPRES[j]
Contains an array (i.e. 20 values maximum) of pressures used
OpenServer User's Manual
62
63
OpenServer
SGR
IPR[i].RELPERM1.
SOR
IPR[i].RELPERM1.
SWC
IPR[i].RELPERM1.
XKGE
IPR[i].RELPERM1.
XKOE
IPR[i].RELPERM1.
XKWE
IPR[i].RelPermType1
64
IPR[i].TConeData.
Anisotropy
Coning Section
Contains the number of coning match points considered
Contains the status of the coning input data set.
The following numerical indexes are used:
- 0: The dataset required for coning calculation is not
valid
- 1: The dataset required for coning calculation is valid
Contains the reservoir vertical anisotropy value
65
OpenServer
IPR[i].TConeData.
EXP
IPR[i].TConeData.F2
IPR[i].TConeData.F3
IPR[i].TConeData.
GOC
IPR[i].TConeData.
MatchQL[i]
IPR[i].TConeData.
MatchGOR[i]
IPR[i].TConeData.
TestGOC
IPR[i].TConeData.
TestPres
IPR[i].TConeData.
TestWC
IPR[i].TConeData.
Permeability
TConeData.
LayerEnabled
Example: To access the file name of the VLP File associated with a well labelled w1,
one could use the string GAP.MOD[0].WELL[{w1}].VLPFILE, or, equivalently, GAP.
MOD[0].EQUIP[{w1}].VLPFILE.
4.1.9.3.3 Fields specific to wells modeled using Performance Curves / Interpolated
Performance Curves
Variable Name
Performance
Curve Model
GenType
Description
From
PROSPER
IType
PC Data Section
Refers to the parameter used to describe the amount of gas
considered for each PC dataset.
66
PType
From VLP/IPR
Coning Section
Similar to the VLP/IPR Well model
IPR Section
Similar to the VLP/IPR Well model
PC Data Section
1990-2011 Petroleum Experts Limited
67
OpenServer
IsInjector
IsProducer
RateType
Description
68
Where the index i refers to the type of model considered (i.e. refers to the Variables
at MOD level, MOD[i] section) and the index j refers to the name or numerical index
of the element considered (i.e. refers to the Model Equipement List, EQUIP[i]
section).
Variable Name
Description
Stand Alone
Ouflow Model
Outflow VLP Model
Well Summary Section
Similar to the VLP/IPR Well model
VLP Section
Similar to the VLP/IPR Well model
Outflow PROSPER
Model
RateType
Variable Name
Description
Equipment Control Section
DPControlMeasured Contains the measured value (i.e. test value) of the well control
parameter (i.e. pressure drop through the wellhead choke or gas
lift gas injection rate for instance).
DPControlValue
Contains the current value (i.e. used by the solver during nonoptimised runs) of the well control parameter (i.e. pressure drop
through the wellhead choke or gas lift gas injection rate for
instance).
DPControlOptimised Contains the value of the well control parameter (i.e. pressure
drop through the wellhead choke or gas lift gas injection rate for
instance) obtained after an optimised run.
EstimatedCGR
EstimatedFBHP
69
OpenServer
EstimatedGOR
EstimatedLiqRate
EstimatedWC
EstimatedWGR
IPRPresOffset
LiqRateError
MeasuredAlq
MeasuredCGR
MeasuredGOR
MeasuredPres
MeasuredRate
MeasuredResP
MeasuredWC
MeasuredWGR
70
The general string structure for accessing PROSPER Online variables through
GAP OpenServer will therefore be the following:
GAP.MOD[i].EQUIP[j].PrpData.k
Where the index i refers to the type of model considered (i.e. refers to the Variables at
MOD level, MOD[i] section), the index j refers to the name or numerical index of the
element considered (i.e. refers to the Model Equipement List, EQUIP[i] section) and the
index k refers to the PROSPER OpenServer string associated with the parameter
considered.
Example: To access the solution GOR input within the PROSPER Online section of a
well labeled Well1, the following string can be used:
GAP.MOD[0].WELL[{Well1}].PrpData.PVT.Input.Solgor
As described previously, this string is exactly similar to the one that is used to refer to
the solution GOR in a PROSPER model i.e., PROSPER.PVT.Input.Solgor, except that
the PROSPER prefix has been replaced by the GAP prefix.
Description
Refers to the type of pipeline model used.
Determined using the following values:
- 0: GAP Internal Correlations
- 1: Lift Curves
- 2: PROSPER online
Description
1990-2011 Petroleum Experts Limited
71
OpenServer
CPG
CPO
CPW
HTCSUR
TMPSUR
Desc[j].Type[j]
Desc[j].DEPTH[j]
Desc[j].ID[j]
Desc[j].INSUL[j]
Desc[j].KValue
Desc[j].LENGTH[j]
Desc[j].OD[j]
Desc[j].Roughness[j]
Desc[j].Thickness[j]
Desc[j].TVD[j]
PipeDescInputFormat
EmptyPipe
72
ENDA
ENDB
PIPERATEMULT
PIPESTEPCH
PseudoPipe
73
OpenServer
var
RateType
SubType
FlowType
MAXCFACTOR
MAXPRESSURE
MAXVELOCITY
74
Description
Contains the sub-model used when using the GAP Lift curve
modelling facilities for pipelines.
The different sub-models are described using the following
numerical indexes:
- 0: External
- 1: GAP Internal Correlations
- 2: PROSPER Online
- 3: PROSPER file
External Model
VLPFile
Lift Curves
Contains the name and path of the file used to describe the
pipeline lift performance curves.
Pipeline Constraints Setup
Similar to the GAP internal correlations pipeline model.
GAP Internal
Correlations
Lift Curves
VLPFile
Contains the name and path of the file used to describe the
pipeline lift performance curves.
GenData.SensVarValue Refers to the sensitivity variables used in order to generate
[i][j]
the pipeline lift curves.
The first index refers to the parameter considered.
The following numerical indexes are used:
- 0: Liquid Rate
- 1: Upstream Pressure
- 2: GOR (oil systems) or CGR (gas systems)
- 3: Water Cut (oil systems) or WGR (gas systems)
- 4: Inj.GLR (gas lifted systems)
The second index refers to the row number of the sensitivity
variables considered. Up to 20 values can be used for the
rates, up to 10 for the other parameters.
GenData.Temp
Contains the fluid temperature in the pipe section
considered.
GenData.OilGravity
Contains the oil gravity in the pipe section considered.
GenData.GasGravity
Contains the gas gravity in the pipe section considered.
GenData.WaterSalinity Contains the water salinity in the pipe section considered.
GenData.PctH2S
Contains the fluid H2S mole percentage in the pipe section
considered.
1990-2011 Petroleum Experts Limited
75
OpenServer
GenData.PctCO2
GenData.PctN2
PROSPER Online
Lift Curves
Similar to the GAP Lift Curves / External Model.
PROSPER Data
Refer to the section 5.2.7.7.7 of the present manual.
Pipeline Constraints Setup
Similar to the GAP Internal Correlations Model.
PROSPER File
File
PROSPER File
Contains the name and path of the PROSPER file used to
describe the pipeline section.
Lift Curves
Similar to the GAP Lift Curves / GAP Internal Correlations
Model
Pipeline Constraints Setup
Similar to the GAP Internal Correlations Model.
Description
PROSPER Data
See PROSPER_Online_Models
Pipeline Constraints Setup
Similar to the GAP Internal Correlations Model.
76
Example: To access the overall heat transfer coefficient of a pipeline modeled with
GAP Internal Correlations with label p1, one could use the string GAP.MOD[0].PIPE
[{p1}].HTCSUR.
4.1.9.5 Fields specific to joints
All the following variables will need to be preceded by the following OpenServer string
structure:
GAP.MOD[i].JOINT [j]
Where the index i refers to the type of model considered at the MOD level i.e., MOD[i]
and the index j refers to the name or numerical index of the element considered i.e.,
EQUIP[i] section.
Variable
Name
MAXPCO2
MAXPH2S
MAXPN2
MAXQGAS
MAXQLIQ
MAXQOIL
MAXQWAT
MAXSOG
MINQGAS
MINQLIQ
ABMAXPWF
Description
Contains the maximum mole percentage of CO2 constraint applied on
the joint.
Contains the maximum mole percentage of H2S constraint applied on
the joint.
Contains the maximum mole percentage of N2 constraint applied on
the joint.
Contains the maximum gas rate constraint applied on the joint.
Contains the maximum liquid rate constraint applied on the joint.
Contains the maximum oil rate constraint applied on the joint.
Contains the maximum water rate constraint applied on the joint.
Contains the maximum oil specific gravity constraint applied on the
joint.
Contains the minimum gas rate constraint applied on the joint.
Contains the minimum liquid rate constraint applied on the joint.
Contains the maximum flowing pressure constraint applied on the
node.
Example: To access the maximum gas rate constraint applied on the node N1, one
could use the string GAP.MOD[0].JOINT[{N1}].MAXQGAS.
77
OpenServer
CalcData[i][j]
DESSPEED
DPControl *
MAXSPEED
MDRateType
MINSPEED
NumStage
OPTSPEED
Description
Contains the Actual speed (or frequency) of the pump/compressor
for use with affinity laws or if speed/frequency is a sensitivity
variable.
Enables to specify the data used to calculate the pump / compressor
performance using the Input | Calculate Performance screen.
The i index enables to specify which row is selected, the j index
enables to specify which column is selected.
See the MDRateType variable below to know how to specify the
data entry format.
Contains the Design speed (or frequency) of the pump/compressor
for use with affinity laws or if speed/frequency is a sensitivity
variable.
Refers to the type pressure control used to drive the pump/
compressor.
The following status are available:
- FIXED VALUE: the pressure drop through the pump/
compressor is fixed by the user.
- CALCULATED: the pressure drop through the pump/
compressor can be modified by the GAP optimiser to
obtain the optimum performance of the system.
Contains the pump/compressor maximum speed limit.
Enables to specify in which format the data for the Input | Calculate
Performance screen is specified.
The following options are available:
- 0: Liquid Rate, WCT, GOR
- 1: Oil Rate, WCT, GOR
- 2: Gas Rate, WGR, CGR
- 3: Oil, Water and Gas rates
- 4: Water rate
Contains the pump/compressor minimum speed limit.
Contains the number of stages considered for the pump/
compressor.
Returns the pump/compressor optimum calculated speed.
StageData[i].
UseSep
StageData[i].
SepData[j]
UseAff
INJTEMP
78
ACTSPEED
DELTAP
PEff
PolyEff
PPower
Description
Refers to the type of compressor model used.
The three types of compressor models available are:
- PerfCurve: Performance Curve Model
- FixedPower: Fixed Power Model
- FixedDp: Fixed Pressure Drop Model
- Reciprocating
Contains the Actual speed (or frequency) of the pump/
compressor for use with affinity laws or if speed/frequency is a
sensitivity variable.
Contains the value of the pressure drop across the compressor
(Fixed Pressure Drop Model).
Contains the compressor overall efficiency (Fixed Power
Model).
Contains the compressor polytropic efficiency.
Contains the value of the horsepower by stage developed by the
compressor (Fixed Power Model).
1990-2011 Petroleum Experts Limited
79
OpenServer
StageData[i].
UseCool
StageData[i].
CoolData[j]
UsePoly
Example: To access the design speed of a node with label c1, one could use the string
GAP.MOD[0].COMP[{c1}].DESSPEED.
Description
Contains the type of separation node considered:
The following keywords are used:
- GASINJMAN: Gas Injection Manifold
InjFluidLabel
SolverPres[j]
Temperature
80
Example: To set the manifold pressure used for the Solve Network calculation to 200
psig for instance, the following command will be used: DoSet(GAP.MOD[0].SEP
[{Sep1}].SolverPres[0]),200
81
OpenServer
at MOD level, MOD[i] section), the index j refers to the name or numerical index of the
well considered (i.e. refers to the Model Equipement List, EQUIP[i] section) and the
index k refers to the layer considered in case of multilayer wells.
In case the composition considered does not refer to a well fluid composition but to a
specific fluid from the GAP fluid list, the OpenServer strings associated to this fluid list
are defined in the section 3.2.6.1, the following string will then been used:
GAP.MOD[i].FluidList[j].Composition
Variable
Name
Description
In every variable described below, the indes [i] refers to the row of
the composition table considered. Each component described in
the fluid composition table will have a specific table row assigned
using the NAME string described below.
BICOEFF[i][j] Refers to the binary interaction coefficients used.
The first index refers to the composition table row index of the first
component considered.
The second index refers to the composition table row index of the
second component considered.
MOLEPCT[i] Array [30] of mole percentages.
MW[i]
Array [30] of molecular weights.
NAME[i]
Array [30] of component names.
Valid values for this variable could be for instance:
- N2
- CO2
- NC4
- PS-1 ; PS-2 ; PS-3 for the pseudo-components considered.
NUMCOMP Contains the total number of components used to describe the fluid
composition in the well layer considered.
OMEGA[i]
Array [30] of accentric factors (i.e. factors).
OMEGAA[i] Array [30] of A factors.
OMEGAB[i] Array [30] of B factors.
PARACHOR Array [30] of parachors.
[i]
PCRIT[i]
Array [30] of critical pressures.
SPGRAV[i]
Array [30] of specific gravities.
TBOIL[i]
Array [30] of boiling points.
TCRIT[i]
Array [30] of critical temperatures.
VCRIT[i]
Array [30] of critical volume.
VSHFT[i]
Array [30] of volume shifts.
Example: To access the mole percentage of the first component of the input
OpenServer User's Manual
82
composition for the first layer of a well labeled w1, the string would be GAP.MOD[0].
WELL[{w1}].IPR[0].Composition.MOLEPCT[0].
83
OpenServer
Function Name
Description
DoCmd GAP.MOD[{PROD}].
SetDisableSystemValidation()
DoCmd GAP.MOD[{PROD}].
ClearDisableSystemValidation()
DoGet GAP.MOD[{PROD}].
IsDisableSystemValidation
DoCmd GAP.MOD[{PROD}].
SetDisableAutomaticMasking()
DoCmd GAP.MOD[{PROD}].
ClearDisableAutomaticMasking()
DoGet GAP.MOD[{PROD}].
IsDisableAutomaticMasking
DoCmd GAP.MOD[{PROD}].
SetDisableLabelValidation()
DoCmd GAP.MOD[{PROD}].
ClearDisableLabelValidation()
DoGet GAP.MOD[{PROD}].
IsDisableLabelValidation
DoCmd GAP.MOD[{PROD}].
SetDisablePrpGapWellTypeValidation()
DoCmd GAP.MOD[{PROD}].
ClearDisablePrpGapWellTypeValidation
()
DoGet GAP.MOD[{PROD}].
IsDisablePrpGapWellTypeValidation
DoCmd GAP.MOD[{PROD}].
SetDisablePredScript()
DoCmd GAP.MOD[{PROD}].
ClearDisablePredScript()
DoGet GAP.MOD[{PROD}].
IsDisableDisablePredScript
DoCmd GAP.MOD[{PROD}].
SetEnablePredScriptDoubleQuotes()
DoCmd GAP.MOD[{PROD}].
ClearEnablePredScriptDoubleQuotes()
DoGet GAP.MOD[{PROD}].
IsEnablePredScriptDoubleQuotes
84
4.1.12 Scheduling
The user can set the schedule of any model element for the prediction run.
All the schedule events will need to be preceded by the following OpenServer string
structure:
GAP.MOD[i].EQUIP[j].SCHEDULE[k]
If the schedule event refers to the entire system, i.e., production network or associated
injection network for instance, the following OpenServer string structure can be used:
GAP.MOD[i].SCHEDULE[k]
Where the index i refers to the type of model considered (i.e. refers to the Variables
at MOD level, MOD[i] section), the index j refers to the name or numerical index of the
network element considered (i.e. refers to the Model Equipement List, EQUIP[i]
section) and the index k refers to the row of the schedule event considered in the
schedule event list..
For each record in the schedule, the following fields are considered:
- Date
- Event type
- Constraint type (or OpenServer variable)
- Constraint value
4.1.12.1Schedule Count
The total number of schedule rows assigned to an element can be derived using the
following string:
GAP.MOD[i].EQUIP[j].SCHEDULE.COUNT
4.1.12.2Date
The variable string for the date in the ith model, jth equipment and kth record in the
schedule is the following:
GAP.MOD[i].EQUIP[j].SCHEDULE[k].DATE
The above string refers to the date of the scheduled event as a number, and not as a
day/month/year format date.
85
OpenServer
To refer to the date as a day/month/year format, the following string can be used:
GAP.MOD[i].EQUIP[j].SCHEDULE[k].DATE.DATESTR
4.1.12.3Event type
The variable string for the event type in the ith model and jth record in the schedule is:
GAP.MOD[i].EQUIP[j].SCHEDULE[k].TYPE
This variable is a read only variable.
The existing types of event and their availability, depends of the type of element
considered.
A list of associated keywords are described below:
Event Type
Bypass
Change constraints
Change Diameter
Change Downtime
Change Fixed Rate
Fixed rate (Gas)
Fixed rate (Gas) - off
Fixed rate (Wat)
Fixed rate (Wat) - off
Gas recycling
Gas recycling - off
Gas recycling (Prd Amount)
Gas recycling (Prd Amount) - off
Mask
Pressure target
Pressure target - off
Start well
Stop well
Stop well, no X-flow
Unbypass
Unmask
Voidage Replacement (Gas)
Voidage Replacement (Gas) - off
Voidage Replacement (Wat)
Voidage Replacement (Wat) - off
Associated Keyword
BYPASS_ON
CONSTRAINT_CHANGE
CHK_SIZECHNG
DOWNTIME_CHANGE
RATE_CHANGE
TANK_FIXGAS
TANK_OFF_FIXGAS
TANK_FIXWAT
TANK_OFF_FIXWAT
TANK_RECYCGAS_PC
TANK_OFF_RECYCGAS_PC
TANK_RECYCGAS_FIX
TANK_OFF_RECYCGAS_FIX
MASK
TANK_TARGPRES
TANK_OFF_TARGPRES
WELL_ON
WELL_OFF
WELL_OFF_NO_CROSS
BYPASS_OFF
UNMASK
TANK_VOIDGAS
TANK_OFF_VOIDGAS
TANK_VOIDWAT
TANK_OFF_VOIDWAT
Water recycling
Water recycling - off
86
TANK_RECYCWAT_PC
TANK_OFF_RECYCWAT_PC
4.1.12.4Constraint Type
When the type of event considered refers to the modification of a model constraint, the
constraint to modify needs to be specified.
The string referring to the type of constraint in the ith model and kth record in the
schedule is:
GAP.MOD[i]. EQUIP[j].SCHEDULE[k].LPAR[0]
See Constraint_Level_and_Type for further description of constraint names.
4.1.12.5Constraint Value
When the event type considered refers to the setup of a model parameter value or the
modification of one of the model constraints, the following string will be used:
GAP.MOD[i]. EQUIP[j].SCHEDULE[k].CVAL[0]
When retrieving a value of a scheduled element, the previous string will return both value
and the unit in which it is expressed.
Example: To setup the maximum liquid constraint to 5000STB/d on the 01/01/2005 in
a well labeled W1, the following set of strings will be used:
DoSet GAP.MOD[0]. EQUIP[{W1}].SCHEDULE[0].DATE.DATESTR,
01/01/2005
DoSet GAP.MOD[0]. EQUIP[{W1}].SCHEDULE[0].LPAR[0], MAXQLIQ
DoSet GAP.MOD[0]. EQUIP[{W1}].SCHEDULE[0].CVAL[0], 5000
4.1.12.6Schedule Reset
The existing GAP schedule can be reset, either at the production system level,
associated injection system level or at the element level using the following strings:
At system level: GAP.MOD[i].SCHEDULE.RESET
At equipment level: GAP.MOD[i].EQUIP[j].SCHEDULE.RESET
Note that these should be used with a Doset for example:
87
OpenServer
4.1.13 Constraints
4.1.13.1Constraint Level and Type
The following listed constraints are available within GAP.
The availability of these constraints on the system element considered such as a well,
joint, separator, etc., will depend of the nature of the element.
The string defining the constraint type should always be preceded by a prefix describing
the system level and element on which this constraint should be applied:
- MOD Level Constraints (i.e. System Constraints) :
The constraint name should be preceded in the OpenServer string by a
GAP.MOD[{PROD}] prefix.
Example: To set the value of the maximum gas rate constraint applied to the system to
1000MMSCF/d, the following string could be used:
DoSet (GAP.MOD[0].MAXQGAS),1000
-
Example: To set the value of the maximum gas rate constraint applied to the well
WELL 1 to 100MMSCF/d, the following string could be used:
DoSet (GAP.MOD[0].WELL[{WELL 1}].MAXQGAS),100
The well abandonment constraints can be set for each well layer
independently using the following structure:
GAP.MOD[0].WELL[{WELL 1}].IPR[i].ABMAXGOR
The constraint list is as follows:
OpenServer User's Manual
Variable Name
ABMAXGOR
ABMAXWC
ABMAXWGR
ABMINGAS
ABMINLIQ
AlqValueMax
AlqValueMin
ESPFreqMax
ESPFreqMin
MAXCFACTOR
MAXDRWDWN
MAXGINJ
MAXGROSSHEATING
MAXPCO2
MAXPH2S
MAXPN2
MAXPOW
MAXPOWERFLUID
MAXPRESSURE
MAXPWF
MAXQGAS
MAXQLIQ
MAXQOIL
MAXQTOTGAS
MAXQWAT
88
Description
Well Abandonment Constraints Type
Contains the well maximum GOR before abandonment
Contains the well maximum WC before abandonment
Contains the well maximum WGR before abandonment
Contains the well minimum gas rate before abandonment
Contains the well minimum liquid rate before
abandonment
General Constraints Type
Contains the maximum well artificial lift parameter:
- For ESP lifted wells: refers to the ESP
frequency
- For PCP lifted wells: refers to the pump speed
- For HSP lifted wells: refers to the power fluid
rate
- For Jet Pump lifted wells: refers to the power
fluid rate
- For Diluent Injection wells: refers to the diluent
injection rate
Contains the minimum well artificial lift parameter (see
above)
Contains the maximum ESP frequency
Contains the minimum ESP frequency
Contains the maximum C factor (pipeline only)
Contains the well maximum applied drawdown
Contains the maximum gas injection rate
Contains the maximum gross heating value
Contains the maximum mole percentage of CO2
Contains the maximum mole percentage of H2S
Contains the maximum mole percentage of N2
Contains the maximum power
Contains the maximum power fluid rate, at separator or
node level only.
Contains the line maximum pressure (pipeline only)
Contains the maximum flowing bottom hole pressure
Contains the maximum gas rate
Contains the maximum liquid rate
Contains the maximum oil rate
Contains the maximum total gas rate
Contains the maximum water rate
89
OpenServer
MAXSOG
Contains the maximum gas specific gravity
MAXSPECGROSSHEATIN Contains the maximum specific gross heating value
G
MAXVELOCITY
Contains the maximum fluid velocity (pipeline only)
MINGINJ
MINGINJNC
MINPWF
MINQGAS
MINQLIQ
MotPowMax
MotPowMin
OPTWEIGTH
PCPSpeedMax
PCPSpeedMin
PumpRateConstraint[i][j]
SHUTINPRI
4.1.13.2Binding Constraints
Some of the constraints described above can be setup to be either binding or unbinding
constraints.
To access the binding section of each constraint, the constraint original OS string
should be followed by the BINDING keyword.
The following numerical indexes are used to define the status of the constraint regarding
to the binding option:
0 : the constraint is set to non-binding
1 : the constraint is set to binding
90
Example: To access the binding status of the well WELL 1 maximum liquid constraint,
the following string can be used:
DoGet (GAP.MOD[0].WELL[{WELL 1}].MAXQLIQBINDING)
OtherConstraintPotential[i]
Description
Contains the maximum flowing bottom hole pressure
constraint potential status
Contains the maximum gas injection constraint
potential status
Contains the minimum no close gas injection
constraint potential status
Contains the minimum gas injection constraint
potential status
Contains the maximum drawdown constraint potential
status
Contains the potential status of the following
constraints, depending of the i index value:
- 0: Maximum pump control parameter
- 1: Minimum pump control parameter
91
OpenServer
Description
Mol percentage of CO2 in the fluid considered
Mol percentage of H2S in the fluid considered
Mol percentage of N2 in the fluid considered
CGR
Drawdown
FBHP
GOR
GrossHeatingValue
HCMassRate
HCMoleRate
NetHeatingValue
PControlResult
Pres
Qgas
Qliq
Qoil
Qwat
ResPres
Produced CGR
Well drawdown
Well flowing bottom hole pressure
Produced GOR
Gross heating value of the fluid stream considered
Hydrocarbon mass rate produced
Hydrocarbon molar rate produced
Net heating value of the fluid stream produced
Optimum pressure drop calculated
Pressure at the system node considered
Produced gas rate
Produced liquid rate
Produced oil rate
Produced water rate
Reservoir pressure
SGG
SpecGrossHeatingValue
SpecNetHeatingValue
SOG
Temp
TotMassRate
WCT
WGR
WSAL
92
IsChokedByOptimiser
IsUnstable
If the element considered is a well, the following string can be used to access the solver
results for a specific layer:
GAP.MOD[i].WELL[j].IPR[k].SolverResults[l].m
Example: To retrieve the oil rate produced at the node labeled Manifold, the following
string can be used:
GAP.MOD[0].EQUIP[{Manifold}].SolverResults[0].Qoil
In case the compositional tracking or full composition calculation options are used, the
composition related solver results can be obtained as defined in
Fluid_Composition_Results.
4.1.14.2Prediction Results
All the Production Prediction results can be obtained for each node / element in
the network using the following string:
GAP.MOD[i].EQUIP[j].PREDRES[k].l
Where the index i refers to the type of model considered (i.e. refers to the Variables
1990-2011 Petroleum Experts Limited
93
OpenServer
at MOD level, MOD[i] section), the index j refers to the name or numerical index of the
network element considered (i.e. refers to the Model Equipment List, EQUIP[i]
section) and the index k refers to the date of the prediction time-step considered.
l refers to the model parameter considered.
The integer k in the above mentioned command will vary from 0 to one less than the
number of prediction results. The command to check the number of prediction results is
GAP.MOD[i].EQUIP[j].PREDRES.DATES.COUNT
Similar keywords to the one used for the Solver results are used for prediction results,
except for the following parameters:
Parameter Keyword
AVGGASRATE
AVGLIQRATE
AVGOILRATE
AVGWATRATE
DATES[i]
Description
Average gas rate produced
Average liquid rate produced
Average oil rate produced
Average water rate produced
Refers to the date of the ith prediction time-step.
DATES[i].DATESTR
DATES[i].
DATETIMESTR
DATES[i].TIMESTR
DOWNTIME
GASRATE
LIQRATE
OILRATE
PWF
REVENUE
WATRATE
If the element considered is a well, the following string can be used to access the solver
results for a specific layer:
GAP.MOD[i].WELL[j].LAYERPREDRES[k][l].m
Where the index i refers to the type of model considered (i.e. refers to the Variables at
MOD level, MOD[i] section), the index j refers to the name or numerical index of the
OpenServer User's Manual
94
well considered (i.e. refers to the Model Equipment List, EQUIP[i] section), the index k
refers to the layer considered (i.e. it can either be the layer numerical index or the
layer name expressed between {}) and the index l refers to the prediction time-step
considered.
The index m refers to the model parameter considered. The keywords used here are
similar to those used for the Production Prediction results.
Example: To retrieve the average oil rate produced by the layer labeled Oil of the well
labeled Well1 on the 01/01/2000, the following string can be used:
GAP.MOD[0].WELL[{Well1}].LAYERPREDRES[{Oil}][{01/01/2000}].AVGOILRATE
4.1.14.4Snapshot Results
The following table summarizes the OpenServer commands to re-load snapshot data:
OpenServer string
GAP.PREDSNAPSHOT.TIME.COUNT
GAP.PREDSNAPSHOT.LOAD
(snapshot_number)
GAP.PREDSNAPSHOT.LOAD
(snapshot_date)
GAP.PREDSNAPSHOT.UNLOAD()
Description
Returns the number of snapshots saved
during prediction run
Loads the snapshot that corresponds to the
specified number starting from 0
Loads the snapshot that corresponds to the
specified date
Unloads the snapshot and return to the initial
system settings
Please see Section 2.8.6 of the GAP User Guide for information on how to save
prediction snapshot data.
95
OpenServer
4.1.15 SubFlowSheets
GAP offers the possibility of organizing the system into different flow sheets, this option
is useful when organizing large models.
It is possible to use the OpenServer functionality to retrieve and modify variables being
located in the flow sheets.
The following syntax can be used to access the number of wells located in the flow sheet
with the index i:
GAP.MOD[{PROD}].FLOWSHEET[i].WELL.COUNT
The following syntax can be used to access the label of the well j located in the flow
sheet i:
GAP.MOD[{PROD}].FLOWSHEET[i].WELL[j].LABEL
Adding the FLOWSHEET[index] or FLOWSHEET[{name of the flow sheet}] structure to
the OpenServer string identifies which flow sheet the given variable is located
The above is valid for any variable and any equipment element.
4.2
96
prediction.
The code to call this in Visual Basic would be:
NSTEPS = DoGAPFunc( GAP.PREDINIT() )
Upon execution, NSTEPS would be set to the number of prediction time-steps.
NSTEPS must also be declared in the macro as an Integer.
-
Sample Macros:
Please also review the prediction set-up sample code in the provided "GAP Prediction
Template.xls" located in: C:/Program Files/Petroleum Experts/IPM 7/Samples/
OpenServer/Template/.
Please also review the GAP OpenServer examples. The files are in the form of *.GAR
files (archived GAP files). To open a GAR file, from the main menu of GAP select File |
Archive | Extract. Included in the GAR file is the macro that is used to run the
predictions and the code structure can be used as a reference to develop custom
macros, and to be modified to suit individual needs.
97
OpenServer
Remark: Non compulsory function arguments will be individualized using a blue font
colour.
Function Name
Network Level Functions
CALCCOMPDP (comp)
Description
PURGEPREDRESULTS (model)
PURGEPREDSNAPSHOT (model)
PURGESOLVERLOG (model)
PURGESOLVERRESULTS (model)
REFITPC (well)
RESETSOLVERINPUTS ()
SAVEFILE (filename)
SHUTDOWN (save)
SOLVENETWORK (optimise, model,
potential)
START ()
STARTASYNC ()
GENIPRLAYER
TRANSFERPROSPERIPR (well,
layernumber, PVTMethod)
98
99
OpenServer
PREDSNAPSHOT.TIME
[snapshot_number]
PREDSNAPSHOT.TIME
[snapshot_number].DateStr
PREDSNAPSHOT.TIME[number1 :
number2]
PREDSNAPSHOT.TIME[number1 :
number2].DateStr
PREDSNAPSHOT.LOAD
(snapshot_number)
PREDSNAPSHOT.LOAD
(snapshot_date)
PREDSNAPSHOT.LOAD("Original")
PREDSNAPSHOT.UNLOAD()
100
101
OpenServer
EQUIP[i].
Deletes all the existing group memberships.
REMOVEALLGROUPMEMBERSHIPS ()
EQUIP[i].REMOVEFROMGROUP
Removes the node considered from the
(group)
group specified.
EQUIP[i].UNBYPASS ()
Unbypasses the node considered.
EQUIP[i].UNMASK ()
Unmasks the node considered.
EQUIP[i].VALIDATE ()
Validates the node considered.
TANK[i].CalcDCTankCurPres(CurProd) Calculates the Current Pressure for the tank
based on the Current Production specified.
This is for Decline Curve Tanks only.
Pipe Environment Parameters
Pipeline Correlation Matching
Calculation (DoCmd)
GAP.MOD[{PROD}].PIPE[0].DOMATCH Matches the available pipeline test to
()
selected correlations
Remark : All the arguments referring to a system node or element and referred
as tag in the following descriptions will be expressed using the following syntax:
MOD[i].EQUIP[j]
Where the index i refers to the index or label (between {}) of the model considered and
the index j refers to the index or label (between {}) of the well considered.
Remark 2: Some of the functions include calculation processes that require the input of
associated variables. The variables associated with the functions can be setup using
the classic DoSet syntax.
These calculation processes will as well output results through output associated
variables. The value of these can be retrieved using a classic DoGet syntax.
DoSet GAP.MOD[i].EQUIP[j].k, value
102
DoGet GAP.MOD[i].EQUIP[j].k
Where the index i refers to the index or label (between {}) of the model considered, the
index j refers to the index or label (between {}) of the node considered and the index k
refers to the GAP function associated variable considered.
The value refers to the value of this associated variable.
Description
Mole percentage of H2S.
Mole percentage of CO2.
Mole percentage of N2.
CPDGG
CPDINPRES
CPDINTEMP
CPDOG
CPDQGAS
CPDQOIL
CPDQWAT
CPDWSAL
Gas gravity.
Inlet pressure.
Inlet temperature.
Oil gravity.
Inlet gas rate expressed at standard conditions.
Inlet oil rate expressed at standard conditions.
Inlet water rate expressed at standard conditions.
Water Salinity.
Output Data
Variable
CPDEFF
CPDFLUIDPWR
CPDGFRC
CPDHEAD
Description
Compressor / Pump Efficiency.
Power to fluid.
Gas fraction (pumps).
Compressor / Pump head.
1990-2011 Petroleum Experts Limited
103
OpenServer
CPDINGRATE
CPDINLRATE
CPDLFRC
CPDOUTPRES
CPDOUTTEMP
CPDPOWREQ
4.2.3 CALCPIPEDP(pipe)
ARGUMENTS
Pipe Refers to the pipe tag.
Description
Pressure at inlet of stage j.
Temperature at inlet of stage j.
Temperature at outlet of cooler stage j
(compressor).
Oil rate at inlet of stage j.
Gas rate at inlet of stage j.
Water rate at inlet of stage j.
Average throughput rate (pumps), Inlet throughput
rate (compressors).
Head generated by stage j.
Power required by stage j.
Efficiency of stage j.
Gas fraction (pumps) Liquid fraction
(compressors).
Oil rate after separation for stage j.
Gas rate after separation for stage j.
Water rate after separation for stage j.
104
Description
Mole percentage of H2S.
Mole percentage of CO2.
Mole percentage of N2.
PIPGG
PIPGOR
PIPGIN
PIPOG
PIPP1
PIPQL
PIPT1
PIPWC
PIPWSAL
Gas gravity.
GOR.
Injected gas rate.
Oil gravity.
Upstream pressure.
Liquid rate expressed at standard conditions.
Upstream temperature.
Water cut.
Water salinity.
Output Data
Variable
PIPP2
PIPT2
Description
Calculated downstream pressure.
Calculated downstream temperature.
105
OpenServer
4.2.6 ISMEMBEROFGROUP(Group)
ARGUMENTS
Group - Refers to the OpenServer string defining the group considered.
DESCRIPTION
This function enables to check if a specific element of the GAP network belongs to the
group considered.
OpenServer User's Manual
106
The function will return 0 if the element consider does not belong to the group
considered, and 1 if the element considered belongs to the group considered.
EXAMPLE
The example below will enable to check whether the well W1 belongs to the group
Group1:
DoCmd ("GAP.MOD[{PROD}].WELL[{W1}].ISMEMBEROFGROUP(MOD
[{PROD}].GROUP[{Group1}])
4.2.8 NEWFILE( )
ARGUMENTS
None
DESCRIPTION
This function clears any currently loaded GAP model.
Care should be taken with this function, since no check is made of whether the currently
loaded model has changed and requires saving.
EXAMPLE
DoGAPFunc ("GAP.NEWFILE()")
107
OpenServer
The string will be one of "WELL", "PIPE", "TANK", "SEP", "PUMP", "COMP", "JOINT",
"SOURCE", "SINK", "VALVE", "INLSEP", "INLCHK", "INLINJ", "INLGEN", "GROUP",
"INFLOW".
label A string giving the label of the new node. The string should be specified in
between quotes.
iposcode (optional) A string giving the direction a node will be displaced relative to
the reference node.
The string will be one of RIGHT, LEFT, ABOVE or BELOW.
The default value is set to RIGHT.
equip (optional) The tag of a node in the system to use as the reference node.
The reference node is used to calculate the position of the new node.
The default value is set to NULL.
model (optional) The tag of the system in which the new item is to be created.
The default value is set to MOD[0].
DESCRIPTION
This function creates a new node in the system specified. Nodes will always be
positioned such that they do not intersect each other.
EXAMPLE
To create a new well labeled Well1 in the currently loaded production system located
at the right of the Separator node, the following syntax could be used
DoGAPFunc GAP.NEWITEM (""WELL"", ""Well1"", ""RIGHT"", MOD[0].
EQUIP[{Separator}])
108
SEP
PUMP
COMP
JOINT
SOURCE
SINK
VALVE
INLSEP
INLCHK
INLINJ
INLGEN
COMPLETION
GROUP
INFLOW
FLOWSHEET
Flowsheet Example:
Create a Flowsheet in the main GAP model:
DoCmd GAP.NEWITEM( "FLOWSHEET", "FlowS1", RIGHT, NULL, MOD[0])
Create a joint in the flowsheet:
DoCmd GAP.NEWITEM( "JOINT", "Port1", RIGHT, MOD[0].FLOWSHEET
[{FlowS1}], MOD[0], MOD[0].FLOWSHEET[{FlowS1}])
To define a joint as a flowsheet port:
DoCmd GAP.MOD[{PROD}].JOINT[{Port1}].SetFlowsheetPort()
To turn a port back to a normal joint:
DoCmd GAP.MOD[{PROD}].JOINT[{Port1}].ClearFlowsheetPort()
The following flag can be used to determine whther a joint is a flowsheet port:
DoGet GAP.MOD[{PROD}].JOINT[{Port1}].IsFlowsheetPort()
109
OpenServer
Description
In a gas lifted system, specifies the gas injected.
The manifold pressure.
Output Data
Variable
PCCANS
PCCDANSDG
Description
The calculated quantity.
In a gas lifted system, the derivative of the calculated
quantity with respect to gas injected.
The Input and Output Data parameters are global variables, and hence do not
require the equipment to be identified when using these variables. An Example for
this is given below.
EXAMPLE
An example of its use with a gas lifted well labeled w1 would be
110
DoGAPFunc GAP.PCCALC(MOD[0].WELL[{w1}],QLIQ)
REM Obtain the output values
ANS = DoGet(GAP.PCCANS)
DER = DoGet(GAP.PCCDANSDG)
Variable
PCOPTMANIPRES
Description
The manifold pressure.
Output Data
Variable
PCOPTGINJ
PCOPTVAL
Description
The calculated optimum gas injection.
The calculated quantity at optimum gas injection.
The Input and Output Data parameters are global variables, and hence do not
require the equipment to be identified when using these variables. An Example for
this is given for the PCCALC command.
111
OpenServer
Variable
PCSOLVMANIPRES
PCSOLVTARGVAL
Description
The manifold pressure.
The target quantity.
Output Data
Variable
PCSOLVGASINJ
Description
The calculated gas injection required. The value in
this variable on input is used as a starting value.
The Input and Output Data parameters are global variables, and hence do not
require the equipment to be identified when using these variables. An Example for
this is given for the PCCALC command.
112
Variable
PCSOLVGASINJ
PCSOLVTARGVAL
Description
The gas injection. In a non gaslifted node, this
value is ignored.
The target quantity.
Output Data
Variable
PCSOLVMANIPRES
Description
The calculated manifold pressure. On input, the value
in this variable is used as a starting value.
The Input and Output Data parameters are global variables, and hence do not
require the equipment to be identified when using these variables. An Example for
this is given for the PCCALC command.
113
OpenServer
Firstly, it totals up the production and injection volumes from the previous timestep and
uses these to calculate the tank pressures for the current time-step.
Secondly, it calculates the network performance using a solve network calculation along
with the current tank pressures and flowing conditions. It then obtain the production rates
for the wells included in the system.
It then calculates the ideal injection required, based on voidage replacement conditions,
etc. If associated injection systems are present, these ideal injection requirements are
used as constraints, and the injection systems are built and allocated to obtain the
actual injection volumes.
When each PREDDOSTEP() call is finished, GAP is left in a state where it can respond
to any set of OpenServer commands. This allows a large amount of flexibility, since
virtually any action can be performed at each timestep. This can range from customized
scheduling through to running GAP in conjunction with a facilities simulator at each
timestep.
EXAMPLE
The following example performs the prediction set up in the GAP file, and on the timestep 01/03/1980 alters the PI of the first layer of well w1 to 15. At the end of the
prediction run it saves the GAP file.
REM Set up prediction
NSTEPS = DoGAPFunc GAP.PREDINIT()
For I = 1 To NSTEPS
REM Do production prediction step
RVAL = DoGAPFunc GAP.PREDDOSTEP()
REM Check return code should be 1 if step OK
If (RVAL <> 1) Then
Exit For
End If
If ( DoGet ("GAP.PREDCURDATE.DATESTR") =
"01/03/1980") Then
DoSet "GAP.MOD[0].WELL[{w1}].IPR[0].PI", 15
End If
Next
DoGAPFunc GAP.PREDEND()
DoGAPFunc GAP.SAVEFILE( C:\SAMPLES\PREDRUN1.GAP )
114
optimise (optional) Refers to the status of the optimiser when the prediction timestep
is performed.
The following options are available:
-1 GAP uses the optimisation mode and potential calculation settings saved in
the file
0 No Optimisation
1 Optimise and Honour Constraints
2 Optimise, No constraints
The default value is set to optimise and honour constraints.
potential (optional) Refers to the status of the network potential calculation.
The following options are available:
0 No potential calculation
1 Potential calculation
The default value is set to no potential calculation.
model (optional) Refers to the tag of the model considered (i.e. production / water
injection / gas injection).
The default considers the production system.
DESCRIPTION
This function performs a solve network calculation in predictive mode without moving
forward of one prediction step.
It enables to run solve network sensitivities at a specific point during the prediction.
115
OpenServer
DESCRIPTION
This functions establishes all the setup required for a prediction run, i.e. the MBAL tanks
are loaded, the well models are initialized, etc.
This process leads to the calculation of the number of timestep required in the
prediction run.
Example:
NumSteps = DoGAPFunc("GAP.PREDINIT()") 'Initialises the GAP
Prediction and returns the total number of prediction steps
NOTE
Using of the command will initialize the prediction and define the number of steps
required to perform the prediction. The number of step is defined according to
Prediction Start, Prediction End and Step Size.
116
The prediction is run through the loop on a step by step basis. In this case GAP is driven
by external application and completes the full number of prediction steps; the System
Abandonment Constraints will be ignored.
The full prediction run will be accomplished even if macro exits the loop and executes
the GAP.PREDEND() command.
117
OpenServer
4.2.25 REFITPC(well)
ARGUMENTS
OpenServer User's Manual
118
well Refers to the tag of the well considered in the currently loaded model.
DESCRIPTION
This function calculates a set of performance curves for the well based on the input
performance curve data.
For example, the syntax if we would like to do a refit on a well with the name "well 2"
would be:
DoCmd("GAP.REFITPC(GAP.MOD[{PROD}].WELL[{WELL 2}])")
4.2.26 RESETSOLVERINPUTS ()
ARGUMENTS
None
DESCRIPTION
This function resets any previously entered solver inout data (i.e. separator pressure,
injection manifold pressure, gas lift gas available).
119
OpenServer
or not.
The following values are possible:
4.2.29 SOLVENETWORK()
ARGUMENTS
optimise (optional) Refers to the status of the solver when the calculation is
performed.
The following options are available:
-1 GAP uses the optimisation mode and potential calculation settings saved in
the file
0 No Optimisation
1 Optimise and Honour Constraints
2 Optimise, No constraints
The default value is set to optimise and honour constraints.
model (optional) Refers to the tag of the model considered (i.e. production / water
injection / gas injection).
The default considers the production system.
potential (optional) Refers to the status of the network potential calculation.
The following options are available:
0 No potential calculation
1 Potential calculation
The default value is set to no potential calculation.
DESCRIPTION
This function performs a solver calculation within GAP.
EXAMPLE
This example assumes a naturally flowing system with two separators labeled s1 and
s2 is loaded in GAP
REM Reset any previously set allocate pressures.
DoGAPFunc GAP.RESETALLOCINPUTS()
REM Set separators to desired allocate pressures.
DoSet GAP.MOD[0].SEP[{s1}].SOLVERPRES[0], 200
DoSet GAP.MOD[0].SEP[{s2}].SOLVERPRES[0], 300
REM Set up constraints
OpenServer User's Manual
120
DoSet GAP.MOD[0].MAXGAS, 50
DoSet GAP.MOD[0].SEP[{s1}].MAXQWAT, 12000
REM Perform Allocation
DoGAPFunc GAP.SOLVENETWORK(1, MOD[0])
REM Get results
QOILS1 = DoGet(GAP.MOD[0].SEP[{s1}].SOLVERRESULTS[0].
Qoil)
QWATS2 = DoGet(GAP.MOD[0].SEP[{s2}].SOLVERRESULTS[0].
Qwat)
121
OpenServer
EXAMPLE
To break the link between a well W1 and a joint J1, the following code can be used.
DoGAPFunc ("GAP.UNLINKITEMS (MOD[0].JOINT[{J1}],MOD[0].WELL
[{W1}])")
This functions validates all the input data needed for both solver and prediction
calculations, at network level.
The function returns 0 if all the model considered are valid, and a value # 0 if it is not the
case.
122
19
6) = DoGet("GAP.MOD[{PROD}].WELL[{W2}].PCDATA[0][0]["+ CStr(i)+"]")
7) = DoGet("GAP.MOD[{PROD}].WELL[{W2}].PCDATA[0][1]["+ CStr(i)+"]")
8) = DoGet("GAP.MOD[{PROD}].WELL[{W2}].PCDATA[0][2]["+ CStr(i)+"]")
123
OpenServer
DoSet
DoSet
DoSet
DoSet
DoSet
"(GAP.MOD[0].WELL[{W1}].MeasuredLiqRate"), 1000
"(GAP.MOD[0].WELL[{W1}].MeasuredAlq"), 2.1
"(GAP.MOD[0].WELL[{W1}].MeasuredPres"), 200
"(GAP.MOD[0].WELL[{W1}].MeasuredGOR"), 650
"(GAP.MOD[0].WELL[{W1}].MeasuredWC"), 42
DoGAPFunc "(GAP.WELLCALC(MOD[0].WELL[{W1}])")
QLIQEST = DoGet("(GAP.MOD[0].WELL[{W1}].EstimatedLiqRate"))
QGOREST = DoGet("(GAP.MOD[0].WELL[{W1}].EstimatedGOR"))
QWCEST = DoGet("(GAP.MOD[0].WELL[{W1}].EstimatedWC"))
The syntax for the PACALC and the ACTUALCALC commands is as shown in the following lines.
DoCmd ("GAP.WELLCALC(MOD[{PROD}].WELL[{W1}])")
DoCmd ("GAP.PACALC(MOD[{PROD}].WELL[{W1}])")
DoCmd ("GAP.ACTUALCALC(MOD[{PROD}].WELL[{W1}])")
124
This function resets to zero the values of a specific column in the Equipment control
screen.
This function resets any scheduling data associated with the network elements
specified.
125
OpenServer
This functions validates all the input data needed for both solver and prediction
calculations, at model level.
The function returns 0 if all the model considered are valid, and a value # 0 if it is not the
case.
4.2.40 GROUPS
Command
GROUP[i].ADDMEMBER (equip)
GROUP[i].REMOVEALLMEMBERS ()
GROUP[i].REMOVEMEMBER (equip)
EQUIP[i].ADDTOGROUP (group)
Description
"equip" refers to the tag of the equipment
and the function adds the node specified to
the given group
This function removes all the members from
the given group
Use this command to remove a given piece
of equipment from the group where: "equip"
refers to the tag of the given piece of
equipment that will be removed
This function adds the node considered to
the given group
Variables
Description
GAP.MOD.[{PROD}].GROUP[{GROUP1}]. Counts the number of connected elements
to a given group
member.count
Returns the label of a given member where
GAP.MOD.[{PROD}].GROUP[{GROUP1}]. 'i' corresponds to the given member index
returned using the"GAP.MOD.[{PROD}].
member[i].label
GROUP[{GROUP1}].member.count" string
GAP.MOD.[{PROD}].GROUP[{GROUP1}]. Returns the "type" of equipment for the
given group member index 'i'
member[i].type
GAP.MOD.[{PROD}].GROUP[{GROUP1}]. Returns the sequential index of the piece of
equipment when it was added to the given
member[i].Index
GAP model
Returns the label of the equipment based
GAP.MOD.[{PROD}].EQUIP[i].label
on the specified model index (i) value
126
4.2.42 EQUIP[i].BYPASS ()
ARGUMENTS
None.
DESCRIPTION
4.2.43 EQUIP[i].DISABLE ()
ARGUMENTS
None
DESCRIPTION
4.2.44 EQUIP[i].ENABLE ()
ARGUMENTS
None
DESCRIPTION
127
OpenServer
4.2.45 EQUIP[i].IsMemberOfGroup(group)
ARGUMENTS
This function checks if the equipment considered is included in the group specified.
ASSOCIATED VARIABLES
4.2.46 EQUIP[i].MASK ()
ARGUMENTS
None
DESCRIPTION
4.2.47 EQUIP[i].REMOVEALLGROUPMEMBERSHIPS ()
ARGUMENTS
None
DESCRIPTION
This function removes all the exiting group links of the considered node.
128
4.2.49 EQUIP[i].UNBYPASS ()
ARGUMENTS
None.
DESCRIPTION
4.2.50 EQUIP[i].UNMASK ()
ARGUMENTS
None
DESCRIPTION
This functions validates all the input data needed for both solver and prediction
calculations, at node level.
The function returns 0 if the model considered is valid, and a value # 0 if it is not the
case.
4.2.52 TANK[i].CalcDCTankCurPres(CurProd)
Calculates the Current Pressure for the tank based on the Current Production specified.
This is for Decline Curve Tanks only. The CURPROD must be replaced by the value of
the Current Production for which the calculations need to be performed.
129
OpenServer
for eg:
DoCmd ("GAP.MOD[{PROD}].TANK[{T1}].CalcDCTankCurPres(1.22501)")
This command will perform the calculation for the calculation for the Current Reservoir
Pressure based upon the value of the Current Production specified in the string. in the
above example the calculation is being performed to determine the pressure when the
cumulative production is 1.22501 units.
This command can be used in combination with DoGet("GAP.MOD[{PROD}].TANK
[{T1}].TCURRESPRED") to obtain the Current Pressure.
4.2.53 PIPE[i].DOMATCH ()
ARGUMENTS
None
DESCRIPTION
4.2.54 IPR[i].CONINGMATCH ()
ARGUMENTS
None
DESCRIPTION
This function matches the available coning data in the selected IPR.
4.2.55 IPR[i].DISABLE ()
ARGUMENTS
None
DESCRIPTION
This function disables the ipr considered.
See ipr.ENABLE for enabling nodes.
EXAMPLE
To disable the Layer 1 of well W1 the following code can be used.
DoCmd ("GAP.MOD[0].WELL[{W1}].IPR[0].DISABLE()")
OpenServer User's Manual
130
4.2.56 IPR[i].ENABLE ()
ARGUMENTS
None
DESCRIPTION
This function enables the ipr considered.
See ipr.DISABLE for disabling nodes.
EXAMPLE
To disable the Layer 2 of well W1 the following code can be used.
DoCmd ("GAP.MOD[0].WELL[{W1}].IPR[1].ENABLE()")
4.2.57 IPR[i].IPRMATCH ()
ARGUMENTS
None
DESCRIPTION
This function matches the available ipr dataset.
4.2.58 IPR[i].MASK ()
ARGUMENTS
None
DESCRIPTION
This function masks the ipr considered.
131
OpenServer
4.2.59 IPR[i].UNMASK ()
ARGUMENTS
None
DESCRIPTION
This function unmasks the ipr considered.
4.3
132
do
{
redo = false
For (each system)
Script.DoPredStepProlog (system)
Apply schedule for the current timestep ()
Refresh IPRs from tank ()
Apply abandonment constraints ()
Refit performance curves (for PC wells only)
For (each system)
{
Script.DoPredStepSolverProlog (system)
Solve Network ()
Script.DoPredStepSolverEpilog (system)
If (system = production) then Set injection rate constraints of
injection systems ()
}
For (each system)
Script.DoPredStepEpilog (system)
} while (redo = true)
Run tank model timestep ()
Save prediction step results ()
If (requested) Save prediction step snapshot ()
}
For (each system)
Script.DoPredEpilog (system)
Destroy systems ()
For more information using GAP script, please see Section 12 of the GAP User
Guide.
Chapter
134
5.1
135
OpenServer
This dialog displays the text string for the porosity variable. This can be used in the
GetValue and SetValue functions. The Copy button can be used to copy the text string
to the clipboard so it can then be pasted into the VBA macro or batch file.
5.2
5.3
Commands
This section describes the possible calculations and other functions that can be called
in MBAL using the DoCmd function. The following are a list of those functions and the
text strings used to call them.
Any commands beginning with MBAL.MB can only be used if the material balance tool
is selected, where the 'MB' portion of the string indicates the material balance tool is
being used.
136
5.3.1 General
MBAL.ChangeTool=MB Change to the material balance tool
MBAL.ChangeTool=MC Change to the Monte Carlo tool
MBAL.ChangeTool=DC Change to the decline curve tool
MBAL.ChangeTool=1D Change to the 1D tool
MBAL.ChangeTool=ML Change to the multi-layer tool
MBAL.ChangeTool=TG Change to the tight gas model
MBAL.OpenFile
Open an MBAL file
Example: DoCmd ("MBAL.OpenFile(C:\Test\Oil.MBI") for a
macro based file path
DoCmd ("MBAL.OPENFILE=" + Range("a3")) for a
spreadsheet based file path, and:
DoCmd ("MBAL.OPENFILE(""" + Range("a3") + """)") for a
spreadsheet based file path
MBAL.SaveFile
Saves an MBAL file
MBAL.NewFile
Resets all the input data and is equivalent to the menu item
File New
137
OpenServer
MBAL.MB.IMPORTTPD(MBAL.MB.PREDWELL[0],C:\OIL1.TPD)
MBAL.MB.IMPORTMBV(<well text string>,<MBV file name>)
Imports the specified MBV file into the specified well e.g.:MBAL.MB.IMPORTMBV(MBAL.MB.PREDWELL[0],C:\OIL1.MBV)
MBAL.MB.ALLOCTANKPRESSRATE(<tank text string>)
Calculates the tank production history pressure and rate from the entered well
production history. Equivalent to using the Calc button on the tank production history
input dialog. e.g.:MBAL.MB.ALLOCTANKPRESSRATE(MBAL.MB.TANK[1])
MBAL.MB.ALLOCTANKRATEONLY(<tank text string>)
Calculates the tank production history rate only from the entered well production history.
Equivalent to using the Calc Rate button on the tank production history input dialog. e.
g.:MBAL.MB.ALLOCTANKRATEONLY(MBAL.MB.TANK[1])
MBAL.MB.RESETREGRESSTANKHIST(<tank text string>)
Resets the inputs to the history matching regression for the specified tank. It will reset
the start values for each regression parameter to the current stored value. This is
equivalent to clicking the Reset button in the regression input dialog. e.g.:MBAL.MB.RESETREGRESSTANKHIST(MBAL.MB.TANK[{TankLabel}])
MBAL.MB.REGRESSTANKHIST(<tank text string>)
Performs the history matching regression for the for the specified tank. e.g.:MBAL.MB.REGRESSTANKHIST(MBAL.MB.TANK[1])
There are several commands that can be used to build models from scratch. Their use
is demonstrated in the sample spreadsheet BUILD MODEL.XLS.
MBAL.MB.VALIDATE
It is possible to create new tanks, wells etc using the Open Server. It is also possible to
populate the tank, well etc with the various items of data. However normally the object
will be marked as invalid (shown as red on the MBAL interface) until the user enters the
appropriate dialog. This functions will autmatically validate all the objects in the material
balance tool without having to enter each of the dialogs.
MBAL.MB.LINKITEMS(<object 1 text string>, <object 2 text string>)
This command will link the two specified objects. Depending on the type of objects
being connected, the command may also create intermediate objects e.g. if two tanks
and connected then a transmissibility will also be created. An example command is:MBAL.MB.LINKITEMS(MBAL.MB.TANK[1],MBAL.MB.PREDWELL[2])
MBAL.MB.BREAKLINK(<object 1 text string>, <object 2 text string>)
This command will break the link between two specified objects. An example command
OpenServer User's Manual
138
is:MBAL.MB.BREAKLINK(MBAL.MB.TANK[1],MBAL.MB.LEAK[2])
See also the section below on Material_Balance_Step-by-Step_Prediction
5.3.4 1D Model
MBAL.1D.RunSimulation :
Runs a 1D model simulation.
5.3.6 Multi-Layer
MBAL.ML.Calculate
Runs a multi-layer calculation.
MBAL.ML.Validate
Performs a validation for the data entered.
Other variables to enter the data can be accessed by using the CTRL + Right Click
Option.
139
OpenServer
5.3.9 PVT
All the PVT commands can be used for any tool that has a PVT description i.e., MB,
MC, etc. The commands below are shown for the material balance tool. The strings can
be used for the MC or ML, etc., tools by simply replacing the MB with the corresponding
tool name designation i.e., MC, etc.
MBAL.MB.PVT.INPUT.CALCULATE
Performs a PVT calculation of fluid properties.
MBAL.MB.PVT.INPUT.MATCHCURRENT
Performs a PVT match calculation on the current correlation only.
MBAL.MB.PVT.INPUT.MATCHALL
Performs a PVT match calculation on all the correlations.
MBAL.MB.PVT.INPUT.MATCHCURRENT(OIL)
Performs a PVT match calculation on the current correlation only for the oil part of
a generalised material balance dataset.
MBAL.MB.PVT.INPUT.MATCHCURRENT(CON)
Performs a PVT match calculation on the current correlation only for the
condensate part of a generalised material balance dataset.
MBAL.MB.PVT.INPUT.MATCHALL(OIL)
Performs a PVT match calculation on all the correlations for the oil part of a
generalised material balance dataset.
MBAL.MB.PVT.INPUT.MATCHALL(CON)
Performs a PVT match calculation on all the correlations for the condensate part
of a generalised material balance dataset.
140
All of the PVT commands act on a PVT dataset. In the case of MC and ML and MB with
single tank there is only ever one dataset. But for multi-tank MB we can have more than
one dataset. In this case the above commands can be modified to perform the
command on different datasets e.g.
MBAL.MB.PVT.INPUT[1].CALCULATE will calculate the index 1 dataset and
MBAL.MB.PVT.INPUT[{LOWER}].CALCULATE will calculate the dataset called
LOWER.
5.4
141
OpenServer
142
The list of possible values are listed for each variable below or can be found using the
CTRL-Right Click technique described above.
The following example illustrates the use of the DoSet function:
Dim Server As Object
Dim Value As String
Dim PorVar As String
Sub DoOpenServer
Set Server = CreateObject("PX32.OpenServer.1")
Value = CON
PorVar = MBAL.MB.TANK[{S-TANK}].TYPE
SetValue(PorVar,Value)
Set Server = Nothing
End Sub
Similarly, the DoGet function will return the text string corresponding to the given
variable.
143
OpenServer
144
145
OpenServer
the allocation. This is also true of time based input data such as the layer production
schedule. For example, if an allocation was performed to 2020 and then a new layer is
added at 2010, the new layer will have no impact on the allocation results up to 2020.
A number of examples have been included with the installed samples and show details
of the above features and show how to implement simple extensions to the standard
production allocation.
5.5
5.5.1 Overview
A material balance model is made up of several objects. These include tanks, wells and
inflows. There are also some control data such as manifold pressure, time steps etc.
The production prediction method in MBAL uses these objects plus the control data to
perform its calculations using the same set of smaller calculations.
For each prediction time step, and for each well the following parameters are
considered:
- Calculate the GOR, WCT, CGR, WGR for each layer given the current
saturations and relative permeabilities.
- Calculate the PVT for each layer
- Calculate the well performance given production constraints and common
manifold pressure
- Remove the well production from the appropriate tanks
- Calculate the pressure at the end of the time step
The MBAL prediction covers most situations commonly addressed by engineers.
However there are situations where a user may wish to run the prediction in a different
manner. For example they may be a requirement to have different manifold pressures.
Alternatively, it may be desired to use customized well performance calculations to
calculate well rates and still use MBAL to calculate the inflows GOR, WCT, etc.
In these situations it is now possible to write customized predictions since direct access
to the objects and low-level calculations has been provided. Macros can be written that
create the objects and call the low-level calculations in whatever form the user requires
to perform a specific type of prediction. The macro can also provide the control data
used to define manifold pressure, time steps etc.
Since we are working at a much lower level in the calculations, the commands given to
access to the temporary calculation variables as well as the input variables can be read
and change the cumulative rates in the tanks as well as being able to change the
relative permeabilities.
146
There are two levels of functions: The lower level functions provide the highest level of
flexibility and the higher level functions collect a number of lower level functions into a
single function to perform a common task.
High and low level functions can be called together in the same macro. So the higher
level functions can be used for the majority of the prediction macro and low level
functions can be called if any specialist behaviour is required.
Unlike the other uses of OpenServer, these functions do not operate on the data shown
in the MBAL interface. One still needs to run MBAL to use the functions, and the data
loaded by these function are not visible anywhere in the interface. Any data loaded in
MBAL whilst running a macro using these functions is unaffected by the macro.
We supply two example macros which are described in detail in the following sections
and recommend reviewing the code structures prior to writing a custom macro.
5.5.2 Summary
All commands and data tags used for the Direct Access OpenServer all start with
MBAL.RL.
The low-level commands work slightly differently from the standard OpenServer
commands. The commands are split into a number of sections with different sub-tags
for each command. and include:
GETDATA
RESCALC
WELLDATA
IPRVLPCALC
RELPERMIPR
RELPERMTANK
general data
tank data and calculations
well/IPR data and calculations
IPR/VLP intersection calculations
relative permeability curves for layers/IPRs
relative permeability curves for tanks
Many of the commands need large amounts of data to be passed to MBAL. For
example the WELLDATA command, used to read all the IPR data, needs to pass more
than 10 variables. To pass this data, there is a data block associated with each
command. One of the items in the data block is a command ID which determines
which command is to be called. The data block can be accessed using the normal
DoGet and DoSet commands.
For example, consider the situation where we wish to update a tank with new cumulative
rates. The first step is to read the current conditions and to do this we set the command
ID and tank number in the data block associated with the RESCALC command and
then call the command to read the data into the data block as per the following:
iCommand = 8 ' Get tank data command
147
OpenServer
DoSet "MBAL.RL.SMBRESDATA.COMMANDID",
iCommand
DoSet "MBAL.RL.SMBRESDATA.TANKNUM", iTankNo
DoCmd "MBAL.RL.RESCALC"
All the tank data will be in the SMBRESDATA data block and now the cumulative rates
in the data block can be changed. To write the data back to the tank, we now load the
Write Tank Data command ID into the data block and call the RESCALC command as
per the following:
iCommand = 9 ' Set tank data command
DoSet "MBAL.RL.SMBRESDATA.COMMANDID",
iCommand
DoSet "MBAL.RL.SMBRESDATA.TANKNUM", iTankNo
DoSet "MBAL.RL.SMBRESDATA.CUMGAS", CUMGAS
DoSet "MBAL.RL.SMBRESDATA.CUMOIL", CUMOIL
DoSet "MBAL.RL.SMBRESDATA.CUMWAT", CUMWAT
DoCmd "MBAL.RL.RESCALC"
Note that are many other data items belonging to the tank which are retrieved and set by
the two DoCmd calls in the SMBRESDATA data block. If we are doing a Get and Set
a pair as above, we only need to set the items we want to change as the other values in
the data block will still be the same as from the read command.
148
to be created without reference to a *. MBI file, and the MBAL interface is obviously the
most convenient way to set up the objects.
The MBAL.RL.INITIALISE function will read the objects from the *.MBI file specified in
the command tag and create objects matching those in the file and connect them
together as in the given *.MBI file. All the objects are now initialized and ready for
calculations to be performed. MBAL will then run the history simulation up to the time
specified in the ENDHISTORY data item, and if a value of -1 is used then MBAL will
automatically run the history to the end of the production history in the tanks.
The USESUBSTEP data item must be set to indicate if sub-steps should be used in
the history simulation, and if the value is set to zero, MBAL will only calculate at the
times specified in the production history. Alternatively, if the value is set to one, then
MBAL will also calculate sub-steps between the entered times.
After the INITIALISE function, we read and store the handle that MBAL gave to the file
we just read in a VBA variable. This is needed in various commands used later in the
macro.
Range("F12") = "Opening file and initialising the model"
DoSet "MBAL.RL.SMBDATA.USESUBSTEPS", 0
dEndHistory = -1
DoSet "MBAL.RL.SMBDATA.ENDHISTORY", dEndHistory
DoCmd "MBAL.RL.INITIALISE(""" + Range("B12") + """)"
iMBIHandle = DoGet("MBAL.RL.SMBDATA.HANDLE")
In the last command we asked MBAL to run the history simulation to the end of the tanks
production history, but we do not know what that time was and therefore where to start
the prediction. So the next code fragment gets the data of the 1st tank in the
corresponding *.MBI file - the CUMTIM variable from the data block will indicate the
start of the prediction. We can simply use the 1st tank as the value that will be the same
for all of the tanks. We have to set the *.MBI file handle stored above, and the
command ID=8 to get the tank data. Also, set the tank number to zero to indicate that
we want the data from the 1st tank. After calling the RESCALC function, store the
CUMTIM variable in the dEndHistory VBA variable.
DoSet "MBAL.RL.SMBRESDATA.HANDLE", iMBIHandle
iCommand = 8 ' Get tank data command
DoSet "MBAL.RL.SMBRESDATA.COMMANDID", iCommand
DoSet "MBAL.RL.SMBRESDATA.TANKNUM", 0
DoCmd "MBAL.RL.RESCALC"
dEndHistory = DoGet("MBAL.RL.SMBRESDATA.CUMTIM")
1990-2011 Petroleum Experts Limited
149
OpenServer
The macro defined the WellName() VBA variable at the top of the macro which lists the
names of the wells in the MBI file.
WellName(0) = "OilWell"
WellName(1) = "GasLift"
WellName(2) = "WatInj"
WellName(3) = "GasWell"
The next section of the code finds the well model handle of the corresponding well
object in MBAL for each of the wells in the VBA WellName() variable. It saves the well
model handles in the VBA variable iWellModel() in the same order as the WellName()
variable. If the macro is to do any special manipulation of wells such as using a
particular WHP for WELLA-3, etc., then the calling macro has to know the handle of
each well.
The first stage is to get the number of wells loaded in MBAL and set the Command
ID=4 to get the number of well models. After calling the WELLDATA command, we can
then get the number of well models from the INTDATA variable in the data block.
The next step is to loop round each well model in MBAL and find the name of each well.
When we find the matching name, we store the well handle. To find the name, we load
the stored MBI file handle in the MBIHANDLE variable, and use the command ID=10 to
get the well model name and the HANDLE variable with the MBI well model handle.
After the WELLDATA command the WELLNAME variable contains the name.
DoSet "MBAL.RL.SMBWELLDATA.COMMANDID", 4 ' Get well
model count
DoCmd "MBAL.RL.WELLDATA"
iNumWellModels = DoGet("MBAL.RL.SMBWELLDATA.INTDATA")
For i = 0 To iNumWells - 1
For j = 0 To iNumWellModels - 1
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.COMMANDID", 10 ' Get
well name of model
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", j
DoCmd "MBAL.RL.WELLDATA"
If (WellName(i) = DoGet("MBAL.RL.SMBWELLDATA.
WELLNAME")) Then
iWellModel(i) = j
End If
Next j
Next i
By default, the well model is created assuming there is one instance of the well model.
OpenServer User's Manual
150
This next fragment shows how to model more than one well being drilled of the same
type:
- Load the MBI handle as usual
- Load 2nd well model handle in the HANDLE variable as we wish to modify the
Gas Lift well
- Load the number of wells to drill in NUMWELL
- Load 1 in the variable IPRNUM (this indicates that the command is not
specific to a particular layer)
The following code example illustrates the above:
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellModel(1)
DoSet "MBAL.RL.SMBWELLDATA.NUMWELL", 2
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", -1
iCommand = 13 ' Set number of wells
DoSet "MBAL.RL.SMBWELLDATA.COMMAND", iCommand
DoCmd "MBAL.RL.WELLDATA"
The next sub-section shows how to set a downtime factor for the 1st well, the Oil Well. A
downtime of zero means that the well is always producing, where a downtime of 1.0
means that the well is never producing. The method is much the same as for setting the
number of wells.
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellModel(0)
DoSet "MBAL.RL.SMBWELLDATA.DOWNTIME", 0.2
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", -1
iCommand = 12 ' Set downtime command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND", iCommand
DoCmd "MBAL.RL.WELLDATA"
This next section shows how to set a start and end time for a well model. This code
fragment also shows an important point concerning the use of times. In the Direct
Access OpenServer, times are in internal units which are the number of days since
1900. Obviously these are not very convenient units, and if calendar dates i.e.,
01/01/1994 aare being used a command to convert calendar dates to internal times
(and back again) is provided. To do this set the DATE variable to the calendar date
required, then call the DATETOTIME command. The answer can then be retrieved
from the TIME variable.
To do the reverse calculation use the command
TIMETODATE.
We first convert the two calendar dates required to internal times, and then set the
STARTTIME and ENDTIME variables to these two internal time values. We set the
HANDLE to the well model handle for the third well (Gas Well) and finally set the
Command ID=14 to set the start and end times.
1990-2011 Petroleum Experts Limited
151
OpenServer
iWellModel
The next section is used to calculate the performance of the wells using the IPR/VLP
intersection calculation. In this macro we apply a different FWHP for each well. Much of
this part of the macro is repeated for each well so only a relevant fragment for the gas lift
well is shown.
The first step is to set the well model handle. The next variable to set (TOL) is used to
control if intersections are allowed on the negative slope section of the lift curve. The
normal situation is where they are not allowed in which case use 0.0. If negative VLP
intersections are allowed, the value will be set to a large value i.e., a value of -1e10 will
allow any size of negative slope solution.
OpenServer User's Manual
152
We then set the extrapolation flag. This specifies whether the lift curves should be
extrapolated beyond the upper and lower values of the sensitivity variables. In general,
the lift curves should be calculated over all the expected ranges of sensitivity variables.
However limited extrapolation will broaden the range of the lift curves.
NOTE: VLP extrapolation is undesirable as unpredictable behaviour may
occur. It is always recommended to regenerate the VLP if lift curve
extrapolation has been reported in the well results Status column.
The next step is setting the sensitivity variables for the lift curves, and the required
variables will depend on the well type and include:
GLRINJ
FREQ
WHP
153
OpenServer
"MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
"MBAL.RL.SMBWELLDATA.HANDLE", iWellModel(iWellNo)
"MBAL.RL.SMBWELLDATA.QTOT", Qtot
"MBAL.RL.CALCLAYERRATES"
The next code fragment shows how the fluid properties can be queried for the well given
the different rates and properties of each layer.
Load the IPRNUM variable with 1 that will indicate the well properties will be queried.
If IPRNUM is set to a particular layer, then the command retrieves the values for that
layer only.
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellModel(iWellNo)
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", -1
iCommand = 22 ' Read IPR data command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND", iCommand
DoCmd "MBAL.RL.WELLDATA"
API = DoGet("MBAL.RL.SMBWELLDATA.OILAPI")
SOLGOR = DoGet("MBAL.RL.SMBWELLDATA.SOLGOR")
GRVGAS = DoGet("MBAL.RL.SMBWELLDATA.GRVGAS")
WATSAL = DoGet("MBAL.RL.SMBWELLDATA.WATSAL")
At the end of the initialization process we set various attributes of the wells to mimic a
well schedule. For example, we set a start and end time for the Gas Well, a downtime
factor for the Oil Well and the number of gas lift wells was set to two. The next command
is used to factor the well and layer rates to take these into account.
Set the well model as usual and the IPRNUM to 1 to indicate all layers should be
OpenServer User's Manual
154
factored. If start and end times have been used on the well, then also set the
STEPSTARTTIME and STEPENDTIME variables with the times of the start and end
of the step. If well multipliers, downtime factors or start and end times have not been set
then there is no need to call this command.
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", -1
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellModel(iWellNo)
DoSet "MBAL.RL.SMBWELLDATA.STEPSTARTTIME", CUMTIM DELTIM
DoSet "MBAL.RL.SMBWELLDATA.STEPENDTIME", CUMTIM
iCommand = 36 ' Correct rates for well schedule command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND", iCommand
DoCmd "MBAL.RL.WELLDATA"
Now that we have the correct layer rates we must calculate how much oil, water and gas
is taken out of each tank for this time step. Load the well handle and the DELTIM
variable with the length of the time step. MBAL will loop through each layer in the well
and update the attached tank with the layer rate*DELTIM. Remember that MBAL knows
which layer is attached to which tank.
DoSet
DoSet
DoSet
DoCmd
"MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
"MBAL.RL.SMBWELLDATA.HANDLE", iWellModel(iWellNo)
"MBAL.RL.SMBWELLDATA.DELTIM", DELTIM
"MBAL.RL.CUMLAYERRATES"
The final command for each time step is to perform the material balance for all the tanks
in the MBI file. This will calculate the new tank conditions at the end of the time step,
including pressure and saturations.
We now need to set the MBI handle, and if more than one MBI file is loaded, then this
command must be called more than once. Set the CUMTIM variable to the time at the
end of the time step. Set the USESUBSTEP flag to one if it is desired to split the step
into a number of sub-steps, otherwise leave the value at zero.
DoSet
DoSet
DoSet
DoCmd
"MBAL.RL.SMBRESDATA.HANDLE", iMBIHandle
"MBAL.RL.SMBRESDATA.CUMTIM", CUMTIM
"MBAL.RL.SMBRESDATA.USESUBSTEP", 0
"MBAL.RL.DOSTEP"
There are two commands that are called just before completing the macro. The first
command saves the tank conditions in an MBR file. This file can be read by MBAL.
The second is called to delete all the data created in the macro, ready for another
prediction to be performed.
DoCmd "MBAL.RL.SAVEFILE(""" + Range("B13") + """)"
1990-2011 Petroleum Experts Limited
155
OpenServer
DoCmd "MBAL.RL.ALLRESET"
156
szTankNames(i) = DoGet("MBAL.RL.SMBDATA.STRING")
Next I
We now have to initialize the tanks to the end of the production history, however, each
tank may have production history data up to different dates. In this case we have
decided to run the simulation up to the earliest end of history data of all the tanks. So
we next query the end of the tank history and use the earliest date. As with the tank
names, load the tank index and the command ID=8. The end of the history for the tank
is returned in DOUBLEDATA.
Range("F12") = "Initialising tanks to end of history"
dEndHistory = 1E+20
For i = 0 To iNumTanks - 1
DoSet "MBAL.RL.SMBDATA.HANDLE", iMBIHandle
iCommand = 8 ' Get end of tank history command
DoSet "MBAL.RL.SMBDATA.COMMAND", iCommand
DoSet "MBAL.RL.SMBDATA.TANKNUM", i
DoCmd "MBAL.RL.GETDATA"
dTemp = DoGet("MBAL.RL.SMBDATA.DOUBLEDATA")
If dTemp < dEndHistory Then
dEndHistory = dTemp
End If
Next I
Now that we have the date to run the history to, we can initialize the tanks which is done
in two steps. The command ID=0 will initialize the model and the command ID=1 will run
the history simulation to the specified date. We load the USESUBSTEP flag to
indicate if the simulation should only calculate at the entered production history points or
if it should also use sub-steps between the entered points.
DoSet "MBAL.RL.SMBRESDATA.HANDLE", iMBIHandle
DoSet "MBAL.RL.SMBRESDATA.USESUBSTEP", 0
iCommand = 0 ' Reset prediction command
DoSet "MBAL.RL.SMBRESDATA.COMMAND", iCommand
DoCmd "MBAL.RL.RESCALC"
DoSet "MBAL.RL.SMBRESDATA.HANDLE", iMBIHandle
iCommand = 1 ' Initialise prediction to end of history
DoSet "MBAL.RL.SMBRESDATA.COMMAND", iCommand
DoSet "MBAL.RL.SMBRESDATA.CUMTIM", dEndHistory
DoCmd "MBAL.RL.RESCALC"
The next stage in the initialization is to create the well models. It is possible to create
well models from scratch, however, it is significantly easier to create the well models
from wells read in directly from the MBAL file which is the method illustrated in the
macro.
157
OpenServer
There are no commands to find the number of wells in the MBI file. Instead we use an
iteration method where we loop through the indices for the MBI file wells until we get an
error code indicating that we have read all the wells. The principal for layers within each
well is the same, after successfully reading a well or layer, we create an equivalent well
or layer model.
The first step is to set the MBI file handle and tank number.
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
iTankNo = 0
DoSet "MBAL.RL.SMBWELLDATA.TANKNUM", iTankNo
iWellNo = 0
iWellFound = 1
iNumWellModels = 0
Now start looping through the wells read in the MBI file handle. The loop will stop when
there are no more wells to read.
Set the HANDLE variable to the next well in the MBI file to read. The well index starts at
zero and is incremented by one at the end of the loop. Also, set the IPRNUM to zero to
read the first layer in the well. If the well index does not exist in the file the command will
return an error code of 214. For this case, set the flag to stop the loop, otherwise no
well and layer data is read into the SMBWELLDATA data block.
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellNo
iIPRNo = 0
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", iIPRNo
iCommand = 9 ' Get well data command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND", iCommand
DoCmd "MBAL.RL.WELLDATA"
iErrorCode = DoGet("MBAL.RL.SMBERRORDATA.CODE")
If (iErrorCode = 214) Then ' Well not found
iWellFound = 0
Else
At the top of the macro, we defined a VBA variable WellNames() in which the name of
the wells were stored which we expect to find in the MBI file.
The next fragment checks which well we have just read from MBAL by comparing with
the WELLNAME variable which has just been read.
WellName = DoGet("MBAL.RL.SMBWELLDATA.WELLNAME")
For i = 0 To iNumWells - 1
If (WellNames(i) = WellName) Then
iWellIndex = i
OpenServer User's Manual
158
End If
Next I
We now create a well model from the data read from the MBI file. Load the command
ID=1. The other data required in the SMBWELLDATA data block will have been setup
by the last call to the get well data command. After creating the well model, we read
back the handle of the well model and store it in the iWellModel() VBA variable.
iCommand = 1 ' Create a well command
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.COMMAND", iCommand
DoCmd "MBAL.RL.WELLDATA"
iWellModel(iWellIndex) = DoGet("MBAL.RL.
SMBWELLDATA.HANDLE")
iNumWellModels = iNumWellModels + 1
The next stage is to create the layers for this well. We use the same principal of reading
through the layer indices until we get an error message warning that no more layers are
left.
iIprFound = 1
iIPRNo = 0
Do
Call the command to read the well from the MBI file again. This time we are interested
in the layer data so we set the IPRNUM to read the next layer (starting at layer zero).
DoSet
"MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellNo
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", iIPRNo
iCommand = 9 ' Get well data command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND",
iCommand
DoCmd "MBAL.RL.WELLDATA"
Check if a layer was found. If we have got to the end of the layer list we get an error
code=216. Otherwise the command will have successfully loaded the next layer data
into the SMBWELLDATA data block.
iErrorCode = DoGet("MBAL.RL.SMBERRORDATA.CODE")
If (iErrorCode = 216) Then ' IPR not found
iIprFound = 0
Else
159
OpenServer
Before creating the layer model, we have to find the index of the tank to which the layer
is connected. Now the last command will return the name of the connected tank in the
TANKNAME variable. Just after reading the tanks from the MBI file we read and stored
the names of the tank in the szTankNames VBA variable for each tank index. So by
searching through the szTankNames list we can find the index of the connected tank.
szTankName
DoGet("MBAL.RL.SMBWELLDATA.
TANKNAME")
For i = 0 To iNumTanks - 1
If (szTankName = szTankNames(i)) Then
DoSet "MBAL.RL.SMBWELLDATA.TANKNUM",
i
End If
Next I
Finally we call the command to create an IPR/layer model and connect it to the well
model. The data used to initialize the IPR model is taken from the SMBWELLDATA
data block. This is the same data that was loaded with the layer data by the last
command, so we are simply transferring it from the layer in the MBI file to the layer
model just created.
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE",
iWellModel(iWellIndex)
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM",
iIPRNo
iCommand = 35 ' Add an IPR command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND",
iCommand
DoCmd "MBAL.RL.WELLDATA"
End If
iIPRNo = iIPRNo + 1
Loop While (iIprFound)
End If
iWellNo = iWellNo + 1
Loop While (iWellFound)
We have now created the tank, well and layer/IPR models that mirror the objects in the
MBI file.
By default, the well model is created assuming there is one instance of the well model.
This next fragment shows how it is possible to model more than one well being drilled
of the same type. Load the MBI handle as usual. Load 2nd well model handle in the
HANDLE variable as we wish to modify the Gas Lift well. Load the number of wells to
drill in NUMWELL. Load 1 in the variable IPRNUM, as this indicates that the
command is not specific to a particular layer.
OpenServer User's Manual
160
161
OpenServer
162
iIPRNo = 0
iIprFound = 1
Do
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE",
iWellModel(iWellNo)
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", iIPRNo
iCommand = 6 ' Calculate breakthroughs
command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND",
iCommand
DoCmd "MBAL.RL.WELLDATA"
iErrorCode = DoGet("MBAL.RL.SMBERRORDATA.
CODE")
If (iErrorCode = 216) Then ' IPR not found
iIprFound = 0
Else
As with the PVT calculations above, we could have done this in one step by using a
layer number of 1. The layer index was valid so it has calculated the breakthroughs
successfully. We next perform a layer read command which reads all the current IPR
data into the SMBWELLDATA data object. In this case, we only read back the current
connected tank pressure and display it on the sheet.
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE",
iWellModel(iWellNo)
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM",
iIPRNo
iCommand = 22 ' Read IPR data command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND",
iCommand
DoCmd "MBAL.RL.WELLDATA"
If (DoGet("MBAL.RL.SMBWELLDATA.
TANKNUM") = 0) Then
Range("G" + CStr(16 + iStep)) = DoGet("
MBAL.RL.SMBWELLDATA.RESPRESS")
Else
Range("H" + CStr(16 + iStep)) = DoGet("
MBAL.RL.SMBWELLDATA.RESPRESS")
End If
163
OpenServer
End If
iIPRNo = iIPRNo + 1
Loop While (iIprFound)
The next section is used to calculate the performance of the wells using the IPR/VLP
intersection calculation. In this macro we apply a different FWHP for each well. Much of
this part of the macro is repeated for each well so only a relevant fragment for the gas lift
well is shown.
The first step is to set the well model handle. The next variable to set (TOL) is used to
control if intersections are allowed on the negative slope section of the lift curve. The
normal situation is where they are not allowed in which case use 0.0. To allow large
negative lift curve intersections, apply a large negative value. To allow any size of
negative slope, use a value of -1e10.
The next step is setting the sensitivity variables for the lift curves and will depend on the
type of well being specified, such as:
GLRINJ
FREQ
WHP
The next step is to call the command IPRVLPCALC. No command ID is needed. The
results of the calculation are the total rate, GOR, WCT, etc., which can be retrieved from
the data block. Note that the total rate is liquid rate for oil or water wells and gas rate for
gas or condensate wells. If an error code=120 is returned then no solution was found.
DoSet
"MBAL.RL.SMBIPRVLPCALC.HANDLE",
iWellModel
(iWellNo)
DoSet "MBAL.RL.SMBIPRVLPCALC.TOL", 0#
If (iWellNo = 1) Then
GLRInj = 240#
DoSet "MBAL.RL.SMBIPRVLPCALC.GLRINJ", GLRInj
DoSet "MBAL.RL.SMBIPRVLPCALC.WHP", fWHP(iWellNo)
DoCmd "MBAL.RL.IPRVLPCALC"
iErrorCode = DoGet("MBAL.RL.SMBERRORDATA.CODE")
Range("F" + CStr(17 + iStep)) = fWHP(iWellNo)
Range("G" + CStr(17 + iStep)) = GLRInj
If (iErrorCode = 120) Then
Range("H" + CStr(17 + iStep)) = NoSolutionStr
Range("I" + CStr(17 + iStep)) = NoSolutionStr
Range("J" + CStr(17 + iStep)) = NoSolutionStr
Else
Range("H" + CStr(17 + iStep)) = DoGet("MBAL.RL.
SMBIPRVLPCALC.QTOT")
Range("I" + CStr(17 + iStep)) = DoGet("MBAL.RL.
OpenServer User's Manual
164
SMBIPRVLPCALC.GOR")
Range("J" + CStr(17 + iStep)) = DoGet("MBAL.RL.
SMBIPRVLPCALC.WC")
End If
Else
Now we transform the well rates into cumulative rates taken out of each tank. This is
done for each well in turn.
First we calculate the FBHP for the well using the following steps:
- Set the well model index and MBI file handle as usual
- Set the IPR number to 1 as the calculation is for the well rather than an
individual layer
- Set the command ID=27 to calculate the FBHP
- After the command is called, we can retrieve the calculated FBHP from the
FBHP variable in the SMBWELLDATA data block.
iIPRNo = -1
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", iIPRNo
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE", iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellModel(iWellNo)
iCommand = 27 ' Calculate FBHP command
DoSet "MBAL.RL.SMBWELLDATA.COMMAND", iCommand
DoSet "MBAL.RL.SMBWELLDATA.QTOT", Qtot
DoCmd "MBAL.RL.WELLDATA"
FBHP = DoGet("MBAL.RL.SMBWELLDATA.FBHP")
Now we have the bottom hole pressure, we can calculate the corresponding individual
layer rates. This command can be performed on individual layers if desired, however in
this macro, we calculate all the layers at once by setting the IPR number to 1.
The input FBHP is taken from the FBHP variable in the SMBWELLDATA data block.
For this macro, this variable was set up by the last command shown above so we do
not actually need to set it up again, however, it is shown again for clarity. The individual
phase rates are calculated by this command given the total rate and the GOR, WCT,
etc.
iIPRNo = -1
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", iIPRNo
DoSet "MBAL.RL.SMBWELLDATA.FBHP", FBHP
DoSet "MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellModel
(iWellNo)
iCommand = 26 ' Calculate rates from FBHP
command
1990-2011 Petroleum Experts Limited
165
OpenServer
"MBAL.RL.SMBWELLDATA.MBIHANDLE",
iMBIHandle
DoSet "MBAL.RL.SMBWELLDATA.HANDLE", iWellModel
(iWellNo)
DoSet "MBAL.RL.SMBWELLDATA.IPRNUM", -1
iCommand = 22 ' Read IPR data command
OpenServer User's Manual
166
167
OpenServer
TANKNUM")
iMBIHandleOfTank = DoGet("MBAL.RL.
SMBWELLDATA.MBIHANDLE")
We now want to update the cumulative rate in the tanks. The first step is to read the
data currently in the connected tank, then set the tank number and MBI file handle from
the last step and the command ID=8 to read the tank data. Note that we use the
SMBRESDATA data block for tank commands.
iCommand = 8 ' Get tank prediction data
command
DoSet "MBAL.RL.SMBRESDATA.COMMANDID",
iCommand
DoSet "MBAL.RL.SMBRESDATA.TANKNUM",
iTankNo
DoSet "MBAL.RL.SMBRESDATA.HANDLE",
iMBIHandleOfTank
DoCmd "MBAL.RL.RESCALC"
Now we read back the current cumulative rates for each phase (plus injected phases).
These are the cumulative rates to the beginning of the time step including any
production history. Calculate the delta cumulative rates for this time step. Note that the
cumulative rates are in units of MMSTB or MMscf, hence the division by 1.0e6 and then
add them to the current cumulative rates to give the cumulative rates to the end of the
time step.
It is important to check for injectors at this point as the well rates are passed
back as Qw regardless if it is a producer or injector.
CUMOIL = DoGet("MBAL.RL.SMBRESDATA.
CUMOIL")
CUMGAS = DoGet("MBAL.RL.SMBRESDATA.
CUMGAS")
CUMWAT = DoGet("MBAL.RL.SMBRESDATA.
CUMWAT")
CUMGASINJ = DoGet("MBAL.RL.SMBRESDATA.
CUMGIN")
CUMWATINJ = DoGet("MBAL.RL.SMBRESDATA.
CUMWIN")
If (iWellNo = 2) Then
CUMWATINJ = CUMWATINJ + DELTIM * (Qw
/ 1000000#)
Else
CUMOIL = CUMOIL + DELTIM * (Qo /
1000000#)
168
"MBAL.RL.SMBRESDATA.HANDLE",
iMBIHandleOfTank
iCommand = 9 ' Set tank prediction data
command
DoSet "MBAL.RL.SMBRESDATA.COMMANDID",
iCommand
DoSet "MBAL.RL.SMBRESDATA.TANKNUM",
iTankNo
DoSet "MBAL.RL.SMBRESDATA.CUMGIN",
CUMGASINJ
DoSet "MBAL.RL.SMBRESDATA.CUMWIN",
CUMWATINJ
DoSet "MBAL.RL.SMBRESDATA.CUMGAS",
CUMGAS
DoSet "MBAL.RL.SMBRESDATA.CUMOIL",
CUMOIL
DoSet "MBAL.RL.SMBRESDATA.CUMWAT",
CUMWAT
DoCmd "MBAL.RL.RESCALC
End If
iIPRNo = iIPRNo + 1
Loop While (iIprFound)
We have now transferred the required data from the wells to the tanks and are now
ready to perform the material balance calculations to find the pressure and saturations
at the end of the time step.
The first step is to setup the calculation control variables for each tank. We must read
the data from the tank, modify the required data in the SMBRESDATA data block and
then write it back and set the CUMTIM variable to the end of the time step. The
USESUBSTEP variable indicates if substeps should be used over the time step and
this will increase accuracy, particularly if large aquifers are used.
Set the MODE to zero which should always be used for material balance, then set the
PRESSURE variable to 1.0e38 to indicate that the pressure at the start of the step
169
OpenServer
should be taken from the end of the last step and should always be used. Finally, set the
injected gas gravity flag to 1 to indicate that the injection gas gravity should be taken
from the tank PVT model.
For i = 0 To iNumTanks - 1
' First do a read data
DoSet "MBAL.RL.SMBRESDATA.HANDLE", iMBIHandle
iCommand = 8 ' Set tank prediction data command
DoSet "MBAL.RL.SMBRESDATA.COMMAND", iCommand
DoSet "MBAL.RL.SMBRESDATA.TANKNUM", i
DoCmd "MBAL.RL.RESCALC"
DoSet "MBAL.RL.SMBRESDATA.HANDLE", iMBIHandle
iCommand = 9 ' Set tank prediction data command
DoSet "MBAL.RL.SMBRESDATA.COMMANDID", iCommand
DoSet "MBAL.RL.SMBRESDATA.TANKNUM", i
DoSet "MBAL.RL.SMBRESDATA.CUMTIM", CUMTIM
DoSet "MBAL.RL.SMBRESDATA.USESUBSTEP", 0
DoSet "MBAL.RL.SMBRESDATA.MODE", 0
DoSet "MBAL.RL.SMBRESDATA.PRESSURE", 1E+38 '
Use the value already stored
DoSet "MBAL.RL.SMBRESDATA.INJGASGRAV", -1#
'
indicates not used
DoCmd "MBAL.RL.RESCALC"
Next I
Now we can calculate the actual material balance. The commands for this works on all
the tanks in the MBI file at once as we need to solve all tanks simultaneously to
understand if there is any communication between the tanks. Load the MBI file handle
and set the command ID=2 to perform the material balance. Then call the RESCALC
command again with command ID=4 which is used to confirm that we wish to keep the
results from this step as we are not going to repeat the step.
DoSet "MBAL.RL.SMBRESDATA.HANDLE", iMBIHandle
iCommand = 2 ' Set tank compute command
DoSet "MBAL.RL.SMBRESDATA.COMMAND", iCommand
DoSet "MBAL.RL.SMBRESDATA.USESUBSTEP", 0
DoCmd "MBAL.RL.RESCALC"
iCommand = 4 ' Set keep results command
DoSet "MBAL.RL.SMBRESDATA.COMMAND", iCommand
DoCmd "MBAL.RL.RESCALC"
This completes all the code within a prediction time step. Before finishing the macro,
we save the tank results in a file and then clean up the data.
The following line saves the tank results over time in an MBR file which can be read in
OpenServer User's Manual
170
SMBWELLDATA
DOWNTIME
NUMWELL
STARTTIME
ENDTIME
STEPSTARTTIME
STEPENDTIME
QW
QO
QG
QTOT
HANDLE
COMMANDID
MBIHANDLE
IPRNUM
TANKNUM
171
OpenServer
WELLTYPE
INJECTOR
WELLNAME
TANKNAME
WATERCUT
GOR
CGR
USERELPERM
IPRTYPE
0
20
21
22
PI(0)
DARCY
NONDARCY
C
N
PERFTOP
PERFBOTTOM
IPRDPSHIFT
PERMCORR
F2
F3
EXPONENT
CROSSFLOWII
USECONING
RESTEMP
RESPRESS
FBHP
SOLGOR
RS
OILAPI
GRVGAS
WATSAL
GRVOIL
PB
FACTOZ
GASCGR
PCH2S
PCCO2
PCN2
PDEWIS
GASVIS
OILVIS
WATVIS
FVFGAS
FVFOIL
FVFWAT
GASDEN
OILDEN
WATDEN
- Well type
- Injector flag
- Well name
- Connected tank name
- Water cut
- Produced GOR
- Produced CGR
- Use relative permeability flag
- IPR type
- Straight line PI
- Forcheimer
- C&N
- Forcheimer [pseudo]
- Productivity index
-Darcy coefficient from Forcheimer
- Non-Darcy coefficient from Forcheimer
- C coeff from C&N
- n coeff from C&N
- Depth of top of perforations
- Depth of bottom of perforations
- IPR dP Shift
- Permeability correction
- F2 gas coning tuning factor
- F3 gas coning tuning factor
- Exponent gas coning tuning factor
- Cross flow injectivity index
- Use coning flag
- Reservoir temperature
- Reservoir pressure
- Flowing bottom hole pressure
- Initial Rs
- Current solution GOR
-Oil API
- Gas gravity
- Water salinity
- Oil gravity
- Bubble point
-Z Factor
- CGR from gas PVT model
- H2S impurity
- CO2 impurity
- N2 impurity
- Dew point
- Gas viscosity
- Oil viscosity
- Water viscosity
- Bg
- Bo
- Bw
- Gas density
- Oil density
- Water density
SMBRESDATA
HANDLE
COMMANDID
USESUBSTEP
CUMTIM
CUMAQU
CUMCAP
CUMGAS
CUMGIN
CUMOIL
CUMWAT
CUMWIN
CUMWIX
PERM
ANISOTROPY
PRESSURE
FLUID
SOLGOR
RS OILAPI
GRVGAS
WATSAL
GRVOIL
PB
FACTOZ
GASCGR
PCH2S
PCCO2
PCN2
PDEWIS
GASVIS
OILVIS
WATVIS
FVFGAS
FVFOIL
FVFWAT
GASDEN
OILDEN
WATDEN
SATGAS
SATOIL
SATWAT
172
SMBIPRVLPCALC
HANDLE - Well handle
TOL
- Defines how large a negative slope of the lift curve is allowed in solutions
WHP
- Well head pressure
GLRINJ
- Gas lift to liquid ratio
FREQ
- ESP frequency
QTOT
- Total rate (liquid for oil/water, gas for gas/condensate)
GOR
- Produced GOR
CGR
- Produced CGR
WC
- Produced Wc
1990-2011 Petroleum Experts Limited
173
OpenServer
WGR
5.6
- Produced WGR
5.6.1 1D Model
1D
COMPANY
FIELD
LOCATION
PLATFORM
OpenServer User's Manual
:
:
:
:
Company Name
Field Name
Location
Platform
174
ANALYST
: Analyst
INJFLUID
: Injected fluid one of {GAS,WATER}
WATINJ
: Water injection rate
GASINJ
: Gas injection rate
WATFVF
: Water FVF
GASFVF
: Gas FVF
OILFVF
: Oil FVF
WATDEN
: Water density
GASDEN
: Gas density
OILDEN
: Oil density
LENGTH
: Length
WIDTH
: Width
THICKNESS
: Thickness
STARTINJ
: Time of start of injection
CONTACT
: Oil/Gas water contact
CUTOFFWC
: Water cut cut-off
CUTOFFGOR : GOR cut-off
POR
: Porosity
CONWAT
: Connate water
CUTOFFWC
: Water cut cut-off
CUTOFFGOR : GOR cut-off
NUMCELLS
: Number of cells
RELPERM
: Relative permeability curves
See rel perm section below
RESULT[i]
: Results table
TIME
: Time
Etc.
175
OpenServer
STDDEV
: Standard deviation
90PROB
: 90% probabillity
50PROB
: 50% probabillity
10PROB
: 10% probabillity
GIP
: Summary of results for gas
MEAN
: Mean reward
STDDEV
: Standard deviation
90PROB
: 90% probabillity
50PROB
: 50% probabillity
10PROB
: 10% probabillity
RESULT[i] : Results
OIP
: Oil in place
Etc.
176
LOCATION
: Location string
PLATFORM
: Platform string
ANALYST
: Analyst string
INJFLUID
: One of { GAS, WATER } string
CALCTYPE
: One of { Buckley, Stiles, Commun, Simple } string
PRESSURE
: Pressure
TEMPERATURE
: Temperature
DIPANGLE
: Dip Angle
WIDTH
: Width
WATERRATE
: Water Rate
GASRATE
: Gas Rate
CUTOFFWC
: Cut-off Water Rate
CUTOFFGOR
: Cut-off GOR
CONWATER
: Connate Water
LAYER[I]
: Input Layers
THICK
: Thickness
POR
: Porosity
PERM
: Permeability
GASBRKSAT
: Gas breakthrough saturation
WATBRKSAT
: Water breakthrough saturation
RELPERM
: Relative permeability curves
See rel perm section below
RES[][][]
: Calculation results see end of section (*) for more information
TIME
: Time
Etc.
RES[].MATCHED : Matched layer see end of section (**) for more information
THICK
: Thickness
POR
: Porosity
PERM
: Permeability
GASBRKSAT
: Gas breakthrough saturation
WATBRKSAT
: Water breakthrough saturation
RELPERM
: Relative permeability curves
See rel perm section below
* RES is the sub-string used for the calculation results. This is the data that can be
viewed in the Calculation-Run Calculation dialog or the Production Prediction-Run
Prediction dialog.
There are three indices to be used with RES.
The first index defines the stream. There are always four streams by default which
correspond to each of the four calculation types. Index 0 is the Buckley Leveret stream,
index 1 is the Stiles stream, index 2 is the communicating stream and index 3 is the
simple stream. Other indices will refer to any saved streams. Stream names can be
used instead of the index e.g. RES[{STILES}][0][0]. and the name can be sued for any
saved streams.
The second index defines the sheet within the stream. The first stream is the
consolidated results for the whole reservoir. The next N sheets contain results for each
of the N layers. The layer description can also be used instead of the index e.g. RES
[{STILES}][{LAYER 1}][0].
1990-2011 Petroleum Experts Limited
177
OpenServer
The third index defines the row in the sheet (where each row is for a different time).
** RES[].MATCHED is the layer calculated for each folder. The RELPERM is the
relative permeability curve calculated by the Fw/Fg matching process. The index
defines the stream as for the first index of the RES[][][] sub-string above. For example
the thickness of the calculated Stiles stream is RES[{STILES}].THICK.
5.6.5 PVT
PVT
INPUT[I]
: Input PVT Definition
VARPVT
: Variable PVT one of { YES, NO }
DATUMDEPTH
: Datum depth
DATUMPRESS
: Datum pressure
DATUMTEMP
: Datum temperature
TEMPGRAD
: Temperature gradient
The following will be under INPUT for a simple PVT model or LAYER[] if a variable PVT
model. If using Generalised Material Balance then the oil, gas and water models will be
preceeded by OIL, GAS and WATER respectively.
SOLGOR
: Solution GOR
PBCORR
: Pb, Rs, Bo correlation one of { GLASO, STANDING,
LASATER, VAZBEGGS, PETROSKY }
UOCORR
: Uo correlation - one of { BEAL, BEGGS, PETROSKY }
UGCORR
: Ug correlation one of { LEE, CARR }
SEP
: Separator type one of { SINGLE, TWO }
USETABLES
: Use tables one of { YES, NO }
USEMATCH
: Use match one of { YES, NO }
SOLGOR
: Solution GOR
OILGRAV
: Oil gravity
GASGRAV
: Gas gravity
WATSAL
: Water salinity
H2S
: Mole percent H2S
CO2
: Mole percent CO2
N2
: Mole percent N2
TESTPRES
: Test separator pressure
TESTTEMP
: Test separator temperature
TESTGOR
: Test separator GOR
TESTGGRAV
: Test separator gas gravity
TANKGOR
: Tank separator GOR
TANKGGRAV
: Tank separator gas gravity
CGR
: CGR
DEWPOINT
: Dew point at reservoir temperature
RESTEMP
: Reservoir temperature
RESPRESS
: Reservoir pressure
DEPTH
: Depth
OILCOMP
: Oil composition
NUMCOMP : Number of components
USEVOLSHIFTS
: Use volume shifts - one of { YES, NO }
COMPONENT[i]
FRACTION
: Mole fraction
CRITTEMP
: Critical temperature
OpenServer User's Manual
178
CRITPRESS
: Critical pressure
CRITVOL
: Critical volume
OMEGA
: Omega
MOLEWT
: Molecular weight
SPECGRAV
: Specific gravity
VOLSHIFT
: Volume shift
NAME : Component name
BICOEFF[i][j]
: Binary coefficient
SEPARATOR[i]
PRESS : Pressure
TEMP : Temperature
TABLE[j][i]
: Table data indices are table and row note that the temp/bubble
point per table is actually stored for each row of the table but will have the same value
for all rows that can be simply accessed from row 0.
TEMP
: Temperature
Etc
MATCHTABLE[i][j]
: Same as TABLE[I][j] above
TEMP
: Temperature
Etc
MATCHON
: Whether a variable is to be matched or not
OILFVF
: Oil FVF
Etc
PARM : Match parameters
GLASOBP1
: Glaso bubble point parameter 1
GLASOBP2
: Glaso bubble point parameter 2
GLASOGOR1
: Glaso GOR parameter 1
GLASOGOR2
: Glaso GOR parameter 2
GLASOFVF1
: Glaso Oil FVF parameter 1
GLASOFVF2
: Glaso Oil FVF parameter 2
STANDBP1
: Standing bubble point parameter 1
STANDBP2
: Standing bubble point parameter 2
STANDGOR1
: Standing GOR parameter 1
STANDGOR2
: Standing GOR parameter 2
STANDFVF1
: Standing Oil FVF parameter 1
STANDFVF2
: Standing Oil FVF parameter 2
LASBP1
: Lasater bubble point parameter 1
LASBP2
: Lasater bubble point parameter 2
LASGOR1
: Lasater GOR parameter 1
LASGOR2
: Lasater GOR parameter 2
LASFVF1
: Lasater Oil FVF parameter 1
LASFVF2
: Lasater Oil FVF parameter 2
VABGBP1
: Vazquez-Beggs bubble point parameter 1
VABGBP2
: Vazquez-Beggs bubble point parameter 2
VABGGOR1
: Vazquez-Beggs GOR parameter 1
VABGGOR2
: Vazquez-Beggs GOR parameter 2
VABGFVF1
: Vazquez-Beggs Oil FVF parameter 1
VABGFVF2
: Vazquez-Beggs Oil FVF parameter 2
PETRBP1
: Petrosky bubble point parameter 1
PETRBP2
: Petrosky bubble point parameter 2
PETRGOR1
: Petrosky GOR parameter 1
PETRGOR2
: Petrosky GOR parameter 2
PETRFVF1
: Petrosky Oil FVF parameter 1
PETRFVF2
: Petrosky Oil FVF parameter 2
1990-2011 Petroleum Experts Limited
179
OpenServer
BEALOILV1
BEALOILV2
BEGGOILV1
BEGGOILV2
PETROILV1
PETROILV2
CARRGASV1
CARRGASV2
LEEGASV1
LEEGASV1
ZFACT1
ZFACT2
ZFACT3
GASFVF1
GASFVF2
DEWPOINT1
DEWPOINT2
CGR1
CGR2
CGR3
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: Company Name
: Field Name
: Location
: Platform
: Analyst
: One of {OIL,GAS,CON}
: One of {SIMPLE,MULTI,VARPVT}
: One of {TANK,WELL}
: One of {YES,NO}
: History wells
: Name
: One of { ANY, CONPROD, ESPPROD, GASCAP, GASINJ,
GASLIFT, GASPROD, OILPROD, WATINJ, WATPROD }
: 0=well enabled, 1=well disabled
: Perforation Top
: Perforation Bottom
: Production history
: Time
: Pressure
: Cumulative oil production
: Cumulative gas production
: Cumulative water production
: Cumulative gas injection
: Cumulative water injection
: Cumulative GOR
: 0 if record enabled, 1 if the record is disabled
: Tanks
: Monitor contacts - one of {YES,NO}
GASCAPPROD
TOTSAT
GASSTORAGE
NAME
TYPE
TEMP
PRESS
POROSITY
OOIP
OGIP
OWIP
INITGASCAP
GASSTOREPV
WATCOMPRESS
ROCKCOMPRESS
PRODSTART
AQUIFTYPE
SYSTEM
RESTHICK
RESRADIUS
CONWATER
RESWIDTH
ANISOTROPY
PERMEABILITY
AQUIF
RD
ANGLE
PERM
VOLUME
DIFFUSIV
TD
MODEL
ROCKFROM
COMPRESS[I]
PRESS
CF
PORVOL[I]
PV
DEP
PRODUSEGOR
PRODHIST{I]
TIME
PRESS
CUMOIL
CUMGAS
CUMWAT
CUMGASINJ
180
181
OpenServer
CUMWATINJ
CUMGOR
RECOFF
RELPERM
182
GASLIFT
: With gas lift injection - one of {YES,NO}
GASREC
: With gas recycling - one of {YES,NO}
WATREC
: With water recycling - one of {YES,NO}
AQUPROD
: With aquifer production - one of {YES,NO}
GASCAP
: With gas cap production - one of {YES,NO}
WATVOID
: With voidage replacement with water - one of {YES,NO}
GASVOID
: With voidage replacement with gas - one of {YES,NO}
RELPERM
: Use relative permeabilities - one of {YES,NO}
CALCPOT
: Calculate field potential - one of {YES,NO}
USEDCQ
: Use DCQ and swing factor - one of {YES,NO}
The next set correspond to the reporting schedule dialog
REPSTEPTYPE
: Reporting frequency type - One of {AUTO, USER, LIST}
REPSTEPVALUE
: Reporting user step size
REPSTEPSTYLE
: unit for user step - one of {DAY, WEEK, MONTH, YEAR}
KEEPHIST
: Keep history - one of {YES,NO}
USERREPSTEP[I]
: User date list
TIME
: Time
The next set correspond to the DCQ swing factor dialog
SWINGS[I]
TIME
SWINGFACT
: Swing factors
: Time
: Swing factor
: Time
: Swing factor
183
OpenServer
WATSALIN
WATRECY
WATRECYCUTOFF
AQUWATMANPRESS
MINAQUWATRATE
MAXAQUWATRATE
MINOILRATE
MAXOILRATE
GASVOIDREPL
WATVOIDREPL
WATINJMANPRESS
MININJWATRATE
MAXINJWATRATE
MAX_GASLIFT
GASRECYL
GASRECCUTOFF
PREDWELL[I]
NAME
TYPE
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Water salinity
Water recycling
Water recycling cutoff
Aquifer production manifold pressure
Minimum aquifer water rate
Maximum aquifer water rate
Minimum oil rate
Maximum oil rate
Gas voidage replacement
Water voidage replacement
Water injection manifold pressure
Minimum injection water rate
Maximum injection water rate
Maximum gas lift rate
Gas recycling
Gas recycling cutoff
: Prediction wells
: Name
: One of { ANY, CONPROD, ESPPROD, GASCAP, GASINJ,
GASLIFT, GASPROD, OILPROD, WATINJ, WATPROD }
DISABLED
: 0=well enabled, 1=well disabled
MINFBHP
: Minimum flowing bottom hole pressure
MAXFBHP
: Maximum flowing bottom hole pressure
MINFWHP
: Minimum flowing well head pressure
MAXFWHP
: Maximum flowing well head pressure
GASLIFTGLR
: Gas lift optimum GLR
OPTFREQ
: Operating frequency
CONSTFBHP
: Constant flowing bottom hole pressure for constant FBHP outflow
performance type.
PERFORMTYPE
: Well performance type : one of { CFBHP, LIFTCURV, SMITH,
WITLEY }
TPC
EXTRAPOLATE : Extrapolation flag : one of { YES, NO }
CONSTRAINTS : abandonments
WATDEPABAN
: Water depth abandonment
WORABAN
: WOR water abandonment
GASDEPABAN
: Gas depth abandonment
GORABAN
: GOR Abandonment
MINRATE
: Minimum rate
MAXRATE
: Maximum rate
WATABANTYPE
: Water abandonment type - one of {WOR, WGR,
WATCUT, DEPTH}
GASABANTYPE
: Gas abandonment type one of {GOR,CGR,DEPTH}
ABANRECOV
: Allow recovery after abandonment one of {YES,NO}
IPR[I]
TYPE
: Inflow performance type one of {CN, FORCH,
PSEUDOFORCH, STRLINE_VOGEL}
PI
: Productivity index
CROSSPI
: Crossflow Injectivity index
DARCY
: Darcy
CROSSDARCY
: Crossflow Injectivity Darcy
NONDARCY
: Non-Darcy
184
PERMCORR
: Permeability correction
CVALUE
:C
CROSSCVALUE
: Crossflow Injectivity C
NVALUE
:n
PERF_TOP
: Top of perforations
PERF_BOTTOM
: Bottom of perforations
IPR_SHIFT
: IPR dP Shift
USE_RELPERMS : Use relative permeability flag
TESTRESPRESS : Test reservoir pressure
TESTWATCUT
: Test water cut
USEOWN_RELPERMS : Use own rel perms flag one of {YES,NO}
RELPERM Relative permeability curves
See rel perm section below
USEGASCONING : Gas coning flag one of (YES,NO}
GASCONEMATCH : Gas coning match data
F2
: F2 tuning parameter
F3
: F3 tuning parameter
EXPONENT
: Exponent tuning parameter
GOC
: Gas-oil contact
TESTDATA
: Test points
PROD_GOR
: Producing GOR
LIQRATE
: Liquid rate
CONSTRAINTS : abandonments and breakthroughs
SWBREAK
: Sw breakthru
SGBREAK
: Sg breakthru
SOBREAK
: So breakthru
WATDEPABAN
: Water depth abandonment
WORABAN
: WOR water abandonment
GASDEPABAN
: Gas depth abandonment
GORABAN
: GOR Abandonment
DPMAXDD
: Maximum draw-down in dP
PERCMAXDD
: Maximum draw-down in percent
UNITMAXDD
: Maximum drawdown unit
WDEPBREAK
: Water depth breakthru
GDEPBREAK
: Gas depth breakthru
WATBREAKTYPE : Water breakthru type - one of {SAT,DEPTH}
WATABANTYPE
: Water abandonment type - one of {WOR,WGR,WATCUT,
DEPTH}
GASBREAKTYPE : Gas breakthru type one of {SAT,DEPTH}
GASABANTYPE
: Gas abandonment type one of {GOR,CGR,DEPTH}
RELPERMCORR
: Rel perm correction one of {YES,NO}
ABANRECOV
: Allow recovery after abandonment one of {YES,NO}
TRES[][][]
: Tank results see end of section (*) for more information
TIME
: Time
Etc.
WRES[][][]
: Well results see end of section (**) for more information
TIME
: Time
Etc.
* TRES is the sub-string used for the tank (and leak) results. This is the data that can
be viewed in the History Matching-Run Simulation dialog or the Production Prediction-
185
OpenServer
186
: Time
: Flowing bottom hole pressure
: Cumulative gas produced
Run Prediction
ENDHIST
STARTPROD
USER
Prediction End
AUTO
ENDHIST
USER
187
OpenServer
KRW
: Water rel perm
OIL[i]
: Oil rel perm table
SO
: Oil saturation
KRO
: Oil rel perm
KROG
: Oil to gas rel perm
KROW
: Oil to water rel perm
GAS[i]
: Gas rel perm table
SG
: Gas saturation
KRG
: Gas rel perm
The next section is used for corey functions
RESSAT
: Residual saturation
KRW
: water
KRO
: oil
KROW
: oil to water
KROG
: oil to gas
KRG
: gas
ENDPOINT
: End point
KRW
: water
KRO
: oil
KROW
: oil to water
KROG
: oil to gas
KRG
: gas
EXPON
: Exponent
KRW
: water
KRO
: oil
KROW
: oil to water
KROG
: oil to gas
KRG
: gas
Chapter
189
OpenServer
PVT data
SIN
INPUT data
ANL
OUT
Calculation RESULTS
6.1
General Comments
In PROSPER there are some commands (like extracting units or counting rows of data)
which are general, irrespective of the section they are used in. The following sections
are describing how these can be used.
190
For example, by placing the mouse cursor on top of the Solution GOR box in the PVT
screen and selecting Ctrl + Right Click, the screen with the Access String for this
variable will appear. The String can then be copied on the clipboard for use in the
macro.
191
OpenServer
In this screen, a particular wizard macro can be selected or a new one created:
192
In the screen where the Wizard Macro can be written, the user has access to a menu
with all the commands available in the file as shown below:
The Variables button gives access to all the variables available in this particular file:
193
OpenServer
Also, the on-line help system that can be accessed directly from the main PROSPER
screen contains a majority of the currently available OpenServer commands, variables
and functions. The utility also includes a search feature, providing quick access to the
desired OpenServer string.
194
195
OpenServer
196
A particular string can be entered by hand or copied from the clipboard. Then, the
Evaluate button will do the requested operation of:
- DoGet (i.e. obtain the current value of the variable considered)
- DoSet (i.e. set the value of the variable considered)
- DoCommand (i.e. execute a GAP calculation for instance).
The Commands, Variables and Functions buttons enable to access the list of the
commands, variables and functions accessible through PROSPER OpenServer.
197
OpenServer
For example the following command will set the Unit System to Norwegian SI:
DoCmd "PROSPER.SETUNITSYS(""Norwegian S.I."")"
On the other hand, if the intent is to extract the unit name of a particular variable in the
program, then the UNITNAME extension can be used at the end of the root defining the
variable. For example, if one would like to extract the unit in the program associated
with the Solution GOR entry box in the PVT section, then the following command will
return the unit name:
AA = DoGet("PROSPER.PVT.Input.Solgor.Unitname")
The same goes for all variables. As another example, the top node pressure entry in the
system calculation will return its unit name with the following line:
AA = DoGet (PROSPER.ANL.SYS.Pres.Unitname)
Notes:
1. The Unitname commands will return strings, so please make sure the variables (like
AA above) are defined correctly.
2. The units of single variables can only be extracted, not set (DoGet will work on the
OpenServer User's Manual
198
199
OpenServer
There are several commands that allow the user to extract the number of results and
many are listed in the description of roots available for every section. However the .
Count or .Num commands can generally be used at the end of a string to extract number
of rows.
For example, the number of rows in a gradient calculation can be extracted by counting
the number of pressures (or any other variable) calculated (since there is one number
for every row):
NumCalcs = DoGet("PROSPER.Out.Tcc.Results[10].Pres.Count")
In the PVT Calculator screen, the number of rows can be extracted using:
NumCalcs = DoGet("PROSPER.PVT.Calc.Results.Count")
Note: The .Count is not designed to work for every screen in the program, and
alternative commands are given in the relevant sections, such as the .NUM-1 for
example.
6.2
200
PROSPER.SIN.SUM.FLUID
PROSPER.SIN.SUM.
PVTMODEL
PROSPER.SIN.SUM.
EOSMODEL
PROSPER.SIN.SUM.
SEPARATOR
Separator option
PROSPER.SIN.SUM.EMULSION
PROSPER.SIN.SUM.HYDRATE
PROSPER.SIN.SUM.
FLOWTYPE
PROSPER.SIN.SUM.WELLTYPE
PROSPER.SIN.SUM.
LIFTMETHOD
PROSPER.SIN.SUM.LIFTTYPE[i]
201
OpenServer
Prediction Flag
Setting this to 0, 1 and 2 will enable the Pressure Only,
Pressure and Temperature(Offshore) and Pressure
and Temperature(On Land) modes respectively.
PROSPER.SIN.SUM.
TEMPMODEL
Temperature Model
Setting this to 0, 1 and 2 will enable the Rough
Approximation, Enthaply Balance and Improved
Approximation methods respectively.
PROSPER.SIN.SUM.RANGE
PROSPER.SIN.SUM.OUTPUT
PROSPER.SIN.SUM.
COMPLETION
PROSPER.SIN.SUM.
GRAVELPACK
PROSPER.SIN.SUM.
INFLOWTYPE
PROSPER.SIN.SUM.
GASCONING
PROSPER.SIN.SUM.COMPANY
PROSPER.SIN.SUM.FIELD
PROSPER.SIN.SUM.LOCATION
PROSPER.SIN.SUM.WELL
PROSPER.SIN.SUM.PLATFORM
PROSPER.SIN.SUM.ANALYST
PROSPER.SIN.SUM.DATE
202
string. i.e.
CDate(DoGet("PROSPER.SIN.SUM.DATE"))
PROSPER.SIN.SUM.
COMMENTS
6.3
CORREL
MATCH
Match Data
TABLE
CALC
Calculation Results
EOS
DLL
EMULS
Emulsion data
VISC
Viscosity data
HYD
203
OpenServer
PROSPER.PVT.INPUT.PBCORR
PROSPER.PVT.INPUT.UOCORR
PROSPER.PVT.INPUT.UGCORR
PROSPER.PVT.INPUT.SOLGOR
Solution GOR
PROSPER.PVT.INPUT.API
Oil Gravity
PROSPER.PVT.INPUT.GRVGAS
Gas Gravity
204
PROSPER.PVT.INPUT.WATSAL
Water Salinity
PROSPER.PVT.INPUT.PSEP
Separator Pressure
PROSPER.PVT.INPUT.TSEP
Serarator Temperature
PROSPER.PVT.INPUT.GORSEP
Separator GOR
PROSPER.PVT.INPUT.GRVSEP
Separator Gravity
PROSPER.PVT.INPUT.GORTNK
Tank GOR
PROSPER.PVT.INPUT.GRVTNK
Tank Gravity
PROSPER.PVT.INPUT.CGR
PROSPER.PVT.INPUT.WGR
PROSPER.PVT.INPUT.H2S
PROSPER.PVT.INPUT.CO2
PROSPER.PVT.INPUT.N2
Mole Percent N2
PROSPER.PVT.INPUT.DEWPNT
PROSPER.PVT.INPUT.TRES
Reservoir Temperature
PROSPER.PVT.INPUT.PRES
Reservoir Pressure
PROSPER.PVT.MATCH.DATA.
COUNT
PROSPER.PVT.MATCH.DATA[i].
COUNT
PROSPER.PVT.MATCH.OK[0:3]
205
OpenServer
3 = Condensate.
if there exists any data in the PVT match data
section, then the command will return a 1 or else
0.
PROSPER.PVT.MATCH.TEMP
PROSPER.PVT.MATCH.PRES
PROSPER.PVT.MATCH.VARS
i = 0 : temp
j = 0 : pres
k = 0 : vars
k= 0
k= 1
k= 2
k= 3
k= 4
k= 5
k= 6
k= 7
k= 8
k= 9
k = 10
k = 11
k = 12
k = 13
Temperature
Pressure
Bubble Point
Dew Point
Oil FVF
Oil Viscosity
Oil Density
Gas FVF
Gas Viscosity
Gas Density
Z Factor
Gas Oil Ratio
Produced CGR
Liquid Dropout
PROSPER.PVT.MATCH.DATA[i][j]
[k]
Match Data
PROSPER.PVT.TABLE.TABLE
PROSPER.PVT.TABLE.TEMP
Number of Temperatures
PROSPER.PVT.TABLE.PRES
Number of Pressures
PROSPER.PVT.TABLE.VARS
Number of Variables
PROSPER.PVT.TABLE.MAXTEMP
PROSPER.PVT.TABLE.MAXPRES
PROSPER.PVT.TABLE.MAXVARS
i = 0 to temp
OpenServer User's Manual
206
j = 0 to pres
k = 0 to vars
k= 0
k= 1
k= 2
k= 3
k= 4
k= 5
k= 6
k= 7
k= 8
k= 9
k=10
k=11
k=12
k=13
k=14
k=15
k=16
Temperature
Pressure
Bubble Point
Dew Point
Oil FVF
Oil Viscosity
Oil Density
Gas FVF
Gas Viscosity
Gas Density
Z Factor
Gas Oil Ratio
Produced CGR
Liquid Dropout
Water Fvf
Water Viscosity
Water Compressibility
PROSPER.PVT.TABLE.DATA[i][j][k]
Entering data into these tables follows the same logic as entering the PVT Match Data.
This was described in the previous section. The variable i refers to the table that is
defined by a unique temperature, the value j refers to the row, defined by a pressure,
and the value of k refers to the entry column, defined by the variable it corresponds to.
207
OpenServer
j=0:NUM-1
PROSPER.PVT.CORREL.OILBUBPNT[i].F[j]
j=0:NUM-1
PROSPER.PVT.CORREL.OILSOLGOR[i].F[j]
PROSPER.PVT.CORREL.OILSOLGOR[i].
STD
PROSPER.PVT.CORREL.OILOILFVF[i].STD
i = 0:2
0 = Beggs et al
1 = Beal et al
2 = Petrosky
PROSPER.PVT.CORREL.OILOILVIS[i].NUM- Uo Number of match data entries. Just
like the command relating to the bubble
1
point , this will return the number 10.
j=0:NUM-1
PROSPER.PVT.CORREL.OILOILVIS[i].F[j]
PROSPER.PVT.CORREL.OILOILVIS[i].STD
208
j=0:NUM-1
PROSPER.PVT.CORREL.GASGASVIS[i].F[j]
Z Factor
parameters
Number
of
match
j=0:NUM-1
PROSPER.PVT.CORREL.GASZFACT[I].F[j]
PROSPER.PVT.CORREL.GASZFACT[I].STD
Z Factor
deviation
Correlation
standard
i = 0 and 1 where :
0 refers to the Lee et al correlation, and
1 refers to the Carr et al correlation
PROSPER.PVT.CORREL.CONGASVIS[i].
NUM-1
j=0:NUM-1
PROSPER.PVT.CORREL.CONGASVIS[i].F[j]
209
OpenServer
PROSPER.PVT.CORREL.CONGASVIS[i].
STD
PROSPER.PVT.CORREL.CONZFACT.STD
Z
Factor
deviation
PROSPER.PVT.CORREL.CONGASFVF.
NUM-1
Correlation
standard
j=0:NUM-1
PROSPER.PVT.CORREL.CONGASFVF.F[j]
Dew Point
parameters
Number
of
match
j=0:NUM-1
PROSPER.PVT.CORREL.CONDEWPNT.F[j]
PROSPER.PVT.CORREL.CONDEWPNT.
STD
Dew Point
deviation
PROSPER.PVT.CORREL.CONCGR.NUM-1
Correlation
standard
j=0:NUM-1
PROSPER.PVT.CORREL.CONCGR.F[j]
PROSPER.PVT.CORREL.CONCGR.STD
PROSPER.PVT.CALC.TEMPSTEP
Number of
(RANGE)
Temperature
Steps
210
PROSPER.PVT.CALC.PRESSTEP
PROSPER.PVT.CALC.TEMPMIN
PROSPER.PVT.CALC.TEMPMAX
PROSPER.PVT.CALC.PRESMIN
PROSPER.PVT.CALC.PRESMAX
i = 0:10
PROSPER..PVT.CALC.PRESUSER[i]
PROSPER..PVT.CALC.TEMPUSER[i]
Temperature
ENTERED)
PROSPER.PVT.CALC.NUMPRES
PROSPER.PVT.CALC.NUMTEMP
PROSPER.PVT.CALC.RESULTS.COUNT
Number of Results
PROSPER.PVT.CALC.XVAR
PROSPER.PVT.CALC.YVAR
Values
(USER
I = 0 : PROSPER.PVT.CALC.RESULTS.
COUNT-1
PROSPER.PVT.CALC.RESULTS[I].
TEMPINDEX
Temperature Index
PROSPER.PVT.CALC.RESULTS[I].
PRESINDEX
Pressure Index
PROSPER.PVT.CALC.RESULTS[I].TEMP
Temperature
PROSPER.PVT.CALC.RESULTS[I].PRES
Pressure
PROSPER.PVT.CALC.RESULTS[I].BUBPNT
Bubble Point
Oil FVF
PROSPER.PVT.CALC.RESULTS[I].OILVIS
Oil Viscosity
PROSPER.PVT.CALC.RESULTS[I].OILDEN
Oil Density
PROSPER.PVT.CALC.RESULTS[I].GASFVF
Gas FVF
211
OpenServer
PROSPER.PVT.CALC.RESULTS[I].GASVIS
Gas Viscosity
Gas Z Factor
PROSPER.PVT.CALC.RESULTS[I].GOR
PROSPER.PVT.CALC.RESULTS[I].
PRODCGR
Produced CGR
PROSPER.PVT.CALC.RESULTS[I].LIQDRP
Liquid Dropout
Water Viscosity
PROSPER.PVT.CALC.RESULTS[I].OILCMP
Oil Compressibility
Number of Components
PROSPER.PVT.EOS.EOS.VSFLAG
i = 0 : PROSPER.PVT.EOS.EOS.NUMCOMP-1
PROSPER.PVT.EOS.EOS.COMP[i]
Mole Percent
PROSPER.PVT.EOS.EOS.TCRIT[i]
Critical Temperature
PROSPER.PVT.EOS.EOS.PCRIT[i]
Critical Pressure
PROSPER.PVT.EOS.EOS.VCRIT[i]
Critical Volume
PROSPER.PVT.EOS.EOS.OMEGA[i]
Acentric Factor
PROSPER.PVT.EOS.EOS.MOLEWT[i]
Molecular Weight
PROSPER.PVT.EOS.EOS.SPGRAV[i]
Specific Gravity
PROSPER.PVT.EOS.EOS.VOLSHIFT
Volume Shift
i = 0 : PROSPER.PVT.EOS.EOS.NUMCOMP-1
j = 0 : PROSPER.PVT.EOS.EOS.NUMCOMP-1
PROSPER.PVT.EOS.EOS.BICOEFFS[i][j]
i=0:4
212
PROSPER.PVT.EOS.EOS.PSEP[i]
Separator Pressure
PROSPER.PVT.EOS.EOS.TSEP[i]
Separator Temperature
PROSPER.PVT.EOS.PHASE
Phase Indicator
PROSPER.PVT.EOS.CALCNUM
PROSPER.PVT.EOS.CALPRES
PROSPER.PVT.EOS.CALTEMP
PROSPER.PVT.EOS.PEPHASE
PROSPER.PVT.EOS.PECALC
PROSPER.PVT.EOS.PERESULT
PROSPER.PVT.EOS.PRESSTEP[I]
PROSPER.PVT.EOS.TEMPMIN[I]
Minimum Temperature
PROSPER.PVT.EOS.TEMPMAX[I]
Maximum Temperature
PROSPER.PVT.EOS.PRESMIN[I]
Minimum Pressure
PROSPER.PVT.EOS.PRESMAX[I]
Maximum Pressure
PROSPER.PVT.EOS.TCRIT
Phase
Envelope
Temperature
PROSPER.PVT.EOS.PCRIT
PROSPER.PVT.EOS.TTMAX
Phase
Temp
Envelope
Cricondentherm
PROSPER.PVT.EOS.PTMAX
Phase Envelope
Pressure
Cricondentherm
PROSPER.PVT.EOS.TPMAX
PROSPER.PVT.EOS.PPMAX
Phase
Envelope
Pressure
PROSPER.PVT.EOS.XVAR
Plot X axis
PROSPER.PVT.EOS.YVAR
Plot Y axis
PROSPER.PVT.EOS.CALCTYPE
PROSPER.PVT.EOS.GENPRES
PROSPER.PVT.EOS.GENTEMP
Critical
Cricondenbar
213
OpenServer
PROSPER.PVT.EOS.GENNUM
PROSPER.PVT.EOS.PERESULT
i = 0 : PROSPER.PVT.EOS.PERESULT-1
PROSPER.PVT.EOS.PETEMP[i]
PROSPER.PVT.EOS.PEPRES[i]
PROSPER.PVT.EOS.SOLGOR
Solution GOR
PROSPER.PVT.EOS.GRVGAS
Gas Gravity
PROSPER.PVT.EOS.API
Oil Gravity
PROSPER.PVT.EOS.USETABLE
i=0 : PROSPER.PVT.EOS.CALCNUM-1
j=0 Liquid. j=1 Vapour
Calculated/Interpolated Results
PROSPER.PVT.EOS.CALCDATA[i].TEMP
Temperature
PROSPER.PVT.EOS.CALCDATA[i].PRES
Pressure
Z Factor
PROSPER.PVT.EOS.CALCDATA[i].DENSITY[j] Density
PROSPER.PVT.EOS.CALCDATA[i].
VISCOSITY[j]
Viscosity
PROSPER.PVT.EOS.CALCDATA[i].FVF[j]
PROSPER.PVT.EOS.CALCDATA[i].
ENTHALPY[j]
Enthalpy
PROSPER.PVT.EOS.CALCDATA[i].ENTROPY Entropy
[j]
PROSPER.PVT.EOS.CALCDATA[i].CP[j]
PROSPER.PVT.EOS.CALCDATA[i].CV[j]
PROSPER.PVT.EOS.CALCDATA[i].JT[j]
PROSPER.PVT.EOS.CALCDATA[i].IFT
Interfacial Tension
PROSPER.PVT.EOS.CALCDATA[i].SOLGOR
GOR
i=0 : PROSPER.PVT.EOS.GENNUM-1
j=0 Liquid. j=1 Vapour
Generated Results
PROSPER.PVT.EOS.GENDATA[i].TEMP
Temperature
PROSPER.PVT.EOS.GENDATA[i].PRES
Pressure
PROSPER.PVT.EOS.GENDATA[i].SATPRES
Saturation Pressure
PROSPER.PVT.EOS.GENDATA[i].VAPFRAC
Vapour Fraction
PROSPER.PVT.EOS.GENDATA[i].COMPR[j]
Z Factor
PROSPER.PVT.EOS.GENDATA[i].DENSITY[j]
Density
214
PROSPER.PVT.EOS.GENDATA[i].VISCOSITY Viscosity
[j]
Formation Volume Factor
PROSPER.PVT.EOS.GENDATA[i].FVF[j]
PROSPER.PVT.EOS.GENDATA[i].ENTHALPY Enthalpy
[j]
PROSPER.PVT.EOS.GENDATA[i].ENTROPY[j] Entropy
PROSPER.PVT.EOS.GENDATA[i].CP[j]
PROSPER.PVT.EOS.GENDATA[i].CV[j]
PROSPER.PVT.EOS.GENDATA[i].JT[j]
PROSPER.PVT.EOS.GENDATA[i].IFT
Interfacial Tension
PROSPER.PVT.EOS.GENDATA[i].SOLGOR
GOR
PROSPER.PVT.DLL.NUMF
PROSPER.PVT.DLL.NUMI
i = 0 : PROSPER.PVT.DLL.NUMDLL-1
PROSPER.PVT.DLL.DLL[i].NAME
DLL Name
i = 0 : PROSPER.PVT.DLL.NUMF-1
PROSPER.PVT.DLL.DLL[i].f[j]
Real Data
i = 0 : PROSPER.PVT.DLL.NUMI-1
PROSPER.PVT.DLL.DLL[i].I[j]
Integer Data
PROSPER.PVT.DLL.NUMEOS
i = 0 : PROSPER.PVT.DLL.NUMEOS-1
1990-2011 Petroleum Experts Limited
215
OpenServer
PROSPER.PVT.DLL.EOS[i].DLL
Associated DLL
PROSPER.PVT.DLL.EOS[i].NAME
PROSPER.PVT.DLL.EOS[i].INDEX
PROSPER.PVT.EMULS.OCCUR
Experimental Pressure
PROSPER.PVT.EMULS.DATA[i].PRES
Experimental Temperature
PROSPER.PVT.EMULS.DATA[i].WCL
PROSPER.PVT.EMULS.DATA[i].WCR
PROSPER.PVT.EMULS.DATA[i].NUM
j = 0 : PROSPER.PVT.EMULS.DATA[i].NUM-1
PROSPER.PVT.EMULS.DATA[i].WATC[j]
PROSPER.PVT.EMULS.DATA[i].VISC[j]
Emulsion Viscosity
PROSPER.PVT.EMULS.DATA[i].SD
j=0:4
Match Parameters
PROSPER.PVT.EMULS.DATA[i].PARM[j]
j = 0 : 100
Number of points
216
i = 2 Capacity
i = 3 Power
i = 4 Efficiency
j = 0 : PROSPER.PVT.VISC.NUM-1
PROSPER.PVT.VISC.DATA[i][j]
i= 0 : PROSPER.PVT.HYD.PRES.COUNT
6.4
PROSPER.PVT.HYD.PRES[i]
Pressure
PROSPER.PVT.HYD.TEMP[i]
Temperature
Options data
IPR
EQP
GLF
GLI
ESP
HSP
UNT
217
OpenServer
PROSPER.SIN.HSP
PROSPER.SIN.UNT
6.4.1.1 Overview
The Equipment data is accessed using the root name PROSPER.SIN>EQP and is split
up into several sections as listed below.
DEVN
Deviation Survey
TEMP
GEO
Geothermal Gradient
SURF
Surface Equipment
TURF
DOWN
Downhole Equipment
TOWN
SHC
ENV
DRILL
Drilling Data
LITHO
Lithology
DB
218
common to more than one group of models, as well-bore radius is used in reservoir and
mechanical skin models. A list of these parameters is shown below:
PROSPER.SIN.IPR.SINGLE.PERFDIA
Perforation diameter
PROSPER.SIN.IPR.SINGLE.SPF
Shot density
PROSPER.SIN.IPR.SINGLE.PERFEFF
Perforation efficiency
PROSPER.SIN.IPR.SINGLE.PERFINT
PROSPER.SIN.IPR.SINGLE.WBR
Well-bore radius
PROSPER.SIN.IPR.SINGLE.SWC
PROSPER.SIN.IPR.SINGLE.GRAVEL
PROSPER.SIN.IPR.SINGLE.COMPLETION
PROSPER.SIN.IPR.SINGLE.FLUID
PROSPER.SIN.IPR.SINGLE.GAPFLAG
PROSPER.SIN.IPR.SINGLE.WELLTYPE
0 = producer, 1 = injector, 2 =
water injector
PROSPER.SIN.IPR.SINGLE.IGCONE
PROSPER.SIN.IPR.SINGLE.IPRMETHOD
219
OpenServer
PROSPER.SIN.IPR.SINGLE.MGSKINMETHOD
PROSPER.SIN.IPR.SINGLE.DPSKINMETHOD
PROSPER.SIN.IPR.SINGLE.IRELK
PROSPER.SIN.IPR.SINGLE.IPRMODEL
PROSPER.SIN.IPR.SINGLE.MGSKINMODEL
PROSPER.SIN.IPR.SINGLE.DPSKINMODEL
PROSPER.SIN.IPR.SINGLE.PRES
Reservoir pressure
PROSPER.SIN.IPR.SINGLE.TRES
Reservoir temperature
PROSPER.SIN.IPR.SINGLE.WC
Water cut
PROSPER.SIN.IPR.SINGLE.WGR
WGR
PROSPER.SIN.IPR.SINGLE.TOTGOR
PROSPER.SIN.IPR.SINGLE.CGR
PROSPER.SIN.IPR.SINGLE.GORSEP
PROSPER.SIN.IPR.SINGLE.PINDEX
PROSPER.SIN.IPR.SINGLE.PINSAV
Returns
equivalent
(undamaged) PI value from
IPR plot for Vogel, Darcy,
etc., type IPR's using DoGet
function
PROSPER.SIN.IPR.Single.TestData.count
i = 0 TO 99
PROSPER.SIN.IPR.SINGLE.TESTDATA[i].P
PROSPER.SIN.IPR.SINGLE.TESTDATA[i].Q
220
i varies from 0 to 99
PROSPER.SIN.IPR.SINGLE.TestData[0].Q
PROSPER.SIN.IPR.SINGLE.TestData[0].P
Test pressure
221
OpenServer
PROSPER.SIN.IPR.SINGLE.MRBCOEF
PROSPER.SIN.IPR.SINGLE.MRCVAL
PROSPER.SIN.IPR.SINGLE.MREXPON
222
PROSPER.SIN.IPR.SINGLE.PERMMETHOD, i
Permeability entered:
i = 0 to 1
0 - total permeability
entered
1 - gas
permeability
PROSPER.SIN.IPR.SINGLE.DFACTMETHOD, i
PROSPER.SIN.IPR.SINGLE.RESPERM
Reservoir
permeability
PROSPER.SIN.IPR.SINGLE.THICKNESS
Reservoir height
PROSPER.SIN.IPR.SINGLE.DRAINAGE
PROSPER.SIN.IPR.SINGLE.DIETZ
PROSPER.SIN.IPR.SINGLE.RELPERM
Relative
coefficient
PROSPER.SIN.IPR.SINGLE.TIME
Time
PROSPER.SIN.IPR.SINGLE.POROSITY
Reservoir porosity
PROSPER.SIN.IPR.SINGLE.FRACHEIGHT
Fracture height
PROSPER.SIN.IPR.SINGLE.FRACLENGTH
Fracture half-length/radius
PROSPER.SIN.IPR.SINGLE.FRACFCD
Fracture dimensionless
conductivity
PROSPER.SIN.IPR.SINGLE.HANS
Horizontal anisotropy
PROSPER.SIN.IPR.SINGLE.VANS
Vertical anisotropy
PROSPER.SIN.IPR.SINGLE.WELLLEN
Well length
PROSPER.SIN.IPR.SINGLE.WELLDIST
PROSPER.SIN.IPR.SINGLE.RESLEN
Reservoir length
PROSPER.SIN.IPR.SINGLE.RESWID
Reservoir width
PROSPER.SIN.IPR.SINGLE.WELLLDST
PROSPER.SIN.IPR.SINGLE.WELLWDST
horizontal
permeability
223
OpenServer
PROSPER.SIN.IPR.SINGLE.EXPON
PROSPER.SIN.IPR.SINGLE.DFACT
PROSPER.SIN.IPR.SINGLE.STORATIVITY
PROSPER.SIN.IPR.SINGLE.INTERPOROSITY
PROSPER.SIN.IPR.SINGLE.NFRACS
Number of horizontal
fractures
PROSPER.SIN.IPR.SINGLE.PINSAV
Formation PI
i = 0:19
PROSPER.SIN.IPR.SINGLE.EXTENTRY[i].RATE
j = 0:4
PROSPER.SIN.IPR.SINGLE.EXTENTRY[i].PRESSURE[j]
Pressure responses
i = 0:4
PROSPER.SIN.IPR.SINGLE.SENVAR[i]
Curve IDs
PROSPER.SIN.IPR.SINGLE.SENVAL
Selected curve
PROSPER.SIN.IPR.SINGLE.IESKIN
PROSPER.SIN.IPR.SINGLE.EXTLABEL
Curve label
PROSPER.SIN.IPR.SINGLE.EXTUNITS
Curve units
PROSPER.SIN.IPR.SINGLE.NCURV
PROSPER.SIN.IPR.SINGLE.NSENSP
i = 0:4
224
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
TYPE
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
IGRAV
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
PRESSURE
Layer pressure
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
HEIGHT
Layer height
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
SKIN
Layer skin
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
PERM
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
DAREA
Layer area
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
DIETZ
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
WBR
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
PILAY
Productivity index
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
GOR
PROSPER.SIN.IPR.SINGLE.MLAYER[i].API
Oil gravity
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
GASGRAV
Gas gravity
PROSPER.SIN.IPR.SINGLE.MLAYER[i].WC
Water cut/WGR
j = 0:9
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
MRATE[j].PRESSURE
PROSPER.SIN.IPR.SINGLE.MLAYER[i].
MRATE[j].RATE
Test pressure
Test rate
6.4.1.2.8 Horizontal Well with dP Friction Loss Table, Including Coning Screen
225
OpenServer
PROSPER.SIN.IPR.SINGLE.IHZMDL
i = 0:19
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].IZONTP
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].IZONSK
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].IZONGP
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].ZONLEN
Zone length
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].ZONPRM
Zone permeability
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].ZONRAD
Zone radius
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].ZONRGH
Zone roughness
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].SKIN
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].PERFDIA
Perforation diameter
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].SPF
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].PERFLEN
Perforation length
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].DZTHICK
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].DZPERM
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].CZTHICK
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].DZPERM
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].PHASE
Shot phasing
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].GPPERM
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].GPLEN
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].
NDMETHOD
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].PERFEFF
Perforation efficiency
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].
NONDARCY
PROSPER.SIN.IPR.SINGLE.HORIZDP[i].WBR
Well-bore radius
PROSPER.SIN.IPR.SINGLE.ICONE
PROSPER.SIN.IPR.SINGLE.CONERATE
0 =
226
PROSPER.SIN.IPR.SINGLE.CONECHAPERON
PROSPER.SIN.IPR.SINGLE.CONEDICKEN
PROSPER.SIN.IPR.SINGLE.CONEDISTANCE
PROSPER.SIN.IPR.SINGLE.CONETIME
Time to breakthrough
PROSPER.SIN.IPR.SINGLE.CONEBREAK
i = 0:19
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].TYPE
Type of layer: 0 =
disabled, 1 = blank, 2 =
perforated, 3 = open
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].MODEL
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].ISKIN
Skin model: 0 = by
hand, 1 = Karakas &
Tariq
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].IGPACK
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].MD
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].TVD
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PRESSURE
Layer pressure
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].FLOWRAD
Flowing radius
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].ROUGH
Tubing roughness
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].GOR
Total GOR
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].API
Oil gravity
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].GASG
Gas gravity
227
OpenServer
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].WC
Water cut
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PIENTRY
Productivity index
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PERM
Reservoir permeability
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].DAREA
Drainage area
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].DIETZ
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].WBR
Well-bore radius
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].SKIN
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PERFDIA
Perforation diameter
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].SPF
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PERFLEN
Perforation length
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].DZTHICK
Damaged
thickness
zone
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].DZPERM
Damaged
permeability
zone
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].CZTHICK
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].DZPERM
Damaged
permeability
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PHASE
Shot phasing
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].DEV
Deviation
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PEN
Penetration
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].VERTPERM
Vertical permeability
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].GPPERM
Gravel
permeability
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].GPLEN
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PERFINT
Perforation interval
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].PERFEFF
Perforation efficiency
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].WATSAT
Residual
saturation
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].OILSAT
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].WATRLK
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].OILRLK
Oil end-point
permeability
zone
pack
water
relative
228
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].WATEXP
Corey
water
exponent
for
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].OILEXP
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].TSTWC
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].ESTSW
Estimated
saturation
water
j = 0:9
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].MRATE[j].
PRESSURE
Test pressure
PROSPER.SIN.IPR.SINGLE.MLAYDP[i].MRATE[j].RATE
Test rate
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
FLOWMOD
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
SKINMOD
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFMOD
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GEOMETRY1
Reservoir Thickness
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GEOMETRY2
Completed Interval
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GEOMETRY3
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GEOMETRY4
Drainage Area
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GEOMETRY5
229
OpenServer
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GEOMETRY6
Well-bore Diameter
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GEOMETRY7
Deviation
PROSPER.SIN.IPR.SINGLE.SKINAIDE.PETRO1
Horizontal Permeability
PROSPER.SIN.IPR.SINGLE.SKINAIDE.PETRO2
Vertical Permeability
PROSPER.SIN.IPR.SINGLE.SKINAIDE.PETRO3 Horizontal
Permeability
Geometrical Skin
for
PROSPER.SIN.IPR.SINGLE.SKINAIDE.PETRO4
Porosity
PROSPER.SIN.IPR.SINGLE.SKINAIDE.PETRO5
Turbulence Coefficient
PROSPER.SIN.IPR.SINGLE.SKINAIDE.PETRO6
Permeability Exponent
PROSPER.SIN.IPR.SINGLE.SKINAIDE.PETRO7
Porosity Exponent
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
DAMAGE1
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
DAMAGE2
Permeability
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
DAMAGE3
Porosity
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
CASING1
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
CASING2
Casing Weight
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
CRUSHED1
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
CRUSHED2
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
CRUSHED3
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
CRUSHED4
Crushed
&
Permeability
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
Damaged
Zone
230
CRUSHED5
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU1
Perforation Efficiency
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU2
Shot Density
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU3
Gun Phasing
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU4
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU5
Tunnel Length
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU6
Tunnel Diameter
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU7
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFINSITU8
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI1
Perforation Efficiency
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI2
Shot Density
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI3
Gun Phasing
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI4
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI5
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI6
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI7
Gun Diameter
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI8
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI9
Rock Density
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI10
231
OpenServer
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
PERFAPI11
Reservoir Stress
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GPACK1
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GPACK2
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GPACK3
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GPACK4
PROSPER.SIN.IPR.SINGLE.SKINAIDE.
GPACK5
Non-Darcy coefficient
PROSPER.SIN.IPR.SINGLE.DARCY
Darcy coefficient
PROSPER.SIN.IPR.SINGLE.CVAL
PROSPER.SIN.IPR.SINGLE.NVAL
PROSPER.SIN.IPR.SINGLE.THETAWF
PROSPER.SIN.IPR.SINGLE.QINJMEAN
PROSPER.SIN.IPR.SINGLE.SIGMARES
PROSPER.SIN.IPR.SINGLE.SWEEP
Sweep Efficiency
PROSPER.SIN.IPR.SINGLE.CF
PROSPER.SIN.IPR.SINGLE.
XLAMDARES
PROSPER.SIN.IPR.SINGLE.CRES
PROSPER.SIN.IPR.SINGLE.RHORES
232
PROSPER.SIN.IPR.SINGLE.CSR
PROSPER.SIN.IPR.SINGLE.RHOSR
PROSPER.SIN.IPR.SINGLE.ALPHATIF
PROSPER.SIN.IPR.SINGLE.BETATIF
Biot's Constant
PROSPER.SIN.IPR.SINGLE.POISSON
Poisson's Ratio
233
OpenServer
234
TYPE
PROSPER.SIN. User downhole stand-off:
0 - No
IPR.Single.
1 - Yes
SPOTMain.
USESTANDO
FF
PROSPER.SIN. Enter gun per layer:
0 - No
IPR.Single.
1- Yes
SPOTMain.
GUNPERLAY
ER
PROSPER.SIN. Use SPOT IPR extensions:
0 - No
IPR.Single.
1 - Yes
SPOTMain.
USESPOTIPR
EXTENSIONS
Layers
PROSPER.SIN. Well radius
IPR.Single.
WBR
PROSPER.SIN. Drainage radius
IPR.Single.
SPOTMain.
DRAINRADIU
S
PROSPER.SIN. Mean sea-level wrt to origin
EQP.Env.Msl
PROSPER.SIN. Seabed depth wrt to origin
EQP.Env.
Seabed
PROSPER.SIN. Top MD
IPR.Single.
SPOTMain.
LAYERS[0].
TOP
PROSPER.SIN. Bottom MD
IPR.Single.
SPOTMain.
LAYERS[0].
BOTTOM
PROSPER.SIN. Layer pressure
IPR.Single.
SPOTMain.
1990-2011 Petroleum Experts Limited
235
OpenServer
LAYERS[0].
LAYERPRES
S
PROSPER.SIN. Under balance pressure
IPR.Single.
SPOTMain.
LAYERS[0].
UNDERBALA
NCE
PROSPER.SIN. Overburden pressure gradient
IPR.Single.
SPOTMain.
LAYERS[0].
OVERBURDE
N
Gun Details
PROSPER.SIN. Shot density
IPR.Single.
SPOTMain.
LAYERS[0].
GUN.
SHOTDENSIT
YACTUAL
PROSPER.SIN. Gun phasing
IPR.Single.
SPOTMain.
LAYERS[0].
GUN.
GUNPHASIN
GACTUAL
To be added Perforating efficiency
PROSPER.
Water saturation
SIN.IPR.
Single.
SPOTMain.
LAYERS[0].
WATERSATU
RATION
Relative
Permeability
PROSPER.SIN. Oil residual saturation
IPR.Single.
OpenServer User's Manual
236
SPOTMain.
LAYERS[0].
SRO
PROSPER.SIN. Oil end-point relative permeability
IPR.Single.
SPOTMain.
LAYERS[0].
OILENDPOIN
T
PROSPER.SIN. Oil Corey exponent
IPR.Single.
SPOTMain.
LAYERS[0].
OILEXP
PROSPER.SIN. Gas residual saturation
IPR.Single.
SPOTMain.
LAYERS[0].
SRG
PROSPER.SIN. Gas end-point relative permeability
IPR.Single.
SPOTMain.
LAYERS[0].
GASENDPOIN
T
PROSPER.SIN. Gas Corey exponent
IPR.Single.
SPOTMain.
LAYERS[0].
GASEXP
PROSPER.SIN. Water residual saturation
IPR.Single.
SPOTMain.
LAYERS[0].
SWC
PROSPER.SIN. Water end-point relative permeability
IPR.Single.
SPOTMain.
LAYERS[0].
WATENDPOI
NT
PROSPER.SIN. Water Corey exponent
IPR.Single.
SPOTMain.
1990-2011 Petroleum Experts Limited
237
OpenServer
LAYERS[0].
WATEXP
Log Data
PROSPER.SIN. i = 0 to 49
Measured depth
IPR.Single.
SPOTMain.
LOGDATA[0].
AHD
PROSPER.SIN. i = 0 to 49
Porosity
IPR.Single.
SPOTMain.
LOGDATA[0].
POROSITY
PROSPER.SIN. i = 0 to 49
Permeability
IPR.Single.
SPOTMain.
LOGDATA[0].
PERMEABILIT
Y
PROSPER.SIN. i = 0 to 49
UCS
IPR.Single.
SPOTMain.
LOGDATA[0].
UCS
PROSPER.SIN. i = 0 to 49
TWC
IPR.Single.
SPOTMain.
LOGDATA[0].
TWC
Completion
PROSPER.SIN. Type:
0 - Casing
IPR.Single.
1 - Tubing
SPOTMain.
COMPLETION
[0].TYPE
PROSPER.SIN. i = 0 to 49
Outer diameter
IPR.Single.
SPOTMain.
COMPLETION
[0].OD
PROSPER.SIN. i = 0 to 49
Weight
IPR.Single.
238
SPOTMain.
COMPLETION
[0].WEIGHT
PROSPER.SIN. i = 0 to 49
Top MD
IPR.Single.
SPOTMain.
COMPLETION
[0].TOP
PROSPER.SIN. i = 0 to 49
Bottom MD
IPR.Single.
SPOTMain.
COMPLETION
[0].BOTTOM
6.4.1.2.14 Mechanical Skin Parameters
Mechanical / Geometric Skin
PROSPER.SIN.IPR.Single.MGSkinMethod
MacLeod
PROSPER.SIN.IPR.Single.CompMethod
0 - Conventional
1 - Synthetic
Casing O.D.
Casing weight
Casing grade:
239
OpenServer
CASINGGRADE
0 - J55
1 - L80
2 - P105
3 - P110
PROSPER.SIN.IPR.Single.SKinAide.PERFAPI8 Reservoir uniaxial compressive
strength
PROSPER.SIN.EQP.Env.Msl
Mean sea level wrt to origin
PROSPER.SIN.EQP.Env.Seabed
Seabed depth wrt to origin
PROSPER.SIN.IPR.Single.SPOTMain.
Depth
PERFDEPTH
PROSPER.SIN.IPR.Single.SPOTMain.
Overburden pressure gradient
OVERBURDENPRESS
PROSPER.SIN.IPR.Single.SPOTMain.
Rock type:
0 - Sandstone
ROCKTYPE
1 - Carbonate
PROSPER.SIN.IPR.Single.SPOTMain.
User downhole standoff:
0 - No
USESTANDOFF
1 - Yes
Deviation
Penetration
Vertical permeability
Cinco(2) / Martin-Bronz
As above
Wong-Clifford
PROSPER.SIN.IPR.Single.WONGTP
PROSPER.SIN.IPR.Single.WONGLP
PROSPER.SIN.IPR.Single.WONGXW
PROSPER.SIN.IPR.Single.PerfInts[0].TVDEND
240
PROSPER.SIN.IPR.SINGLE.GPLEN
Pre-Packed Screen
PROSPER.SIN.IPR.Single.SCIRAD
PROSPER.SIN.IPR.Single.SCORAD
PROSPER.SIN.IPR.Single.SCPERM
Screen permeability
PROSPER.SIN.IPR.Single.SCBETA
PROSPER.SIN.IPR.Single.OTPERM
Outside permeability
PROSPER.SIN.IPR.Single.OTBETA
Outside (turbulence)
PROSPER.SIN.IPR.Single.SCPERM
Screen permeability
PROSPER.SIN.IPR.Single.OTBETA
Outside (turbulence)
Slotted Liner
PROSPER.SIN.IPR.Single.SLOTIR
PROSPER.SIN.IPR.Single.SLOTOR
PROSPER.SIN.IPR.Single.SLOTHT
Slot height
PROSPER.SIN.IPR.Single.SLOTDN
Slot density
PROSPER.SIN.IPR.Single.SCORAD
PROSPER.SIN.IPR.Single.OTPERM
PROSPER.SIN.IPR.Single.OTBETA
Outside (turbulence)
241
OpenServer
PROSPER.SIN.IPR.SINGLE.WATRLK
Water
end-point
permeability
PROSPER.SIN.IPR.SINGLE.OILRLK
PROSPER.SIN.IPR.SINGLE.WATEXP
PROSPER.SIN.IPR.SINGLE.OILEXP
PROSPER.SIN.IPR.SINGLE.TSTWC
PROSPER.SIN.IPR.SINGLE.ESTSW
relative
i = 0:9
PROSPER.SIN.IPR.SINGLE.RELPTEST[i].
TESTSW
PROSPER.SIN.IPR.SINGLE.RELPTEST[i].
TESTKO
PROSPER.SIN.IPR.SINGLE.RELPTEST[i].
TESTKW
PROSPER.SIN.IPR.SINGLE.CONEF2
PROSPER.SIN.IPR.SINGLE.CONEF3
PROSPER.SIN.IPR.SINGLE.CONEXP
Gas
Coning
parameter)
PROSPER.SIN.IPR.SINGLE.CONEHT
PROSPER.SIN.IPR.SINGLE.CONEGOC
i = 0:9
PROSPER.SIN.IPR.SINGLE.CONEMATCH
OpenServer User's Manual
Exponent
(match
242
[i].RATE
PROSPER.SIN.IPR.SINGLE.CONEMATCH
[i].GOR
243
OpenServer
NETCOUNT = PROSPER.SIN.IPR.MULTILAT.
NETWORK.COUNT
i = 0:NETCOUNT-1
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
LABEL
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
TYPE
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
NODE
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
MASK
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
SELECTED
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
HASDATA
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].ID
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
VALID
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
POSX
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
POSY
If (TYPE = 0) or (TYPE = 1) then the item is a tie-point or junction. The following physical
data items can be extracted.
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].MD
Measured depth
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].TVD
Vertical depth
If (TYPE = 2) or (TYPE = 4 and HASDATA = 1) then the item has tubing physical data i.
e. model selection, deviation survey and equipment information. The following physical
data items can be extracted.
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].HFLOW
244
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].VFLOW
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].CHOKE
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
THRESHOLD
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].WBR
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].DIETZ
DEVCOUNT = PROSPER.SIN.IPR.MULTILAT.
NETWORK[i]. DEV.COUNT
j = 0:DEVCOUNT-1
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].DEV[j].MD
Measured depth
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].DEV[j].TVD
Vertical depth
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].DEV[j].
AZIMUTH
Azimuth
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].DEV[j].DISP
Cumulative displacement
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].DEV[j].
ANGLE
Deviation angle
EQCOUNT = PROSPER.SIN.IPR.MULTILAT.NETWORK
[i].EQUIP.COUNT
j = 0:EQCOUNT-1
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBTYPE
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBDEPTH
Measured depth
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBID
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
245
OpenServer
TUBROUGH
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBTOD
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBTOR
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBCID
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBCIR
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].EQUIP[j].
TUBMULT
Flow multiplier
If (TYPE = 2) then the item is a completion node and has perforation physical data. The
following physical data items can be extracted.
PERFCOUNT = PROSPER.SIN.IPR.MULTILAT.NETWORK
[i].PERFS.COUNT
No.
of
intervals
perforation
j = 0 : PERFCOUNT - 1
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
MDSTART
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
MDEND
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
TVDSTART
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
TVDEND
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].SKIN
Skin
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
NDARCY
Non-Darcy factor
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
GPSKIN
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
GPNDARCY
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
SKINFLAG
Skin entered
calculated (1)
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
NDARCYFLAG
Non-Darcy
entered
(0)
(0)
or
factor
or
246
calculated (0)
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
GPACKFLAG
Gravel
pack
skin
disabled (0), entered
(1), cased (2) or open
hole (3)
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
ENABLE
Record enabled
disabled (0)
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
RESPERM
Reservoir permeability
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
PERFDIA
Perforation diameter
(1)/
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].SPF
Shot density
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
PERFLEN
Perforation length
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
PHASING
Shot phasing
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
DZTHICKNESS
Damaged
thickness
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
CZTHICKNESS
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
DZPERM
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
CZPERM
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
VERTPERM
Vertical permeability
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
GPPERM
Gravel
permeability
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
GPLEN
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PERFS[j].
PERFEFF
Perforation efficiency
zone
pack
If (TYPE = 3) then the item is a reservoir node and the following physical data can be
extracted.
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].FLUID
247
OpenServer
condensate
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].METHOD IPR model, 0 = Darcy/Petex, 1
= Hydraulic fracture
PROSPER.SIN.IPR.MULTILAT.NETWORK[i]..MODEL
Method name
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].PRES
Pressure
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].TRES
Temperature
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].API
Oil gravity
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].GRVGAS
Gas gravity
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
WATERSAL
Water salinity
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].WC
Water cut
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].GOR
Total GOR
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].WGR
WGR
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].CGR
CGR
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].GORSEP
Separator GOR
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
RESTOPDEPTH
Top depth
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
RESVERTPERM
Vertical permeability
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
RESPERM
Horizontal permeability
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
THICKNESS
Formation height
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
DRAINAGE
Drainage area
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].TIME
Time elapsed
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
POROSITY
Total porosity
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
FRACHEIGHT
Fracture height
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
FRACLENGTH
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].
FRACFCD
Fracture
conductivity
PROSPER.SIN.IPR.MULTILAT.NETWORK[i].SWC
248
dimensionless
i = 0:NBRANCHES-1
PROSPER.SIN.IPR.MULTILAT.BRANCH[i].RATE
Rate in branch
PROSPER.SIN.IPR.MULTILAT.BRANCH[i].
PRESSURE
NLAYERS
COUNT
PROSPER.SIN.IPR.MULTILAT.LAYER.
No. of layers
i = 0:NLAYERS-1
PROSPER.SIN.IPR.MULTILAT.LAYER[i].PI
PROSPER.SIN.IPR.MULTILAT.LAYER[i].SKIN
Layer i top
PROSPER.SIN.IPR.MULTILAT.LAYER[i].TOP
Layer i bottom
PROSPER.SIN.IPR.MULTILAT.LAYER[i].BOTTOM
No. of layers
NBRANCHES = PROSPER.SIN.IPR.MULTILAT.
SEGMENT.COUNT
No. of branches
i = 0:NBRANCHES-1
NSEGMENTS = PROSPER.SIN.IPR.MULTILAT.
SEGMENT[i].COUNT
j = 0:NSEGMENTS-1
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].MDT
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].MDB
249
OpenServer
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].TVD
Segment vertical depth
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].
RATEPERSEG
Segment rate
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].
RATEPERLENGTH
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].
PRESSURE
Segment pwf
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].
CUMRATE
PROSPER.SIN.IPR.MULTILAT.SEGMENT[i][j].PRES
PROSPER.SIN.IPR.MULTILAT.
PRESSURECALC
PROSPER.SIN.IPR.MULTILAT.COND
PROSPER.SIN.IPR.MULTILAT.RATE
PROSPER.SIN.IPR.MULTILAT.PRESSURE
PROSPER.SIN.IPR.MULTILAT.MINPRESSURE
Minimum pressure for curve calculation
PROSPER.SIN.IPR.MULTILAT.CALCPTS
NTYPES
COUNT
i = 0:NTYPES-1
250
= tubing, 2 = completion, 3 =
junction, 4 = tie-point
NOBJECTS = PROSPER.SIN.IPR.MULTILAT.VIEW[i].
No. of objects of given type
COUNT
j = 0:NOBJECTS-1
PROSPER.SIN.IPR.MULTILAT.VIEW[i][j].FIRST
PROSPER.SIN.IPR.MULTILAT.VIEW[i][j].LAST
PROSPER.SIN.IPR.MULTILAT.VIEW[i][j].ID
End y point
PROSPER.SIN.IPR.MULTILAT.VIEW[i][j].ENDPT.Z
End z point
PROSPER.SIN.IPR.Single.MRPRES[i]
Pressure
PROSPER.SIN.IPR.Single.MRPIND[i]
Total PI
PROSPER.SIN.IPR.Single.MRROIL[i]
PROSPER.SIN.IPR.Single.MRRWAT[i]
PROSPER.SIN.IPR.Single.MRRGAS[i]
PROSPER.SIN.IPR.SINGLE.MRQLAY[i][j]
251
OpenServer
PROSPER.SIN.IPR.Single.MRTIME[i]
Time
PROSPER.SIN.IPR.Single.MRITER[i]
Number of Iterations
for e.g. if there are 20 points for which the IPR is calculated and there are 3 layers in the
model then the following code can be set up to extract the results for the production of
each layer.
For i = 0 To 19
For j = 0 To 2
Cells(2 + i, 4 + j) = DoGet ("PROSPER.SIN.IPR.SINGLE.MRQLAY[" + CStr(i) +
"][" + CStr(j) + "]")
Next j
Next i
6.4.2.1 Overview
The Equipment data is accessed using the root name PROSPER.SIN>EQP and is split
up into several sections as listed below.
DEVN
Deviation Survey
TEMP
GEO
Geothermal Gradient
SURF
Surface Equipment
TURF
DOWN
Downhole Equipment
TOWN
SHC
ENV
DRILL
Drilling Data
LITHO
Lithology
DB
252
PROSPER.SIN.EQP.Devn.Data[0].Tvd
PROSPER.SIN.EQP.Devn.RawTVD[0]
PROSPER.EQP.DEV.FIL.FILTER
PROSPER.EQP.DEV.FIL.TRANS
PROSPER.SIN.EQP.DEVN.MAX
PROSPER.SIN.EQP.DEVN.DATA.COUNT
PROSPER.SIN.EQP.Devn.FilterAngle
Filter angle
PROSPER.SIN.EQP.Devn.FilterActual
Angle step
PROSPER.SIN.EQP.Devn.FilterMax
Maximum number
maximum)
of
points
(20-
PROSPER.SIN.EQP.TEMP.DATA.COUNT
i = 0 : PROSPER.SIN.EQP.TEMP.DATA.COUNT-1
253
OpenServer
PROSPER.SIN.EQP.TEMP.DATA[i].MD
Measured Depth
PROSPER.SIN.EQP.TEMP.DATA[i].TMP
Temperature
PROSPER.SIN.EQP.GEO.DATA.COUNT
PROSPER.SIN.EQP.GEO.HTC
PROSPER.SIN.EQP.GEO.INJ
I = 0 : PROSPER.SIN.EQP.GEO.DATA.
COUNT-1
PROSPER.SIN.EQP.GEO.DATA[I].MD
Measured Depth
PROSPER.SIN.EQP.GEO.DATA[I].TMP
Temperature
PROSPER.SIN.EQP.GEO.DATA[I].HTC
PROSPER.SIN.EQP.SURF.TMP
Temperature of Surrounds
PROSPER.SIN.EQP.SURF.DATA.COUNT
Number of items
i = 0 : PROSPER.SIN.EQP.SURF.DATA.
COUNT-1
PROSPER.SIN.EQP.SURF.DATA[i].LABEL
Label
PROSPER.SIN.EQP.SURF.DATA[i].TYPE
Type (i = 0 to 3)
0 - None
1 - Pipe
2 - Choke
3 - Fittings
PROSPER.SIN.EQP.SURF.DATA[i].LENGTH
Pipe Length
PROSPER.SIN.EQP.SURF.DATA[i].TVD
PROSPER.SIN.EQP.SURF.DATA[i].TEMP
Fluid Temperature
PROSPER.SIN.EQP.SURF.DATA[i].ID
PROSPER.SIN.EQP.SURF.DATA[i].ROUGH
PROSPER.SIN.EQP.SURF.DATA[i].MULT
PROSPER.SIN.EQP.SURF.DATA[i].HTC
254
Number of Items
i = 0 : PROSPER.SIN.EQP.TURF.DATA.COUNT-1
PROSPER.SIN.EQP.TURF.DATA[i].LABEL
Label
PROSPER.SIN.EQP.TURF.DATA[i].TYPE
Type
PROSPER.SIN.EQP.TURF.DATA[i].LENGTH
Pipe Length
PROSPER.SIN.EQP.TURF.DATA[i].TVD
PROSPER.SIN.EQP.TURF.DATA[i].OD
PROSPER.SIN.EQP.TURF.DATA[i].ID
PROSPER.SIN.EQP.TURF.DATA[i].MULT
PROSPER.SIN.EQP.TURF.DATA[i].DEPTH
PROSPER.SIN.EQP.TURF.DATA[i].ROUGH
PROSPER.SIN.EQP.TURF.DATA[i].INSTHICK
PROSPER.SIN.EQP.TURF.DATA[i].INSCOND
PROSPER.SIN.EQP.TURF.DATA[i].INSEMM
PROSPER.SIN.EQP.TURF.DATA[i].PIPECON
Pipe Conductivity
PROSPER.SIN.EQP.TURF.DATA[i].PIPEEMM
Pipe
PROSPER.SIN.EQP.TURF.DATA[i].INSUL.COUNT
j = 0 PROSPER.SIN.EQP.TURF.DATA[I].INSUL.
COUNT-1
255
OpenServer
PROSPER.SIN.EQP.TURF.DATA[i].INSUL[j].TYPE
Insulation Type
PROSPER.SIN.EQP.TURF.DATA[i].INSUL[j].THICK
Insulation Thickness
Number of Items
i = 0 : PROSPER.SIN.EQP.DOWN.DATA.COUNT-1
PROSPER.SIN.EQP.DOWN.DATA.LABEL
Label
PROSPER.SIN.EQP.DOWN.DATA.TYPE
Type
PROSPER.SIN.EQP.DOWN.DATA.DEPTH
Measured Depth
PROSPER.SIN.EQP.DOWN.DATA.TID
PROSPER.SIN.EQP.DOWN.DATA.TIR
PROSPER.SIN.EQP.DOWN.DATA.TOD
PROSPER.SIN.EQP.DOWN.DATA.TOR
PROSPER.SIN.EQP.DOWN.DATA.CID
PROSPER.SIN.EQP.DOWN.DATA.CIR
PROSPER.SIN.EQP.DOWN.DATA.COD
PROSPER.SIN.EQP.DOWN.DATA.COR
PROSPER.SIN.EQP.DOWN.DATA.CID2
PROSPER.SIN.EQP.DOWN.DATA.CIR2
PROSPER.SIN.EQP.DOWN.DATA.MULT
Rate Multiplier
256
PROSPER.SIN.EQP.TOWN.DATA.COUNT
i = 0 : PROSPER.SIN.EQP.TURF.DATA.COUNT-1
PROSPER.SIN.EQP.TOWN.DATA[i].LABEL
Label
PROSPER.SIN.EQP.TOWN.DATA[i].TYPE
Type
PROSPER.SIN.EQP.TOWN.DATA[i].DEPTH
Measured Depth
PROSPER.SIN.EQP.TOWN.DATA[i].TID
PROSPER.SIN.EQP.TOWN.DATA[i].TOD
PROSPER.SIN.EQP.TOWN.DATA[i].TIR
PROSPER.SIN.EQP.TOWN.DATA[i].MULT
PROSPER.SIN.EQP.TOWN.DATA[i].INSTHICK
PROSPER.SIN.EQP.TOWN.DATA[i].INSCOND
PROSPER.SIN.EQP.TOWN.DATA[i].INSEMM
PROSPER.SIN.EQP.TOWN.DATA[i].PIPECON
Tubing Conductivity
PROSPER.SIN.EQP.TOWN.DATA[i].PIPEEMM
Tubing Emmissivity
PROSPER.SIN.EQP.TOWN.DATA[i].INSUL.COUNT
j = 0 PROSPER.SIN.EQP.TOWN.DATA[I].INSUL.
COUNT-1
PROSPER.SIN.EQP.TOWN.DATA[i].INSUL[j].TYPE
Insulation Type
PROSPER.SIN.EQP.TOWN.DATA[i].INSUL[j].THICK
Insulation Thickness
PROSPER.SIN.EQP.SHC.CPG
PROSPER.SIN.EQP.SHC.CPW
257
OpenServer
Air Temperature
PROSPER.SIN.EQP.ENV.HUMID
Humidity
PROSPER.SIN.EQP.ENV.MSL
PROSPER.SIN.EQP.ENV.GROUND
PROSPER.SIN.EQP.ENV.SEABED
PROSPER.SIN.EQP.ENV.AIRVEL
Velocity of Air
PROSPER.SIN.EQP.ENV.SEAVEL
Velocity of Sea
PROSPER.SIN.EQP.ENV.SGNUM
i = 0 : PROSPER.SIN.EQP.ENV.SGNUM1
PROSPER.SIN.EQP.ENV.SGTMP[i]
Temperature
PROSPER.SIN.EQP.ENV.SGDEP[i]
Depth
Number of items
i = 0 : PROSPER.SIN.DRILL.DATA.COUNT-1
PROSPER.SIN.EQP.DRILL.DATA[i].LABEL
Label
PROSPER.SIN.EQP.DRILL.DATA[i].
DRILLDEPTH
Drilling Depth
PROSPER.SIN.EQP.DRILL.DATA[i].
DIAMETER
Hole Diameter
PROSPER.SIN.EQP.DRILL.DATA[i].
SHOEDEPTH
PROSPER.SIN.EQP.DRILL.DATA[i].
258
CASINGOD
PROSPER.SIN.EQP.DRILL.DATA[i].
CASINGWT
Casing Weight
PROSPER.SIN.EQP.DRILL.DATA[i].
CEMENTTOP
PROSPER.SIN.EQP.DRILL.DATA[i].
CASINGTOP
PROSPER.SIN.EQP.DRILL.DATA[i].
MUDDENSITY
PROSPER.SIN.EQP.DRILL.CFLIQ
PROSPER.SIN.EQP.DRILL.CFLIQDEN
PROSPER.SIN.EQP.DRILL.CFLTEMP
i = 0 : PROSPER.SIN.EQP.DRILL.CFLTEMP-1
PROSPER.SIN.EQP.DRILL.CFLPRES[i]
j = 0 : PROSPER.SIN.EQP.DRILL.CFLPRES
[i]-1
PROSPER.SIN.EQP.DRILL.CFLTAB[i][j][0]
Temperature
PROSPER.SIN.EQP.DRILL.CFLTAB[i][j][1]
Pressure
PROSPER.SIN.EQP.DRILL.CFLTAB[i][j][2]
Density
PROSPER.SIN.EQP.DRILL.CFLTAB[i][j][3]
Viscosity
PROSPER.SIN.EQP.DRILL.CFLTAB[i][j][4]
PROSPER.SIN.EQP.DRILL.CFLTAB[i][j][5]
Conductivity
PROSPER.SIN.EQP.DRILL.CFGAS
PROSPER.SIN.EQP.DRILL.CFGTEMP
i = 0 : PROSPER.SIN.EQP.DRILL.CFGTEMP1
PROSPER.SIN.EQP.DRILL.CFGPRES[i]
j = 0 : PROSPER.SIN.EQP.DRILL.CFGPRES
[i]-1
PROSPER.SIN.EQP.DRILL.CFGTAB[i][j][0]
Temperature
PROSPER.SIN.EQP.DRILL.CFGTAB[i][j][1]
Pressure
PROSPER.SIN.EQP.DRILL.CFGTAB[i][j][2]
Density
1990-2011 Petroleum Experts Limited
259
OpenServer
PROSPER.SIN.EQP.DRILL.CFGTAB[i][j][3]
Viscosity
PROSPER.SIN.EQP.DRILL.CFGTAB[i][j][4]
PROSPER.SIN.EQP.DRILL.CFGTAB[i][j][5]
Conductivity
PROSPER.SIN.EQP.DRILL.PACKER
Packer Depth
PROSPER.SIN.EQP.DRILL.MIDPROD
PROSPER.SIN.EQP.DRILL.LIQLEV
PROSPER.SIN.EQP.LITHO.DATA.COUNT
i = 0 : PROSPER.SIN.EQP.LITHO.DATA.COUNT-1
PROSPER.SIN.EQP.LITHO.DATA[i].FORM
Formation Type
PROSPER.SIN.EQP.LITHO.DATA[i].BOTTOM
Bottom Depth
PROSPER.SIN.EQP.LITHO.DATA[i].SHALE
Shaliness
PROSPER.SIN.EQP.LITHO.DATA[i].POROSITY
Porosity
PROSPER.SIN.EQP.LITHO.DATA[i].PERM
Permeability
PROSPER.SIN.EQP.LITHO.DATA[i].ROCK
Rock Consistency
PROSPER.SIN.EQP.LITHO.DATA[i].FLUID
PROSPER.SIN.EQP.LITHO.DATA[i].SALINITY
Salinity
Cement Conductivity
PROSPER.SIN.EQP.DB.CASCON
Casing Conductivity
PROSPER.SIN.EQP.DB.PIPE.COUNT
i = 0 : PROSPER.SIN.EQP.DB.PIPE.COUNT-1
PROSPER.SIN.EQP.DB.PIPE[i].LABEL
OpenServer User's Manual
Label
PROSPER.SIN.EQP.DB.PIPE[i].CON
Conductivity
PROSPER.SIN.EQP.DB.PIPE[i].EMM
Emmissivity
PROSPER.SIN.EQP.DB.INSUL.COUNT
260
i = 0 : PROSPER.SIN.EQP.DB.INSUL.COUNT-1
PROSPER.SIN.EQP.DB.INSUL[i].LABEL
Label
PROSPER.SIN.EQP.DB.INSUL[i].CON
Conductivity
PROSPER.SIN.EQP.DB.INSUL[i].EMM
Emmisssivity
PROSPER.SIN.EQP.DB.FLUID.COUNT
i = 0 : PROSPER.SIN.EQP.DB.FLUID.COUNT-1
PROSPER.SIN.EQP.DB.FLUID[i].LABEL
Label
PROSPER.SIN.EQP.DB.FLUID[i].DEN
PROSPER.SIN.EQP.DB.FLUID[i].CON
Fluid Conductivity
PROSPER.SIN.EQP.DB.FLUID[i].CP
PROSPER.SIN.EQP.DB.ROCK.COUNT
i = 0 : PROSPER.SIN.EQP.DB.ROCK.COUNT-1
PROSPER.SIN.EQP.DB.ROCK[i].LABEL
Name
PROSPER.SIN.EQP.DB.ROCK[i].DEN
Rock Density
PROSPER.SIN.EQP.DB.ROCK[i].CON
Rock Conductivity
PROSPER.SIN.EQP.DB.ROCK[i].CP
261
OpenServer
PROSPER.SIN.GLF.H2S
PROSPER.SIN.GLF.CO2
PROSPER.SIN.GLF.N2
PROSPER.SIN.GLF.GLRINJ
GLR Injected
PROSPER.SIN.GLF.CHECKVALVE
PROSPER.SIN.GLF.GLRate
PROSPER.SIN.GLF.Entry
GLR / Rate?
0 - Use GLR injected
1 - Use injected gas rate
PROSPER.SIN.GLF.Method
PROSPER.SIN.GLF.ValveDepth
262
PROSPER.SIN.GLF.Casing
Casing pressure
PROSPER.SIN.GLF.dP
dP across valve
Casing pressure
PROSPER.SIN.GLF.dP
dP across valve
PROSPER.SIN.GLF.Depth[0]
i = 0 to 9
Valve position (MD)
The following OpenServer string illustrates how to set the gas lift method using the 0 to
2 indices:
DoSet ("PROSPER.SIN.GLF.Method"), 0
The above string will set the gas lift method to fixed depth of injection.
The same rules apply for all other DoSet strings that depend on an option index.
6.4.3.2 Electircal Submersible Pump
PROSPER.SIN.ESP.Depth
PROSPER.SIN.ESP.Frequency
Operating frequency
PROSPER.SIN.ESP.MaxPumpOD
Maximum O.D.
PROSPER.SIN.ESP.CableLength
Length of cable
PROSPER.SIN.ESP.Efficiency
PROSPER.SIN.ESP.Stages
Number of stages
PROSPER.SIN.ESP.Volts
Voltage at surface
PROSPER.SIN.ESP.Wear
263
OpenServer
Pump depth
Pump maximum allowable O.D.
Turbine maximum allowable O.D.
Pump speed
Percent power fluid of reservoir fluid
Number of pump stages
Pump wear factor
Number of turbine stages
Gas de-rating model
Cable length
Voltage at surface
PROSPER.SIN.GLF.COILMD
264
Power available
Pump wear factor
Pump configuration:
0 - Single pump
1 - 2Pumps in parallel
2 - 3Pumps in parallel
3 - 4Pumps in parallel
4 - 5Pumps in parallel
5 - 6Pumps in parallel
The following OpenServer string illustrates how to set the number of pumps using the 0
to 5 indices:
DoSet ("PROSPER.SIN.FRM.NumPumps"), 1
The above string will set the number of pumps in parallel to 2.
The same rules apply for all other DoSet strings that depend on an option index.
6.4.3.8 Sucker Rod Pump
PROSPER.SIN.SRP.Input[10]
PROSPER.SIN.SRP.Input[16]
PROSPER.SIN.SRP.Input[12]
PROSPER.SIN.SRP.Input[13]
PROSPER.SIN.SRP.Input[17]
PROSPER.SIN.SRP.Input[26]
Anchored tubing
0 - Yes
1 - No
Pump depth
Pump diameter
Surface stroke length
Pumping speed
Rod type
Gas Anchor
265
OpenServer
Gas anchor:
0 - Entered
1 - Calculated
Efficiency
Type:
0 - Cup type
1 - Packer type
2 - Poor boy
Annulus area
PROSPER.SIN.SRP.Input[75]
PROSPER.SIN.SRP.Input[77]
PROSPER.SIN.SRP.Input[76]
PROSPER.SIN.SRP.Input[78]
The following OpenServer string illustrates how to set the tubing anchor option using the
0 to 1 indices:
DoSet ("PROSPER.SIN.SRP.Input[10]"), 0
The above string will set the tubing anchor option to Yes.
The same rules apply for all other DoSet strings that depend on an option index.
6.4.3.9 Gas Lift (Intermittent)
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
6.5
SYS or
SY4
SYM
GRD
Gradient Calculations
TCC
PCP
VMT
VLP Matching
GRD
Gradient Calculation
VL3
VL4
VLM
VLP (Multi-variables)
QLG
QuickLook GasLift
QLE
QuickLook ESP
QLH
QuickLook HSP
TCC
PCP
GMT
Gradient Matching
VMT
VLP/IPR Matching
PMT
Pipeline Matching
GLD
GLD
GLA
GasLift Adjustments
GEN
WHP
CHK
GDT
PLD
Plot Details
COR
THR
CST
CVT
UST
UVT
UGT
266
267
OpenServer
PROSPER.ANL.PMT
PROSPER.ANL.QLG
PROSPER.ANL.QLE
PROSPER.ANL.QLH
PROSPER.ANL.CHK
PROSPER.ANL.GDT
PROSPER.ANL.INF
PROSPER.ANL.SYS
PROSPER.ANL.VL3
PROSPER.ANL.VL4
PROSPER.ANL.GRD
PROSPER.ANL.GEN
PROSPER.ANL.GLD
PROSPER.ANL.WHP
PROSPER.ANL.PLD
PROSPER.ANL.COR
PROSPER.ANL.THR
PROSPER.ANL.CST
PROSPER.ANL.CVT
PROSPER.ANL.UST
PROSPER.ANL.UVT
PROSPER.ANL.UGT
In most of the calculation screens, the different Flow Correlations can be selected
through the following index:
Flow Correlation
OpenServer Index
Gray
Mukerjee - Brill
Dukler-Flannigan
Dukler-Eaton-Flannigan
Petroleum Experts
Orkizewski
Petroleum Experts 2
10
11
Petroleum Experts 3
12
268
14
15
GRE (Original)
16
17
Petroleum Experts 4
18
Hydro 3P
19
Petroleum Experts 5
20
OLGAS2P
21
OLGAS3P
22
OLGAS3PEXT
23
For example, selecting the PE2 correlation when performing a system calculation would
be done with the string:
DoSet PROSPER.ANL.SYS.Tubing, 10
When a correlation is not available, its index will return PE2.
NOTE: Correlations can also be selected using the correlation name using the
following syntax:
269
OpenServer
36
Skin
37
Productivity Index
38
Shot Density
39
40
Perforation Diameter
7 Number of Stages
41
8 SSSV Size
42
Time
9 Restriction Size
43
Dimensionless fracture
conductivity
44
11 Reservoir Permeability
51
Well Length
12 Perforation Length
52
Vertical Anisotropy
13 Reservoir Temperature
53
14 Test Rate
54
Separator GOR
15 Test Pressure
55
Water Cut
16 Reservoir Thickness
56
17 Drainage Area
57
58
19 Wellbore Radius
59
Total GOR
60
Tubing/Pipe Diameter
21 Perforation Interval
61
22 Reservoir Porosity
62
GLR Injected
23 Fracture Height
63
GLR Free
24 Horizontal Anisotropy
64
25 Reservoir Length
65
Tubing Roughness
26 Reservoir Width
66
67
Choke Size
68
Casing Pressure
70
Compressor Discharge
Pressure
Damaged Zone
30 Permeability
71
Injection Depth
72
DP across Valve
Crushed Zone
32 Permeability
73
GOR Free
33 Shot Phasing
74
Production Time
34 Deviation
75
Operating Frequency
35 Penetration
76
Perforation efficiency
77 Interporosity Coefficient
144
Vertical Permeability
78 Number of Fractures
145
Non-Darcy Coefficient
(Forchheimer)
300
Darcy Coefficient
(Forchheimer)
80 Pump speed
301
302
303
% Power Fluid of
83 Reservoir Fluid
304
305
306
86 Pipe Roughness
307
308
309
310
311
312
270
271
OpenServer
313
Fracture Permeability
314
Compressibility
315
Storativity Ratio
143
146
Sweep Efficiency
147
148
149
150
151
152
153
154
155
Biot's Constant
156
Poisson's Ratio
157
158
159
160
93
94
95
Drainage Area
96
97
Hole Diameter
98
Deviation
99
Horizontal Permeability
100
Vertical Permeability
101
102
Porosity
103
Turbulence Coefficient
104
Permeability Exponent
105
Porosity Exponent
106
107
108
109
110
Casing Weight
111
112
113
114
115
116
Perforation Efficiency
117
Shot Density
118
Gun Phasing
119
120
Tunnel Length
121
Tunnel Diameter
122
123
124
272
Indexes Relating to the SkinAide Model, API Test Data editions 4 and 5
273
OpenServer
Perforation Efficiency
125
Shot Density
126
Gun Phasing
127
128
129
130
Gun Diameter
131
132
Rock Density
133
134
Reservoir Strength
135
PROSPER.ANL.INF.RATEMETHOD
Rate Method:
0 - Automatic linear
1 - User specified
2 - Automatic geometric
PROSPER.ANL.INF.RATES.COUNT
Number of Rates
i = 0 : PROSPER.ANL.INF.RATES.COUNT-1
PROSPER.ANL.INF.RATES[i]
Rates
PROSPER.ANL.INF.SENS.TNODE
First Node
PROSPER.ANL.INF.SENS.BNODE
Last Node
PROSPER.ANL.INF.SENS.TNODETYPE
PROSPER.ANL.INF.SENS.BNODETYPE
PROSPER.ANL.INF.SENS.TNODEDEPTH
PROSPER.ANL.INF.SENS.BNODEDEPTH
274
PROSPER.ANL.INF.SENS.XPVD
PROSPER.ANL.INF.SENS.YPVD
PROSPER.ANL.INF.SENS.YVAR
X Variable
PROSPER.ANL.INF.SENS.GENFIRST
PROSPER.ANL.INF.SENS.GENLAST
PROSPER.ANL.INF.SENS.GENNUM
PROSPER.ANL.INF.SENS.GENTYPE
PROSPER.ANL.INF.SENS.REFPRES
Reference Pressure
PROSPER.ANL.INF.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.INF.SENS.VARS.VAR1
PROSPER.ANL.INF.SENS.VARS.VAR2
PROSPER.ANL.INF.SENS.VARS.VAR3
PROSPER.ANL.INF.SENS.VARS.UNIT1
PROSPER.ANL.INF.SENS.VARS.UNIT2
PROSPER.ANL.INF.SENS.VARS.UNIT3
PROSPER.ANL.INF.SENS.VARS.VAL1.NUM
PROSPER.ANL.INF.SENS.VARS.VAL1[I]
PROSPER.ANL.INF.SENS.VARS.VAL2.NUM
PROSPER.ANL.INF.SENS.VARS.VAL2[I]
PROSPER.ANL.INF.SENS.VARS.VAL3.NUM
PROSPER.ANL.INF.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.INF.SENS.VARS.GENFIRST[i]
PROSPER.ANL.INF.SENS.VARS.GENLAST[i]
275
OpenServer
PROSPER.ANL.INF.SENS.VARS.GENNUM[i]
PROSPER.ANL.INF.SENS.VARS.GENSPACE[i]
PROSPER.ANL.INF.SENS.COMB.DATA.COUNT
Number of Combination
Records
PROSPER.ANL.INF.SENS.COMB.DATA[i].TYPE
PROSPER.ANL.INF.SENS.COMB.DATA[i].UNIT
PROSPER.ANL.INF.SENS.COMB.DATA[i].INDEX
PROSPER.ANL.INF.SENS.COMB.DATA[i].RATE
PROSPER.ANL.INF.SENS.COMB.DATA[i].VAL.
COUNT
Combination Variable No of
Values
j = 0 : No of Values-1
PROSPER.ANL.INF.SENS.COMB.DATA[i].VAL[j]
PROSPER.ANL.SYS.WC
Water Cut
PROSPER.ANL.SYS.WGR
PROSPER.ANL.SYS.GOR
Total GOR
PROSPER.ANL.SYS.PIPE, i
Pipeline Correlation:
i = 2, 4, 5, 6, 7, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23
NOTE: i = 21 - 23 are for OLGAS
correlations and a subsequent
license will be required to select
276
them.
PROSPER.ANL.SYS.PipeLabel, "Name"
PROSPER.ANL.SYS.TUBING, i
Tubing Correlation
i = 0 to 23
NOTE: i = 21 - 23 are for OLGAS
correlations and a subsequent
license will be required to select
them.
PROSPER.ANL.SYS.TubingLabel, "Name"
277
OpenServer
PetroleumExperts4
Hydro3P
PetroleumExperts5
OLGAS2P
OLGAS3P
OLGAS3PEXT
PROSPER.ANL.SYS.SOLUTIONNODE
Solution Node
i = 1 to 3
1 - Bottom node
2 - Top node
3 - Wellhead
PROSPER.ANL.SYS.RATEMETHOD, i
Rate Method
i = 0 to 2
0 - Automatic linear
1 - User specified
2 - Automatic geometric
PROSPER.ANL.SYS.SENS.GENFIRST
PROSPER.ANL.SYS.SENS.GENLAST
PROSPER.ANL.SYS.Sens.Gen.Number, i
PROSPER.ANL.SYS.RATES.COUNT
Number of Rates
PROSPER.ANL.SYS.Sens.Gen.Method
i = 0 : PROSPER.ANL.SYS.RATES.COUNT-1
PROSPER.ANL.SYS.SENS.TNODE
First Node
PROSPER.ANL.SYS.SENS.BNODE
Last Node
PROSPER.ANL.SYS.SENS.TNODETYPE
PROSPER.ANL.SYS.SENS.BNODETYPE
PROSPER.ANL.SYS.SENS.TNODEDEPTH
PROSPER.ANL.SYS.SENS.BNODEDEPTH
PROSPER.ANL.SYS.SENS.XPVD
PROSPER.ANL.SYS.SENS.YPVD
278
PROSPER.ANL.SYS.SENS.YVAR
X Variable
PROSPER.ANL.SYS.SENS.GENNUM
PROSPER.ANL.SYS.SENS.GENTYPE
PROSPER.ANL.SYS.SENS.REFPRES
Reference Pressure
PROSPER.ANL.SYS.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.SYS.SENS.VARS.VAR1
PROSPER.ANL.SYS.SENS.VARS.VAR2
PROSPER.ANL.SYS.SENS.VARS.VAR3
PROSPER.ANL.SYS.SENS.VARS.UNIT1
PROSPER.ANL.SYS.SENS.VARS.UNIT2
PROSPER.ANL.SYS.SENS.VARS.UNIT3
PROSPER.ANL.SYS.SENS.VARS.VAL1.NUM
PROSPER.ANL.SYS.SENS.VARS.VAL1[I]
PROSPER.ANL.SYS.SENS.VARS.VAL2.NUM
PROSPER.ANL.SYS.SENS.VARS.VAL2[I]
PROSPER.ANL.SYS.SENS.VARS.VAL3.NUM
PROSPER.ANL.SYS.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.SYS.SENS.VARS.GENFIRST[i]
PROSPER.ANL.SYS.SENS.VARS.GENLAST[i]
PROSPER.ANL.SYS.SENS.VARS.GENNUM[i]
PROSPER.ANL.SYS.SENS.VARS.GENSPACE[i]
279
OpenServer
PROSPER.ANL.SYS.SENS.COMB.DATA[i].UNIT
PROSPER.ANL.SYS.SENS.COMB.DATA[i].VAL.
COUNT
Combination Variable No of
Values
j = 0 : No of Values-1
PROSPER.ANL.SYS.SENS.COMB.DATA[i].VAL[j] Combination Variable Values
PROSPER.ANL.SYS.DONE
PROSPER.ANL.SYM.PRES
PROSPER.ANLSYM.WC
Water Cut
PROSPER.ANL.SYM.GOR
Total GOR
PROSPER.ANL.SYM.WGR
PROSPER.ANL.SYM.PIPE
PROSPER.ANL.SYM.TUBING
PROSPER.ANL.SYM.SolutionNode
Solution node:
i = 0 to 2
0 - Bottom node
1 - Top node
2 - Wellhead
PROSPER.ANL.SYM.RATEMETHOD, i
Rate Method:
i = 0 to 2
280
0 - Automatic linear
1 - user specified
2 - Automatic geometric
PROSPER.ANL.SYM.RATES.COUNT
Number of Rates
PROSPER.ANL.SYM.RATES[i]
Rates:
i = 0 to 19
Index value retrieves the entered specified
rate
PROSPER.ANL.SYM.RateType
Rate type:
i = 0 to 3
0 - Liquid rate
1 - Oil rate
2 - Gas rate
3 - Hydrocarbon mass flow rate
PROSPER.ANL.SYM.Sens.Gen.First
PROSPER.ANL.SYM.Sens.Gen.Last
PROSPER.ANL.SYM.Sens.Gen.Number
PROSPER.ANL.SYM.Sens.SensDB.
Clear
281
OpenServer
PROSPER.ANL.SYM.DONE
PROSPER.ANL.GRD.PIPE
PROSPER.ANL.GRD.TUBING
PROSPER.ANL.GRD.SLUG
Slug Method
i = 0 to 1
0 - Brill
1 - RCS mechanistic
PROSPER.ANL.GRD.RATETYPE
Rate Type i = 0 to 1
0 - Liquid rates
1 - Oil rates
PROSPER.ANL.GRD.FIRSTNODE
First Node
PROSPER.ANL.GRD.LASTNODE
Last Node
PROSPER.ANL.GRD.RATE
Rate
PROSPER.ANL.GRD.PRES
PROSPER.ANL.GRD.WC
Water Cut
PROSPER.ANL.GRD.WGR
PROSPER.ANL.GRD.SENS.TNODE
First Node
PROSPER.ANL.GRD.SENS.BNODE
Last Node
PROSPER.ANL.GRD.SENS.TNODETYPE
PROSPER.ANL.GRD.SENS.BNODETYPE
PROSPER.ANL.GRD.SENS.
282
TNODEDEPTH
PROSPER.ANL.GRD.SENS.
BNODEDEPTH
PROSPER.ANL.GRD.SENS.XPVD
PROSPER.ANL.GRD.SENS.YPVD
PROSPER.ANL.GRD.SENS.YVAR
X Variable
PROSPER.ANL.GRD.SENS.GENFIRST
PROSPER.ANL.GRD.SENS.GENLAST
PROSPER.ANL.GRD.SENS.GENNUM
PROSPER.ANL.GRD.SENS.GENTYPE
PROSPER.ANL.GRD.SENS.REFPRES
Reference Pressure
PROSPER.ANL.GRD.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.GRD.SENS.VARS.VAR1
PROSPER.ANL.GRD.SENS.VARS.VAR2
PROSPER.ANL.GRD.SENS.VARS.VAR3
PROSPER.ANL.GRD.SENS.VARS.UNIT1
PROSPER.ANL.GRD.SENS.VARS.UNIT2
PROSPER.ANL.GRD.SENS.VARS.UNIT3
PROSPER.ANL.GRD.SENS.VARS.VAL1.
NUM
PROSPER.ANL.GRD.SENS.VARS.VAL1[I]
PROSPER.ANL.GRD.SENS.VARS.VAL2.
NUM
PROSPER.ANL.GRD.SENS.VARS.VAL2[I]
PROSPER.ANL.GRD.SENS.VARS.VAL3.
NUM
PROSPER.ANL.GRD.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.GRD.SENS.VARS.
GENFIRST[i]
PROSPER.ANL.GRD.SENS.VARS.
GENLAST[i]
283
OpenServer
PROSPER.ANL.GRD.SENS.VARS.
GENNUM[i]
PROSPER.ANL.GRD.SENS.VARS.
GENSPACE[i]
PROSPER.ANL.GRD.SENS.COMB.DATA.
COUNT
PROSPER.ANL.GRD.SENS.COMB.DATA
[i].TYPE
PROSPER.ANL.GRD.SENS.COMB.DATA
[i].UNIT
PROSPER.ANL.GRD.SENS.COMB.DATA
[i].INDEX
PROSPER.ANL.GRD.SENS.COMB.DATA
[i].RATE
PROSPER.ANL.GRD.SENS.COMB.DATA
[i].VAL.COUNT
j = 0 : No of Values-1
PROSPER.ANL.GRD.SENS.COMB.DATA
[i].VAL[j]
The above values are to be used in conjunction with the strings PROSPER.ANL.VL4.
SENS.VARS.VAR1, PROSPER.ANL.SYS.SENS.VARS.VAR2, PROSPER.ANL.VL4.
SENS.VARS.VAR3 for selecting the sensitivity variables.
PROSPER.ANL.VL3.PIPE
PROSPER.ANL.VL3.TUBING
PROSPER.ANL.VL3.RATEMETHOD
Rate Method
PROSPER.ANL.VL3.RATETYPE
Rate Type
PROSPER.ANL.VL3.FIRSTNODE
First Node
PROSPER.ANL.VL3.LASTNODE
Last Node
PROSPER.ANL.VL3.TYPE
PROSPER.ANL.VL3.GP
PROSPER.ANL.VL3.PRES
PROSPER.ANL.VL3.WC
Water Cut
PROSPER.ANL.VL3.WGR
PROSPER.ANL.VL3.RATES.COUNT
Number of Rates
284
i = 0 : PROSPER.ANL.VL3.RATES.COUNT1
PROSPER.ANL.VL3.RATES[i]
Rates
PROSPER.ANL.VL3.SENS.TNODE
First Node
PROSPER.ANL.VL3.SENS.BNODE
Last Node
PROSPER.ANL.VL3.SENS.TNODETYPE
PROSPER.ANL.VL3.SENS.BNODETYPE
PROSPER.ANL.VL3.SENS.YPVD
PROSPER.ANL.VL3.SENS.YVAR
X Variable
PROSPER.ANL.VL3.Sens.Gen.First
PROSPER.ANL.VL3.Sens.Gen.Last
PROSPER.ANL.VL3.Sens.Gen.Number
PROSPER.ANL.VL3.Sens.Gen.Method
PROSPER.ANL.VL3.SENS.REFPRES
Reference Pressure
PROSPER.ANL.VL3.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.VL3.SENS.VARS.VAR1
285
OpenServer
PROSPER.ANL.VL3.SENS.VARS.VAR2
PROSPER.ANL.VL3.SENS.VARS.VAR3
PROSPER.ANL.VL3.SENS.VARS.UNIT1
PROSPER.ANL.VL3.SENS.VARS.UNIT2
PROSPER.ANL.VL3.SENS.VARS.UNIT3
PROSPER.ANL.VL3.SENS.VARS.VAL1.
NUM
PROSPER.ANL.VL3.SENS.VARS.VAL1[I]
PROSPER.ANL.VL3.SENS.VARS.VAL2.
NUM
PROSPER.ANL.VL3.SENS.VARS.VAL2[I]
PROSPER.ANL.VL3.SENS.VARS.VAL3.
NUM
PROSPER.ANL.VL3.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.VL3.SENS.VARS.
GENFIRST[i]
PROSPER.ANL.VL3.SENS.VARS.
GENLAST[i]
PROSPER.ANL.VL3.SENS.VARS.
GENNUM[i]
PROSPER.ANL.VL3.SENS.VARS.
GENSPACE[i]
PROSPER.ANL.VL3.SENS.COMB.DATA.
COUNT
286
VAL.COUNT
j = 0 : No of Values-1
PROSPER.ANL.VL3.SENS.COMB.DATA[i]. Combination Variable Values
VAL[j]
The above values are to be used in conjunction with the strings PROSPER.ANL.VL3.
SENS.VARS.VAR1, PROSPER.ANL.SYS.SENS.VARS.VAR2, PROSPER.ANL.VL3.
SENS.VARS.VAR3 for selecting the sensitivity variables.
PROSPER.ANL.VL4.PIPE
PROSPER.ANL.VL4.TUBING
PROSPER.ANL.VL4.RATEMETHOD
Rate Method
PROSPER.ANL.VL4.RATETYPE
Rate Type
PROSPER.ANL.VL4.FIRSTNODE
First Node
PROSPER.ANL.VL4.LASTNODE
Last Node
PROSPER.ANL.VL4.TYPE
PROSPER.ANL.VL4.GP
PROSPER.ANL.VL4.PRES
PROSPER.ANL.VL4.WC
Water Cut
PROSPER.ANL.VL4.WGR
PROSPER.ANL.VL4.RATES.COUNT
Number of Rates
i = 0 : PROSPER.ANL.VL4.RATES.COUNT-1
PROSPER.ANL.VL4.RATES[i]
Rates
1990-2011 Petroleum Experts Limited
287
OpenServer
PROSPER.ANL.VL4.SENS.TNODE
First Node
PROSPER.ANL.VL4.SENS.BNODE
Last Node
PROSPER.ANL.VL4.SENS.TNODETYPE
PROSPER.ANL.VL4.SENS.BNODETYPE
PROSPER.ANL.VL4.SENS.TNODEDEPTH
PROSPER.ANL.VL4.SENS.BNODEDEPTH
PROSPER.ANL.VL4.SENS.XPVD
PROSPER.ANL.VL4.SENS.YPVD
PROSPER.ANL.VL4.SENS.YVAR
X Variable
PROSPER.ANL.VL4.SENS.GENFIRST
PROSPER.ANL.VL4.SENS.GENLAST
PROSPER.ANL.VL4.SENS.GENNUM
PROSPER.ANL.VL4.SENS.GENTYPE
PROSPER.ANL.VL4.SENS.REFPRES
Reference Pressure
PROSPER.ANL.VL4.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.VL4.SENS.VARS.VAR1
PROSPER.ANL.VL4.SENS.VARS.VAR2
PROSPER.ANL.VL4.SENS.VARS.VAR3
PROSPER.ANL.VL4.SENS.VARS.VAR4
PROSPER.ANL.VL4.SENS.VARS.UNIT1
PROSPER.ANL.VL4.SENS.VARS.UNIT2
PROSPER.ANL.VL4.SENS.VARS.UNIT3
PROSPER.ANL.VL4.SENS.VARS.UNIT4
PROSPER.ANL.VL4.SENS.VARS.VAL1.
NUM
PROSPER.ANL.VL4.SENS.VARS.VAL1[I]
PROSPER.ANL.VL4.SENS.VARS.VAL2.
NUM
PROSPER.ANL.VL4.SENS.VARS.VAL2[I]
288
PROSPER.ANL.VL4.SENS.VARS.VAL3.
NUM
PROSPER.ANL.VL4.SENS.VARS.VAL3[I]
PROSPER.ANL.VL4.SENS.VARS.VAL4.
NUM
PROSPER.ANL.VL4.SENS.VARS.VAL4[I]
i=0:4
PROSPER.ANL.VL4.SENS.VARS.
GENFIRST[i]
PROSPER.ANL.VL4.SENS.COMB.DATA.
COUNT
PROSPER.ANL.VL4.SENS.COMB.DATA[i].
TYPE
PROSPER.ANL.VL4.SENS.COMB.DATA[i].
UNIT
PROSPER.ANL.VL4.SENS.COMB.DATA[i].
INDEX
PROSPER.ANL.VL4.SENS.COMB.DATA[i].
RATE
PROSPER.ANL.VL4.SENS.COMB.DATA[i].
VAL.COUNT
j = 0 : No of Values-1
PROSPER.ANL.VL4.SENS.COMB.DATA[i].
VAL[j]
The above values are to be used in conjunction with the strings PROSPER.ANL.VL4.
SENS.VARS.VAR1, PROSPER.ANL.SYS.SENS.VARS.VAR2, PROSPER.ANL.VL4.
SENS.VARS.VAR3 for selecting the sensitivity variables.
289
OpenServer
PROSPER.ANL.VLM.DONE
PROSPER.ANL.VLM.PIPE
PROSPER.ANL.VLM.TUBING
PROSPER.ANL.VLM.RATEMETHOD, i
Rate Method:
i = 0 to 2
0 - Automatic linear
1 - user specified
2 - Automatic geometric
PROSPER.ANL.VLM.RATES.COUNT
Number of Rates
PROSPER.ANL.VLM.RATES[i]
Rates:
i = 0 to 19
Index value retrieves the entered
specified rate
PROSPER.ANL.VLM.PRES
PROSPER.ANL.VLM.RateType
Rate type:
i = 0 to 3
0 - Liquid rate
1 - Oil rate
2 - Gas rate
3 - Hydrocarbon mass flow rate
PROSPER.ANL.VLM.WC
Water Cut
PROSPER.ANL.VLM.WGR
PROSPER.ANL.VLM.SENS.GENFIRST
PROSPER.ANL.VLM.Sens.Gen.Last
PROSPER.ANL.VLM.Sens.Gen.Number, i
PROSPER.ANL.VLM.Sens.Gen.Method
290
i = 0 to 4
0 - Linear
1 - Geometric
2 - Step
3 - Simple percent
4 - Compound percent
PROSPER.ANL.VLM.Sens.SensDB.Vars[0]
PROSPER.ANL.VLM.Sens.SensDB.Vars[0], j
PROSPER.ANL.VLM.Sens.SensDB.Sens
[Index].Vals[j]
PROSPER.ANL.VLM.Sens.SensDB.Clear
PROSPER.ANL.QLG.SURFACE[1][0]
PROSPER.ANL.QLG.SURFACE[2][0]
Liquid Rate
PROSPER.ANL.QLG.SURFACE[3][0]
Water Cut
PROSPER.ANL.QLG.SURFACE[4][0]
PROSPER.ANL.QLG.SURFACE[5][0]
PROSPER.ANL.QLG.SURFACE[6][0]
291
OpenServer
PROSPER.ANL.QLG.GASLIFT[0]
Orifice Diameter
PROSPER.ANL.QLG.GASLIFT[1]
PROSPER.ANL.QLG.FLOWING.COUNT
Number of Flowing
Measurements
i = 0 : PROSPER.ANL.QLG.FLOWING.COUNT-1
PROSPER.ANL.QLG.FLOWING[i][0]
Measured Depth
PROSPER.ANL.QLG.FLOWING[i][1]
Minimum Pressure
PROSPER.ANL.QLG.FLOWING[i][2]
Maximum Pressure
PROSPER.ANL.QLG.STATIC.COUNT
i = 0: PROSPER.ANL.QLG.STATIC.COUNT-1
PROSPER.ANL.QLG.STATIC[i][0]
Measured Depth
PROSPER.ANL.QLG.STATIC[i][1]
Static Pressure
PROSPER.ANL.QLG.MAND.COUNT
Number of Mandrels
i = 0: PROSPER.ANL.QLG.MAND.COUNT-1
PROSPER.ANL.QLG.MAND[i].TYPE
Valve Type
PROSPER.ANL.QLG.MAND[i].PORT
Port Size
PROSPER.ANL.QLG.MAND[i].RVAL
R Value
PROSPER.ANL.QLG.MAND[i].DOME
Dome Pressure
PROSPER.ANL.QLG.MAND[i].DEPTH
Measured Depth
PROSPER.ANL.QLE.EMULSION
Emulsion Flag
PROSPER.ANL.QLE.QUICK[0]
PROSPER.ANL.QLE.QUICK[1]
Liquid rate
PROSPER.ANL.QLE.QUICK[2]
Water cut
PROSPER.ANL.QLE.QUICK[3]
GOR
PROSPER.ANL.QLE.QUICK[4]
PROSPER.ANL.QLE.QUICK[5]
Pump Depth
PROSPER.ANL.QLE.QUICK[6]
Operating Frequency
PROSPER.ANL.QLE.QUICK[7]
Length Of Cable
PROSPER.ANL.QLE.QUICK[8]
PROSPER.ANL.QLE.QUICK[9]
Number Of Stages
PROSPER.ANL.QLE.QUICK[10]
PROSPER.ANL.QLE.SURF[0]
Current
PROSPER.ANL.QLE.SURF[1]
Surface Voltage
PROSPER.ANL.QLE.SURF[2]
Power
PROSPER.ANL.QLE.DOWN.COUNT
PROSPER.ANL.QLE.Down[i][j]
Downhole data
i = Measured Depth = 0 to 4
j = Pressure = 1
292
Measured Depth
PROSPER.ANL.QLE.DOWN[i][1]
Pressure
PROSPER.ANL.QLH.EMULSION
Emulsion Flag
PROSPER.ANL.QLH.QUICK[0]
PROSPER.ANL.QLH.QUICK[1]
Liquid Rate
PROSPER.ANL.QLH.QUICK[2]
Water Cut
PROSPER.ANL.QLH.QUICK[3]
Produced GOR
PROSPER.ANL.QLH.QUICK[4]
PROSPER.ANL.QLH.QUICK[5]
Pump Depth
PROSPER.ANL.QLH.QUICK[6]
Pump Speed
293
OpenServer
PROSPER.ANL.QLH.QUICK[7]
PROSPER.ANL.QLH.QUICK[8]
Pump Stages
PROSPER.ANL.QLH.QUICK[9]
PROSPER.ANL.QLH.QUICK[10]
Turbine Stages
PROSPER.ANL.QLH.DOWN.COUNT
i = 0 : PROSPER.ANL.QLH.DOWN.COUNT1
PROSPER.ANL.QLH.DOWN[i][0]
Measured Depth
PROSPER.ANL.QLH.DOWN[i][1]
Pressure
PROSPER.ANL.TCC.WC
Water Cut
PROSPER.ANL.TCC.RATE
Rate
PROSPER.ANL.TCC.GOR
GOR
PROSPER.ANL.TCC.GORFREE
GOR free
PROSPER.ANL.TCC.RateType
Rate type:
i = 0 to 1
0 - Liquid rates
1 - Oil rates
PROSPER.ANL.PCC.Corr, i
2
4
5
6
7
13
14
OpenServer User's Manual
FancherBrown
MukerjeeBrill
BeggsandBrill
DuklerFlannigan
DuklerEatonFlannigan
BeggsandBrillGasHead
GREmodifiedbyPE
15
16
17
18
19
20
21
22
23
PROSPER.ANL.TCC.Pipelabel
Example: To set the Beggs and Brill
correlation use:
294
GREwithDSM
GREoriginal
GREwithAE
PetroleumExperts4
Hydro3P
PetroleumExperts5
OLGAS2P
OLGAS3P
OLGAS3PEXT
DoSet ("PROSPER.ANL.TCC.Pipelabel"),
"beggsandbrill"
FancherBrown
MukerjeeBrill
BeggsandBrill
DuklerFlannigan
DuklerEatonFlannigan
BeggsandBrillGasHead
GREmodifiedbyPE
GREwithDSM
GREoriginal
GREwithAE
PetroleumExperts4
Hydro3P
PetroleumExperts5
OLGAS2P
OLGAS3P
OLGAS3PEXT
PROSPER.ANL.TCC.MAX
PROSPER.ANL.TCC.DONE
PROSPER.ANL.TCC.GLRATE
PROSPER.ANL.TCC.GLDEPTH
PROSPER.ANL.TCC.WGR
PROSPER.ANL.TCC.CORR.COUNT
295
OpenServer
will be 20.
PROSPER.ANL.TCC.CORR[i]
PROSPER.ANL.TCC.COMP.COUNT-1
i= 0 : PROSPER.ANL.TCC.COMP.COUNT1
PROSPER.ANL.TCC.COMP[i].X
Pressure
PROSPER.ANL.TCC.COMP[i].Y
Measured Depth
PROSPER.ANL.TCC.COMP[i].T
Manifold pressure
PROSPER.ANL.PCC.WC
Water cut
PROSPER.ANL.PCC.RATE
Rate
PROSPER.ANL.PCC.GOR
Total GOR
PROSPER.ANL.PCC.GORFREE
GOR free
PROSPER.ANL.PCC.WGR
PROSPER.ANL.PCC.GLRATE
PROSPER.ANL.PCC.RateType
Rate type:
i = 0 to 1
296
0 - Liquid rates
1 - Oil rates
PROSPER.ANL.PCC.MAX
PROSPER.ANL.PCC.DONE
i= 0 : PROSPER.ANL.TCC.CORR.COUNT1
PROSPER.ANL.PCC.CORR[i]
Example: To set the Beggs and Brill
correlation, use the following DoSet
command:
DoSet ("PROSPER.ANL.PCC.CORR[2]"),
1
To deselect the above correlation, use:
DoSet ("PROSPER.ANL.PCC.CORR[2]"),
0
297
OpenServer
GREoriginal
GREwithAE
PetroleumExperts4
Hydro3P
PetroleumExperts5
OLGAS2P
OLGAS3P
OLGAS3PEXT
PROSPER.ANL.PCC.COMP.COUNT
i= 0 : PROSPER.ANL.TCC.COMP.COUNT1
PROSPER.ANL.PCC.COMP[i].I
Node Number
PROSPER.ANL.PCC.COMP[i].Y
Pressure
Wellhead pressure
PROSPER.ANL.GMT.WC
Water cut
PROSPER.ANL.GMT.Rate
Match rate
PROSPER.ANL.GMT.GOR
GOR
PROSPER.ANL.GMT.GORFREE
GOR free
PROSPER.ANL.GMT.RateType
Rate type
i = 0 to 1
0 - Liquid rates
1 - Oil rates
PROSPER.ANL.GMT.Match[i].X
PROSPER.ANL.GMT.Match[0].Y
PROSPER.ANL.GMT.RATETYPE
PROSPER.ANL.GMT.MAX
PROSPER.ANL.GMT.DONE
PROSPER.ANL.GMT.RATE
Rate
PROSPER.ANL.GMT.GLRATE
298
PROSPER.ANL.GMT.GLDEPTH
PROSPER.ANL.GMT.WGR
PROSPER.ANL.GMT.Corr[index], 1
or:
PROSPER.ANL.GMT.CorrLabel[{corrname}], 1
PROSPER.ANL.GMT.CORR.COUNT
PROSPERR.ANL.GMT.MATCH.COUNT
i= 0 : PROSPER.ANL.GMT.MATCH.COUNT-1
PROSPER.ANL.GDT.DATA.COUNT
i = 0 : PROSPER.ANL.GDT.DATA.COUNT1
PROSPER.ANL.GDT.DATA[i].MD
Measured Depth
299
OpenServer
PROSPER.ANL.GDT.DATA[i].PRES
Pressure
PROSPER.ANL.GDT.DATA[i].TEMP
Temperature
PROSPER.ANL.GDT.DATA[i].TVD
Index i = 0 to 999
PROSPER.ANL.VMT.Data[i].Date
PROSPER.ANL.VMT.DATA[i].
DATESTRING
PROSPER.ANL.VMT.DATA[i].
DATE
PROSPER.ANL.VMT.Data[i].Label
PROSPER.ANL.VMT.DATA[i].
THPRES
PROSPER.ANL.VMT.DATA[i].
THTEMP
PROSPER.ANL.VMT.DATA[i].WC
Water Cut
PROSPER.ANL.VMT.DATA[i].
RATE
Rate
i = 0 to 1
0 - Liquid rates
1 - Oil rates
PROSPER.ANL.VMT.Data[0].Rate
Gas rate
PROSPER.ANL.VMT.DATA[i].
GDEPTH
Gauge depth
PROSPER.ANL.VMT.DATA[i].
GPRES
Gauge pressure
PROSPER.ANL.VMT.Data[0].Pres
Reservoir pressure
PROSPER.ANL.VMT.DATA[i].
GOR
GOR
PROSPER.ANL.VMT.DATA[i].
GORFREE
Free GOR
Separator GOR
300
SGOR
PROSPER.ANL.VMT.RATETYPE
Rate type
i = 0 to 1
0 - Liquid rate
1 - Oil rate
PROSPER.ANL.VMT.Corr[i], j
Correlation selection
i = Correlation Index
j = Set flag = 1, Unset Flag = 0
(see TCC_-_Tubing_Correlation_Comparison)
PROSPER.ANL.VMT.DONE
PROSPER.ANL.VMT.MAX
PROSPER.ANL.VMT.CORR.
COUNT
PROSPER.ANL.VMT.DATA.
COUNT
PROSPER.ANL.VMT.DATA[i].
ENABLE
i = 0 : PROSPER.ANL.VMT.DATA.
COUNT-1
Gas Lift
PROSPER.ANL.VMT.Data[0].Irate
Operating frequency
Rate
i = 0 to 1
0 - Liquid rates
1 - Oil rates
PROSPER.ANL.PMT.Data[0].Label
301
OpenServer
PROSPER.ANL.PMT.Data[0].THpres
Manifold pressure
PROSPER.ANL.PMT.Data[0].WC
Water cut
PROSPER.ANL.PMT.Data[0].Rate
Liquid rate
PROSPER.ANL.PMT.Data[0].Gpres
PROSPER.ANL.PMT.Data[0].GOR
GOR
PROSPER.ANL.PMT.Data[0].GORfree
GOR free
PROSPER.ANL.PMT.Data[0].WGR
PROSPER.ANL.PMT.Data[0].CGR
PROSPER.ANL.PMT.Data[0].SGOR
Separator GOR
PROSPER.ANL.PMT.Corr[i]
Correlation
selection
(See
PCC__Pipeline_Correlation_Comparison)
PROSPER.ANL.PMT.DONE
PROSPER.ANL.PMT.MAX
PROSPER.ANL.PMT.DATA.COUNT
i = 0 : PROSPER.ANL.PMT.DATA.
COUNT-1
PROSPER.ANL.PMT.DATA[i].ENABLE
Calculation option:
i = 0 to 2
0 - Predict mass flowrate
1 - Predict pressure drop
2 - Predict choke setting
PROSPER.ANL.CHK.Choke, i
Choke method:
i = 0, 1, 2, 4
0 - Petroleum Experts
1 - HYDRO - short frozen flow
2 - HYDRO - long frozen flow
4 - ELF (recommended)
PROSPER.ANL.CHK.DATA[16]
Total GOR
PROSPER.ANL.CHK.DATA[17]
Water Cut
PROSPER.ANL.CHK.DATA[0]
Inlet Pressure
PROSPER.ANL.CHK.DATA[1]
Inlet Temperature
PROSPER.ANL.CHK.DATA[2]
Outlet Pressure
PROSPER.ANL.CHK.DATA[4]
Choke Setting
PROSPER.ANL.CHK.DONE
PROSPER.ANL.CHK.CHOKE
PROSPER.ANL.CHK.VALVE
PROSPER.ANL.CHK.DATA[3]
Outlet Temperature
PROSPER.ANL.CHK.DATA[5]
Liquid Rate
PROSPER.ANL.CHK.DATA[6]
Gas Rate
PROSPER.ANL.CHK.DATA[7]
Inlet Diameter
PROSPER.ANL.CHK.DATA[8]
Outlet Diameter
PROSPER.ANL.CHK.DATA[9]
Contraction Coefficient
PROSPER.ANL.CHK.DATA[10]
Max Ct Value
PROSPER.ANL.CHK.DATA[11]
PROSPER.ANL.CHK.DATA[12]
PROSPER.ANL.CHK.DATA[13]
PROSPER.ANL.CHK.DATA[14]
Stem Travel
PROSPER.ANL.CHK.DATA[15]
Slip Factor At 2
PROSPER.ANL.CHK.DATA[18]
PROSPER.ANL.CHK.DATA[19]
PROSPER.ANL.CHK.DATA[20]
Separator GOR
PROSPER.ANL.CHK.DATA[21]
Mass Flowrate
PROSPER.ANL.CHK.DATA[22]
Critical Pressure
PROSPER.ANL.CHK.DATA[23]
Critical Rate
302
PROSPER.ANL.GEN.PIPE
Pipeline Correlation
PROSPER.ANL.GEN.TUBING
Tubing Correlation
PROSPER.ANL.GEN.SLUG
Slug Method
PROSPER.ANL.GEN.RATEMETHOD
Rate Type:
1990-2011 Petroleum Experts Limited
303
OpenServer
0 - Automatic linear
1 - Automatic geometric
PROSPER.ANL.GEN.PRES
PROSPER.ANL.GEN.WC
Water Cut
PROSPER.ANL.GEN.TOTALGOR
Total GOR
PROSPER.ANL.GEN.WGR
PROSPER.ANL.GEN.CGR
PROSPER.ANL.GEN.SGOR
Separator GOR
PROSPER.ANL.GEN.RATES.COUNT
Number of Rates
i = 0 : PROSPER.ANL.GEN.RATES.COUNT1
PROSPER.ANL.GEN.RATES[i]
Rates
PROSPER.ANL.GEN.MANPRES.COUNT
i = 0 : PROSPER.ANL.GEN.MANPRES.
COUNT-1
PROSPER.ANL.GEN.MANPRES[i]
Manifold Pressures
PROSPER.ANL.GEN.GENGLR[i].COUNT
j = 0 : PROSPER.ANL.GEN.GENGLR[i].
COUNT-1
PROSPER.ANL.GEN.GENGLR[i][j]
GLRs
PROSPER.ANL.WHP.DATA.COUNT
Number of Records
i = 0 : PROSPER.ANL.WHP.DATA.COUNT-1
304
PROSPER.ANL.WHP.DATA[i].ENABLE
Enable Flag
PROSPER.ANL.WHP.DATA[i].SEL
Selected Flag
PROSPER.ANL.WHP.DATA[i].LABEL
Label
PROSPER.ANL.WHP.DATA[i].TIME
Time
PROSPER.ANL.WHP.DATA[i].RATE
Rate (Liquid/Oil/Gas)
PROSPER.ANL.WHP.DATA[i].WHP
WellHead Pressure
PROSPER.ANL.WHP.DATA[i].WHT
WellHead Temperature
PROSPER.ANL.WHP.DATA[i].GASF
Gas Fraction
GOR / Gas Rate
CGR / Oil Rate
Separator GOR / Oil Rate
PROSPER.ANL.WHP.DATA[i].WATF
Water Fraction
Water Cut / Water Rate
WGR / Water Rate
WGR / Water Rate
PROSPER.ANL.WHP.DATA[i].BHP
PROSPER.ANL.WHP.DATA[i].GLIFT
i = 0 : PROSPER.ANL.PLD.DET.COUNT-1
PROSPER.ANL.PLD.DET[i].USED
Used Flag
PROSPER.ANL.PLD.DET[i].TITLE
Graph Title
PROSPER.ANL.PLD.DET[i].XAXIS
X axis Label
PROSPER.ANL.PLD.DET[i].YAXIS
Y axis Label
PROSPER.ANL.PLD.DET[i].XMIN
Minimum X Value
PROSPER.ANL.PLD.DET[i].XMAX
Maximum X Value
PROSPER.ANL.PLD.DET[i].XSTEP
PROSPER.ANL.PLD.DET[i].YMIN
Minimum Y Value
PROSPER.ANL.PLD.DET[i].YMAX
Maximum Y Value
305
OpenServer
PROSPER.ANL.PLD.DET[i].YSTEP
PROSPER.ANL.PLD.DET[i].TMIN
PROSPER.ANL.PLD.DET[i].TMAX
PROSPER.ANL.PLD.DET[i].TSTEP
PROSPER.ANL.PLD.DET[i].XEXTENT
X axis Extent
PROSPER.ANL.PLD.DET[i].YEXTENT
Y axis EXtent
PROSPER.ANL.PLD.DET[i].XBLKS
PROSPER.ANL.PLD.DET[i].YBLKS
PROSPER.ANL.PLD.DET[i].THICK
Line Thickness
PROSPER.ANL.PLD.DET[i].METHOD
Scaling Method
PROSPER.ANL.PLD.DET[i].SCALE
PROSPER.ANL.PLD.DET[i].LABEL
PROSPER.ANL.PLD.DET[i].GRID
PROSPER.ANL.PLD.DET[i].STAMP
PROSPER.ANL.PLD.DET[i].LEGEND
PROSPER.ANL.PLD.DET[i].MOUSE
PROSPER.ANL.PLD.DET[i].HORIZ.
HEIGHT
PROSPER.ANL.PLD.DET[i].HORIZ.
WIDTH
PROSPER.ANL.PLD.DET[i].HORIZ.
ESCAPEMENT
PROSPER.ANL.PLD.DET[i].HORIZ.
ORIENTATION
PROSPER.ANL.PLD.DET[i].HORIZ.
WEIGHT
PROSPER.ANL.PLD.DET[i].HORIZ.ITALIC
PROSPER.ANL.PLD.DET[i].HORIZ.
UNDERLINE
PROSPER.ANL.PLD.DET[i].HORIZ.
STRIKEOUT
PROSPER.ANL.PLD.DET[i].HORIZ.
CHARSET
306
PROSPER.ANL.PLD.DET[i].HORIZ.
OUTPRECISION
PROSPER.ANL.PLD.DET[i].HORIZ.
CLIPPRECISION
PROSPER.ANL.PLD.DET[i].HORIZ.
QUALITY
PROSPER.ANL.PLD.DET[i].HORIZ.
PITCHANDFAMILY
PROSPER.ANL.PLD.DET[i].HORIZ.
FACENAME
PROSPER.ANL.PLD.DET[i].VERT.
HEIGHT
PROSPER.ANL.PLD.DET[i].VERT.WIDTH
PROSPER.ANL.PLD.DET[i].VERT.
ESCAPEMENT
PROSPER.ANL.PLD.DET[i].VERT.
ORIENTATION
PROSPER.ANL.PLD.DET[i].VERT.
WEIGHT
PROSPER.ANL.PLD.DET[i].VERT.ITALIC
PROSPER.ANL.PLD.DET[i].VERT.
UNDERLINE
PROSPER.ANL.PLD.DET[i].VERT.
STRIKEOUT
PROSPER.ANL.PLD.DET[i].VERT.
CHARSET
PROSPER.ANL.PLD.DET[i].VERT.
OUTPRECISION
PROSPER.ANL.PLD.DET[i].VERT.
CLIPPRECISION
PROSPER.ANL.PLD.DET[i].VERT.
QUALITY
PROSPER.ANL.PLD.DET[i].VERT.
PITCHANDFAMILY
PROSPER.ANL.PLD.DET[i].VERT.
FACENAME
PROSPER.ANL.PLD.DET[i].COLOR.
307
OpenServer
COUNT
j = 0 : PROSPER.ANL.PLD.DET[i].
COLOR.COUNT-1
PROSPER.ANL.PLD.DET[i].COLOR[j].
BAW
PROSPER.ANL.PLD.DET[i].COLOR[j].
GRY
PROSPER.ANL.PLD.DET[i].COLOR[j].
COL
Colour Setting
Annotation Text
PROSPER.ANL.PLD.DET[i].ANN[j].RECT
Bounding Rectangle
PROSPER.ANL.PLD.DET[i].ANN[j].
VERTICAL
PROSPER.ANL.PLD.DET[i].ANN[j].
COLTEXT
Text Colour
PROSPER.ANL.PLD.DET[i].ANN[j].
COLFILL
Background Colour
PROSPER.ANL.PLD.DET[i].ANN[j].
COLBORDER
Border Colour
308
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
ITALIC
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
UNDERLINE
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
STRIKEOUT
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
CHARSET
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
OUTPRECISION
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
CLIPPRECISION
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
QUALITY
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
PITCHANDFAMILY
PROSPER.ANL.PLD.DET[i].ANN[j].FONT.
FACENAME
Number of Correlations
i = 0 : CORR.COUNT-1
PROSPER.ANL.COR.CORR[i].DLL
DLL Index
PROSPER.ANL.COR.CORR[i].NAME
Correlations Name
PROSPER.ANL.COR.CORR[i].INDEX
Correlations Index
PROSPER.ANL.COR.CORR[i].PIPE
PROSPER.ANL.COR.CORR[i].TUBE
PROSPER.ANL.COR.CORR[i].GAS
PROSPER.ANL.COR.CORR[i].OIL
PROSPER.ANL.COR.CORR[i].CON
Correlation
PROSPER.ANL.COR.CORR[i].SELPIPE
PROSPER.ANL.COR.CORR[i].COMP
309
OpenServer
PROSPER.ANL.COR.CORR[i].GMATCH
PROSPER.ANL.COR.CORR[i].VMATCH
PROSPER.ANL.COR.CORR[i].PMATCH
PROSPER.ANL.COR.CORR[i].PCOMP
PROSPER.ANL.COR.CORR[i].SDTUBE
PROSPER.ANL.COR.CORR[i].SDPIPE
Matching
j=0:1
PROSPER.ANL.COR.CORR[i].A[j]
PROSPER.ANL.COR.CORR[i].S[j]
PROSPER.ANL.THR.TUBE
PROSPER.ANL.THR.ANGT
PROSPER.ANL.THR.PIPE
PROSPER.ANL.THR.ANGP
PROSPER.ANL.CST.PIPE
Pipeline Correlation
PROSPER.ANL.CST.TUBING
Tubing Correlation
PROSPER.ANL.CST.PRES
PROSPER.ANL.CST.WC
Water Cut
PROSPER.ANL.CST.WGR
PROSPER.ANL.CST.TIME
310
PROSPER.ANL.CST.SENS.TNODE
First Node
PROSPER.ANL.CST.SENS.BNODE
Last Node
PROSPER.ANL.CST.SENS.TNODETYPE
PROSPER.ANL.CST.SENS.BNODETYPE
PROSPER.ANL.CST.SENS.TNODEDEPTH
PROSPER.ANL.CST.SENS.BNODEDEPTH
PROSPER.ANL.CST.SENS.XPVD
PROSPER.ANL.CST.SENS.YPVD
PROSPER.ANL.CST.SENS.YVAR
X Variable
PROSPER.ANL.CST.SENS.GENFIRST
PROSPER.ANL.CST.SENS.GENLAST
PROSPER.ANL.CST.SENS.GENNUM
PROSPER.ANL.CST.SENS.GENTYPE
PROSPER.ANL.CST.SENS.REFPRES
Reference Pressure
PROSPER.ANL.CST.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.CST.SENS.VARS.VAR1
PROSPER.ANL.CST.SENS.VARS.VAR2
PROSPER.ANL.CST.SENS.VARS.VAR3
PROSPER.ANL.CST.SENS.VARS.UNIT1
PROSPER.ANL.CST.SENS.VARS.UNIT2
PROSPER.ANL.CST.SENS.VARS.UNIT3
PROSPER.ANL.CST.SENS.VARS.VAL1.NUM
PROSPER.ANL.CST.SENS.VARS.VAL1[I]
PROSPER.ANL.CST.SENS.VARS.VAL2.NUM
PROSPER.ANL.CST.SENS.VARS.VAL2[I]
PROSPER.ANL.CST.SENS.VARS.VAL3.NUM
PROSPER.ANL.CST.SENS.VARS.VAL3[I]
i=0:3
1990-2011 Petroleum Experts Limited
311
OpenServer
PROSPER.ANL.CST.SENS.VARS.GENFIRST[i]
PROSPER.ANL.CST.SENS.VARS.GENLAST[i]
PROSPER.ANL.CST.SENS.VARS.GENNUM[i]
PROSPER.ANL.CST.SENS.VARS.GENSPACE
[i]
PROSPER.ANL.CST.SENS.COMB.DATA.
COUNT
PROSPER.ANL.CST.SENS.COMB.DATA[i].
TYPE
PROSPER.ANL.CST.SENS.COMB.DATA[i].
UNIT
PROSPER.ANL.CST.SENS.COMB.DATA[i].
INDEX
PROSPER.ANL.CST.SENS.COMB.DATA[i].
RATE
PROSPER.ANL.CVT.PIPE
Pipeline Correlation
PROSPER.ANL.CVT.TUBING
Tubing Correlation
PROSPER.ANL.CVT.FREE
PROSPER.ANL.CVT.CONS
Constrained Node
PROSPER.ANL.CVT.TYPE
Rate Type
PROSPER.ANL.CVT.RATES.COUNT
Number of Rates
i = 0 : PROSPER.ANL.CVT.RATES.COUNT-1
PROSPER.ANL.CVT.RATES[i]
Rate
312
PROSPER.ANL.CVT.PRES
PROSPER.ANL.CVT.WC
Water Cut
PROSPER.ANL.CVT.WGR
PROSPER.ANL.CVT.TIME
PROSPER.ANL.CVT.TEMP
PROSPER.ANL.CVT.SENS.TNODE
First Node
PROSPER.ANL.CVT.SENS.BNODE
Last Node
PROSPER.ANL.CVT.SENS.TNODETYPE
PROSPER.ANL.CVT.SENS.BNODETYPE
PROSPER.ANL.CVT.SENS.TNODEDEPTH
PROSPER.ANL.CVT.SENS.BNODEDEPTH
PROSPER.ANL.CVT.SENS.XPVD
PROSPER.ANL.CVT.SENS.YPVD
PROSPER.ANL.CVT.SENS.YVAR
X Variable
PROSPER.ANL.CVT.SENS.GENFIRST
PROSPER.ANL.CVT.SENS.GENLAST
PROSPER.ANL.CVT.SENS.GENNUM
PROSPER.ANL.CVT.SENS.GENTYPE
PROSPER.ANL.CVT.SENS.REFPRES
Reference Pressure
PROSPER.ANL.CVT.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.CVT.SENS.VARS.VAR1
PROSPER.ANL.CVT.SENS.VARS.VAR2
PROSPER.ANL.CVT.SENS.VARS.VAR3
PROSPER.ANL.CVT.SENS.VARS.UNIT1
PROSPER.ANL.CVT.SENS.VARS.UNIT2
PROSPER.ANL.CVT.SENS.VARS.UNIT3
PROSPER.ANL.CVT.SENS.VARS.VAL1.NUM
PROSPER.ANL.CVT.SENS.VARS.VAL1[I]
PROSPER.ANL.CVT.SENS.VARS.VAL2.NUM
313
OpenServer
PROSPER.ANL.CVT.SENS.VARS.VAL2[I]
PROSPER.ANL.CVT.SENS.VARS.VAL3.NUM
PROSPER.ANL.CVT.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.CVT.SENS.VARS.GENFIRST[i]
PROSPER.ANL.CVT.SENS.VARS.GENLAST[i]
PROSPER.ANL.CVT.SENS.VARS.GENNUM[i]
PROSPER.ANL.CVT.SENS.VARS.GENSPACE
[i]
PROSPER.ANL.CVT.SENS.COMB.DATA.
COUNT
PROSPER.ANL.CVT.SENS.COMB.DATA[i].
TYPE
PROSPER.ANL.CVT.SENS.COMB.DATA[i].
RATE
PROSPER.ANL.UST.PIPE
Pipeline Correlation
PROSPER.ANL.UST.TUBING
Tubing Correlation
PROSPER.ANL.UST.TYPE
Rate Type
PROSPER.ANL.UST.RATES.COUNT
314
Number of Rates
i = 0 : PROSPER.ANL.UST.RATES.COUNT-1
PROSPER.ANL.UST.RATES[i]
Rate
PROSPER.ANL.UST.WC
Water Cut
PROSPER.ANL.UST.WGR
PROSPER.ANL.UST.TIME
PROSPER.ANL.UST.SENS.TNODE
First Node
PROSPER.ANL.UST.SENS.BNODE
Last Node
PROSPER.ANL.UST.SENS.TNODETYPE
PROSPER.ANL.UST.SENS.BNODETYPE
PROSPER.ANL.UST.SENS.TNODEDEPTH
PROSPER.ANL.UST.SENS.BNODEDEPTH
PROSPER.ANL.UST.SENS.XPVD
PROSPER.ANL.UST.SENS.YPVD
PROSPER.ANL.UST.SENS.YVAR
X Variable
PROSPER.ANL.UST.SENS.GENFIRST
PROSPER.ANL.UST.SENS.GENLAST
PROSPER.ANL.UST.SENS.GENNUM
PROSPER.ANL.UST.SENS.GENTYPE
PROSPER.ANL.UST.SENS.REFPRES
Reference Pressure
PROSPER.ANL.UST.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.UST.SENS.VARS.VAR1
PROSPER.ANL.UST.SENS.VARS.VAR2
PROSPER.ANL.UST.SENS.VARS.VAR3
PROSPER.ANL.UST.SENS.VARS.UNIT1
PROSPER.ANL.UST.SENS.VARS.UNIT2
PROSPER.ANL.UST.SENS.VARS.UNIT3
PROSPER.ANL.UST.SENS.VARS.VAL1.NUM
PROSPER.ANL.UST.SENS.VARS.VAL1[I]
PROSPER.ANL.UST.SENS.VARS.VAL2.NUM
315
OpenServer
PROSPER.ANL.UST.SENS.VARS.VAL2[I]
PROSPER.ANL.UST.SENS.VARS.VAL3.NUM
PROSPER.ANL.UST.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.UST.SENS.VARS.GENFIRST[i]
PROSPER.ANL.UST.SENS.VARS.GENLAST[i]
PROSPER.ANL.UST.SENS.VARS.GENNUM[i]
PROSPER.ANL.UST.SENS.COMB.DATA[i].
RATE
PROSPER.ANL.UVT.PIPE
Pipeline Correlation
PROSPER.ANL.UVT.TUBING
Tubing Correlation
PROSPER.ANL.UVT.FIRST
First Node
PROSPER.ANL.UVT.LAST
Last Node
PROSPER.ANL.UVT.TYPE
Rate Type
PROSPER.ANL.UVT.RATES.COUNT
Number of Rates
316
i = 0 : PROSPER.ANL.UVT.RATES.COUNT-1
PROSPER.ANL.UVT.RATES[i]
Rate
PROSPER.ANL.UVT.PRES
PROSPER.ANL.UVT.WC
Water Cut
PROSPER.ANL.UVT.WGR
PROSPER.ANL.UVT.TIME
PROSPER.ANL.UVT.TEMP
PROSPER.ANL.UVT.SENS.TNODE
First Node
PROSPER.ANL.UVT.SENS.BNODE
Last Node
PROSPER.ANL.UVT.SENS.TNODETYPE
PROSPER.ANL.UVT.SENS.BNODETYPE
PROSPER.ANL.UVT.SENS.TNODEDEPTH
PROSPER.ANL.UVT.SENS.BNODEDEPTH
PROSPER.ANL.UVT.SENS.XPVD
PROSPER.ANL.UVT.SENS.YPVD
PROSPER.ANL.UVT.SENS.YVAR
X Variable
PROSPER.ANL.UVT.SENS.GENFIRST
PROSPER.ANL.UVT.SENS.GENLAST
PROSPER.ANL.UVT.SENS.GENNUM
PROSPER.ANL.UVT.SENS.GENTYPE
PROSPER.ANL.UVT.SENS.REFPRES
Reference Pressure
PROSPER.ANL.UVT.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.UVT.SENS.VARS.VAR1
PROSPER.ANL.UVT.SENS.VARS.VAR2
PROSPER.ANL.UVT.SENS.VARS.VAR3
PROSPER.ANL.UVT.SENS.VARS.UNIT1
317
OpenServer
PROSPER.ANL.UVT.SENS.VARS.UNIT2
PROSPER.ANL.UVT.SENS.VARS.UNIT3
PROSPER.ANL.UVT.SENS.VARS.VAL1.NUM
PROSPER.ANL.UVT.SENS.VARS.VAL1[I]
PROSPER.ANL.UVT.SENS.VARS.VAL2.NUM
PROSPER.ANL.UVT.SENS.VARS.VAL2[I]
PROSPER.ANL.UVT.SENS.VARS.VAL3.NUM
PROSPER.ANL.UVT.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.UVT.SENS.VARS.GENFIRST[i]
PROSPER.ANL.UVT.SENS.VARS.GENLAST[i]
PROSPER.ANL.UVT.SENS.VARS.GENNUM[i]
PROSPER.ANL.UVT.SENS.VARS.GENSPACE[i]
PROSPER.ANL.UVT.SENS.COMB.DATA[i].UNIT
Combination Variable No of
Values
j = 0 : No of Values-1
PROSPER.ANL.UVT.SENS.COMB.DATA[i].VAL[j] Combination Variable Values
318
PROSPER.ANL.UGT.PIPE
Pipeline Correlation
PROSPER.ANL.UGT.TUBING
Tubing Correlation
PROSPER.ANL.UGT.SLUG
Slug Method
PROSPER.ANL.UGT.FIRST
First Node
PROSPER.ANL.UGT.LAST
Last Node
PROSPER.ANL.UGT.TYPE
Rate Type
PROSPER.ANL.UGT.RATES
Rate
PROSPER.ANL.UGT.PRES
PROSPER.ANL.UGT.WC
Water Cut
PROSPER.ANL.UGT.WGR
PROSPER.ANL.UGT.TIME
PROSPER.ANL.UGT.TEMP
PROSPER.ANL.UGT.SENS.TNODE
First Node
PROSPER.ANL.UGT.SENS.BNODE
Last Node
PROSPER.ANL.UGT.SENS.TNODETYPE
PROSPER.ANL.UGT.SENS.BNODETYPE
PROSPER.ANL.UGT.SENS.TNODEDEPTH
PROSPER.ANL.UGT.SENS.BNODEDEPTH
PROSPER.ANL.UGT.SENS.XPVD
PROSPER.ANL.UGT.SENS.YPVD
PROSPER.ANL.UGT.SENS.YVAR
X Variable
PROSPER.ANL.UGT.SENS.GENFIRST
PROSPER.ANL.UGT.SENS.GENLAST
PROSPER.ANL.UGT.SENS.GENNUM
PROSPER.ANL.UGT.SENS.GENTYPE
319
OpenServer
PROSPER.ANL.UGT.SENS.REFPRES
Reference Pressure
PROSPER.ANL.UGT.SENS.REFTEMP
Reference Temperature
PROSPER.ANL.UGT.SENS.VARS.VAR1
PROSPER.ANL.UGT.SENS.VARS.VAR2
PROSPER.ANL.UGT.SENS.VARS.VAR3
PROSPER.ANL.UGT.SENS.VARS.UNIT1
PROSPER.ANL.UGT.SENS.VARS.UNIT2
PROSPER.ANL.UGT.SENS.VARS.UNIT3
PROSPER.ANL.UGT.SENS.VARS.VAL1.NUM
PROSPER.ANL.UGT.SENS.VARS.VAL1[I]
PROSPER.ANL.UGT.SENS.VARS.VAL2.NUM
PROSPER.ANL.UGT.SENS.VARS.VAL2[I]
PROSPER.ANL.UGT.SENS.VARS.VAL3.NUM
PROSPER.ANL.UGT.SENS.VARS.VAL3[I]
i=0:3
PROSPER.ANL.UGT.SENS.VARS.GENFIRST[i]
PROSPER.ANL.UGT.SENS.VARS.GENLAST[i]
PROSPER.ANL.UGT.SENS.VARS.GENNUM[i]
PROSPER.ANL.UGT.SENS.VARS.GENSPACE
[i]
PROSPER.ANL.UGT.SENS.COMB.DATA.
COUNT
PROSPER.ANL.UGT.SENS.COMB.DATA[i].
TYPE
PROSPER.ANL.UGT.SENS.COMB.DATA[i].
320
RATE
PROSPER.ANL.UGT.SENS.COMB.DATA[i].VAL. Combination Variable No of
Values
COUNT
j = 0 : No of Values-1
PROSPER.ANL.UGT.SENS.COMB.DATA[i].VAL Combination Variable Values
[j]
6.6
321
OpenServer
PROSPER.ANL.GLD.ValveType, i
Valve type:
i = 0 to 2
0 - Casing sensitive
1 - Tubing sensitive
2 - Proportional
PROSPER.ANL.GLD.ValveD1
Min CHP decrease per valve
PROSPER.ANL.GLD.ValveSet, i
Valve settings:
i = 1 to 4
1 - PVc = gas pressure
2 - First valve PVo = gas pressure
3 - All valves PVo = gas pressure
4 - Pmin - Pmax
PROSPER.ANL.GLD.LastValve, i
Injection point:
i = 0 to 1
0 - Injection point is orifice
1 - Injection point is valve
PROSPER.ANL.GLD.Dome, i
Dome pressure correction above 1200psig:
i = 0 to 1
0 - No
1 - Yes
PROSPER.ANL.GLD.SpacngMethod, i Valve spacing method:
i = 0 to 1
0 - Normal
1 - Spacing line procedure
PROSPER.ANL.GLD.CheckRate, i
Check rate conformance with IPR:
i = 0 to 1
0 - Yes
1 - No
PROSPER.ANL.GLD.Tubing
Vertical lift correlation (see
Calculation_Input_Data)
PROSPER.ANL.GLD.Pipe
Surface pipe correlation (see PCC__Pipeline_Correlation_Comparison)
PROSPER.ANL.GLD.CheckIPR, i
User IPr for unloading:
i = 0 to 1
0 - Yes
1 - No
PROSPER.ANL.GLD.Orifice, i
Orifice sizing on:
i = 0 to 1
0 - Calculated dP @ orifice
1 - Min dP across orifice
PROSPER.ANL.GLD.ThornO
De-rating percentage for orifice
PROSPER.ANL.GLD.VALVEDB.
Current valve type manufacturer
MANU
PROSPER.ANL.GLD.VALVEDB.TYPE Valve type folder
PROSPER.ANL.GLD.VALVEDB.
Valve specification
SPEC
322
PROSPER.ANL.GLD.DONERATE
Get rate done flag
PROSPER.ANL.GLD.DONECALC
Calculation done flag
PROSPER.ANL.GLD.FRACTEF
Fraction of TEF
PROSPER.ANL.GLD.DOME
Dome pressure correction above 1200psig
PROSPER.ANL.GLD.MAXPORT
Max port size
PROSPER.ANL.GLD.VALVEDB.SIZE Valve Port Size
PROSPER.ANL.GLD.VALVEDB.RVAL Valve R value
PROSPER.ANL.GLD.VALVE.COUNT Number of mandrels
I = 0 : PROSPER.ANL.GLD.VALVE.
COUNT-1
PROSPER.ANL.GLD.VALVE[0].TYPE Valve type
PROSPER.ANL.GLD.VALVE[i].
Enable flag
ENABLE
PROSPER.ANL.GLD.VALVE[i].
dP casing
CASING
PROSPER.ANL.GLD.Valve[0].GasInj Valve gas lift gas injection value
PROSPER.ANL.GLD.VALVE[i].TVD
True Vertical Depth
PROSPER.ANL.GLD.VALVE[i].
Tubing pressure
TUBPRES
PROSPER.ANL.GLD.VALVE[i].
Casing pressure
CASPRES
PROSPER.ANL.GLD.VALVE[i].
Transfer pressure
TRNPRES
PROSPER.ANL.GLD.VALVE[i].TEMP Temperature
PROSPER.ANL.GLD.VALVE[i].
Gaslift gas rate
GASINJ
PROSPER.ANL.GLD.VALVE[i].PVO Valve opening pressure
PROSPER.ANL.GLD.VALVE[i].PVC Valve closing pressure (at depth)
PROSPER.ANL.GLD.VALVE[i].DOME Dome pressure
PROSPER.ANL.GLD.VALVE[i].TEST Test rack opening pressure
PROSPER.ANL.GLD.VALVE[i].
Opening casing pressure
CASPVO
PROSPER.ANL.GLD.VALVE[i].
Closing casing pressure
CASPVC
PROSPER.ANL.GLD.VALVE[i].
Unloadable gradient
UNLGRD
Calculated from Max Production
PROSPER.ANL.GLD.MaxProd
Oil revenue
Sales gas revenue
Water processing cost
Gas lift gas cost
1990-2011 Petroleum Experts Limited
323
OpenServer
PROSPER.ANL.GLD.MaxProd
324
325
OpenServer
PROSPER.SIN.HSP.Pipe
PROSPER.SIN.HSP.Tubing
PROSPER.SIN.HSP.GDRflag
PROSPER.SIN.HSP.DesPump, Index
PROSPER.SIN.HSP.DesTurb, Index
PROSPER.SIN.PCP.Tubing
326
_Pipeline_Correlation_Comparison)
Tubing correlation (seeTCC__Tubing_Correlation_Comparison)
327
OpenServer
PROSPER.SIN.SRP.Input[13], i
PROSPER.SIN.SRP.Input[23]
PROSPER.SIN.SRP.Input[24]
PROSPER.SIN.SRP.Input[25]
6.7
1 - 1.25-in
2 - 1.50-in
3 - 1.75-in
4 - 1.87-in
5 - 2.00-in
6 - 2.25-in
7 - 2.50-in
8 - 2.75-in
9 - 3.75-in
10 - 4.75-in
Surface stroke length
Bottom hole temperature
Wellhead temperature
Wellhead pressure
Calculation Results
The Calculation Results are accessed using the root name PROSPER.OUT and is split
up into several sections as listed below.
INF
SYS
GRD
QLG
QuickLook - GasLift
QLE
QuickLook - ESP
QLH
QuickLook - HSP
PCP
TCC
GMT
Gradient Matching
VL3
VL4
GEN
SPD
Sensitivity PvD
SPT
GLN
GLE
GLI
ESP
ESP Design
HSP
HSP Design
CST
CVT
UST
UVT
UGT
328
i = 0 : PROSPER.ANL.INF.SENS.VARS.VAL1.NUM-1
j = 0 : PROSPER.ANL.INF.SENS.VARS.VAL2.NUM-1
k = 0 : PROSPER.ANL.INF.SENS.VARS.VAL3.NUM-
329
OpenServer
1
l = 0 : PROSPER.ANL.INF.RATES.COUNT
PROSPER.OUT.INF.RESULTS[i][j][k].LIQRATE[l]
Liquid rate
PROSPER.OUT.INF.RESULTS[i][j][k].OILRATE[l]
Oil rate
PROSPER.OUT.INF.RESULTS[i][j][k].WATRATE[l]
Water rate
PROSPER.OUT.INF.RESULTS[i][j][k].GASRATE[l]
Gas ate
PROSPER.OUT.INF.RESULTS[i][j][k].IPRPRES[l]
Inflow pressure
PROSPER.OUT.INF.RESULTS[i][j][k].DPTOTAL[l]
Total dP skin
PROSPER.OUT.INF.RESULTS[i][j][k].DPPERF[l]
Perforation dP skin
PROSPER.OUT.INF.RESULTS[i][j][k].DPDAM[l]
Damage dP skin
PROSPER.OUT.INF.RESULTS[i][j][k].DPCOMP[l]
Completion dP skin
PROSPER.OUT.INF.RESULTS[i][j][k].DPGRAV[l]
PROSPER.OUT.INF.RESULTS[i][j][k].SKTOTAL[l]
Total skin
PROSPER.OUT.INF.RESULTS[i][j][k].SKCOMP[l]
Completion skin
PROSPER.OUT.INF.RESULTS[i][j][k].SKGRAV[l]
PROSPER.OUT.INF.RESULTS[i][j][k].SKLAM[l]
PROSPER.OUT.INF.RESULTS[i][j][k].SKTURB[l]
PROSPER.OUT.INF.RESULTS[i][j][k].DPLAM[l]
PROSPER.OUT.INF.RESULTS[i][j][k].DPTURB[l]
Turbulence dP skin
(SkinAide)
l = 0 : PROSPER.OUT.SYS.RESULTS[i][j][k].
ML.BRANCHES
Number of Branches
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
BRANCHLABEL[i]
Branch Label
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
BRANCHRATE[i]
Branch Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
BRANCHPRES[i]
Branch Pressure
l = 0 : PROSPER.OUT.SYS.RESULTS[i][j][k].
ML.LAYERS
Number of Layers
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
LAYERLABEL[i]
Layer Label
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
LAYERPI[i]
PI
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
LAYERSKIN[i]
Skin
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
LAYERTOP[i]
Top Depth
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
LAYERBOT[i]
Bottom Depth
l = 0 : PROSPER.OUT.SYS.RESULTS[i][j][k].
ML.SEGMENTS
Number of Segments
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
SEGMDTOP[i]
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
SEGMDBOT[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
SEGRATE[l]
Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
SEGPRES[l]
Pressure
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
SEGRATEPUL[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
SEGCUMRATE[l]
Cumulative Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
Reservoir Pressure
330
331
OpenServer
SEGRESPRES[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].ML.
SEGTVD[l]
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
LIQRATE
Liquid Rate
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
OILRATE
Oil Rate
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
GASRATE
Gas Rate
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
BHP
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHDENLIQUID
Liquid Density
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHDENGAS
Gas Density
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHVISLIQUID
Liquid Viscosity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHVISGAS
Gas Viscosity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHVELLIQUID
Liquid Velocity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHVELGAS
Gas Velocity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHZFACTOR
Z Factor
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHSURFACETENSION
InterFacial Tension
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHPRESSURE
Pressure
First Node Results
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNDENLIQUID
Liquid Density
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNDENGAS
Gas Density
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNVISLIQUID
Liquid Viscosity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNVISGAS
Gas Viscosity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNVELLIQUID
Liquid Velocity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNVELGAS
Gas Velocity
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNZFACTOR
Z Factor
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNSURFACETENSION
InterFacial Tension
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNPRESSURE
Pressure
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
DPTOTALSKIN
Total
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
DPPERFORATION
Perforation dP Skin
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
DPDAMAGE
Damge
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PIP
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PDP
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
INJECTIONDEPTH
Injection Depth
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
DPCOMPLETION
Completion dP Skin
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
COMPLETIONSKIN
Completion Skin
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
GRAVELPACKSKIN
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
TOTALSKIN
Total
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PUMPAVRATE
332
dP Skin
dP Skin
Skin
333
OpenServer
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PUMPHEAD
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PUMPPOWER
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PUMPEFFICIENCY
Pump Efficiency
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
MOTORAMPS
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
MOTORPOWER
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
MOTOREFFICIENCY
Motor Efficiency
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
MOTORSPEED
Motor Speed
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
CABLEVOLTS
Voltage at Surface
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PRFRIC
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PRSTAT
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
WHTEMPERATURE
WH Temperature
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
FNTEMPERATURE
WH Pressure
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
TBLEAK
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
PRETUR
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
HYDRATE
Hydrates Flag
DP Gravel
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
RAT[l]
Rate
SkinAide Results
OpenServer User's Manual
Skin
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[0]
Total
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[l]
Total Laminar
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[2]
Total Turbulent
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[3]
Perforation Geometry
Crushed +Damaged Zone Laminar
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[4]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[5]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[6]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[7]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[8]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[9]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[10]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[11]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[12]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFSKIN[13]
SkinAide Results
DP Skin
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[0]
Total
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[l]
Total Laminar
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[2]
Total Turbulent
PROSPER.OUT.SYS.RESULTS[I][J][K].
Perforation Geometry
334
335
OpenServer
SOL.ELFDPSKIN[3]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[4]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[5]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[6]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[7]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[8]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[9]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[10]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[11]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[12]
PROSPER.OUT.SYS.RESULTS[I][J][K].
SOL.ELFDPSKIN[13]
Layer
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][0]
oil rate
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][1]
gas rate
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][2]
liquid rate
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][3]
pressure
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][4]
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][5]
productivity index
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][6]
skin
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][7]
non-darcy skin
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][8]
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][9]
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][10]
dP skin
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][11]
dP non-darcy skin
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][12]
PROSPER.OUT.SYS.RESULTS[I][J][K].SOL.
ML[l][13]
336
l = 0 : PROSPER.ANL.SYS.RATES.COUNT
Results Per Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].
LIQRATE[l]
Liquid Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].
OILRATE[l]
Oil Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].
WATRATE[l]
Water Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].
GASRATE[l]
Gas Rate
PROSPER.OUT.SYS.RESULTS[i][j][k].
IPRPRES[l]
Inflow Pressure
PROSPER.OUT.SYS.RESULTS[i][j][k].
VLPPRES[l]
Outflow Pressure
PROSPER.OUT.SYS.RESULTS[i][j][k].
DPTOTAL[l]
Total dP Skin
PROSPER.OUT.SYS.RESULTS[i][j][k].
DPPERF[l]
Perforation dP Skin
337
OpenServer
PROSPER.OUT.SYS.RESULTS[i][j][k].
DPDAM[l]
Damage dP Skin
PROSPER.OUT.SYS.RESULTS[i][j][k].
DPCOMP[l]
Completion dP Skin
PROSPER.OUT.SYS.RESULTS[i][j][k].
DPGRAV[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
SKTOTAL[l]
Total Skin
PROSPER.OUT.SYS.RESULTS[i][j][k].
SKCOMP[l]
Completion Skin
PROSPER.OUT.SYS.RESULTS[i][j][k].
SKGRAV[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
SKLAM[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
SKTURB[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
DPLAM[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
DPTURB[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].PIP[l]
Injection Depth
PROSPER.OUT.SYS.RESULTS[i][j][k].
WHPRES[l]
WellHead Pressure
PROSPER.OUT.SYS.RESULTS[i][j][k].
WHTEMP[l]
WellHead Temperature
PROSPER.OUT.SYS.RESULTS[i][j][k].
FNPRES[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
FNTEMP[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
PRFRIC[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
PRSTAT[l]
PROSPER.OUT.SYS.RESULTS[i][j][k].
Hydrates Flag
338
HYDRATE[l]
i = 0 : PROSPER.ANL.GRD.SENS.VARS.VAL1.
NUM-1
Number
j = 0 : PROSPER.ANL.GRD.SENS.VARS.VAL2.
NUM-1
Of
k = 0 : PROSPER.ANL.GRD.SENS.VARS.VAL3.
NUM-1
Sensitivity Values
PROSPER.OUT.GRD.RESULTS[i][j][k].NUM
l = 0 : PROSPER.OUT.GRD.RESULTS[i][j][k].NUM-1
PROSPER.OUT.GRD.RESULTS[i][j][k].REGIME[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].LABEL[l]
Label Number
PROSPER.OUT.GRD.RESULTS[i][j][k].PRES[l]
Pressure
PROSPER.OUT.GRD.RESULTS[i][j][k].TEMP[l]
Fluid Temperature
PROSPER.OUT.GRD.RESULTS[i][j][k].TVD[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].MSD[l]
Measured Depth
PROSPER.OUT.GRD.RESULTS[i][j][k].GRAD[l]
Gradient
PROSPER.OUT.GRD.RESULTS[i][j][k].HOLDUP[l]
Holdup
PROSPER.OUT.GRD.RESULTS[i][j][k].HTC[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].TFO[l]
Formation Temperature
PROSPER.OUT.GRD.RESULTS[i][j][k].GRSTAT[l]
Static Gradient
PROSPER.OUT.GRD.RESULTS[i][j][k].GRFRIC[l]
Friction Gradient
PROSPER.OUT.GRD.RESULTS[i][j][k].VLSLIP[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].VLNSLP[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].VGSLIP[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].VGNSLP[l]
339
OpenServer
PROSPER.OUT.GRD.RESULTS[i][j][k].AVRHSL[l]
Mixture Density
PROSPER.OUT.GRD.RESULTS[i][j][k].PRSTAT[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].PRFRIC[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].CASTEM[l]
Casing temperature
PROSPER.OUT.GRD.RESULTS[i][j][k].ANNTEM[l]
Average annulus
temperature
PROSPER.OUT.GRD.RESULTS[i][j][k].RHOOIL[l]
Gas density
PROSPER.OUT.GRD.RESULTS[i][j][k].RHOGAS[l]
Oil density
PROSPER.OUT.GRD.RESULTS[i][j][k].RHOWAT[l]
Water density
PROSPER.OUT.GRD.RESULTS[i][j][k].DIAINT[l]
Diameter
PROSPER.OUT.GRD.RESULTS[i][j][k].ANGLE[l]
Angle
PROSPER.OUT.GRD.RESULTS[i][j][k].DSTEP[l]
Section length
PROSPER.OUT.GRD.RESULTS[i][j][k].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.GRD.RESULTS[i][j][k].FMUGAS[l]
Gas viscosity
PROSPER.OUT.GRD.RESULTS[i][j][k].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.GRD.RESULTS[i][j][k].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.GRD.RESULTS[i][j][k].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.GRD.RESULTS[i][j][k].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.GRD.RESULTS[i][j][k].SLUGLM[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].SLUGLX[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].BUBLNM[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].BUBLNX[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].SLUGQL[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].SLUGQG[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].BUBLQL[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].BUBLQG[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].SLGFRM[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].SLGFRX[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].SLGHLS[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].SLGHLE[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].CFACTR[l]
C Factor (Erosional
Velocity)
PROSPER.OUT.GRD.RESULTS[i][j][k].SANDDI[l]
PROSPER.OUT.GRD.RESULTS[i][j][k].CORR[l]
Correlation Index
PROSPER.OUT.GRD.RESULTS[i][j][k].HYDRATE[l]
340
Mukerjee Brill
Returned
Index Value
1
2
3
4
5
6
7
8
9
10
1
2
3
4
Flow Regime
Bubble
Plug
Bubble / Slug
Heading
Sklug
Froth
Transition
Mist
Gas
Liquid
Stratified
Wavy
Bubble / Plug
Slug
1990-2011 Petroleum Experts Limited
341
OpenServer
5
6
7
8
9
10
11
Transition
Froth
Dispersed
Annular / Mist
Gas
Liquid
Annular
1
2
3
4
5
6
Liquid
Gas
Distributed
Intermittent
Segregated
Transition
Dukler Flannigan
1
2
3
Liquid
Gas
Two Phase
1
2
3
Liquid
Gas
Two Phase
Petroleum Experts
1
2
3
4
5
Bubble
Slug
Transition
Mist
Gas
Orkiszewski
1
2
3
4
5
Bubble
Slug
Transition
Mist
Gas
Petroleum Experts 2
1
2
3
4
5
Bubble
Slug
Transition
Mist
Gas
1
2
3
4
5
6
7
Bubble
Plug
Bubble / Slug
Heading
Slug
Froth
Transition
8
9
10
Mist
Gas
Liquid
Petroleum Experts 3
1
2
3
4
5
Bubble
Slug
Transition
Mist
Gas
1
2
3
4
5
6
Liquid
Gas
Distributed
Intermittent
Segregated
Transition
1
2
3
4
5
6
7
8
Liquid
Gas
Strat. Smooth
Strat. Wavy
Annular
Slug (normal)
Slug (induced)
Disp. Bubble
1
2
3
4
5
6
7
8
9
Liquid
Gas
Strat. Smooth
Strat. Wavy
Annular
Slug (normal)
Slug (induced)
Disp. Bubble
Slug (DSM)
GRE (Original)
1
2
3
4
5
6
7
8
Liquid
Gas
Strat. Smooth
Strat. Wavy
Annular
Slug (normal)
Slug (induced)
Disp. Bubble
1
2
Liquid
Gas
342
343
OpenServer
3
4
5
6
7
8
Strat. Smooth
Strat. Wavy
Annular
Slug (normal)
Slug (induced)
Disp. Bubble
Petroleum Experts 4
1
2
3
4
5
6
7
8
Liquid
Gas
Strat. Smooth
Strat. Wavy
Annular
Slug (normal)
Slug (induced)
Disp. Bubble
Hydro-3P
0
1
2
3
4
5
6
7
8
Strat. Smooth
Strat. Wavy
Annular
Slug Flow
Bubble Flow
Oil / Water (2P)
Gas (1P)
Oil (1P)
Water (1P)
Petroleum Experts 5
1
2
3
4
5
6
7
8
Liquid
Gas
Strat. Smooth
Strat. Wavy
Annular
Slug (normal)
Slug (induced)
Disp. Bubble
The flow regime numeric value PROSPER returns will have the prefix '10.'
Thus, for Petroleum Experts 5 predicting Annular Flow, the returned index
value will be: 105, etc.
PROSPER.OUT.QLG.DONE
Done Flag
PROSPER.OUT.QLG.XMIN
Minimum Pressure
PROSPER.OUT.QLG.XMAX
Maxmum Pressure
PROSPER.OUT.QLG.YMIN
Minimum Temperature
PROSPER.OUT.QLG.YMAX
Maximum Temperature
344
i ranges from 0 to 1
PROSPER.OUT.QLG.GPRES[i]
Pressure
PROSPER.OUT.QLG.GDEPT[i]
Depth
VALVE INFORMATION
PROSPER.OUT.QLG.VTVD.COUNT
Number of Valves
i = 0 : PROSPER.OUT.QLG.VTVD.COUNT-1
i ranges from 0 to
(COUNT - 1) where
COUNT represents the
Number of valves returned
by the above variable
PROSPER.OUT.QLG.VTVD [i]
PROSPER.OUT.QLG.VOPEN[I]
Opening
PROSPER.OUT.QLG.VCLOS[i]
Closing
PROSPER.OUT.QLG.VTEMP[i]
Temperature
PROSPER.OUT.QLG.VTUBI[i]
Tubing
PROSPER.OUT.QLG.VGASP[i]
Gas
Pressure
Pressure
Pressure
Pressure
GRADIENT RESULTS
i = 0 : Top Down Tubing Gradient
i = 1 : Bottom Up Tubing Gradient
Example to retrieve pressure from Top Down
tubing gradient results:
PROSPER.OUT.QLG.Results[0].Pres[Row Index]
Example to retrieve pressure from Bottom Up
tubing gradient results:
PROSPER.OUT.QLG.Results[1].Pres[Row Index]
345
OpenServer
PROSPER.OUT.QLG.RESULTS[i].NUM
Number of Gradient
Results
j = 0 : PROSPER.OUT.QLG.RESULTS[i].NUM-1
PROSPER.OUT.QLG.RESULTS[i].REGIME[j]
PROSPER.OUT.QLG.RESULTS[i].LABEL[j]
Label Number
PROSPER.OUT.QLG.RESULTS[i].PRES[j]
Pressure
PROSPER.OUT.QLG.RESULTS[i].TEMP[j]
Fluid Temperature
PROSPER.OUT.QLG.RESULTS[i].TVD[j]
PROSPER.OUT.QLG.RESULTS[i].MSD[j]
Measured Depth
PROSPER.OUT.QLG.RESULTS[i].GRAD[j]
Gradient
PROSPER.OUT.QLG.RESULTS[i].HOLDUP[j]
Holdup
PROSPER.OUT.QLG.RESULTS[i].HTC[j]
PROSPER.OUT.QLG.RESULTS[i].TFO[j]
Formation Temperature
PROSPER.OUT.QLG.RESULTS[i].GRSTAT[j]
Static Gradient
PROSPER.OUT.QLG.RESULTS[i].GRFRIC[j]
Friction Gradient
PROSPER.OUT.QLG.RESULTS[i].VLSLIP[j]
PROSPER.OUT.QLG.RESULTS[i].VLNSLP[j]
PROSPER.OUT.QLG.RESULTS[i].VGSLIP[j]
PROSPER.OUT.QLG.RESULTS[i].VGNSLP[j]
PROSPER.OUT.QLG.RESULTS[i].AVRHSL[j]
Mixture Density
PROSPER.OUT.QLG.RESULTS[i].PRSTAT[j]
PROSPER.OUT.QLG.RESULTS[i].PRFRIC[j]
PROSPER.OUT.QLG.RESULTS[i].CASTEM[j]
Casing temperature
PROSPER.OUT.QLG.RESULTS[i].ANNTEM[j]
Average annulus
temperature
PROSPER.OUT.QLG.RESULTS[i].RHOOIL[j]
Gas density
PROSPER.OUT.QLG.RESULTS[i].RHOGAS[j]
Oil density
PROSPER.OUT.QLG.RESULTS[i].RHOWAT[j]
Water density
PROSPER.OUT.QLG.RESULTS[i].DIAINT[j]
Diameter
PROSPER.OUT.QLG.RESULTS[i].ANGLE[j]
Angle
PROSPER.OUT.QLG.RESULTS[i].DSTEP[j]
Section length
PROSPER.OUT.QLG.RESULTS[i].FMULIQ[j]
Liquid viscosity
PROSPER.OUT.QLG.RESULTS[i].FMUGAS[j]
Gas viscosity
PROSPER.OUT.QLG.RESULTS[i].SIGLIQ[j]
Gas-Liquid IFT
PROSPER.OUT.QLG.RESULTS[i].SIGWAT[j]
Gas-Water IFT
PROSPER.OUT.QLG.RESULTS[i].SIGOIL[j]
Gas-Oil IFT
PROSPER.OUT.QLG.RESULTS[i].SIGOW[j]
Oil-Water IFT
PROSPER.OUT.QLG.RESULTS[i].SLUGLM[j]
PROSPER.OUT.QLG.RESULTS[i].SLUGLX[j]
PROSPER.OUT.QLG.RESULTS[i].BUBLNM[j]
PROSPER.OUT.QLG.RESULTS[i].BUBLNX[j]
PROSPER.OUT.QLG.RESULTS[i].SLUGQL[j]
PROSPER.OUT.QLG.RESULTS[i].SLUGQG[j]
PROSPER.OUT.QLG.RESULTS[i].BUBLQL[j]
PROSPER.OUT.QLG.RESULTS[i].BUBLQG[j]
PROSPER.OUT.QLG.RESULTS[i].SLGFRM[j]
PROSPER.OUT.QLG.RESULTS[i].SLGFRX[j]
PROSPER.OUT.QLG.RESULTS[i].SLGHLS[j]
PROSPER.OUT.QLG.RESULTS[i].SLGHLE[j]
PROSPER.OUT.QLG.RESULTS[i].CFACTR[j]
C Factor (Erosional
Velocity)
PROSPER.OUT.QLG.RESULTS[i].SANDDI[j]
PROSPER.OUT.QLG.RESULTS[i].CORR[j]
Correlation Index
PROSPER.OUT.QLG.RESULTS[i].HYDRATE[j]
346
347
OpenServer
Depth
PROSPER.OUT.QLG.RESULTS[0].GASGRAD[k].
PRES
Pressure
PROSPER.OUT.QLG.OUTPUT[0]
PROSPER.OUT.QLG.OUTPUT[1]
Temperature at Valve
PROSPER.OUT.QLG.OUTPUT[2]
GOR
PROSPER.OUT.QLG.OUTPUT[3]
GOR Free
PROSPER.OUT.QLG.OUTPUT[4]
dP Across Valve
PROSPER.OUT.QLG.OUTPUT[5]
Calculated CHP
PROSPER.OUT.QLG.OUTPUT[6]
Drawdown
PROSPER.OUT.QLG.OUTPUT[7]
Equivalent Calculate PI
PROSPER.OUT.QLG.OUTPUT[8]
PROSPER.OUT.QLG.OUTPUT[9]
PROSPER.OUT.QLG.OUTPUT[10]
PROSPER.OUT.QLE.XMIN
Minimum Pressure
PROSPER.OUT.QLE.XMAX
Maximum Pressure
PROSPER.OUT.QLE.YMIN
Minimum Temperature
PROSPER.OUT.QLE.YMAX
Maximum Temperature
PROSPER.OUT.QLE.INPUT[0]
Wellhead pressure
PROSPER.OUT.QLE.INPUT[1]
Liquid Rate
PROSPER.OUT.QLE.INPUT[2]
Water Cut
PROSPER.OUT.QLE.INPUT[3]
Frequency
PROSPER.OUT.QLE.INPUT[4]
PROSPER.OUT.QLE.INPUT[5]
PROSPER.OUT.QLE.INPUT[6]
Reservoir Pressure
PROSPER.OUT.QLE.INPUT[7]
Pump Depth
PROSPER.OUT.QLE.INPUT[8]
Number Of Stages
PROSPER.OUT.QLE.OUTPUT[0]
PROSPER.OUT.QLE.OUTPUT[1]
PROSPER.OUT.QLE.OUTPUT[2]
Motor Efficiency
PROSPER.OUT.QLE.OUTPUT[3]
Voltage At Surface
PROSPER.OUT.QLE.OUTPUT[4]
PROSPER.OUT.QLE.OUTPUT[5]
PROSPER.OUT.QLE.OUTPUT[6]
Downhole Rate
PROSPER.OUT.QLE.OUTPUT[7]
PROSPER.OUT.QLE.OUTPUT[8]
KVA
PROSPER.OUT.QLE.PUMP.MANU
Pump Manufacturer
PROSPER.OUT.QLE.PUMP.NAME
Pump Name
PROSPER.OUT.QLE.PUMP.SIZE
Pump Size
PROSPER.OUT.QLE.PUMP.STAGES
Number of Stages
PROSPER.OUT.QLE.PUMP.FREQUENCY
Pump Frequency
PROSPER.OUT.QLE.PUMP.MINRATE
Minimum Rate
PROSPER.OUT.QLE.PUMP.MAXRATE
Maximum Rate
PROSPER.OUT.QLE.PUMP.HEAD.COEFF [i] i =
0:5
Head Coefficients
348
Motor Series
PROSPER.OUT.QLE.MOTOR.SERIES
Motor Frequency
PROSPER.OUT.QLE.MOTOR.FREQUENCY
Size (OD)
PROSPER.OUT.QLE.MOTOR.DIAMETER
Motor Speed
1990-2011 Petroleum Experts Limited
349
OpenServer
PROSPER.OUT.QLE.MOTOR.SPEED
PROSPER.OUT.QLE.MOTOR.NPA.COEFF [i] i =
0:5
PROSPER.OUT.QLE.MOTOR.HP.COEFF [i] i =
0:5
Maximum
Options
PROSPER.OUT.QLE.MOTOR.MAXPOWER
PROSPER.OUT.QLE.MOTOR.NUMPOWER
Number
of
PROSPER.OUT.QLE.MOTOR.CURPOWER
i = 0 : PROSPER.OUT.QLE.MOTOR.
NUMPOWER-1
Power
PROSPER.OUT.QLE.MOTOR.OPTION[i].POWER Power
PROSPER.OUT.QLE.MOTOR.OPTION[i].VOLTS
Volts
PROSPER.OUT.QLE.MOTOR.OPTION[i].AMPS
Amps
PROSPER.OUT.QLE.MOTOR.OPTION[i].TYPE
Type
PROSPER.OUT.QLE.CABLE.TYPE
Cable Type
PROSPER.OUT.QLE.CABLE.VOLTSDROP
PROSPER.OUT.QLE.CABLE.MAXAMPS
GRADIENT RESULTS
i = 0: Bottom Up Tubing Gradient
i = 1: Top Down Tubing Gradient
Example to retrieve pressure from Bottom Up
tubing gradient results:
PROSPER.OUT.QLE.Results[0].Pres[Row Index]
Example to retrieve pressure from Top Down
tubing gradient results:
PROSPER.OUT.QLE.Results[1].Pres[Row Index]
PROSPER.OUT.QLE.RESULTS[i].NUM
Power
350
l = 0 : PROSPER.OUT.QLE.RESULTS[i].NUM-1
PROSPER.OUT.QLE.RESULTS[i].REGIME[l]
PROSPER.OUT.QLE.RESULTS[i].LABEL[l]
Label Number
PROSPER.OUT.QLE.RESULTS[i].PRES[l]
Pressure
PROSPER.OUT.QLE.RESULTS[i].TEMP[l]
Fluid Temperature
PROSPER.OUT.QLE.RESULTS[i].TVD[l]
PROSPER.OUT.QLE.RESULTS[i].MSD[l]
Measured Depth
PROSPER.OUT.QLE.RESULTS[i].GRAD[l]
Gradient
PROSPER.OUT.QLE.RESULTS[i].HOLDUP[l]
Holdup
PROSPER.OUT.QLE.RESULTS[i].HTC[l]
PROSPER.OUT.QLE.RESULTS[i].TFO[l]
Formation Temperature
PROSPER.OUT.QLE.RESULTS[i].GRSTAT[l]
Static Gradient
PROSPER.OUT.QLE.RESULTS[i].GRFRIC[l]
Friction Gradient
PROSPER.OUT.QLE.RESULTS[i].VLSLIP[l]
PROSPER.OUT.QLE.RESULTS[i].VLNSLP[l]
PROSPER.OUT.QLE.RESULTS[i].VGSLIP[l]
PROSPER.OUT.QLE.RESULTS[i].VGNSLP[l]
PROSPER.OUT.QLE.RESULTS[i].AVRHSL[l]
Mixture Density
PROSPER.OUT.QLE.RESULTS[i].PRSTAT[l]
PROSPER.OUT.QLE.RESULTS[i].PRFRIC[l]
PROSPER.OUT.QLE.RESULTS[i].CASTEM[l]
Casing temperature
PROSPER.OUT.QLE.RESULTS[i].ANNTEM[l]
PROSPER.OUT.QLE.RESULTS[i].RHOOIL[l]
Gas density
PROSPER.OUT.QLE.RESULTS[i].RHOGAS[l]
Oil density
PROSPER.OUT.QLE.RESULTS[i].RHOWAT[l]
Water density
PROSPER.OUT.QLE.RESULTS[i].DIAINT[l]
Diameter
PROSPER.OUT.QLE.RESULTS[i].ANGLE[l]
Angle
PROSPER.OUT.QLE.RESULTS[i].DSTEP[l]
Section length
PROSPER.OUT.QLE.RESULTS[i].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.QLE.RESULTS[i].FMUGAS[l]
Gas viscosity
351
OpenServer
PROSPER.OUT.QLE.RESULTS[i].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.QLE.RESULTS[i].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.QLE.RESULTS[i].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.QLE.RESULTS[i].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.QLE.RESULTS[i].SLUGLM[l]
PROSPER.OUT.QLE.RESULTS[i].SLUGLX[l]
PROSPER.OUT.QLE.RESULTS[i].BUBLNM[l]
PROSPER.OUT.QLE.RESULTS[i].BUBLNX[l]
PROSPER.OUT.QLE.RESULTS[i].SLUGQL[l]
PROSPER.OUT.QLE.RESULTS[i].SLUGQG[l]
PROSPER.OUT.QLE.RESULTS[i].BUBLQL[l]
PROSPER.OUT.QLE.RESULTS[i].BUBLQG[l]
PROSPER.OUT.QLE.RESULTS[i].SLGFRM[l]
PROSPER.OUT.QLE.RESULTS[i].SLGFRX[l]
PROSPER.OUT.QLE.RESULTS[i].SLGHLS[l]
PROSPER.OUT.QLE.RESULTS[i].SLGHLE[l]
PROSPER.OUT.QLE.RESULTS[i].CFACTR[l]
PROSPER.OUT.QLE.RESULTS[i].SANDDI[l]
PROSPER.OUT.QLE.RESULTS[i].CORR[l]
Correlation Index
PROSPER.OUT.QLE.RESULTS[i].HYDRATE[l]
PROSPER.OUT.QLH.XMIN
Minimum Pressure
PROSPER.OUT.QLH.XMAX
Maximum Pressure
PROSPER.OUT.QLH.YMIN
Minimum Temperature
PROSPER.OUT.QLH.YMAX
Maximum Temperature
PROSPER.OUT.QLH.INPUT[0]
WellHead Pressure
PROSPER.OUT.QLH.INPUT[1]
Liquid Rate
PROSPER.OUT.QLH.INPUT[2]
Water Cut
PROSPER.OUT.QLH.INPUT[3]
Pump Speed
PROSPER.OUT.QLH.INPUT[4]
PROSPER.OUT.QLH.INPUT[5]
Reservoir Pressure
PROSPER.OUT.QLH.INPUT[6]
Pump Depth
PROSPER.OUT.QLH.INPUT[7]
Pump Stages
PROSPER.OUT.QLH.INPUT[8]
Turbine Stages
PROSPER.OUT.QLH.OUTPUT[0]
PROSPER.OUT.QLH.OUTPUT[1]
PROSPER.OUT.QLH.OUTPUT[2]
Turbine Efficiency
PROSPER.OUT.QLH.OUTPUT[3]
Pressure At Surface
PROSPER.OUT.QLH.OUTPUT[4]
PROSPER.OUT.QLH.OUTPUT[5]
Pump Discharge
Pressure
PROSPER.OUT.QLH.OUTPUT[6]
Downhole Rate
PROSPER.OUT.QLH.OUTPUT[7]
GOR In Pump
PROSPER.OUT.QLH.OUTPUT[8]
dP Across Turbine
PROSPER.OUT.QLH.OUTPUT[9]
Leak Rate
PROSPER.OUT.QLH.OUTPUT[10]
Pump Torque
PROSPER.OUT.QLH.OUTPUT[11]
Gas Fraction
PROSPER.OUT.QLH.PUMP.MANU
Pump Manufacturer
PROSPER.OUT.QLH.PUMP.NAME
Pump Name
PROSPER.OUT.QLH.PUMP.SIZE
PROSPER.OUT.QLH.PUMP.STAGES
Number of Stages
PROSPER.OUT.QLH.PUMP.MAXSTAGE
Maximum Number of
Stages
PROSPER.OUT.QLH.PUMP.SPEED
Pump Speed
PROSPER.OUT.QLH.PUMP.MINRATE
Minimum Rate
PROSPER.OUT.QLH.PUMP.MAXRATE
Maximum Rate
PROSPER.OUT.QLH.PUMP.MINSPEED
Minimum Speed
352
353
OpenServer
PROSPER.OUT.QLH.PUMP.MAXSPEED
Maximum Speed
Head Coefficients
Power Coefficients
PROSPER.OUT.QLH.TURB.MANU
Turbine Manufacturer
PROSPER.OUT.QLH.TURB.NAME
Turbine Name
PROSPER.OUT.QLH.TURB.REFSPEED
Reference Speed
PROSPER.OUT.QLH.TURB.MAXSPEED
Maximum Speed
PROSPER.OUT.QLH.TURB.MAXTESTPRES
PROSPER.OUT.QLH.TURB.MAXWORKPRES
Maximum Working
Pressure
PROSPER.OUT.QLH.TURB.MAXSTAGEPRES
PROSPER.OUT.QLH.TURB.MAXSTAGES
Maximum Number of
Stages
PROSPER.OUT.QLH.TURB.MAXSUPPLYFLOW
PROSPER.OUT.QLH.TURB.MAXTOTALTORQUE
PROSPER.OUT.QLH.TURB.MAXSTAGETORQUE
PROSPER.OUT.QLH.TURB.CASINGOD
Turbine Casing OD
PROSPER.OUT.QLH.TURB.MAXVELOCITY
GRADIENT RESULTS
i = 0: Bottom Up Tubing Gradient
i = 1: Top Down Tubing Gradient
Example to retrieve pressure from Bottom Up
tubing gradient results:
PROSPER.OUT.QLH.Results[0].Pres[Row Index]
Example to retrieve pressure from Top Down
tubing gradient results:
PROSPER.OUT.QLH.Results[1].Pres[Row Index]
PROSPER.OUT.QLH.RESULTS[i].NUM
Number of Gradient
Results
354
l = 0 : PROSPER.OUT.QLH.RESULTS[i].NUM-1
PROSPER.OUT.QLH.RESULTS[i].REGIME[l]
PROSPER.OUT.QLH.RESULTS[i].LABEL[l]
Label Number
PROSPER.OUT.QLH.RESULTS[i].PRES[l]
Pressure
PROSPER.OUT.QLH.RESULTS[i].TEMP[l]
Fluid Temperature
PROSPER.OUT.QLH.RESULTS[i].TVD[l]
PROSPER.OUT.QLH.RESULTS[i].MSD[l]
Measured Depth
PROSPER.OUT.QLH.RESULTS[i].GRAD[l]
Gradient
PROSPER.OUT.QLH.RESULTS[i].HOLDUP[l]
Holdup
PROSPER.OUT.QLH.RESULTS[i].HTC[l]
PROSPER.OUT.QLH.RESULTS[i].TFO[l]
Formation Temperature
PROSPER.OUT.QLH.RESULTS[i].GRSTAT[l]
Static Gradient
PROSPER.OUT.QLH.RESULTS[i].GRFRIC[l]
Friction Gradient
PROSPER.OUT.QLH.RESULTS[i].VLSLIP[l]
PROSPER.OUT.QLH.RESULTS[i].VLNSLP[l]
PROSPER.OUT.QLH.RESULTS[i].VGSLIP[l]
PROSPER.OUT.QLH.RESULTS[i].VGNSLP[l]
PROSPER.OUT.QLH.RESULTS[i].AVRHSL[l]
Mixture Density
PROSPER.OUT.QLH.RESULTS[i].PRSTAT[l]
PROSPER.OUT.QLH.RESULTS[i].PRFRIC[l]
PROSPER.OUT.QLH.RESULTS[i].CASTEM[l]
Casing temperature
PROSPER.OUT.QLH.RESULTS[i].ANNTEM[l]
Average annulus
temperature
PROSPER.OUT.QLH.RESULTS[i].RHOOIL[l]
Gas density
PROSPER.OUT.QLH.RESULTS[i].RHOGAS[l]
Oil density
PROSPER.OUT.QLH.RESULTS[i].RHOWAT[l]
Water density
PROSPER.OUT.QLH.RESULTS[i].DIAINT[l]
Diameter
PROSPER.OUT.QLH.RESULTS[i].ANGLE[l]
Angle
PROSPER.OUT.QLH.RESULTS[i].DSTEP[l]
Section length
PROSPER.OUT.QLH.RESULTS[i].FMULIQ[l]
Liquid viscosity
355
OpenServer
PROSPER.OUT.QLH.RESULTS[i].FMUGAS[l]
Gas viscosity
PROSPER.OUT.QLH.RESULTS[i].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.QLH.RESULTS[i].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.QLH.RESULTS[i].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.QLH.RESULTS[i].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.QLH.RESULTS[i].SLUGLM[l]
PROSPER.OUT.QLH.RESULTS[i].SLUGLX[l]
PROSPER.OUT.QLH.RESULTS[i].BUBLNM[l]
PROSPER.OUT.QLH.RESULTS[i].BUBLNX[l]
PROSPER.OUT.QLH.RESULTS[i].SLUGQL[l]
PROSPER.OUT.QLH.RESULTS[i].SLUGQG[l]
PROSPER.OUT.QLH.RESULTS[i].BUBLQL[l]
PROSPER.OUT.QLH.RESULTS[i].BUBLQG[l]
PROSPER.OUT.QLH.RESULTS[i].SLGFRM[l]
PROSPER.OUT.QLH.RESULTS[i].SLGFRX[l]
PROSPER.OUT.QLH.RESULTS[i].SLGHLS[l]
PROSPER.OUT.QLH.RESULTS[i].SLGHLE[l]
PROSPER.OUT.QLH.RESULTS[i].CFACTR[l]
C Factor (Erosional
Velocity)
PROSPER.OUT.QLH.RESULTS[i].SANDDI[l]
PROSPER.OUT.QLH.RESULTS[i].CORR[l]
Corrleation Index
PROSPER.OUT.QLH.RESULTS[i].HYDRATE[l]
PROSPER.OUT.PCP.NUM
Number of Correlations
i = 0 : PROSPER.OUT.PCP.NUM-1
PROSPER.OUT.PCP.RESULTS[i].NUM
l = 0 : PROSPER.OUT.PCP.RESULTS[i].NUM-1
356
PROSPER.OUT.PCP.RESULTS[i].REGIME[l]
PROSPER.OUT.PCP.RESULTS[i].LABEL[l]
Label Number
PROSPER.OUT.PCP.RESULTS[i].PRES[l]
Pressure
PROSPER.OUT.PCP.RESULTS[i].TEMP[l]
Fluid Temperature
PROSPER.OUT.PCP.RESULTS[i].TVD[l]
PROSPER.OUT.PCP.RESULTS[i].MSD[l]
Measured Depth
PROSPER.OUT.PCP.RESULTS[i].GRAD[l]
Gradient
PROSPER.OUT.PCP.RESULTS[i].HOLDUP[l]
Holdup
PROSPER.OUT.PCP.RESULTS[i].HTC[l]
PROSPER.OUT.PCP.RESULTS[i].TFO[l]
Formation Temperature
PROSPER.OUT.PCP.RESULTS[i].GRSTAT[l]
Static Gradient
PROSPER.OUT.PCP.RESULTS[i].GRFRIC[l]
Friction Gradient
PROSPER.OUT.PCP.RESULTS[i].VLSLIP[l]
PROSPER.OUT.PCP.RESULTS[i].VLNSLP[l]
PROSPER.OUT.PCP.RESULTS[i].VGSLIP[l]
PROSPER.OUT.PCP.RESULTS[i].VGNSLP[l]
PROSPER.OUT.PCP.RESULTS[i].AVRHSL[l]
Mixture Density
PROSPER.OUT.PCP.RESULTS[i].PRSTAT[l]
PROSPER.OUT.PCP.RESULTS[i].PRFRIC[l]
PROSPER.OUT.PCP.RESULTS[i].CASTEM[l]
Casing temperature
PROSPER.OUT.PCP.RESULTS[i].ANNTEM[l]
PROSPER.OUT.PCP.RESULTS[i].RHOOIL[l]
Gas density
PROSPER.OUT.PCP.RESULTS[i].RHOGAS[l]
Oil density
PROSPER.OUT.PCP.RESULTS[i].RHOWAT[l]
Water density
PROSPER.OUT.PCP.RESULTS[i].DIAINT[l]
Diameter
PROSPER.OUT.PCP.RESULTS[i].ANGLE[l]
Angle
PROSPER.OUT.PCP.RESULTS[i].DSTEP[l]
Section length
PROSPER.OUT.PCP.RESULTS[i].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.PCP.RESULTS[i].FMUGAS[l]
Gas viscosity
PROSPER.OUT.PCP.RESULTS[i].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.PCP.RESULTS[i].SIGWAT[l]
Gas-Water IFT
357
OpenServer
PROSPER.OUT.PCP.RESULTS[i].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.PCP.RESULTS[i].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.PCP.RESULTS[i].SLUGLM[l]
PROSPER.OUT.PCP.RESULTS[i].SLUGLX[l]
PROSPER.OUT.PCP.RESULTS[i].BUBLNM[l]
PROSPER.OUT.PCP.RESULTS[i].BUBLNX[l]
PROSPER.OUT.PCP.RESULTS[i].SLUGQL[l]
PROSPER.OUT.PCP.RESULTS[i].SLUGQG[l]
PROSPER.OUT.PCP.RESULTS[i].BUBLQL[l]
PROSPER.OUT.PCP.RESULTS[i].BUBLQG[l]
PROSPER.OUT.PCP.RESULTS[i].SLGFRM[l]
PROSPER.OUT.PCP.RESULTS[i].SLGFRX[l]
PROSPER.OUT.PCP.RESULTS[i].SLGHLS[l]
PROSPER.OUT.PCP.RESULTS[i].SLGHLE[l]
PROSPER.OUT.PCP.RESULTS[i].CFACTR[l]
PROSPER.OUT.PCP.RESULTS[i].SANDDI[l]
PROSPER.OUT.PCP.RESULTS[i].CORR[l]
Corrleation Index
PROSPER.OUT.PCP.RESULTS[i].HYDRATE[l]
PROSPER.OUT.PCP.RESULTS[i].GASGRAD[l].
NUM
m = 0 : PROSPER.OUT.PCP.RESULTS[i].
GASGRAD[l].NUM-1
PROSPER.OUT.PCP.RESULTS[i].GASGRAD[l].
DEPTH[m]
Depth
PROSPER.OUT.PCP.RESULTS[i].GASGRAD[l].
PRES[m]
Pressure
PROSPER.OUT.TCC.NUM
358
Number of Correlations
i = 0 : PROSPER.OUT.TCC.NUM-1
PROSPER.OUT.TCC.RESULTS[i].NUM
l = 0 : PROSPER.OUT.TCC.RESULTS[i].NUM-1
PROSPER.OUT.TCC.RESULTS[i].REGIME[l]
PROSPER.OUT.TCC.RESULTS[i].LABEL[l]
Label Number
PROSPER.OUT.TCC.RESULTS[i].PRES[l]
Pressure
PROSPER.OUT.TCC.RESULTS[i].TEMP[l]
Fluid Temperature
PROSPER.OUT.TCC.RESULTS[i].TVD[l]
PROSPER.OUT.TCC.RESULTS[i].MSD[l]
Measured Depth
PROSPER.OUT.TCC.RESULTS[i].GRAD[l]
Gradient
PROSPER.OUT.TCC.RESULTS[i].HOLDUP[l]
Holdup
PROSPER.OUT.TCC.RESULTS[i].HTC[l]
PROSPER.OUT.TCC.RESULTS[i].TFO[l]
Formation Temperature
PROSPER.OUT.TCC.RESULTS[i].GRSTAT[l]
Static Gradient
PROSPER.OUT.TCC.RESULTS[i].GRFRIC[l]
Friction Gradient
PROSPER.OUT.TCC.RESULTS[i].VLSLIP[l]
PROSPER.OUT.TCC.RESULTS[i].VLNSLP[l]
PROSPER.OUT.TCC.RESULTS[i].VGSLIP[l]
PROSPER.OUT.TCC.RESULTS[i].VGNSLP[l]
PROSPER.OUT.TCC.RESULTS[i].AVRHSL[l]
Mixture Density
PROSPER.OUT.TCC.RESULTS[i].PRSTAT[l]
PROSPER.OUT.TCC.RESULTS[i].PRFRIC[l]
PROSPER.OUT.TCC.RESULTS[i].CASTEM[l]
Casing temperature
PROSPER.OUT.TCC.RESULTS[i].ANNTEM[l]
PROSPER.OUT.TCC.RESULTS[i].RHOOIL[l]
Gas density
PROSPER.OUT.TCC.RESULTS[i].RHOGAS[l]
Oil density
359
OpenServer
PROSPER.OUT.TCC.RESULTS[i].RHOWAT[l]
Water density
PROSPER.OUT.TCC.RESULTS[i].DIAINT[l]
Diameter
PROSPER.OUT.TCC.RESULTS[i].ANGLE[l]
Angle
PROSPER.OUT.TCC.RESULTS[i].DSTEP[l]
Section length
PROSPER.OUT.TCC.RESULTS[i].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.TCC.RESULTS[i].FMUGAS[l]
Gas viscosity
PROSPER.OUT.TCC.RESULTS[i].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.TCC.RESULTS[i].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.TCC.RESULTS[i].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.TCC.RESULTS[i].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.TCC.RESULTS[i].SLUGLM[l]
PROSPER.OUT.TCC.RESULTS[i].SLUGLX[l]
PROSPER.OUT.TCC.RESULTS[i].BUBLNM[l]
PROSPER.OUT.TCC.RESULTS[i].BUBLNX[l]
PROSPER.OUT.TCC.RESULTS[i].SLUGQL[l]
PROSPER.OUT.TCC.RESULTS[i].SLUGQG[l]
PROSPER.OUT.TCC.RESULTS[i].BUBLQL[l]
PROSPER.OUT.TCC.RESULTS[i].BUBLQG[l]
PROSPER.OUT.TCC.RESULTS[i].SLGFRM[l]
PROSPER.OUT.TCC.RESULTS[i].SLGFRX[l]
PROSPER.OUT.TCC.RESULTS[i].SLGHLS[l]
PROSPER.OUT.TCC.RESULTS[i].SLGHLE[l]
PROSPER.OUT.TCC.RESULTS[i].CFACTR[l]
PROSPER.OUT.TCC.RESULTS[i].SANDDI[l]
PROSPER.OUT.TCC.RESULTS[i].CORR[l]
Corrleation Index
PROSPER.OUT.TCC.RESULTS[i].HYDRATE[l]
360
PROSPER.OUT.TCC.RESULTS[i].GASGRAD[l]. Depth
DEPTH[m]
PROSPER.OUT.TCC.RESULTS[i].GASGRAD[l]. Pressure
PRES[m]
PROSPER.OUT.GMT.NUM
Number of Correlations
i = 0 : PROSPER.OUT.GMT.NUM-1
PROSPER.OUT.GMT.RESULTS[i].NUM
l = 0 : PROSPER.OUT.GMT.RESULTS[i].NUM-1
PROSPER.OUT.GMT.RESULTS[i].REGIME[l]
PROSPER.OUT.GMT.RESULTS[i].LABEL[l]
Label Number
PROSPER.OUT.GMT.RESULTS[i].PRES[l]
Pressure
PROSPER.OUT.GMT.RESULTS[i].TEMP[l]
Fluid Temperature
PROSPER.OUT.GMT.RESULTS[i].TVD[l]
PROSPER.OUT.GMT.RESULTS[i].MSD[l]
Measured Depth
PROSPER.OUT.GMT.RESULTS[i].GRAD[l]
Gradient
PROSPER.OUT.GMT.RESULTS[i].HOLDUP[l]
Holdup
PROSPER.OUT.GMT.RESULTS[i].HTC[l]
PROSPER.OUT.GMT.RESULTS[i].TFO[l]
Formation Temperature
PROSPER.OUT.GMT.RESULTS[i].GRSTAT[l]
Static Gradient
PROSPER.OUT.GMT.RESULTS[i].GRFRIC[l]
Friction Gradient
PROSPER.OUT.GMT.RESULTS[i].VLSLIP[l]
PROSPER.OUT.GMT.RESULTS[i].VLNSLP[l]
PROSPER.OUT.GMT.RESULTS[i].VGSLIP[l]
PROSPER.OUT.GMT.RESULTS[i].VGNSLP[l]
PROSPER.OUT.GMT.RESULTS[i].AVRHSL[l]
Mixture Density
1990-2011 Petroleum Experts Limited
361
OpenServer
PROSPER.OUT.GMT.RESULTS[i].PRSTAT[l]
PROSPER.OUT.GMT.RESULTS[i].PRFRIC[l]
PROSPER.OUT.GMT.RESULTS[i].CASTEM[l]
Casing temperature
PROSPER.OUT.GMT.RESULTS[i].ANNTEM[l]
PROSPER.OUT.GMT.RESULTS[i].RHOOIL[l]
Gas density
PROSPER.OUT.GMT.RESULTS[i].RHOGAS[l]
Oil density
PROSPER.OUT.GMT.RESULTS[i].RHOWAT[l]
Water density
PROSPER.OUT.GMT.RESULTS[i].DIAINT[l]
Diameter
PROSPER.OUT.GMT.RESULTS[i].ANGLE[l]
Angle
PROSPER.OUT.GMT.RESULTS[i].DSTEP[l]
Section length
PROSPER.OUT.GMT.RESULTS[i].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.GMT.RESULTS[i].FMUGAS[l]
Gas viscosity
PROSPER.OUT.GMT.RESULTS[i].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.GMT.RESULTS[i].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.GMT.RESULTS[i].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.GMT.RESULTS[i].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.GMT.RESULTS[i].SLUGLM[l]
PROSPER.OUT.GMT.RESULTS[i].SLUGLX[l]
PROSPER.OUT.GMT.RESULTS[i].BUBLNM[l]
PROSPER.OUT.GMT.RESULTS[i].BUBLNX[l]
PROSPER.OUT.GMT.RESULTS[i].SLUGQL[l]
PROSPER.OUT.GMT.RESULTS[i].SLUGQG[l]
PROSPER.OUT.GMT.RESULTS[i].BUBLQL[l]
PROSPER.OUT.GMT.RESULTS[i].BUBLQG[l]
PROSPER.OUT.GMT.RESULTS[i].SLGFRM[l]
PROSPER.OUT.GMT.RESULTS[i].SLGFRX[l]
PROSPER.OUT.GMT.RESULTS[i].SLGHLS[l]
PROSPER.OUT.GMT.RESULTS[i].SLGHLE[l]
PROSPER.OUT.GMT.RESULTS[i].CFACTR[l]
PROSPER.OUT.GMT.RESULTS[i].SANDDI[l]
PROSPER.OUT.GMT.RESULTS[i].CORR[l]
Corrleation Index
PROSPER.OUT.GMT.RESULTS[i].HYDRATE[l]
362
i = 0 : PROSPER.ANL.VL3.SENS.VARS.
VAL1.NUM-1
Number
j = 0 : PROSPER.ANL.VL3.SENS.VARS.
VAL2.NUM-1
Of
k = 0 : PROSPER.ANL.VL3.SENS.VARS.
VAL3.NUM-1
Sensitivity Values
Liquid Rate
363
OpenServer
LIQRATE [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
OILRATE [l]
Oil Rate
PROSPER.OUT.VL3.RESULTS[i][j][k].
WATRATE [l]
Water Rate
PROSPER.OUT.VL3.RESULTS[i][j][k].
GASRATE [l]
Gas
PROSPER.OUT.VL3.RESULTS[i][j][k].
VLPPRES [l]
VLP Pressure
PROSPER.OUT.VL3.RESULTS[i][j][k].PIP
[l]
Pump Intake
PROSPER.OUT.VL3.RESULTS[i][j][k].PDP
[l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
DEPTH [l]
Injection Depth
PROSPER.OUT.VL3.RESULTS[i][j][k].
WHPRES [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
WHTEMP [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
FNPRES [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
FNTEMP [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
PRFRIC [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
PRSTAT [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
PMPPOWER[l]
Pump Power
PROSPER.OUT.VL3.RESULTS[i][j][k].
PMPEFF [l]
Pump Efficiency
PROSPER.OUT.VL3.RESULTS[i][j][k].
PMPHEAD [l]
Pump Head
PROSPER.OUT.VL3.RESULTS[i][j][k].
PMPRATE [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
MOTCURR [l]
Motor Current
Rate
Pressure
PROSPER.OUT.VL3.RESULTS[i][j][k].
MOTPOW [l]
Motor Power
PROSPER.OUT.VL3.RESULTS[i][j][k].
MOTEFF [l]
Motor Efficiency
PROSPER.OUT.VL3.RESULTS[i][j][k].
MOTRPM [l]
Motor Speed
PROSPER.OUT.VL3.RESULTS[i][j][k].
VLTSURF [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
CABTEMP [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
VLTDROP [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
HYDRATE [l]
PROSPER.OUT.VL3.RESULTS[i][j][k].
EROSION [l]
364
i = 0 : PROSPER.ANL.VL4.SENS.VARS.
VAL1.NUM-1
Number
j = 0 : PROSPER.ANL.VL4.SENS.VARS.
VAL2.NUM-1
Of
k = 0 : PROSPER.ANL.VL4.SENS.VARS.
VAL3.NUM-1
Sensitivity
l = 0 : PROSPER.ANL.VL4.SENS.VARS.
VAL4.NUM-1
Variables
m = 0 : PROSPER.ANL.VL4.RATES.
COUNT-1
Number of Rates
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
LIQRATE [m]
Liquid Rate
365
OpenServer
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
OILRATE [m]
Oil Rate
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
WATRATE [m]
Water Rate
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
GASRATE [m]
Gas
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
VLPPRES [m]
VLP Pressure
Rate
Pressure
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
PDP [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
DEPTH [m]
Injection Depth
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
WHPRES [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
WHTEMP [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
FNPRES [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
FNTEMP [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
PRFRIC [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
PRSTAT [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
PMPPOWER[m]
Pump Power
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
PMPEFF [m]
Pump Efficiency
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
PMPHEAD [m]
Pump Head
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
PMPRATE [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
MOTCURR [m]
Motor Current
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
Motor Power
366
MOTPOW [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
MOTEFF [m]
Motor Efficiency
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
MOTRPM [m]
Motor Speed
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
VLTSURF [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
CABTEMP [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
VLTDROP [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
HYDRATE [m]
PROSPER.OUT.VL4.RESULTS[i][j][k][l].
EROSION [m]
Liquid Rate
Prosper.OUT.GEN.Results[i][j].OilRate[k]
Oil Rate
Prosper.OUT.GEN.Results[i][j].IPRpres[k]
Inflow Pressure
Prosper.OUT.GEN.Results[i][j].VLPpres[k]
Outflow Pressure
Prosper.OUT.GEN.Results[i][j].DpTotal[k]
Total dP Skin
Prosper.OUT.GEN.Results[i][j].DPPerf[k]
Perforation dP Skin
Prosper.OUT.GEN.Results[i][j].DPDam[k]
Damage dP Skin
367
OpenServer
Prosper.OUT.GEN.Results[i][j].DPComp[k]
Completion dP Skin
Prosper.OUT.GEN.Results[i][j].DPGrav[k]
Gravity dP Skin
Prosper.OUT.GEN.Results[i][j].SKTotal[k]
Total Skin
Prosper.OUT.GEN.Results[i][j].SKComp[k]
Completion Skin
Prosper.OUT.GEN.Results[i][j].SKGrav[k]
Prosper.OUT.GEN.Results[i][j].VcGrav[k]
Prosper.OUT.GEN.Results[i][j].VsGrav[k]
Prosper.OUT.GEN.Results[i][j].PIP[k]
Prosper.OUT.GEN.Results[i][j].PDP[k]
Pump Discharge
Pressure
Prosper.OUT.GEN.Results[i][j].Depth[k]
Injection Depth
Prosper.OUT.GEN.Results[i][j].WHpres[k]
Wellhead Pressure
Prosper.OUT.GEN.Results[i][j].WHtemp[k]
Wellhead Temperature
Prosper.OUT.GEN.Results[i][j].FNtemp[k]
Prosper.OUT.GEN.Results[i][j].PrFric[k]
Prosper.OUT.GEN.Results[i][j].PrStat[k]
Prosper.OUT.GEN.Results[i][j].Hydrate[k]
Hydrates Flag
Prosper.OUT.GEN.Results[i][j].Turner[k]
Turner Velocity
Prosper.OUT.GEN.Results[i][j].Erosion[k]
Erosional Velocity
Prosper.OUT.GEN.Results[i][j].Cavitation[k]
Cavitation
SOLUTION DATA
PROSPER.OUT.GEN.Results[i][j].Sol.LiqRate
Liquid Rate
PROSPER.OUT.GEN.Results[i][j].Sol.OilRate
Oil Rate
PROSPER.OUT.GEN.Results[i][j].Sol.GasRate
Gas Rate
PROSPER.OUT.GEN.Results[i][j].Sol.WatRate
Water Rate
PROSPER.OUT.GEN.Results[i][j].Sol.WC
Water Cut
PROSPER.OUT.GEN.Results[i][j].Sol.BHP
BHP
PROSPER.OUT.GEN.Results[i][j].Sol.THT
Tubing Head
Temperature
368
PROSPER.OUT.GEN.Results[i][j].Sol.FNP
PROSPER.OUT.GEN.Results[i][j].Sol.FNT
PROSPER.OUT.GEN.Results[i][j].Sol.WHDenLiquid
Liquid Density
PROSPER.OUT.GEN.Results[i][j].Sol.WHDenGas
Gas Density
PROSPER.OUT.GEN.Results[i][j].Sol.WHVisLiquid
Liquid Density
PROSPER.OUT.GEN.Results[i][j].Sol.WHVisGas
Gas Viscosity
PROSPER.OUT.GEN.Results[i][j].Sol.WHVelLiquid
Liquid Velocity
PROSPER.OUT.GEN.Results[i][j].Sol.WHVelGas
Gas Velocity
PROSPER.OUT.GEN.Results[i][j].Sol.WHZFactor
Z Factor
PROSPER.OUT.GEN.Results[i][j].Sol.
WHSurfaceTension
Interfacial Tension
PROSPER.OUT.GEN.Results[i][j].Sol.WHPressure
Pressure
FIRST NODE RESULTS
PROSPER.OUT.GEN.Results[i][j].Sol.FNDenLiquid
Liquid density
PROSPER.OUT.GEN.Results[i][j].Sol.FNDenGas
Gas Density
PROSPER.OUT.GEN.Results[i][j].Sol.FNVisLiquid
Liquid Viscosity
PROSPER.OUT.GEN.Results[i][j].Sol.FNVisGas
Gas Vscosity
PROSPER.OUT.GEN.Results[i][j].Sol.FNVelLiquid
Liquid Velocity
PROSPER.OUT.GEN.Results[i][j].Sol.FNVelGas
Gas Velocity
PROSPER.OUT.GEN.Results[i][j].Sol.FNZFactor
Z Factor
PROSPER.OUT.GEN.Results[i][j].Sol.
FNSurfaceTension
Interfacial Tension
PROSPER.OUT.GEN.Results[i][j].Sol.FNPressure
Pressure
SKIN RESULTS
PROSPER.OUT.GEN.Results[i][j].Sol.dPTotalSkin
Total Skin dP
PROSPER.OUT.GEN.Results[i][j].Sol.dPPerforation
Perforation dP
PROSPER.OUT.GEN.Results[i][j].Sol.dPDamage
Damage Skin dP
PROSPER.OUT.GEN.Results[i][j].Sol.dPCompletion
dP Completion Skin
369
OpenServer
PROSPER.OUT.GEN.Results[i][j].Sol.CompletionSkin
Completion Skin
PROSPER.OUT.GEN.Results[i][j].Sol.GravelPackSkin
PROSPER.OUT.GEN.Results[i][j].Sol.TotalSkin
Total Skin
PROSPER.OUT.GEN.Results[i][j].Sol.PumpAvRate
PROSPER.OUT.GEN.Results[i][j].Sol.PIP
PROSPER.OUT.GEN.Results[i][j].Sol.PDP
PROSPER.OUT.GEN.Results[i][j].Sol.InjectionDepth
Injection Depth
PROSPER.OUT.GEN.Results[i][j].Sol.PumpHead
Pump Head
PROSPER.OUT.GEN.Results[i][j].Sol.PumpPower
Pump Power
PROSPER.OUT.GEN.Results[i][j].Sol.PumpEfficiency
Pump Efficiency
PROSPER.OUT.GEN.Results[i][j].Sol.PRFRIC
PROSPER.OUT.GEN.Results[i][j].Sol.PRSTAT
PROSPER.OUT.GEN.Results[i][j].Sol.WHTemperature
Wellhead Temperature
PROSPER.OUT.GEN.Results[i][j].Sol.FNTemperature
PROSPER.OUT.GEN.Results[i][j].Sol.Hydrate
Hydrates Flag
PROSPER.OUT.GEN.Results[i][j].Sol.dpGravel
Gravel Pack dP
PROSPER.OUT.GEN.Results[i][j].Sol.vcGravel
PROSPER.OUT.GEN.Results[i][j].Sol.vsGravel
PROSPER.OUT.GEN.Results[i][j].Sol.Grvgas
Gas Gravity
PROSPER.OUT.GEN.Results[i][j].Sol.OilAPI
Oil API
PROSPER.OUT.GEN.Results[i][j].Sol.GorTOT
Total GOR
PROSPER.OUT.SPD.RESULTS[0].NUM
370
l = 0 : PROSPER.OUT.SPD.RESULTS[0].NUM-1
PROSPER.OUT.SPD.RESULTS[0].REGIME[l]
PROSPER.OUT.SPD.RESULTS[0].LABEL[l]
Label Number
PROSPER.OUT.SPD.RESULTS[0].PRES[l]
Pressure
PROSPER.OUT.SPD.RESULTS[0].TEMP[l]
Fluid Temperature
PROSPER.OUT.SPD.RESULTS[0].TVD[l]
PROSPER.OUT.SPD.RESULTS[0].MSD[l]
Measured Depth
PROSPER.OUT.SPD.RESULTS[0].GRAD[l]
Gradient
PROSPER.OUT.SPD.RESULTS[0].HOLDUP[l]
Holdup
PROSPER.OUT.SPD.RESULTS[0].HTC[l]
PROSPER.OUT.SPD.RESULTS[0].TFO[l]
Formation Temperature
PROSPER.OUT.SPD.RESULTS[0].GRSTAT[l]
Static Gradient
PROSPER.OUT.SPD.RESULTS[0].GRFRIC[l]
Friction Gradient
PROSPER.OUT.SPD.RESULTS[0].VLSLIP[l]
PROSPER.OUT.SPD.RESULTS[0].VLNSLP[l]
PROSPER.OUT.SPD.RESULTS[0].VGSLIP[l]
PROSPER.OUT.SPD.RESULTS[0].VGNSLP[l]
PROSPER.OUT.SPD.RESULTS[0].AVRHSL[l]
Mixture Density
PROSPER.OUT.SPD.RESULTS[0].PRSTAT[l]
PROSPER.OUT.SPD.RESULTS[0].PRFRIC[l]
PROSPER.OUT.SPD.RESULTS[0].CASTEM[l]
Casing temperature
PROSPER.OUT.SPD.RESULTS[0].ANNTEM[l]
PROSPER.OUT.SPD.RESULTS[0].RHOOIL[l]
Gas density
PROSPER.OUT.SPD.RESULTS[0].RHOGAS[l]
Oil density
PROSPER.OUT.SPD.RESULTS[0].RHOWAT[l]
Water density
PROSPER.OUT.SPD.RESULTS[0].DIAINT[l]
Diameter
PROSPER.OUT.SPD.RESULTS[0].ANGLE[l]
Angle
PROSPER.OUT.SPD.RESULTS[0].DSTEP[l]
Section length
PROSPER.OUT.SPD.RESULTS[0].FMULIQ[l]
Liquid viscosity
371
OpenServer
PROSPER.OUT.SPD.RESULTS[0].FMUGAS[l]
Gas viscosity
PROSPER.OUT.SPD.RESULTS[0].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.SPD.RESULTS[0].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.SPD.RESULTS[0].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.SPD.RESULTS[0].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.SPD.RESULTS[0].SLUGLM[l]
PROSPER.OUT.SPD.RESULTS[0].SLUGLX[l]
PROSPER.OUT.SPD.RESULTS[0].BUBLNM[l]
PROSPER.OUT.SPD.RESULTS[0].BUBLNX[l]
PROSPER.OUT.SPD.RESULTS[0].SLUGQL[l]
PROSPER.OUT.SPD.RESULTS[0].SLUGQG[l]
PROSPER.OUT.SPD.RESULTS[0].BUBLQL[l]
PROSPER.OUT.SPD.RESULTS[0].BUBLQG[l]
PROSPER.OUT.SPD.RESULTS[0].SLGFRM[l]
PROSPER.OUT.SPD.RESULTS[0].SLGFRX[l]
PROSPER.OUT.SPD.RESULTS[0].SLGHLS[l]
PROSPER.OUT.SPD.RESULTS[0].SLGHLE[l]
PROSPER.OUT.SPD.RESULTS[0].CFACTR[l]
PROSPER.OUT.SPD.RESULTS[0].SANDDI[l]
PROSPER.OUT.SPD.RESULTS[0].CORR[l]
Corrleation Index
PROSPER.OUT.SPD.RESULTS[0].HYDRATE[l]
372
PROSPER.OUT.SPT.RESULTS[0].NUM
l = 0 : PROSPER.OUT.SPT.RESULTS[0].NUM-1
PROSPER.OUT.SPT.RESULTS[0].REGIME[l]
PROSPER.OUT.SPT.RESULTS[0].LABEL[l]
Label Number
PROSPER.OUT.SPT.RESULTS[0].PRES[l]
Pressure
PROSPER.OUT.SPT.RESULTS[0].TEMP[l]
Fluid Temperature
PROSPER.OUT.SPT.RESULTS[0].TVD[l]
PROSPER.OUT.SPT.RESULTS[0].MSD[l]
Measured Depth
PROSPER.OUT.SPT.RESULTS[0].GRAD[l]
Gradient
PROSPER.OUT.SPT.RESULTS[0].HOLDUP[l]
Holdup
PROSPER.OUT.SPT.RESULTS[0].HTC[l]
PROSPER.OUT.SPT.RESULTS[0].TFO[l]
Formation Temperature
PROSPER.OUT.SPT.RESULTS[0].GRSTAT[l]
Static Gradient
PROSPER.OUT.SPT.RESULTS[0].GRFRIC[l]
Friction Gradient
PROSPER.OUT.SPT.RESULTS[0].VLSLIP[l]
PROSPER.OUT.SPT.RESULTS[0].VLNSLP[l]
PROSPER.OUT.SPT.RESULTS[0].VGSLIP[l]
PROSPER.OUT.SPT.RESULTS[0].VGNSLP[l]
PROSPER.OUT.SPT.RESULTS[0].AVRHSL[l]
Mixture Density
PROSPER.OUT.SPT.RESULTS[0].PRSTAT[l]
PROSPER.OUT.SPT.RESULTS[0].PRFRIC[l]
PROSPER.OUT.SPT.RESULTS[0].CASTEM[l]
Casing temperature
PROSPER.OUT.SPT.RESULTS[0].ANNTEM[l]
PROSPER.OUT.SPT.RESULTS[0].RHOOIL[l]
Gas density
PROSPER.OUT.SPT.RESULTS[0].RHOGAS[l]
Oil density
PROSPER.OUT.SPT.RESULTS[0].RHOWAT[l]
Water density
1990-2011 Petroleum Experts Limited
373
OpenServer
PROSPER.OUT.SPT.RESULTS[0].DIAINT[l]
Diameter
PROSPER.OUT.SPT.RESULTS[0].ANGLE[l]
Angle
PROSPER.OUT.SPT.RESULTS[0].DSTEP[l]
Section length
PROSPER.OUT.SPT.RESULTS[0].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.SPT.RESULTS[0].FMUGAS[l]
Gas viscosity
PROSPER.OUT.SPT.RESULTS[0].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.SPT.RESULTS[0].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.SPT.RESULTS[0].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.SPT.RESULTS[0].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.SPT.RESULTS[0].SLUGLM[l]
PROSPER.OUT.SPT.RESULTS[0].SLUGLX[l]
PROSPER.OUT.SPT.RESULTS[0].BUBLNM[l]
PROSPER.OUT.SPT.RESULTS[0].BUBLNX[l]
PROSPER.OUT.SPT.RESULTS[0].SLUGQL[l]
PROSPER.OUT.SPT.RESULTS[0].SLUGQG[l]
PROSPER.OUT.SPT.RESULTS[0].BUBLQL[l]
PROSPER.OUT.SPT.RESULTS[0].BUBLQG[l]
PROSPER.OUT.SPT.RESULTS[0].SLGFRM[l]
PROSPER.OUT.SPT.RESULTS[0].SLGFRX[l]
PROSPER.OUT.SPT.RESULTS[0].SLGHLS[l]
PROSPER.OUT.SPT.RESULTS[0].SLGHLE[l]
PROSPER.OUT.SPT.RESULTS[0].CFACTR[l]
PROSPER.OUT.SPT.RESULTS[0].SANDDI[l]
PROSPER.OUT.SPT.RESULTS[0].CORR[l]
Corrleation Index
PROSPER.OUT.SPT.RESULTS[0].HYDRATE[l]
PROSPER.OUT.SPT.RESULTS[0].GASGRAD[l].
NUM
Number of Points
m = 0 : PROSPER.OUT.SPT.RESULTS[0].
GASGRAD[l].NUM-1
PROSPER.OUT.SPT.RESULTS[0].GASGRAD[l].
Depth
374
DEPTH[m]
PROSPER.OUT.SPT.RESULTS[0].GASGRAD[l].
PRES[m]
Pressure
PROSPER.OUT.GLN.MATCHR[i]
PROSPER.OUT.GLN.NUMPC
No of Points in Performance
Curve
i = 0 : PROSPER.OUT.GLN.NUMPC-1
PROSPER.OUT.GLN.PCX[i]
GLR Injected
PROSPER.OUT.GLN.PCY[i]
GLR Injected
PROSPER.OUT.GLN.CLL
Liquid Rate
PROSPER.OUT.GLN.CLO
Oil Rate
PROSPER.OUT.GLN.VLP
VLP Pressure
PROSPER.OUT.GLN.IPR
IPR PRessure
PROSPER.OUT.GLN.STD
PROSPER.OUT.GLN.GMX
PROSPER.OUT.GLN.OMX
Objective Gradient
PROSPER.OUT.GLN.MSD
PROSPER.OUT.GLN.TVD
PROSPER.OUT.GLN.PRS
Pressure
PROSPER.OUT.GLN.TMP
Temperature
375
OpenServer
PROSPER.OUT.GLN.GAS
PROSPER.OUT.GLN.NVPLOT
Number of Points
i= 0 : PROSPER.OUT.GLN.NVPLOT-1
PROSPER.OUT.GLN.COMPFL[i]
PROSPER.OUT.GLN.DPPLOT[i]
PROSPER.OUT.GLN.LISTBOX.COUNT
i= 0 : PROSPER.OUT.GLN.LISTBOX.COUNT-1
PROSPER.OUT.GLN.LISTBOX[i]
Descriptive text
PROSPER.OUT.GLN.NVALR
Number of Valves
i= 0 : PROSPER.OUT.GLN.NVALR-1
PROSPER.OUT.GLN.PORT[i]
Port Size
PROSPER.OUT.GLN.PTRTVD[i]
PROSPER.OUT.GLN.PTRPRS[i]
PROSPER.OUT.GLN.PMAXAR[i]
PROSPER.OUT.GLN.PREFAR[i]
PROSPER.OUT.GLN.PGARRR[i]
PROSPER.OUT.GLN.PMINAR[i]
PROSPER.OUT.GLN.DELTEF[i]
PROSPER.OUT.GLN.LEGEND[0]
PROSPER.OUT.GLN.LEGEND[1]
PROSPER.OUT.GLN.LEGEND[2]
PROSPER.OUT.GLN.LEGEND[3]
Water Cut
PROSPER.OUT.GLN.LEGEND[4]
PROSPER.OUT.GLN.LEGEND[5]
376
PROSPER.OUT.GLN.LEGEND[6]
PROSPER.OUT.GLN.LEGEND[7]
PROSPER.OUT.GLN.RESULTS[0].NUM
l = 0 : PROSPER.OUT.GLN.RESULTS[0].NUM-1
PROSPER.OUT.GLN.RESULTS[0].REGIME[l]
PROSPER.OUT.GLN.RESULTS[0].LABEL[l]
Label Number
PROSPER.OUT.GLN.RESULTS[0].PRES[l]
Pressure
PROSPER.OUT.GLN.RESULTS[0].TEMP[l]
Fluid Temperature
PROSPER.OUT.GLN.RESULTS[0].TVD[l]
PROSPER.OUT.GLN.RESULTS[0].MSD[l]
Measured Depth
PROSPER.OUT.GLN.RESULTS[0].GRAD[l]
Gradient
PROSPER.OUT.GLN.RESULTS[0].HOLDUP[l]
Holdup
PROSPER.OUT.GLN.RESULTS[0].HTC[l]
PROSPER.OUT.GLN.RESULTS[0].TFO[l]
Formation Temperature
PROSPER.OUT.GLN.RESULTS[0].GRSTAT[l]
Static Gradient
PROSPER.OUT.GLN.RESULTS[0].GRFRIC[l]
Friction Gradient
PROSPER.OUT.GLN.RESULTS[0].VLSLIP[l]
PROSPER.OUT.GLN.RESULTS[0].VLNSLP[l]
PROSPER.OUT.GLN.RESULTS[0].VGSLIP[l]
PROSPER.OUT.GLN.RESULTS[0].VGNSLP[l]
PROSPER.OUT.GLN.RESULTS[0].AVRHSL[l]
Mixture Density
PROSPER.OUT.GLN.RESULTS[0].PRSTAT[l]
PROSPER.OUT.GLN.RESULTS[0].PRFRIC[l]
PROSPER.OUT.GLN.RESULTS[0].CASTEM[l]
Casing temperature
PROSPER.OUT.GLN.RESULTS[0].ANNTEM[l]
PROSPER.OUT.GLN.RESULTS[0].RHOOIL[l]
Gas density
PROSPER.OUT.GLN.RESULTS[0].RHOGAS[l]
Oil density
PROSPER.OUT.GLN.RESULTS[0].RHOWAT[l]
Water density
377
OpenServer
PROSPER.OUT.GLN.RESULTS[0].DIAINT[l]
Diameter
PROSPER.OUT.GLN.RESULTS[0].ANGLE[l]
Angle
PROSPER.OUT.GLN.RESULTS[0].DSTEP[l]
Section length
PROSPER.OUT.GLN.RESULTS[0].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.GLN.RESULTS[0].FMUGAS[l]
Gas viscosity
PROSPER.OUT.GLN.RESULTS[0].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.GLN.RESULTS[0].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.GLN.RESULTS[0].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.GLN.RESULTS[0].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.GLN.RESULTS[0].SLUGLM[l]
PROSPER.OUT.GLN.RESULTS[0].SLUGLX[l]
PROSPER.OUT.GLN.RESULTS[0].BUBLNM[l]
PROSPER.OUT.GLN.RESULTS[0].BUBLNX[l]
PROSPER.OUT.GLN.RESULTS[0].SLUGQL[l]
PROSPER.OUT.GLN.RESULTS[0].SLUGQG[l]
PROSPER.OUT.GLN.RESULTS[0].BUBLQL[l]
PROSPER.OUT.GLN.RESULTS[0].BUBLQG[l]
PROSPER.OUT.GLN.RESULTS[0].SLGFRM[l]
PROSPER.OUT.GLN.RESULTS[0].SLGFRX[l]
PROSPER.OUT.GLN.RESULTS[0].SLGHLS[l]
PROSPER.OUT.GLN.RESULTS[0].SLGHLE[l]
PROSPER.OUT.GLN.RESULTS[0].CFACTR[l]
PROSPER.OUT.GLN.RESULTS[0].SANDDI[l]
PROSPER.OUT.GLN.RESULTS[0].CORR[l]
Corrleation Index
PROSPER.OUT.GLN.RESULTS[0].HYDRATE[l]
PROSPER.OUT.GLN.RESULTS[0].GASGRAD[l].
NUM
Number of Points
m = 0 : PROSPER.OUT.GLN.RESULTS[0].
GASGRAD[l].NUM-1
PROSPER.OUT.GLN.RESULTS[0].GASGRAD[l].
Depth
378
DEPTH[m]
PROSPER.OUT.GLN.RESULTS[0].GASGRAD[l].
PRES[m]
Pressure
PROSPER.OUT.GLE.MATCHR[i]
PROSPER.OUT.GLE.NUMPC
No of Points in Performance
Curve
i = 0 : PROSPER.OUT.GLE.NUMPC-1
PROSPER.OUT.GLE.PCX[i]
GLR Injected
PROSPER.OUT.GLE.PCY[i]
PROSPER.OUT.GLE.GLR
GLR Injected
PROSPER.OUT.GLE.CLL
Liquid Rate
PROSPER.OUT.GLE.CLO
Oil Rate
PROSPER.OUT.GLE.VLP
VLP Pressure
PROSPER.OUT.GLE.IPR
IPR PRessure
PROSPER.OUT.GLE.STD
PROSPER.OUT.GLE.GMX
PROSPER.OUT.GLE.OMX
PROSPER.OUT.GLE.MSD
PROSPER.OUT.GLE.TVD
PROSPER.OUT.GLE.PRS
Pressure
PROSPER.OUT.GLE.TMP
Temperature
PROSPER.OUT.GLE.GAS
379
OpenServer
PROSPER.OUT.GLE.NVPLOT
Number of Points
i= 0 : PROSPER.OUT.GLE.NVPLOT-1
PROSPER.OUT.GLE.COMPFL[i]
PROSPER.OUT.GLE.DPPLOT[i]
PROSPER.OUT.GLE.LISTBOX.COUNT
i= 0 : PROSPER.OUT.GLE.LISTBOX.COUNT-1
PROSPER.OUT.GLE.LISTBOX[i]
Descriptive text
PROSPER.OUT.GLE.NVALR
Number of Valves
i= 0 : PROSPER.OUT.GLE.NVALR-1
PROSPER.OUT.GLE.PORT[i]
Port Size
PROSPER.OUT.GLE.PTRTVD[i]
PROSPER.OUT.GLE.PTRPRS[i]
PROSPER.OUT.GLE.PMAXAR[i]
PROSPER.OUT.GLE.PREFAR[i]
PROSPER.OUT.GLE.PGARRR[i]
PROSPER.OUT.GLE.PMINAR[i]
PROSPER.OUT.GLE.DELTEF[i]
PROSPER.OUT.GLE.LEGEND[0]
PROSPER.OUT.GLE.LEGEND[1]
PROSPER.OUT.GLE.LEGEND[2]
PROSPER.OUT.GLE.LEGEND[3]
Water Cut
PROSPER.OUT.GLE.LEGEND[4]
PROSPER.OUT.GLE.LEGEND[5]
PROSPER.OUT.GLE.LEGEND[6]
380
PROSPER.OUT.GLE.LEGEND[7]
PROSPER.OUT.GLE.RESULTS[0].NUM
l = 0 : PROSPER.OUT.GLE.RESULTS[0].NUM-1
PROSPER.OUT.GLE.RESULTS[0].REGIME[l]
PROSPER.OUT.GLE.RESULTS[0].LABEL[l]
Label Number
PROSPER.OUT.GLE.RESULTS[0].PRES[l]
Pressure
PROSPER.OUT.GLE.RESULTS[0].TEMP[l]
Fluid Temperature
PROSPER.OUT.GLE.RESULTS[0].TVD[l]
PROSPER.OUT.GLE.RESULTS[0].MSD[l]
Measured Depth
PROSPER.OUT.GLE.RESULTS[0].GRAD[l]
Gradient
PROSPER.OUT.GLE.RESULTS[0].HOLDUP[l]
Holdup
PROSPER.OUT.GLE.RESULTS[0].HTC[l]
PROSPER.OUT.GLE.RESULTS[0].TFO[l]
Formation Temperature
PROSPER.OUT.GLE.RESULTS[0].GRSTAT[l]
Static Gradient
PROSPER.OUT.GLE.RESULTS[0].GRFRIC[l]
Friction Gradient
PROSPER.OUT.GLE.RESULTS[0].VLSLIP[l]
PROSPER.OUT.GLE.RESULTS[0].VLNSLP[l]
PROSPER.OUT.GLE.RESULTS[0].VGSLIP[l]
PROSPER.OUT.GLE.RESULTS[0].VGNSLP[l]
PROSPER.OUT.GLE.RESULTS[0].AVRHSL[l]
Mixture Density
PROSPER.OUT.GLE.RESULTS[0].PRSTAT[l]
PROSPER.OUT.GLE.RESULTS[0].PRFRIC[l]
PROSPER.OUT.GLE.RESULTS[0].CASTEM[l]
Casing temperature
PROSPER.OUT.GLE.RESULTS[0].ANNTEM[l]
PROSPER.OUT.GLE.RESULTS[0].RHOOIL[l]
Gas density
PROSPER.OUT.GLE.RESULTS[0].RHOGAS[l]
Oil density
PROSPER.OUT.GLE.RESULTS[0].RHOWAT[l]
Water density
PROSPER.OUT.GLE.RESULTS[0].DIAINT[l]
Diameter
381
OpenServer
PROSPER.OUT.GLE.RESULTS[0].ANGLE[l]
Angle
PROSPER.OUT.GLE.RESULTS[0].DSTEP[l]
Section length
PROSPER.OUT.GLE.RESULTS[0].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.GLE.RESULTS[0].FMUGAS[l]
Gas viscosity
PROSPER.OUT.GLE.RESULTS[0].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.GLE.RESULTS[0].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.GLE.RESULTS[0].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.GLE.RESULTS[0].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.GLE.RESULTS[0].SLUGLM[l]
PROSPER.OUT.GLE.RESULTS[0].SLUGLX[l]
PROSPER.OUT.GLE.RESULTS[0].BUBLNM[l]
PROSPER.OUT.GLE.RESULTS[0].BUBLNX[l]
PROSPER.OUT.GLE.RESULTS[0].SLUGQL[l]
PROSPER.OUT.GLE.RESULTS[0].SLUGQG[l]
PROSPER.OUT.GLE.RESULTS[0].BUBLQL[l]
PROSPER.OUT.GLE.RESULTS[0].BUBLQG[l]
PROSPER.OUT.GLE.RESULTS[0].SLGFRM[l]
PROSPER.OUT.GLE.RESULTS[0].SLGFRX[l]
PROSPER.OUT.GLE.RESULTS[0].SLGHLS[l]
PROSPER.OUT.GLE.RESULTS[0].SLGHLE[l]
PROSPER.OUT.GLE.RESULTS[0].CFACTR[l]
PROSPER.OUT.GLE.RESULTS[0].SANDDI[l]
PROSPER.OUT.GLE.RESULTS[0].CORR[l]
Corrleation Index
PROSPER.OUT.GLE.RESULTS[0].HYDRATE[l]
PROSPER.OUT.GLE.RESULTS[0].GASGRAD[l].
NUM
Number of Points
m = 0 : PROSPER.OUT.GLE.RESULTS[0].
GASGRAD[l].NUM-1
PROSPER.OUT.GLE.RESULTS[0].GASGRAD[l].
DEPTH[m]
Depth
PROSPER.OUT.GLE.RESULTS[0].GASGRAD[l].
PRES[m]
382
Pressure
PROSPER.SIN.GLI.Input[1]
Downhole pressure
PROSPER.SIN.GLI.Input[2]
PROSPER.SIN.GLI.Input[3]
Wellhead pressure
PROSPER.SIN.GLI.Input[4]
PROSPER.SIN.GLI.Input[5]
Water cut
PROSPER.SIN.GLI.Input[6]
PROSPER.SIN.GLI.Input[0]
Slug velocity
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
Fall back
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
Pcasing / Pslug
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
PROSPER.SIN.GLI.Input[0]
Time to surface
PROSPER.SIN.GLI.Input[0]
Cycle frequency
PROSPER.SIN.GLI.Input[0]
383
OpenServer
PROSPER.OUT.ESP.ESPGL1
PROSPER.OUT.ESP.ESPPRS[i]
i=0:19
PROSPER.OUT.ESP.ESPGLR[i][j]
i=0:19 j=0:9
PROSPER.OUT.ESP.ESPDBX[i]
i=0:9
PROSPER.OUT.ESP.ESPDBY[i]
i=0:9
PROSPER.OUT.ESP.NUM
i = 0 : PROSPER.OUT.ESP.NUM-1
PROSPER.OUT.ESP.USERGOR[i]
PROSPER.OUT.ESP.USERPIP[i]
PROSPER.OUT.ESP.USERLAB
PROSPER.OUT.ESP.DONE
PROSPER.OUT.ESP.PMPREQ
PROSPER.OUT.ESP.PUMRAT
PROSPER.OUT.ESP.PUMPGR
PROSPER.OUT.ESP.PUMPGF
PROSPER.OUT.ESP.PUMPGA
PROSPER.OUT.ESP.PUMPIT
PROSPER.OUT.ESP.PUMPIP
PROSPER.OUT.ESP.PUMPIR
PROSPER.OUT.ESP.PUMPDR
PROSPER.OUT.ESP.PUMPMF
PROSPER.OUT.ESP.PUMPAT
PROSPER.SIN.ESP.DesPump, i
PROSPER.SIN.ESP.DesMotor, i
PROSPER.SIN.ESP.DesCable, i
PROSPER.OUT.ESP.NSTAGE
PROSPER.OUT.ESP.PUMPOW
PROSPER.OUT.ESP.PEFFIC
PROSPER.OUT.ESP.PUMPOT
PROSPER.OUT.ESP.XMTAMP
PROSPER.OUT.ESP.SURKVA
PROSPER.OUT.ESP.XMTEFF
PROSPER.OUT.ESP.XMTPOW
PROSPER.OUT.ESP.XMTRPM
PROSPER.OUT.ESP.VOLDRP
PROSPER.OUT.ESP.VOLTSF
PROSPER.OUT.ESP.TORQUE
PROSPER.OUT.ESP.SIZE
Head required
Average downhole rate
Total fluid gravity
Free GOR below pump
Total GOR above pump
Pump inlet temperature
Pump intake pressure
Pump intake rate
Pump discharge rate
Pump mass flow rate
Average cable temperature
Select pump
Select motor
Select cable
Number of stages
Power required
Pump efficiency
Pump outlet temperature
Current used
Surface KVA
Motor efficiency
Power generated
Motor speed
Voltage drop along cable
Voltage required at surface
Torque on shaft
Pump size
384
PROSPER.OUT.HSP.SIZE
PROSPER.OUT.HSP.RATE
PROSPER.OUT.HSP.SOL[0]
Head Required
PROSPER.OUT.HSP.SOL[1]
PROSPER.OUT.HSP.SOL[2]
PROSPER.OUT.HSP.SOL[3]
PROSPER.OUT.HSP.SOL[4]
385
OpenServer
PROSPER.OUT.HSP.SOL[5]
PROSPER.OUT.HSP.SOL[6]
PROSPER.OUT.HSP.SOL[7]
PROSPER.OUT.HSP.SOL[8]
PROSPER.OUT.HSP.SOL[9]
PROSPER.OUT.HSP.SOL[10]
PROSPER.OUT.HSP.SOL[11]
PROSPER.OUT.HSP.SOL[12]
PROSPER.OUT.HSP.SOL[13]
Pump Efficiency
PROSPER.OUT.HSP.SOL[14]
PROSPER.OUT.HSP.SOL[15]
PROSPER.OUT.HSP.SOL[16]
PROSPER.OUT.HSP.SOL[17]
PROSPER.OUT.HSP.SOL[18]
PROSPER.OUT.HSP.SOL[19]
Pressure At Surface
PROSPER.OUT.HSP.SOL[20]
i = 0 : PROSPER.ANL.CST.SENS.VARS.VAL1.NUM1
j = 0 : PROSPER.ANL.CST.SENS.VARS.VAL2.NUM1
k = 0 : PROSPER.ANL.CST.SENS.VARS.VAL3.
NUM-1
Solution Data
MultiLateral Results
l = 0 : PROSPER.OUT.CST.RESULTS[i][j][k].ML.
BRANCHES
Number of Branches
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
BRANCHLABEL
Branch Label
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
BRANCHRATE
Branch Rate
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
Branch Pressure
386
BRANCHPRES
l = 0 : PROSPER.OUT.CST.RESULTS[i][j][k].ML.
LAYERS
Number of Layers
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
LAYERLABEL
Layer Label
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].LAYERPI PI
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
LAYERSKIN
Skin
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
LAYERTOP
Top Depth
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
LAYERBOT
Bottom Depth
l = 0 : PROSPER.OUT.CST.RESULTS[i][j][k].ML.
SEGMENTS
Number of Segments
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
SEGMDTOP
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
SEGMDBOT
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
SEGRATE
Rate
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
SEGPRES
Pressure
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
SEGRATEPUL
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
SEGCUMRATE
Cumulative Rate
PROSPER.OUT.CST.RESULTS[i][j][k].ML[l].
SEGRESPRES
Reservoir Pressure
Liquid Rate
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.BHP
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.THP
387
OpenServer
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.THT
Tubing Head
Temperature
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.FNP
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.FNT
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHDENLIQUID
Liquid Density
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHDENGAS
Gas Density
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHVISLIQUID
Liquid Viscosity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHVISGAS
Gas Viscosity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHVELLIQUID
Liquid Velocity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHVELGAS
Gas Velocity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHZFACTOR
Z Factor
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHSURFACETENSION
InterFacial Tension
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
WHPRESSURE
Pressure
First Node Results
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNDENLIQUID
Liquid Density
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNDENGAS
Gas Density
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNVISLIQUID
Liquid Viscosity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNVISGAS
Gas Viscosity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNVELLIQUID
Liquid Velocity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNVELGAS
Gas Velocity
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNZFACTOR
Z Factor
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNSURFACETENSION
InterFacial Tension
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNPRESSURE
Pressure
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
DPTOTALSKIN
Total
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
DPPERFORATION
Perforation dP Skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
DPDAMAGE
Damge
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.PIP
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.PDP
Pump Discharge
Pressure
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
INJECTIONDEPTH
Injection Depth
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
DPCOMPLETION
Completion dP Skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
COMPLETIONSKIN
Completion Skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
GRAVELPACKSKIN
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
TOTALSKIN
Total
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
PUMPAVRATE
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
PUMPHEAD
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
PUMPPOWER
Pump Power
Requirement
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
PUMPEFFICIENCY
Pump Efficiency
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
MOTORAMPS
Motor Amps
Requirement
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
388
dP Skin
dP Skin
Skin
389
OpenServer
MOTORPOWER
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
MOTOREFFICIENCY
Motor Efficiency
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
MOTORSPEED
Motor Speed
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
CABLEVOLTS
Voltage at Surface
WH Temperature
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
FNTEMPERATURE
WH Pressure
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
HYDRATE
MultiLayer IPR Results (Per Layer)
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.DPG[l]
DP Gravel
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.RAT[l]
Rate
SkinAide Results
Skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[0]
Total
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[l]
Total Laminar
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[2]
Total Turbulent
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[3]
Perforation Geometry
Crushed +Damaged Zone
Laminar
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[4]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[5]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[6]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[7]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[8]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[9]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[10]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[11]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[12]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFSKIN[13]
SkinAide Results
DP Skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[0]
Total
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[l]
Total Laminar
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[2]
Total Turbulent
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[3]
Perforation Geometry
Crushed +Damaged Zone
Laminar
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[4]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[5]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[6]
390
391
OpenServer
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[7]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[8]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[9]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[10]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[11]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[12]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.
ELFDPSKIN[13]
Layer
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][0]
oil rate
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][1]
gas rate
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][2]
liquid rate
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][3]
pressure
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][4]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][5]
productivity index
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][6]
skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][7]
non-darcy skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][8]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][9]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][10] dP skin
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][11] dP non-darcy skin
OpenServer User's Manual
392
i = 0 : PROSPER.ANL.CVT.SENS.VARS.VAL1.
NUM-1
Number
j = 0 : PROSPER.ANL.CVT.SENS.VARS.VAL2.
NUM-1
Of
k = 0 : PROSPER.ANL.CVT.SENS.VARS.VAL3.
NUM-1
Sensitivity Variables
PROSPER.OUT.CVT.RESULTS[I][J][K].RATE
Rate
Hydrates Formation
Flag
i = 0 : PROSPER.ANL.UST.SENS.VARS.VAL1.NUM-1
j = 0 : PROSPER.ANL.UST.SENS.VARS.VAL2.NUM-1
k = 0 : PROSPER.ANL.UST.SENS.VARS.VAL3.NUM-1
1990-2011 Petroleum Experts Limited
393
OpenServer
Solution Data
MultiLateral Results
l = 0 : PROSPER.OUT.UST.RESULTS[i][j][k].ML.
BRANCHES
Number of Branches
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].
BRANCHLABEL
Branch Label
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].
BRANCHRATE
Barnch Rate
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].
BRANCHPRES
Branch Pressure
Layer Label
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].LAYERPI
PI
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].LAYERSKIN
Skin
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].LAYERTOP
Top Depth
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].LAYERBOT
Bottom Depth
l = 0 : PROSPER.OUT.UST.RESULTS[i][j][k].ML.
SEGMENTS
Number of Segments
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].SEGMDTOP
Rate
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].SEGPRES
Pressure
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].
SEGRATEPUL
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].
SEGCUMRATE
Cumulative Rate
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].
SEGRESPRES
Reservoir Pressure
PROSPER.OUT.UST.RESULTS[i][j][k].ML[l].SEGTVD
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.LIQRATE
Liquid Rate
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.BHP
394
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.THP
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.THT
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.FNP
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.FNT
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
WHDENLIQUID
Liquid Density
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
WHDENGAS
Gas Density
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
WHVISLIQUID
Liquid Viscosity
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.WHVISGAS
Gas Viscosity
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
WHVELLIQUID
Liquid Velocity
Z Factor
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
WHSURFACETENSION
InterFacial Tension
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
WHPRESSURE
Pressure
First Node Results
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
FNDENLIQUID
Liquid Density
Liquid Viscosity
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.FNVISGAS
Gas Viscosity
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
FNVELLIQUID
Liquid Velocity
Z Factor
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
FNSURFACETENSION
InterFacial Tension
395
OpenServer
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
FNPRESSURE
Pressure
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
DPTOTALSKIN
Total
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
DPPERFORATION
Perforation dP Skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
DPDAMAGE
Damge
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.PIP
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.PDP
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
INJECTIONDEPTH
Injection Depth
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
DPCOMPLETION
Completion dP Skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
COMPLETIONSKIN
Completion Skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
GRAVELPACKSKIN
dP Skin
dP Skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.TOTALSKIN Total
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
PUMPAVRATE
Skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
PUMPEFFICIENCY
Pump Efficiency
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
MOTORAMPS
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
MOTORPOWER
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
MOTOREFFICIENCY
Motor Efficiency
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
MOTORSPEED
Motor Speed
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
Voltage at Surface
396
CABLEVOLTS
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.PRFRIC
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.PRSTAT
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
WHTEMPERATURE
WH Temperature
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.
FNTEMPERATURE
WH Pressure
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.TBLEAK
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.PRETUR
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.HYDRATE
Hydrates Flag
DP Gravel
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.RAT[l]
Rate
SkinAide Results
Skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[0]
Total
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[l]
Total Laminar
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[2]
Total Turbulent
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[3]
Perforation Geometry
Crushed +Damaged Zone
Laminar
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[4]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[5]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[6]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[7]
397
OpenServer
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[8]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFSKIN[9]
DP Skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Total
[0]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Total Laminar
[l]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Total Turbulent
[2]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Perforation Geometry
Crushed +Damaged Zone
[3]
Laminar
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Crushed Zone Laminar
Crushed +Damaged Zone
[4]
Turbulent
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Crushed Zone Turbulent
Only Crushed Zone
[5]
Laminar
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Gravel Pack Tunnel
Laminar
[6]
Only Crushed Zone
Turbulent
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Gravel Pack Tunnel
Turbulent
[7]
OpenServer User's Manual
398
Hemispherical Inlet
Laminar
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Gravel Pack Annulus
Laminar
[8]
Hemispherical Inlet
Turbulent
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Gravel Pack Annulus
Turbulent
[9]
Cement +Casing Tunnel
Laminar
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Partial Penetration and
Deviation
[10]
Cement +Casing Tunnel
Turbulent
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Gravel Pack Annulus
Laminar
[11]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Gravel Pack Annulus
Turbulent
[12]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ELFDPSKIN Partial Penetration and
Deviation
[13]
Layer
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][0]
oil rate
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][1]
gas rate
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][2]
liquid rate
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][3]
pressure
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][4]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][5]
productivity index
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][6]
skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][7]
non-darcy skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][8]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][9]
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][10]
dP skin
399
OpenServer
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][11]
dP non-darcy skin
PROSPER.OUT.UST.RESULTS[I][J][K].SOL.ML[l][12]
PROSPER.OUT.CST.RESULTS[I][J][K].SOL.ML[l][13]
L = 0 : PROSPER.ANL.UST.RATES.COUNT-1
PROSPER.OUT.UST.RESULTS[i][j][k].RATE[l]
Rate
PROSPER.OUT.UST.RESULTS[i][j][k].PRESBH[l]
PROSPER.OUT.UST.RESULTS[i][j][k].PRESTH[l]
PROSPER.OUT.UST.RESULTS[i][j][k].TEMPTH[l]
PROSPER.OUT.UST.RESULTS[i][j][k].PRESLN[l]
PROSPER.OUT.UST.RESULTS[i][j][k].TEMPLN[l]
PROSPER.OUT.UST.RESULTS[i][j][k].HYDRATE[l]
i = 0 : PROSPER.ANL.UVT.SENS.VARS.
VAL1.NUM-1
j = 0 : PROSPER.ANL.UVT.SENS.VARS.
VAL2.NUM-1
k = 0 : PROSPER.ANL.UVT.SENS.VARS.
VAL3.NUM-1
PROSPER.OUT.UVT.RESULTS[i][j][k].RATE
Rate
PROSPER.OUT.UVT.RESULTS[i][j][k].
PRESFN
PROSPER.OUT.UVT.RESULTS[i][j][k].
PRESTH
PROSPER.OUT.UVT.RESULTS[i][j][k].
TEMPTH
PROSPER.OUT.UVT.RESULTS[i][j][k].
PRESLN
PROSPER.OUT.UVT.RESULTS[i][j][k].
TEMPLN
PROSPER.OUT.UVT.RESULTS[i][j][k].
HYDRATE
400
i = 0 : PROSPER.ANL.UGT.SENS.VARS.VAL1.NUM-1 Number
j = 0 : PROSPER.ANL.UGT.SENS.VARS.VAL2.NUM-1
Of
Number of gradient
results
l = 0 : PROSPER.OUT.UGT.RESULTS[i][j][k].NUM-1
PROSPER.OUT.UGT.RESULTS[i][j][k].REGIME[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].LABEL[l]
Label Number
PROSPER.OUT.UGT.RESULTS[i][j][k].PRES[l]
Pressure
PROSPER.OUT.UGT.RESULTS[i][j][k].TEMP[l]
Fluid Temperature
PROSPER.OUT.UGT.RESULTS[i][j][k].TVD[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].MSD[l]
Measured Depth
PROSPER.OUT.UGT.RESULTS[i][j][k].GRAD[l]
Gradient
PROSPER.OUT.UGT.RESULTS[i][j][k].HOLDUP[l]
Holdup
PROSPER.OUT.UGT.RESULTS[i][j][k].HTC[l]
Heat Transfer
Coefficient
PROSPER.OUT.UGT.RESULTS[i][j][k].TFO[l]
Formation
Temperature
PROSPER.OUT.UGT.RESULTS[i][j][k].GRSTAT[l]
Static Gradient
PROSPER.OUT.UGT.RESULTS[i][j][k].GRFRIC[l]
Friction Gradient
PROSPER.OUT.UGT.RESULTS[i][j][k].VLSLIP[l]
401
OpenServer
PROSPER.OUT.UGT.RESULTS[i][j][k].VLNSLP[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].VGSLIP[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].VGNSLP[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].AVRHSL[l]
Mixture Density
PROSPER.OUT.UGT.RESULTS[i][j][k].PRSTAT[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].PRFRIC[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].CASTEM[l]
Casing temperature
PROSPER.OUT.UGT.RESULTS[i][j][k].ANNTEM[l]
Average annulus
temperature
PROSPER.OUT.UGT.RESULTS[i][j][k].RHOOIL[l]
Gas density
PROSPER.OUT.UGT.RESULTS[i][j][k].RHOGAS[l]
Oil density
PROSPER.OUT.UGT.RESULTS[i][j][k].RHOWAT[l]
Water density
PROSPER.OUT.UGT.RESULTS[i][j][k].DIAINT[l]
Diameter
PROSPER.OUT.UGT.RESULTS[i][j][k].ANGLE[l]
Angle
PROSPER.OUT.UGT.RESULTS[i][j][k].DSTEP[l]
Section length
PROSPER.OUT.UGT.RESULTS[i][j][k].FMULIQ[l]
Liquid viscosity
PROSPER.OUT.UGT.RESULTS[i][j][k].FMUGAS[l]
Gas viscosity
PROSPER.OUT.UGT.RESULTS[i][j][k].SIGLIQ[l]
Gas-Liquid IFT
PROSPER.OUT.UGT.RESULTS[i][j][k].SIGWAT[l]
Gas-Water IFT
PROSPER.OUT.UGT.RESULTS[i][j][k].SIGOIL[l]
Gas-Oil IFT
PROSPER.OUT.UGT.RESULTS[i][j][k].SIGOW[l]
Oil-Water IFT
PROSPER.OUT.UGT.RESULTS[i][j][k].SLUGLM[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].SLUGLX[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].BUBLNM[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].BUBLNX[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].SLUGQL[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].SLUGQG[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].BUBLQL[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].BUBLQG[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].SLGFRM[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].SLGFRX[l]
1/1000 Slug
Frequency
PROSPER.OUT.UGT.RESULTS[i][j][k].SLGHLS[l]
PROSPER.OUT.UGT.RESULTS[i][j][k].SLGHLE[l]
Equilibrium Holdup
(HLE)
PROSPER.OUT.UGT.RESULTS[i][j][k].CFACTR[l]
C Factor (Erosional
Velocity)
PROSPER.OUT.UGT.RESULTS[i][j][k].SANDDI[l]
Max Transportable
Grain Diameter
PROSPER.OUT.UGT.RESULTS[i][j][k].CORR[l]
Correlation Index
PROSPER.OUT.UGT.RESULTS[i][j][k].HYDRATE[l]
Hydrates Formation
Flag
402
Number of Points
m = 0 : PROSPER.OUT.UGT.RESULTS[i][j][k].
GASGRAD[l].NUM-1
PROSPER.OUT.UGT.RESULTS[i][j][k].GASGRAD[l].
DEPTH[m]
Depth
PROSPER.OUT.UGT.RESULTS[i][j][k].GASGRAD[l].
PRES[m]
Pressure
403
OpenServer
Well density:
Table Quantity:
Prosper.ANL.VL3.EXP.Density
Prosper.ANL.VL3.EXP.BHP
Those input data differ accordingly to the VLP format selected. The same OpenServer strings
can be used for the VLP (4 variables) option, changing VL3 into VL4. The format for the VLP
is indicated using the following tables.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
0
1
2
3
4
5
6
7
8
9
10
11
For example, the three following OpenServer statements would export an ECLIPSE
formatted VLP file called "test.ecl" under the C drive:
DoSet "Prosper.ANL.VL3.EXP.Sel", 0
DoSet "Prosper.ANL.VL3.EXP.File", "C:\test.ecl"
DoCmd ("PROSPER.ANL.VL3.Export")
6.8
404
Commands
File Management
PROSPER.SHUTDOWN
PROSPER.OPENFILE
PROSPER.SAVEFILE
PROSPER.NEWFILE
PROSPER.REFRESH
Units
PROSPER.MENU.UNITS.
LATSI
PROSPER.MENU.UNITS.
OILFIELD
PROSPER.MENU.UNITS.
NORSI
PROSPER.MENU.UNITS.
CANSI
PROSPER.MENU.UNITS.
GERSI
PROSPER.MENU.UNITS.
FRESI
PROSPER.MENU.UNITS.
LATSI
PROSPER.UNITS.RESET
PVT Section
PROSPER.PVT.CALC
PROSPER.PVT.MATCH
PROSPER.PVT.MATCHALL
PROSPER.PVT.INPUT.
WGRMIN
PROSPER.EOS.INT
PROSPER.EOS.GEN
PROSPER.EOS.HYD
405
OpenServer
PROSPER.EOS.PROP
PROSPER.EOS.PHASE
PROSPER.EOS.WAX
Inflow Section
PROSPER.IPR.CALC
PROSPER.IPR.API43
PROSPER.ANL.INF.CALC
PROSPER.ANL.INF.
GENRATES
Downhole Equipment
Section
PROSPER.EQP.DEV.FIL.
FILTER
PROSPER.EQP.DEV.FIL.
RESET
PROSPER.EQP.DEV.FIL.
TRANS
PROSPER.EQP.DEV.FIL.
CALC
System Calculations
PROSPER.ANL.SYS.CALC Performs the system 3-variable calculation
PROSPER.ANL.SYS.
Generates rates for the system 3-variable calculation
GENRATES
PROSPER.ANL.SY4.CALC
Performs the system 4-variable calculation
PROSPER.ANL.SY4.
Generates rates for the system 4-variable calculation
GENRATES
PROSPER.ANL.SYM.CALC Performs the multi-variable system calculation
PROSPER.ANL.SYM.
Generates rates for the multi-variable system calculation
GENRATES
PROSPER.ANL.SYS.EXPORTExport lift curves generated by the system 3-variable
calculation
PROSPER.ANL.SY4.EXPORT Export lift curves generated by the system 4-variable
calculation
PROSPER.ANL.SYM.
Export lift curves generated by the system Multi-Variable
calculation
EXPORT
Sensitivity PvD
Calculations
PROSPER.ANL.SPD.CALC
PROSPER.ANL.SP4.CALC
PROSPER.ANL.SPM.CALC
Gradient Calculations
PROSPER.ANL.SYM.
GENRATES
PROSPER.ANL.GRD.CALC
Tubing / Pipeline
Correlation Comparison
PROSPER.ANL.TCC.CALC
PROSPER.ANL.TTC.CALC
PROSPER.ANL.TPC.CALC
PROSPER.ANL.PCC.CALC
406
Var4)-1 based
Performs the sensitivity PvD Multi-Variable calculation
Example: PROSPER.ANL.SPM.CALC(V1,V2,V3,V4,
V5,V6,V7,V8,V9,V10) -1 based
Performs the gradient matching calculation
Performs the gradient sensitivity calculation
VLP Calculations
PROSPER.ANL.VL3.CALC
Performs the VLP 3-variable calculation
PROSPER.ANL.VL3.
Generate rates for the VLP 3-variable calculation
GENRATES
PROSPER.ANL.VL4.CALC
Performs the VLP 4-variable calculation
PROSPER.ANL.VL4.
Generate rates for the VLP 4-variable calculation
GENRATES
PROSPER.ANL.VLM.CALC Performs the VLP Multi-Variable calculation
PROSPER.ANL.VLM.
Generate rates for the VLP Multi-Variable calculation
GENRATES
PROSPER.ANL.VL3.EXPORT Export lift curves generated by the VLP 3-variable
calculation
PROSPER.ANL.VL4.EXPORT Export lift curves generated by the VLP 4-variable
calculation
PROSPER.ANL.VLM.
Export lift curves generated by the VLP Multi-Variable
calculation
EXPORT
Choke Performance
PROSPER.ANL.CHK.CALC
407
OpenServer
Calculations
PROSPER.ANL.WHP.CALC
Import files
Add import type
IMPORTADD
PROSPER.MENU.FILE.
PRINTSET
PROSPER.MENU.FILE.
REMOTE
PROSPER.MENU.FILE.
CLIPBOARD
PROSPER.MENU.FILE.
WORDPAD
PROSPER.MENU.FILE.APP1
PROSPER.MENU.FILE.APP2
PROSPER.MENU.FILE.APP3
PROSPER.MENU.FILE.APP4
PROSPER.MENU.FILE.
USER_FLOW
PROSPER.MENU.FILE.
USER_EOS
PROSPER.MENU.FILE.
USER_CHOKE
PROSPER.MENU.FILE.
USER_HSP
PROSPER.MENU.FILE.
USER_VISC
PROSPER.MENU.FILE.
USER_IPR
PROSPER.MENU.FILE.
PREFERENCES
PROSPER.MENU.FILE.
FILELIST
PROSPER.MENU.FILE.EVAL
408
Printer set up
Software key
Clipboard
WordPad
User application 1
User application 2
User application 3
User application 4
User correlations - flow correlations
user correlations - EOS model
User correlations - choke model
User correlations - ESP / HSP gas de-rating model
User correlations - viscosity model
User corrlations - inflow performance model
File preferences
File list
Evaluate OpenServer statement
PVT input
PVT table
PVT match
PVT calculation
PVT matching (regression)
save a PVT (*.pvt) file
Open a *.pvt file
409
OpenServer
PROSPER.MENU.PVT.
CORREL
PROSPER.MENU.PVT.
STEAM
PROSPER.MENU.PVT.
REPORT
PROSPER.MENU.PVT.
EXPORT
410
QUICKLOOK
Menu Commands Calculation
PROSPER.MENU.ANL.IPR
PROSPER.MENU.ANL.
SYSTEM
PROSPER.MENU.ANL.SYS4
PROSPER.MENU.ANL.SYSM
PROSPER.MENU.ANL.
GRADIENT
PROSPER.MENU.ANL.VLP3
PROSPER.MENU.ANL.VLP4
PROSPER.MENU.ANL.VLPM
PROSPER.MENU.ANL.
GENGAP
PROSPER.MENU.ANL.
CHOKEPERF
PROSPER.MENU.ANL.
WHP2BHP
PROSPER.MENU.TEMP.
CONSYS
PROSPER.MENU.TEMP.
CONVLP
PROSPER.MENU.TEMP.
UNSYS
PROSPER.MENU.TEMP.
UNVLP
PROSPER.MENU.TEMP.
UNGRAD
Menu Commands - Design
PROSPER.MENU.DESIGN.
DATABASE
PROSPER.MENU.DESIGN.
GLD.NEW
PROSPER.MENU.DESIGN.
GLD.EXIST
PROSPER.MENU.DESIGN.
GLD.ADJUST
PROSPER.MENU.DESIGN.
CLT
PROSPER.MENU.DESIGN.
ESP
PROSPER.MENU.DESIGN.
Inflow (IPR)
System (Ipr + Vlp) 3-variables
System (Ipr + Vlp) 4-variables
System (Ipr + Vlp) multi-variables
Gradient traverse
VLP (tubing curves) 3-variables
VLP (tubing curves) 4-variables
VLP (tubing curves) multi-variables
Generate for GAP
Choke performance
BHP from WHP
Constrained system (IPR / VLP)
Constrained VLP (tubing curves)
Unconstrained system (IPR / VLP)
Unconstrained VLP (tubing curves)
Unconstrained gradient (traverse)
411
OpenServer
HSP
PROSPER.MENU.DESIGN.
PCP
PROSPER.MENU.DESIGN.
JET
Contents
Index
search
Keyboard
What's new
Quick start guide
Worked examples
Definitions and references
Glossary of terms
Manual
Flow correlations
OpenServer commands
OpenServer variables
OpenServer help
About PROSPER
Web home page
HELP_WEB_HOME
PROSPER.MENU.
HELP_WEB_USER
Calculation Plots
PROSPER.PLOT.1
PROSPER.PLOT.2
PROSPER.PLOT.3
PROSPER.PLOT.4
PROSPER.PLOT.5
PROSPER.PLOT.6
PROSPER.PLOT.7
PROSPER.PLOT.8
PROSPER.PLOT.9
PROSPER.PLOT.10
PROSPER.PLOT.11
PROSPER.PLOT.12
PROSPER.PLOT.13
PROSPER.PLOT.14
PROSPER.PLOT.15
PROSPER.PLOT.16
PROSPER.PLOT.17
PROSPER.PLOT.18
PROSPER.PLOT.19
PROSPER.PLOT.20
PROSPER.PLOT.21
PROSPER.PLOT.22
PROSPER.PLOT.23
PROSPER.PLOT.24
PROSPER.PLOT.25
PROSPER.PLOT.26
PROSPER.PLOT.27
PROSPER.PLOT.28
PROSPER.PLOT.29
PROSPER.PLOT.30
PROSPER.PLOT.31
PROSPER.PLOT.32
PROSPER.PLOT.33
PROSPER.PLOT.34
PROSPER.PLOT.35
PROSPER.PLOT.36
PROSPER.PLOT.37
PROSPER.PLOT.38
PROSPER.PLOT.39
412
IPR
VLP matching IPR
Inflow
System
Sustem (selected curves)
Gas lift design
Gas lift design (selected curves)
ESP pump plot
ESP solution pump plot
ESP design pump plot
Sensitivity
Sensitivity PvD
Sensitivity PvD (selected curves)
Deviation survey
Constrained VLP
Unconstrained system
Unconstrained VLP
Generate for GAP
Gas lift design performance curve
PVT calculations
Tubing correlation comparison
Gradient matching
Gradient
Gradient (selected curves)
VLP
VLP (4-variables)
ESP motor
EOS phase envelope
EOS (generated data)
EOS (calculated data)
GAP performance curve
Quick-look
VLP mataching
IPR relative permeability
Downhole equipment drawing
Surface equipment drawing
Pipe elevation
Horizontal IPR
ESP gas separation sensitivity (Dunbar plot)
413
OpenServer
PROSPER.PLOT.40
PROSPER.PLOT.41
PROSPER.PLOT.42
PROSPER.PLOT.43
PROSPER.PLOT.44
PROSPER.PLOT.45
PROSPER.PLOT.46
PROSPER.PLOT.47
PROSPER.PLOT.48
PROSPER.PLOT.49
PROSPER.PLOT.50
PROSPER.PLOT.51
PROSPER.PLOT.52
PROSPER.PLOT.53
PROSPER.PLOT.54
PROSPER.PLOT.55
PROSPER.PLOT.56
PROSPER.PLOT.57
PROSPER.PLOT.58
PROSPER.PLOT.59
PROSPER.PLOT.60
PROSPER.PLOT.61
PROSPER.PLOT.62
PROSPER.PLOT.63
PROSPER.PLOT.64
PROSPER.PLOT.65
PROSPER.PLOT.66
PROSPER.PLOT.67
PROSPER.PLOT.68
PROSPER.PLOT.69
PROSPER.PLOT.70
PROSPER.PLOT.71
PROSPER.PLOT.72
6.9
Functions
The following are functions that can be retrieved using the DOGET statement.
for example doget "PROSPER.GETTVD(1500)" will return the TVD for a depth of 1500.
PROSPER.ANL.NODES.NUMBER Returns The Number Of Nodes In The Equipment Description
PROSPER.ANL.NODES.TYPE
Returns The Equipment Type Of The ith Node (PROSPER.ANL.
NODES.TYPE[i])
414
PROSPER.PVT.MATCHED
PROSPER.INTERACT
PROSPER.MULTILAT.ADDTIE
PROSPER.MULTILAT.ADDJOINT
PROSPER.MULTILAT.ADDCOMP
PROSPER.MULTILAT.ADDRES
PROSPER.MULTILAT.ADDLINK
PROSPER.MULTILAT.CALCSKIN
PROSPER.ESP.DESIGNPUMPS
PROSPER.ESP.DESIGNMOTORS
PROSPER.ESP.DESIGNCABLES
PROSPER.ESP.SELECTPUMP
415
OpenServer
416
For Row = 13 To 29
spreadsheet
'Sets
the
Next
Disconnect
End Sub
'Macro ends
Scrolling further down the OpenServer template sample code (and in the OpenServer
sample macro template), it can be observed that error handling code has already been
entered.
The error handling code structure that follows, illustrates the necessary error handling
code that needs to be included in macros, ensuring that correct communication
between Excel and the tools is established.
As previously mentioned, the OpenServer template already contains the necessary
error handling code that is required. Also, all the OpenServer examples located in the
above samples directory structure can be modified to suit individual needs and can be
used as a starting basis to develop additional macros to meet individual modelling
requirements.
The following error handling code structures are to be used when developing
OpenServer macros when not using the provided template that already includes the
error handling macro code:
Function GetAppName(Strval As String) As String
application name from the tag string
417
OpenServer
Dim Pos
Pos = InStr(Strval, ".")
If Pos < 2 Then
MsgBox "Badly formed tag string"
End
End If
GetAppName = Left(Strval, Pos - 1)
If StrComp(GetAppName, "PROSPER", 1) <> 0 Then
MsgBox "Unrecognised application name in tag string"
End
End If
End Function
Sub DoCmd(Cmd As String)
'Performs a command, then checks for
errors
Dim lErr As Long
lErr = Server.DoCommand(Cmd)
If lErr > 0 Then
MsgBox Server.GetErrorDescription(lErr)
Set Server = Nothing
End
End If
End Sub
Function DoGet(Gv As String) As String
Dim lErr As Long
Dim AppName As String
DoGet = Server.GetValue(Gv)
AppName = GetAppName(Gv)
lErr = Server.GetLastError(AppName)
If lErr > 0 Then
MsgBox Server.GetErrorDescription(lErr)
Set Server = Nothing
End
End If
End Function
Sub DoSet(Sv As String, Val)
Dim lErr As Long
Dim AppName As String
418
'Opens the
419
OpenServer
'Opens a
The code below obtains a single variable. This variable can also be from a table as
shown in the third and fourth lines the first layer pressure from the multi-layer IPR
model.
Cells(6, 2) = DoSet ("PROSPER.SIN.IPR.SINGLE.PRES") 'Sets the reservoir
pressure with the value located in the Excel cell
reference
Cells(6, 3) = DoGet ("PROSPER.SIN.IPR.SINGLE.PRES") 'Gets the reservoir
pressure from the PROSPER file and places it in the
defined cell reference
Cells(7, 2) = Doset ("PROSPER.SIN.IPR.SINGLE.MLAYER[0].PRESSURE")
'Sets the layer '1' reservoir pressure in the multilayer IPR model
Cells(7, 3) = DoGet ("PROSPER.SIN.IPR.SINGLE.MLAYER[0].PRESSURE")
'Gets the reservoir pressure from layer '1' in the
multi-layer IPR model
Extracting Data from a Multi-Layer IPR Model:
Lets consider a multi-layer IPR model where it is desired to extract layer pressure and
GOR data sequentially from each layer for a 3-layer system.
We can achieve the objective by setting up a loop that will sequentially interrogate each
layer and retrieve the layer pressure and GOR.
The DoGet functions can of course be expanded to extract additional information as
required and the code can also be modified to use the Doset function to set values from
Excel to PROSPER.
One way to do this using a loop type structure is as follows:
Dim i, k As Integer
i=0
k=0
For k = 0 To 2
For i = 0 To 1
Cells(10, 1 + k) = DoGet("PROSPER.SIN.IPR.Single.MLayer[" + CStr(k) + "].
PRESSURE")
'The above string cell reference tells Excel that the layer pressure data for the 3layer IPR model will be placed in row 10 and column 1, 2 and 3 respectively (cell
OpenServer User's Manual
420
references are row, column). Excel will increase the column by '1' since the column
counter k = 1.
The [" + Cstr(k) + "] remark converts the k-string to a value that is used to index through
each layer. The string suffix .PRESSURE tells the macro that it is the pressure variable
value that is being queried via the DoGet function.
Cells(11, 1 + k) = DoGet("PROSPER.SIN.IPR.Single.MLayer[" + CStr(k) + "].GOR")
'The syntax to retrieve (or set) the GOR is the same as above.
Next i 'Closes the 'i' loop
Next k 'Closes the 'k' loop
End Sub
The above code illustrates one of many possible methods to retrieve (or set) multiple
data sets.
The code below tabulates the variables from a multi-layer model using a slightly different
approach:
Dim i As Integer
Dim j As Integer
Dim StringRoot As String 'The below StringRoot call defines the following
section of a given OpenServer string, and enables having to paste repeated
OpenServer strings to set or retrieve common string variables. For example,
the StringRoot of: PROSPER.SIN.IPR.SINGLE.MLAYER.PRESSURE is:
PROSPER.SIN.IPR.SINGLE.MLAYER, followed by [" & FORMAT(i) & "], where 'i'
will be the loop counter that will be used to automatically loop through all the
defined given layers in a multi-layer IPR model.
As can be observed below, rather than using the common returned openserver
string for the IPR section, the StringRoot approach can be used as illustrated
below:
Dim StringOut As String
i=0
Do While i < 5
StringRoot = "PROSPER.SIN.IPR.SINGLE.MLAYER[" & Format(i) & "]"
Cells(10 + i, 2) = StringRoot
Cells(10 + i, 3) = DoGet(StringRoot & ".TYPE")
Cells(10 + i, 4) = DoGet(StringRoot & ".IGRAV")
Cells(10 + i, 5) = DoGet(StringRoot & ".PRESSURE")
Cells(10 + i, 6) = DoGet(StringRoot & ".HEIGHT")
Cells(10 + i, 7) = DoGet(StringRoot & ".SKIN")
421
OpenServer
422
StringRoot = "PROSPER.SIN.IPR.MULTILAT.NETWORK["
Dim iType As Integer
Dim iLineCount As Integer
iLineCount = i * 10 + 11
i=0
Do While i < Count
String1 = StringRoot & Format(i) & "]"
String3 = String1 & ".Type"
iType = Val(DoGet(String3))
If (iType = 0) Or (iType = 1) Then
iLineCount = iLineCount + 1
Cells(iLineCount, 2) = "Junction/Tiepoint"
iLineCount = iLineCount + 1
String3 = String1 & ".MD"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".TVD"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 2
End If
423
OpenServer
Continuing the loop, get all tubing model and deviation survey items, whether in a tubing
network item or a completion node.
Dim iHasData As Integer
String3 = String1 & ".HasData"
iHasData = Val(DoGet(String3))
If (iType = 2) Or (iType = 4 And iHasData = 1) Then
iLineCount = iLineCount + 1
Cells(iLineCount, 2) = "Completion/tubing"
iLineCount = iLineCount + 1
String3 = String1 & ".Hflow"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".Vflow"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".Choke"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".Threshold"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".FlowType"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".Angle"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".WBR"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 1
String3 = String1 & ".Dietz"
Cells(iLineCount, 2) = String3
Cells(iLineCount, 3) = DoGet(String3)
iLineCount = iLineCount + 2
String3 = String1 & ".Dev.COUNT"
Dim iDevCount As Integer
iDevCount = Val(DoGet(String3))
j=0
OpenServer User's Manual
424
Chapter
7.1
OverView
426
BLACKOIL
OPTIONS
STREAMBASE[stream no. or stream name]
STREAMRUN[stream no. or stream name]
CALCUL[stream no. or stream name]
Note
At present, no access is given to matching within the blackoil or equation of state
models.
7.2
SAVEFILE
CLOSEFILE
SHUTDOWN
SETACTIVEFILE
UPDATEDISPLAY
The file commands are demonstrated in the OPENPVT.XLS sample Excel file.
Each file can contain multiple streams. Each stream contains Base, Runtime and
Calculation data. Individual streams can be accessed by way of a zero-based index or
the stream name.
1990-2011 Petroleum Experts Limited
427
OpenServer
SET_ACTIVE_STREAM
COPY_STREAM
7.3
BLACKOIL
This section deals with access to the input data and calculations within the Blackoil
model of the PVTP program. Use of the model and data is demonstrated within the
OPEN_BLACKOIL_CALC.XLS sample Excel file.
The setting of the file to a blackoil model is done within the options section with the
DoSet command.
"PVT.OPTIONS.METHOD with value BLACKOIL"
The type of model is set by
PVT.OPTIONS.FLUIDTYPE to OIL,GAS or CONDENSATE
There is only one set of blackoil data per file so no stream indication is required. To
obtain a piece of blackoil data the command string would be:
"PVT.BLACKOIL.SEPPRESS".
CORRPB
CORRUO
CORRUG
SOLGOR
Solution GOR
OILGRAV
Oil Gravity
7.4
GASGRAV
Gas Gravity
SEPPRESS
Separator Pressure
SEPTEMP
Separator Temperature
SEPGOR
Separator GOR
SEPGASGRAV
TANKGOR
Tank GOR
TANKGASGRAV
CGR
H2S
H2S Concentration
CO2
CO2 Concentration
N2
N2 Concentration
DEWPOINT
Condensate Dewpoint
RESTEMP
Reservoir Temperature
RESPRESS
Reservoir Pressure
WATER_SALINITY
Water Salinity
PVT_MATCHED
428
OPTIONS
This section deals with access to common options within the active PVTP file. The
options deal with many aspects of how and where models are used, which calculations
are carried out etc.
The Options sheet within the OPENPVT.XLS sample Excel file, gives an indication of
how these data points can be accessed.
A typical DoSet command would be
" PVT.OPTIONS.VISCMETHOD with value LOHRENZ sets the model for EoS
calculations to Lohrenz Bray Clark.
The option available includes:
METHOD
FLUIDTYPE
SEPARATORTYPE
EOSTYPE
429
OpenServer
PENGROB or SRK
COMPANY
FIELD
LOCATION
PLATFROM
ANALYST
COMMENT
CALC_TYPE
CALC_TYPE
VISCMETHOD
USE_VOLSHIFT
OPTIMISE_REGRESSION
PHASE_CALC_MAXITER
430
PHASE_CALC_MINPRESS
PHASE_CALC_VAPTEST
OVERRIDE_PHASE_CALC
FIXED_PHASE
FORTLIB_ITERATIONS
FORTLIB_PRECISION
SHOWPLOT_POINTS
CALC_GOR_CORRECTED_ Flag to correct FVF and GOR within CCE, CVD etc.
WITH_SEPS
through a separator train
REGR_GOR_CORRECTED_ Flag to correct FVF and GOR through a separator
WITH_SEPS
train during regression
TARGET_GOR_CORRECTE Flag to flash through a separator train to get gas and
D_WITH_SEPS
oil used in Target GOR calc.
USE_INDIVIDUAL_SEP_CO Flag to use individual stream values for separator
RRECTION
correction.
VOLSHIFT_D
VOLSHIFT_E
ECLIPSE_OILTYPE
ECLIPSE_GASTYPE
ECLIPSE_WATERTYPE
WAXTEMP_NUMSTEPS
WAXTEMP_MINTEMP
WAXTEMP_MAXTEMP
WAXTEMP_TESTSOLIDS
WAX_MODEL
HYDRATE_METHOD
HYDRATE_INHIBITOR
431
OpenServer
HYDRATE_USE_INHIBITOR
HYDRATE_USE_INHIBITOR
7.5
STREAMCOMMENT
NUMCOMPONENTS
NUMPSEUDOS
RESTEMP
REFPRESS
REFDEPTH
STANDPRESS
STANDTEMP
WATERSALINITY
COMPONENT[x]
432
CRITTEMP[x]
CRITPRESS[x]
CRITPVOL[x]
ACCENFACT[x]
OMEGAA[x]
OMEGAB[x]
MOLEWT[x]
PARACHOR[x]
BOILPT[x]
SPECGRAV[x]
RHOAPP[x]
VOLSHIFTC[x]
VOLSHIFTS[x]
ZRACK[x]
433
OpenServer
based index)
ZCRIT[x]
MELTPT[x]
HEATFUSION[x]
SOLPAR[x]
SOLPARSOLID[x]
AROMATIC_PERCENT
[x]
RECOM_STOCKGAS_
COMP [x]
RECOM_GAS_SEP_C
OMP [sep][x]
RECOM_SEP_GOR
[sep]
RECOM_SEP_TEMP
[sep]
RECOM_STOCKOIL_D
ENSITY
RECOM_GAS_DENSIT
Y
RECOM_GAS_GRAVIT
Y
PSEUD_ARCH_COMP
ONENT[x]
PSEUD_ARCH_COMP
OSITION[x]
434
PSEUD_ARCH_PCRIT
[x]
PSEUD_ARCH_VCRIT
[x]
MIXCRITTEMP
MIXCRITPRESS
CRICONDENBAR
CRICONDENTHERM
BPT_CORRELATION
QUALITY_PLOT_VAP_
COMP[x]
QUALITY_PLOT_LIQ_C
OMP[x]
435
7.6
OpenServer
NUMPSEUDOS
RESTEMP
REFPRESS
REFDEPTH
TEMPERATURE
PRESSURE
STANDTEMP
WATERSALINITY
COMPONENT[x]
CRITTEMP[x]
CRITPRESS[x]
436
CRITPVOL[x]
ACCENFACT[x]
OMEGAA[x]
OMEGAB[x]
MOLEWT[x]
PARACHOR[x]
BOILPT[x]
SPECGRAV[x]
RHOAPP[x]
VOLSHIFTC[x]
VOLSHIFTS[x]
ZRACK[x]
ZCRIT[x]
MELTPT[x]
HEATFUSION[x]
SOLPAR[x]
SOLPARSOLID[x]
RESULT_KVALUES
[x]
DENSITY [ph]
ZFACTOR [ph]
VISCOSITY [ph]
SPECIFIC_ENTHALP
437
OpenServer
Y [ph]
SPECIFIC_ENTROPY Last Calc Results: entropy of phase ph 0 vapour , 1 - liquid
[ph]
CP [ph]
CV [ph]
SPEEDOFSOUND
[ph]
JTHOMSONCOEFF
[ph]
THERMALCOND [ph]
IFT
VAP_FRACTION
SOLID_FRACTION
WATER_FRACTION
PROFILEPHASE [n]
7.7
438
Flag to set calculation mode to automatic or userdefined (for calcs without individual flag see rest of
table)
CALC_CCE_MODE
CALC_GRAD_MODE
Flag to set calculation mode to automatic or user 1990-2011 Petroleum Experts Limited
439
OpenServer
Flag to set calculation mode to automatic or userdefined for wax appearance temperature
CALC_WAXTEMP_MODE
Flag to set calculation mode to automatic or userdefined for wax appearance temperature
CALC_ECLIPSE_MODE
Flag to set calculation mode to automatic or userdefined for variable bubble point export
SLIMTUBE_MODE
Flag to set calculation mode to automatic or userdefined for slim tube calculation
UTILS_WATERSATN_MODE
Flag to set calculation mode to automatic or userdefined for utilities water saturation calculation
CALC_HYDRATE_MODE
CALC_FIRST_STREAM
CALC_SECOND_STREAM
CALC_NUM_RESULTS
CALC_NUM_CURVES
CALC_MIN_TEMP
CALC_MAX_TEMP
CALC_MIN_PRESS
CALC_MAX_PRESS
CALC_USER_TEMPERATURE
S[n]
CALC_USER_PRESSURES[n]
440
CALC_SEP_TEMPERATURES
CALC_PSAT_MIN_TEMP
CALC_PSAT_MAX_TEMP
CALC_PSAT_NO_VALUES
CALC_USER_CCE_TEMPS[n]
CALC_CCE_NO_PRESS_VAL
UES
CALC_CCE_MAX_TEMP
CALC_CCE_MIN_TEMP
CALC_CCE_MAX_PRESS
CALC_CCE_MIN_PRESS
CALC_DIFF_PRESSURES[n]
CALC_DIFF_TEMP[0]
CALC_CVD_PRESSURES [n]
CALC_CVD_TEMP[0]
CALC_DEPL_PRESSURES[n]
CALC_DEPL_TEMP[0]
CALC_SWELL_TEMPS[n]
CALC_SWELL_COMPS[n]
CALC_SWELL_VOLS[n]
441
OpenServer
SURES [n]
CALC_GORCORR_SEP_TEMP GOR/FVF Correction : Separator stage
ERATURES [n]
temperatures
REGR_GORCORR_SEP_PRES Regression GOR/FVF Correction : Separator
SURES [n]
stage pressures
REGR_GORCORR_SEP_TEMP Regression GOR/FVF Correction : Separator
ERATURES [n]
stage temperatures
CALC_PHASEENV_TEST_PRE Phase Envelope Test Points: pressures
SSURES [n]
CALC_PHASEENV_TEST_TEM Phase Envelope Test Points: temperatures
PERATURES [n]
CALC_SHOW_PHASEENV_TE Phase Envelope Test Points: show points flag
STPTS
CALC_TEST_POINT_VALUE1
[n]
CALC_TEST_POINT_VALUE2
[n]
CALC_BKOIL_EXPORT_COLU
MN [n]
CALC_BKOIL_EXPORT_TEMP
S [n]
CALC_BKOIL_EXPORT_PRES
SURES [n][l]
442
CALC_HYDRATE_MIN_TEMP
CALC_SMALL_SEP_GOR[n]
CALC_SMALL_SEP_GASGRA
VITY[n]
SLIMTUBE_NUMCELLS
SLIMTUBE_CELL_DELTAX[n]
SLIMTUBE_CELL_DELTAY[n]
SLIMTUBE_CELL_DELTAZ[n]
SLIMTUBE_CELL_DEPTH[n]
SLIMTUBE_CELL_PRESSURE
[n]
443
OpenServer
SLIMTUBE_CELL_PERM[n]
SLIMTUBE_RESOILSATN
SLIMTUBE_GASSATN
SLIMTUBE_ROCKCOMP
SLIMTUBE_TEMPERATURE
SLIMTUBE_STARTPRESSURE
SLIMTUBE_INJRATE
SLIMTUBE_INJRATEPPI
SLIMTUBE_INJPPI
SLIMTUBE_TIMESTEP[n]
SLIMTUBE_NUM_TIMESTEPS
SLIMTUBE_INJCELL
SLIMTUBE_PRESSURES[n]
SLIMTUBE_TIMESTEPS[n]
SLIMTUBE_MAXPRESSURE
SLIMTUBE_MINPRESSURE
444
SLIMTUBE_PRESSURE_VALU
ES
SLIMTUBE_PRESSURE_VALU
ES
UTILS_TARGETGOR
UTILS_TARGETPSAT
UTILS_TARGETPSAT_TEMP
7.8
UTILS_WATERSATN_PRESSV
ALUES
UTILS_WATERSATN_PRESSV
ALUES
445
OpenServer
SEP_WITH_WATER
COMPOS
MULTIPHASE
WAXTEMP
HYDRATE
ISENTHALPIC_FLASH
SLIMTUBE
WATER_SATURATION
Multiphase separator
Composite Differential liberation
Multiphase (wax) flash
Wax appearance temperature
Hydrate formation pressure
Enthalpy balance calculation
SlimTube simulation
Water saturation calculation
Additional Calculations:
FLASH Section 8.9
Small Separator Calculation Section 8.10
Saturation Pressure at Reference Conditions Section 8.11
Recombination Calculations Section 8.12
Allocation: Blending to a target GOR Section 8.13
Important Calls:
RESET_STREAM_IN_CALC_FL resets stream calculation flags prior to calculation
AGS
DoCmd
"PVT.KEYWORD Do calculation identified by keyword on stream
[Wellstream]"
index or name
CALC_COLUMN_TOTAL
Find number of columns calculated
CALC_NUM_RESULTS
Find lines of results calculated
CALC_COLUMN_NAME[n]
Get name of column n (zero based index)
CALC_COLUMN_UNIT[n]
Get unit string of column n (zero based index)
CALC_COLUMN_VALUE[l][n]
Get value calculated for line l and column n (zero
based indices)
The code fragment below is taken from the OPEN_CCE_PSAT_CALC.XLS file and
shows the basics of setting up and initiating a calculation.
' Identify the mode to be used in the calculation USER or AUTO
SendCellData "PVT.CALCUL[" + CStr(iStream) + "].CALC_CCE_MODE"
If (Worksheets(Sheet).Cells(10, 2) = "AUTO") Then
iLine = 13
'AUTO Mode
'send calculation ranges
SendCellData "PVT.CALCUL[" + CStr(iStream) + "].CALC_CCE_MIN_TEMP"
SendCellData "PVT.CALCUL[" + CStr(iStream) + "].CALC_CCE_MAX_TEMP"
SendCellData "PVT.CALCUL[" + CStr(iStream) + "].CALC_CCETEMPVALUES"
SendCellData "PVT.CALCUL[" + CStr(iStream) + "].CALC_CCE_MIN_PRESS"
SendCellData "PVT.CALCUL[" + CStr(iStream) + "].CALC_CCE_MAX_PRESS"
SendCellData "PVT.CALCUL[" + CStr(iStream) + "].
CALC_CCEPRESSVALUES"
Else
iLine = 23
446
CStr(iStream)
"].
447
OpenServer
Next
Next
The calculation results form a table which is normally displayed in PVTP results dialog.
The first step is to find the number of lines calculated using CALC_NUM_RESULTS.
The number of columns available for this calculation can then be retrieved using
CALC_COLUMN_TOTAL. Individual column names and units are found by calls to
CALC_COLUMN_NAME and CALC_COLUMN_UNIT with a zero-based index for the
column number. Repeated calls to CALC_COLUMN_VALUE is then used to fill in the
table.
7.8.1 Analysis
Analysis is available with most calculations. This data can be retrieved using code
segments illustrated below:
' Get analysis number iRes
Worksheets(Sheet).Cells(4, 2) = iRes
'Display the analysis block temperature and pressure
iErr = DisplayCellData("Temperature", DoGetCheck("PVT.CALCUL[" + CStr
(iStream) + "].CALC_ANALYSIS[" + CStr(iRes) + "].STAGE_TEMP"))
iErr = DisplayCellData("Pressure", DoGetCheck("PVT.CALCUL[" + CStr(iStream) +
"].CALC_ANALYSIS[" + CStr(iRes) + "].STAGE_PRESS"))
Worksheets(Sheet).Range("A10:E200").ClearContents
'Find the number of components
iNumComp = DoGetCheck("PVT.STREAMRUN[" + CStr(iStream) + "].
NUMCOMPONENTS")
iLine = 10
For icomp = 0 To iNumComp - 1
'Get component name, liquid composition, vapour composition and K values
Worksheets(Sheet).Cells(iLine + icomp, 1) = DoGet("PVT.STREAMRUN[" + CStr
(iStream) + "].COMPONENT[" + CStr(icomp) + "]")
Worksheets(Sheet).Cells(iLine + icomp, 2) = DoGetCheck("PVT.CALCUL[" + CStr
(iStream) + "].CALC_ANALYSIS[" + CStr(iRes) + "].LIQUID_COMPOSITION[" + CStr
(icomp) + "]")
Worksheets(Sheet).Cells(iLine + icomp, 3) = DoGetCheck("PVT.CALCUL[" + CStr
(iStream) + "].CALC_ANALYSIS[" + CStr(iRes) + "].VAPOUR_COMPOSITION[" + CStr
(icomp) + "]")
Worksheets(Sheet).Cells(iLine + icomp, 4) = DoGetCheck("PVT.CALCUL[" + CStr
(iStream) + "].CALC_ANALYSIS[" + CStr(iRes) + "].KVALUES[" + CStr(icomp) + "]")
Next
iLine = iLine + iNumComp
448
Analysis temperature
STAGE_PRESS
Analysis pressure
STAGE_DEPTH
Analysis depth
TOTAL_COMPOSITION[n]
VAPOUR_COMPOSITION[n]
WATER_COMPOSITION[n]
LIQUID_COMPOSITION[n]
LIQUID_COMPOSITION2[n]
LIQUID_COMPOSITION3[n]
LIQUID_COMPOSITION4[n]
LIQUID_COMPOSITION5[n]
SOLID_COMPOSITION[n]
ACCVAP_COMPOSITION[n]
KVALUES[n]
VAP_PERCENT
LIQ_PERCENT
ACCUM_PERCENT
OIL_GRAVITY
Oil gravity
TOTAL_GOR
Total GOR
STAGE_GOR
Stage GOR
GAS_GRAVITY
Gas gravity
STAGE_GROSS_HV
449
OpenServer
STAGE_NET_HV
ACCUM_GROSS_HV
ACCUM_NET_HV
450
451
OpenServer
RECOMBINE_COMPLEX[n]
452
453
OpenServer
Chapter
455
OpenServer
8.1
Scope
This section is designed to complement the Petroleum Experts IPM OpenServer Manual,
providing REVEAL specific implementation information.
The following sections describe OpenServer commands specific to REVEAL, and the
data structures that may be accessed. The data structures fall into three categories,
Script Data, Results Data and Runtime Variables.
All of the data exchanged via OpenServer will by default be in oilfield units. See the
main OpenServer documentation to see how data may be transferred in alternative unit
systems.
8.2
Commands
The REVEAL specific function commands are:
NEWFILE()
Start a new REVEAL project file.
Example: "REVEAL.NewFile()"
OPENFILE(file Open an existing REVEAL project file
Example: "REVEAL.OpenFile(C:\Petex\testfile.rvl)" ; "REVEAL.
name)
OpenFile("C:\Petex directory\test file.rvl")"
NOTE: If the filename contains 'white space' characters, then it
should be enclosed with quotes
SAVEFILE()
Save an existing REVEAL project file
Example: "REVEAL.SaveFile()"
SAVEASFILE( Save a REVEAL project file with a new name
456
Example: "REVEAL.SaveAsFile(C:\Petex\newfile.rvl)"
Run/continue a simulation
Example: "REVEAL.Start()"
START_BLOCK Run/continue while blocking other OpenServer communication
()
Example: "REVEAL.Start_Block()"
INITIALISE()
Start a simulation and pause before the equilibration
Example: "REVEAL.Initialise()"
RESTART
Start a simulation from a restart file and pause before the
(restart_number) equilibration. Use the Project|Edit / Review Project.. menu option to
view the stored restart file available
Example: "REVEAL.Restart(0)"
ONE_STEP()
Take one tim-estep for the simulation
Example: "REVEAL.One_Step()"
STOP()
Stop a simulation
Example: "REVEAL.Stop()"
PAUSE()
Pause a simulation
Example: "REVEAL.Pause()"
SWITCH_GRID( Switch between refinement scripts in the input and is only used to
grid_number) access data in the input script for refinements. Each grid has an
integer, with the first main grid being zero and refined grids starting
from one
Example: "REVEAL.Switch_Grid(1)"
OPEN_DATABL Open a datablock for data read or write in the input script and is the
OCK(
label (name) associated with a datablock (red font) in the input script
datablock_label) Example: "REVEAL.Open_Datablock(_xperm)"
SCRIPT_WRITE Rewrite the script following changes to the input, required for changes
()
to the script to be registered for subsequent simulation runs.
Example: "REVEAL.Script_Write()"
file name)
START()
8.3
Script Data
The script or input data variables may be read or written using the OpenServer.
The refinement grid (if present) should be selected using the Switch_Grid command.
If the data to be read/written is within a datablock, then the datablock should be opened
using the Open_Datablock command.
The OpenServer data strings can be obtaoined using <CTRL> + mouse right click
within input wizard. This should always be used to identify the OpenServer string.
Once changes have been made to the input data, the Script_Write command should be
run to register the changes.
Example - set a transmissibility multiplier barrier for a horizontal layer when the data is
input as a range; the second range (index 1) is being modified
457
OpenServer
SetValue ("REVEAL.Script.Reservoir.Data[11][1].Value",0.0)
DoCommand ("REVEAL.Script_Write()")
Example - set the porosity in refinement grid 1 when the data is entered as a datablock
array for block (3,2,1) to 0.2 - note the indexing starts at zero and cycles (Z,Y,X)
DoCommand ("REVEAL.Switch_Grid(1)")
DoCommand ("REVEAL.Open_Datablock(_porosity)")
SetValue ("REVEAL.Block._porosity.Tab[0].Data[0][1][2]",0.2)
DoCommand ("REVEAL.Script_Write()")
8.4
Results Data
The reservoir average and well results can be accessed using OpenServer.
The OpenServer data strings can be obtaoined using <CTRL> + mouse right click
within output data results.
The well and average reservoir results data OpenServer strings have the following
form:
"REVEAL.WellRes[{stream_label}][{well_lablel}][timestep].Variable"
"REVEAL.AveRes[{stream_label}][{region_lablel}][timestep].Variable"
where label names may be replaced by integer values
The number of timesteps is found with the following function:
n_timesteps = GetValue("REVEAL.WellRes[0][0].Count")
Example - total cummulative oil for current stream at the10th recorded timestep
CO = GetValue("REVEAL.WellRes[{Well Results}][{Total}][9].CumOilProduced")
Example - bottom hole temperature for first saved stream, second well, at the 6th
recorded timestep
BHT = GetValue("REVEAL.WellRes[1][2][5].REVEAL.BottomHoleTemperature")
Example - initial total pore volume for current stream
PV = GetValue("REVEAL.AveRes[{Average Results}][{Total}][0].PoreVolume")
8.5
458
Runtime Data
All of the internal REVEAL data are available during a simulation. This data is not
available once a simulation has been stopped. Since this data is extremely large and
most of it of no interest only some variable will be specified. Great care should be taken
setting internal calculation variables to the point where it is not recommended for most
variables, with the exception of well control variables.
The data in REVEAL is organised into two main groups called Master and Run. The
Master data contains everything that is not grid specific, while the Run data contains all
of the grid specific data for the main grid and all refinement grids. For example the well
control data is contained in the Master data structures, while grid pressures are
contained in the Run data structures. The Run variables are indexed by their grid
number, with zero corresponding to the main grid and subsequent integers
corresponding to refined grids.
All of the runtime variables are indexed from 0. However, if the returned value is an
index, then the returned value is indexed from 1 (see ACTIND and KWM).
The following is a list of some of the useful Master variables that may be accessed. The
variables listed are those associated with timestep and well control.
Master Variables
"REVEAL.IsRun"
459
OpenServer
0-false
"REVEAL.Master.IFLAG
w
e
l
l
_
n
u
m
b
e
r
]
"
Well type flag: 1-fixed Pwf injector, 2-fixed Pwf
producer, 3-fixed
rate injector, 4-fixed rate producer, 5[
fixed THP injector,
6-fixed THP producer
w
e
l
l
_
n
u
m
b
e
r
]
"
"REVEAL.Master.IVOLR
"REVEAL.Master.INJTYPE
"REVEAL.Master.LTINJ
"REVEAL.Master.CTOTW[0]
"REVEAL.Master.CTOTW[1]
460
w
e
l
l
_
n
u
m
b
e
r
]
"
If true then injection temperature calculated from VLP:
1-true, 0-false
[
w
e
l
l
_
n
u
m
b
e
r
]
"
Injection water mass fraction: 1 for water injector, 0 for
gas injector
[
w
e
l
l
_
n
u
m
b
e
r
]
"
Injection oil mass fraction: 0 for water injector, 0 for gas
injector [
w
1990-2011 Petroleum Experts Limited
461
OpenServer
e
l
l
_
n
u
m
b
e
r
]
"
"REVEAL.Master.CTOTW[2]
"REVEAL.Master.PWF
"REVEAL.Master.PWS
"REVEAL.Master.QI
"REVEAL.Master.TTI
462
e
l
l
_
n
u
m
b
e
r
]
"
Well control flow rate in scf/d (positive for injection,
negative for
[ production)
w
e
l
l
_
n
u
m
b
e
r
]
"
Well control bottom hole temperature
[
w
e
l
l
_
n
u
m
b
e
r
]
"
The following is a list of some of the useful Run variables that may be accessed.
Contact Petroleum Experts for details of additional Run time variables if required.
Run Time Variables
463
OpenServer
"REVEAL.Run[0].NX"
"REVEAL.Run[0].NY"
"REVEAL.Run[0].NZ"
"REVEAL.Run[0].IJKD"
"REVEAL.Run[0].ACTIND
"REVEAL.Run[0].KWM
464
0
]
Main grid grid_well_number (indexed from 1)
corresponding
[ to the global well_number variable
w
e
l
l
_
n
u
m
b
e
r
]
"
Example - set well 2 to be a fixed liquid rate producer with a rate of 1000 STB/d
SetValue("REVEAL.Master.LSHUTIN[1]",0)
SetValue("REVEAL.Master.LNOFLOW[1]",0)
SetValue("REVEAL.Master.IFLAG[1]",4)
SetValue("REVEAL.Master.IVOLR[1]",1)
SetValue("REVEAL.Master.QI[1]",Cstr(-1000*5.615))
Example - set well 3 to be a fixed THP water injector with a THP of 100 psig and
injection temperature of 50F
SetValue("REVEAL.Master.LSHUTIN[2]",0)
SetValue("REVEAL.Master.LNOFLOW[2]",0)
SetValue("REVEAL.Master.IFLAG[2]",5)
SetValue("REVEAL.Master.INJTYPE[2]",1)
SetValue("REVEAL.Master.LTINJ[2]",0)
SetValue("REVEAL.Master.PWS[2]",100)
SetValue("REVEAL.Master.TTI[2]",50)
SetValue("REVEAL.Master.CTOTW[0][2]",1)
SetValue("REVEAL.Master.CTOTW[1][2]",0)
SetValue("REVEAL.Master.CTOTW[2][2]",0)
Example - find the oil phase saturation for block IX,IY,IZ = (10,20,5) in the main grid
NX = GetValue("REVEAL.Run[0].NX")
NY = GetValue("REVEAL.Run[0].NY")
NZ = GetValue("REVEAL.Run[0].NZ")
IJK0 = (NZ-1)*NX*NY+(IY-1)*NX+IX
465
OpenServer
IJK = GetValue("REVEAL.Run[0].ACTIND["+Cstr(IJK0-1)+"]")
SO = GetValue("REVEAL.Run[0].S[1]["+Cstr(IJK-1)+"]")
Example - perforate blocks 5-10 for well 3 in refinement 1
KW = GetValue("REVEAL.Run[1].KWM[2]")
SetValue ("REVEAL.Run[0].IPERF["+Cstr(KW-1)+"][4],1)
SetValue ("REVEAL.Run[0].IPERF["+Cstr(KW-1)+"][5],1)
SetValue ("REVEAL.Run[0].IPERF["+Cstr(KW-1)+"][6],1)
SetValue ("REVEAL.Run[0].IPERF["+Cstr(KW-1)+"][7],1)
SetValue ("REVEAL.Run[0].IPERF["+Cstr(KW-1)+"][8],1)
SetValue ("REVEAL.Run[0].IPERF["+Cstr(KW-1)+"][9],1)
Chapter
467
OpenServer
9.1
Overview
The OpenServer is the mechanism by which external applications can interact and
control all the programs in the IPM suite (Prosper, GAP, Reveal, PVTP, MBAL, and
RESOLVE). For example a VBA macro in Excel can be used to open, interrogate, and
run IPM programs.
The OpenServer functionality that is in RESOLVE operates on the same principles as
other programs. For more information, see the OpenServer manual that is distributed
with the IPM suite. There follows a brief overview of the functionality of the OpenServer
with specific reference to RESOLVE.
External OpenServer macros can be written to control RESOLVE. These macros can
be written in any langauge that supports automation, for example: Visual Basic, VBA,
VBScript, C++, Java, Matlab. Most typically they are written as VBA macros in an Excel
spreadsheet; the OpenServer example macros are in this form. An OpenServer macro
can call three different functions/subroutines on the program (RESOLVE) it is controlling.
These are:
retval = DoGet("tagstring")
DoSet("tagstring", "value")
DoCmd("tagstring")
The first of these interrogates a variable in the application (for example, the schedule
start date). The second sets a variable to the value 'value'. The third performs a
command (for example, load a file, perform a run). In each case, tagstring is a '.'
delimited string that refers to the variable or command in question. For example, to get
the start date in RESOLVE:
retval = DoGet("Resolve.Schedule.StartDate.DateStr")
will return the date in the form of dd/mm/yy (depending on the international settings). To
execute a prediction run, use:
DoCmd("Resolve.Run")
In each case, the tagstring starts with the application name (in this case, Resolve).
When getting or setting a variable, the rest of the string is a delimited list of child
variables until we get to the required variable (DateStr is a 'child' variable of the
'StartDate' property, which is a child of the Schedule data, and so on). The variables
supported by RESOLVE are documented here. When executing a command, the string
simply refers to the command to be executed: these are documented here.
468
There is a quick way to find an OpenServer tagstring if the variable is part of the user
interface. In this case, go to the required screen and press <Ctrl> and RClick over the
variable in question. A screen will appear with the variable tagstring which can then be
copied to the clipboard.
Hysys and OpenServer
The Hysys driver supports the use of the OpenServer (see Module variables). In
versions 3.1 and later of Hysys the Hysys application by default pops up a message box
whenever a file is loaded. This halts OpenServer, and the macro can not continue until
this message box has been cleared. To remove the message box, from the Hysys
application go to Tools | Preferences | Simulation Page and uncheck the item: 'Confirm
before adding if active correlations are present' under 'Stream property correlations'. In
fact, the preferences should be set to avoid pop up windows that may interrupt the
OpenServer operation.
Note on the use of dates
When a date property is returned it is returned in the form of the number of days since
01/01/1900. This can be useful if arithmetic on dates is to be performed(differences,
etc). To return a calendar date, append the string '.DateStr' (as above) to the tagstring.
Empty variables
Variables that are not set (or are blank) in RESOLVE return a large number (3.4e34)
when the OpenServer queries them.
9.2
469
OpenServer
DebugFlag
Sets or clears the flag that determines whether debug data is saved during a run (e.g.
DoSet("RESOLVE.DebugFlag", 1)).
IsRunning
Returns whether or not Resolve is currently performing a forecast or optimisation run.
EnableOptimisation
Sets or clears the flag for performing an optimised solve or forecast. Finer control of
optimisation runs (e.g. setting or removing controls and constraints from the problem) is
available through the Module data items or the Optimiser Schedule data items (see
below).
Module
A collection of module data items. For more information on Module variables, see
Module variables. To index a given module, the alias or label of the item can be used:
e.g. Module[{Reservoir}].
Driver
A collection of drivers registered with the RESOLVE application. See Driver variables.
Schedule
A collection of schedules, as accessed from the Schedule screen in the interface. See
Schedule variables.
ModLink
A collection of individual module connections, containing data such as the calculation
order and adaptive time-stepping sensitivity. See ModLink variables.
Connection
A collection of connection data items. See Connection variables.
Properties
The RESOLVE preferences. See Properties variables.
Optimiser
The optimisation parameters. See Optimiser variables.
OptimiserSchedule
In a forecast run these variables control the way the problem can be changed as a
function of time. See Optimiser schedule variables.
Results
The results variables. The tag strings for these variables depend on the case being run
and can always be determined by using the <Ctrl> <Rclick> method described here.
Runtime variables
The following variables are top level variables that can be accessed during a Resolve
OpenServer User's Manual
470
run. If a run is being performed with a series of 'RunOneStep' commands, then after
every command the following variables can be interrogated (all read-only).
NextTimestepEnd
Returns the projected date of the end of the next time-step.
CurrentTime
The current date at which the run is sitting.
LastTime
The date before the last time-step leading to this one.
Timestep
The (integer) number of time-steps since the start of the run.
The date variables return a double-precision number which is the number of days since
01/01/1900. To get a date string, the DateStr can be appended to the tag strings. For
example:
DoGet("RESOLVE.CurrentTime") may return 36525.0, while as
DoGet("RESOLVE.CurrentTime.DateStr") will return 01/01/2000.
471
OpenServer
Optimisation variables).
OptConstraint
A collection of optimisation constraint equations specific to this module (see Module
Optimisation variables).
OptObjFn
The objective function (if present) for this module (see Module Optimisation variables).
ShowChildren
Determines whether the module child icons are displayed (expanded) on the main
screen
ProducesCompositions (read only)
Returns whether the module produces compositional/EOS data.
BaseComposition (read only)
For a compositional module, returns the base set of compositions that will be used in
the run.
CalcOrder
The calculation order in the RESOLVE system (as specified in the RESOLVE Manual.
StartDate (read only)
The start date of the module (which may be different to the RESOLVE start date). This
could be the start date of a reservoir simulation run, for example.
Internal Driver Variables
If RESOLVE does not find the variable of the tagstring in the above list, RESOLVE will
pass the string on to the driver which controls the application in question. For example,
the tagstring:
Resolve.Module[{GAP}].CaseDetails.FileName
The above string does not represent a variable in RESOLVE, and so the string
'CaseDetails.FileName' is passed on to the GAP driver, where it is recognised as
referring to the GAP filename.
In the case of IPM products (REVEAL/GAP), the string will be passed on to the
OpenServer of the connected applications if it is not processed by the driver. For
example:
RESOLVE.Module[{GAP}].MOD[{PROD}].INFLOW[{comp1}].IPR[0].ResTemp
will refer to an internal variable of GAP (a well layer temperature).
The following is a list of the variables that are supported by the GAP, REVEAL, and
Hysys drivers.
472
GAP
CaseDetails.FileName
Sets the GAP filename to open
CaseDetails.HostName
The host machine on which to run GAP
CaseDetails.System
0 - main system
1 - associated water injection
2 - associated gas injection
CaseDetails.PredictiveModel
0 - set according to GAP model
1 - always non-predictive
REVEAL
CaseDetails.FileName
Sets the REVEAL filename to open
CaseDetails.HostName
The host machine on which to run REVEAL
CaseDetails.RestartFrom
The index of the restart file from which REVEAL should be restarted. 0 represents no
restart - perform equilibration
CaseDetails.GlobalControlMode
The global control mode for all the wells in REVEAL. Values are:
0 - fixed bottom hole pressure
1 - fixed rate
2 - fixed THP
3 - 'system response'
CaseDetails.LoadCompletionData
Specifies whether completion data should be loaded as children under the individual
wells
Hysys
CaseDetails.FileName
Sets the Hysys filename to open
CaseDetails.HostName
The host machine on which to run Hysys
In addition, all the plant equipment and the variables that can be scheduled for each
1990-2011 Petroleum Experts Limited
473
OpenServer
474
475
OpenServer
1 - source
2 - sink
3 - source and/or sink, depending on what the item is connected to
IsConnectable (read only)
Is the item marked as connectable (can it, in principle, be connected to some other
item)?
DataProvider (read only)
Data provider or data acceptor (see the RESOLVE Manual ).
BiDirectional (read only)
Does/can this this item form part of a bidirectional link (see the RESOLVE Manual).
ItemType (read only)
For informational purposes only. Values are:
0 - none
1 - producer
2 - injector
3 - undefined
PhaseType (read only)
The dominant phase of the item. Values are:
0 - anything
1 - water
2 - liquid
3 - oil
4 - gas
5 - condensate
IsConnected (read only)
Return whether this item is connected to another item in RESOLVE.
Connection
Return connection data if IsConnected is true. Possible data is:
Label
The label of the item to which this item is connected.
SrcSnk
A further collection of children of this item (as described on this page).
476
Driver Item:
InterfaceVersion (read only)
The interface version of RESOLVE that this driver was built with
Application (read only)
The application implemented with this driver
NeedsComposition (read only)
Whether the application implemented here is purely EOS and requires compositional
data to function.
ProvidesComposition (read only)
Whether the application can provide EOS data
AppType (read only)
The application type (for informational purposes):
0 - unknown
1 - reservoir simulator
2 - nodal analysis
3 - process simulator
Description (read only)
A description string describing the application.
477
OpenServer
The following variables are part of the data required to set up adaptive time-stepping in
a RESOLVE prediction.
TargetRMS:
This is an array of RMS targets for the target variable (see below). It is an array over all
schedule records, for example the tag string:
RESOLVE.ModLink[2].TargetRMS[1] will obtain the second (zero indexed) schedule
record RMS target for the third module link object.
TargetVar:
Similarly, this is an array of target variables over all schedule records for this module
link, e.g. water cut, THP.
478
EndDate
The end date of this schedule record
OptimisationMode
0 - optimise at every timestep
1 - no optimisation
2 - optimise at a given frequency
OptimisationFrequency
If OptimisationMode is set to 2, then this is the frequency at which the optimisation takes
place
OptimisationFrequencyType
See InitialTimetepType above
479
OpenServer
Source
The first source/sink connected.
Sink
The second source/sink connected.
The Source and Sink instructions require the .label tag as suffix, i.e.:
RESOLVE.Connection[0].source.label
The source is considered to be the 'data provider' and the sink is the 'data acceptor', i.
e. the source/sink status is determined by the data flow direction, and not necessarily
the fluid flow. A case where the fluid flow is different to the data flow direction is that of
injector coupling between a reservoir simulator and a surface network: in this case fluid
is passing from the network to the simulator, but it is the simulator that supplies the
network with IPR data.
The data providers have small dots at the top left hand corner of their icon on the
RESOLVE screen.
480
OptimisationMode
Affects how variables are reset at each tim-estep of an optimised forecast
0 - keep the controls from the last time-step as the starting point of the new
optimisation
1 - reset the controls to those from the start of the run as the starting point of the
new optimisation
MaxIter
Maximum number of SLP iterations.
MaxGrowth
Maximum growth multiplier of the trust region in the SLP (> 1).
MinGrowth
Minimum growth multiplier of the trust region in the SLP (< 1)
ObjFnTol
Tolerance on the convergence of the objective function.
ConstraintTol
Tolerance on how much a constraint can be violated for the solution to be considered
feasible.
LinearCritereon
The linearity test quantity for the trust region (see the SLP description for more
information).
481
OpenServer
Enable
This is an array over all control variables, constraints, and objective functions,
determining whether these individual elements are active or inactive in the subschedule. They are ordered as follows:
1. Each module in the RESOLVE.Module array:
2. Objective functions for the module
3. Constraints for the module
4. Control variables for the module
9.3
Commands (COPY)
The following list describes the OpenServer commands with their arguments. Some of
these arguments may be optional - if this is the case they will be specified by "arg =
(default value)".
RESOLVE.NewFile()
Clears the current RESOLVE file and creates an empty
system
RESOLVE.OpenFile(filename, Opens the file 'filename'
If mode = 1 the file is opened in 'Results Only' mode, i.
mode = 0)
e. the client applications are not loaded and the only
functionality enabled is the ability to view the results
that were saved with the file
RESOLVE.SaveFile()
Saves the current RESOLVE file
RESOLVE.SaveAsFile
Saves the current RESOLVE file as 'filename'. If
(filename, overwrite = 0)
'overwrite' = 0 (default) the command will return an
error if the file already exists. overwrite = 1 forces the
file save
RESOLVE.BrSave()
Performs a broadcast save, i.e. broadcasts a save
command to all the client modules. Note that not all
modules (e.g. Eclipse) may implement a Save
command (the Petex products always do)
RESOLVE.SaveMod(label)
Broadcasts a Save command to the module specified
by 'label'. Note, as with BrSave above, that not all
modules implement the Save command
RESOLVE.Run()
Runs the RESOLVE prediction. This call blocks until
the run is complete
RESOLVE.RunOneStep()
Runs a single step of the RESOLVE prediction. This
call blocks until it is completed
RESOLVE.RunEnd(runtoend = Terminates the current prediction if single-stepping
through the run. If runtoend = 1 the run will be
0)
completed to the end of the schedule
RESOLVE.CreateModule(driver, Driver - the name of the driver (or application name), e.
g. GAP
x, y, label)
x - the x coordinate of the icon on the screen (left = 0)
482
9.4
Sample macros
The OpenServer examples (examplen.gar) are distributed as GAP archive files (.gar).
These archives contain the required Excel spreadsheet that implements the macro, as
well as any other associated files. For instructions on how to extract the archives, see
the GAP documentation.
1. example1.gar
This example performs the following tasks:
a. Creates a new (empty) system and interrogates the driver list to check that REVEAL
and GAP drivers are available
b. Puts the current driver versions on the spreadsheet
c. Creates an instance of GAP and REVEAL on the main window and loads cases into
these modules
d. Links the module wells together
e. Interrogates the RESOLVE connections variables and outputs these to the
spreadsheet
f. Sets a schedule in RESOLVE
g. Runs the prediction
h Gets the results from RESOLVE and puts them into the spreadsheet. These are then
plotted by Excel.
Chapter
10
OpenServer Examples
10
484
OpenServer Examples
485
OpenServer
NOTE: After the Connect sub command, wells, etc., can be masked at this point prior
to running a prediction. For example, this would be the approach taken if setting up a
drilling queue.
Example:
DoGapFunc (GAP.MOD[{PROD}].WELL[{WellY}].MASK()) Command masking well
WellY prior to performing the prediction. The code will show how to automatically open
(UnMask) well WellY during the prediction by monitoring well WellX liquid rate
Also, prior to starting a prediction, flow rate limits, etc., can be set that can be
dynamically monitored during a given prediction. Based on the macro structure, field
development actions will be taken if the monitored rate has been violated i.e., open
other wells if a threshold separator rate can no longer be achieved.
Example:
Min_LiqRate = 6000
The above approach hard-codes the pre-defined and declared variable Min_LiqRate
value directly in the macro code (use of the The
Min_LiqRate variable will be illustrated later).
It is more convenient to supply a spreadsheet cell reference for the control rate using the
following approach:
Min_LiqRate = Cells(x, y)
NOTE: When using Strings, they must be converted in the OpenServer string to a
numeric value using Cstr as per the following example:
WellY_LiqRate = DoGet (GAP.MOD[{PROD}].WELL[{WellY}].PREDRES[ & Cstr(j) &
].LIQRATE)
Will return well WellY rates during the prediction to a defined Excel range. The j is a
counter that uses the number of prediction steps to automatically index to the next Excel
row to place the next time-step results and will be explained in the Prediction Run
section.
NumSteps = DoGAPFunc("GAP.PREDINIT()") 'Initialises the GAP Prediction and
returns the total number of prediction steps that can be used with the counting variable
j for instance
Prediction Run
OpenServer User's Manual
OpenServer Examples
486
487
OpenServer
Cells(x, y) = "Well WellY Active" Reports the above message in quotation marks to the
corresponding cell reference
WellY_Active_Flag = 1 'Sets the well active flag
End If
Cells(xn + j, yn) = Cells(x1 + j, y1) + Cells(x2 + j, y2) 'Total prediction rate results cell
reference from adding the previously defined cell references. the same could easily be
achieved by simply capturing the separator liquid rate for instance
DoEvents 'Spreadsheet refresh to allow seeing the results plot dynamically
Next j
Finalisation
DoSlowCmd "GAP.PREDEND(0)" 'Finalises the Prediction run in GAP restoring initial
values in the model
Call Disconnect 'Breaks connection between Excel and the IPM tools
MsgBox "Macro Finished"
End Sub
Show some of the ability of OpenServer to link third party software to the
IPM Tools.
This example demonstrates how a VBA macro can be used to:
Modify the GAP model (enable a Well in this case) depending on the
result of the ongoing prediction (well producing liquid rate in this case)
Read the calculation results and report them in the Excel spreadsheet
This example involves a VBA macro. The VBA macro, the Excel file, and the GAP
model have been prepared in advance and the code structure will be a useful resource
to further modify the macro or use as a basis to develop further macros.
We are not going into the explanation of how to write the VB macro because the user is
OpenServer Examples
488
The files for this example and the final model are in the following directory.
~\samples\OpenServer\GAP\
OpenServer Example A.GAR
This is a GAP Archive file that also contains the macro. To extract a GAP
archive file (GAR file), from the main GAP menu select File | Archive |
Extract
Macro Explanation:
The macro controls the GAP prediction run and extracts Well 1 liquid rate as the
489
OpenServer
prediction advances.
When the liquid rate is less than a pre-set minimum liquid rate then the second well
(W2) is enabled, simulating the well coming on-stream.
OpenServer Macros are ideal when events need to be triggered by results during the
prediction run where they cannot be scheduled in the component itself where a fixed
date for the event is required.
VBA Macro Structure:
Initialisation
In this section the GAP model initial setup is performed and the spreadsheet previous
results (if any) are cleared.
Prediction Run
This section performs the GAP prediction run step by step.
At each step the Well 1 liquid rate is checked and if less than the minimum liquid rate
value set in the spreadsheet then the Well 2 is enabled
Finalisation
This section finalises the GAP model (original model values are restored) and the
connection between Excel and IPM tools is ended.
This example provides the basis for the users who wish to set different events triggered
by the step prediction results. The user can use this VBA macro as a starting point and
modify it to suit individual needs.
For further details on macro structure please see Basic_Code_Structure for more
information.
Show some of the ability of OpenServer to link third party software to the
IPM Tools.
This example demonstrates how a VBA macro can be used to:
Match IPR in order to reproduce Production Test Data (in case there were
any discrepancy between this and the GAP well models performance.
OpenServer Examples
490
The files for this example and the final model are in the following directory.
~\samples\OpenServer\GAP\
Before running the Macro, GAP needs to be opened and the required files extracted
from the GAR file OpenServer-Example B.GAR
Open the Excel file OpenServer-IPR Matching and follow the instruction described
below.
The VBA Macro is designed to follow a stepwise procedure which is described below:
1) Initialisation.
This step opens a given GAP file and retrieves well models data such as Label, WC,
GOR, Reservoir Pressure, PI (as per the IPR data screen)
491
OpenServer
OpenServer Examples
492
After step 1, the Production test data for each well should be entered in a separate
table. This table is already populated for this example.
493
OpenServer
This step transfers the production test data entered in the Test Data table into the main
table from where the values will be taken for any further calculation.
These values will overwrite the ones previously imported from the existing well models in
GAP (WC, GOR, etc...)
For this example, the production test data is simply a copy-paste between different
tables in Excel, but this link could be done between any other application and Excel (e.
g. a database) where this data is stored.
OpenServer Examples
494
4) Calculate Rates
This step calculates the production rates based on the well models in GAP for those
production test conditions.
If the difference between these calculated rates and the production test rates is larger
than the tolerance value entered in the spreadsheet they will be highlighted red.
Otherwise they will be highlighted green. The error will also be reported.
495
OpenServer
5) IPR Matching
This step will regress on either Reservoir Pressure or Productivity Index until the
production test rate is honour by the well models in GAP.
OpenServer User's Manual
OpenServer Examples
496
Both Original values and matched values will be reported in a separate table for
inspection.
After doing the regression, the original values can be restored (by using the Revert
button) before regressing on the other variable.
497
OpenServer
OpenServer Examples
498
Once the regression is done, one needs to select which parameter is to be updated in
1990-2011 Petroleum Experts Limited
499
OpenServer
This step saves the GAP model with the changes done.
OpenServer Examples
500
Show some of the ability of OpenServer to link third party software to the
IPM Tools.
This example demonstrates how a VBA macro can be used to:
501
OpenServer
step)
Modify the GAP model (schedule Wells to come on stream in this case)
depending on the result of the ongoing prediction (Total Gas Rate) and
the Target Gas Rate
Read the calculation results and report them in the Excel spreadsheet
This example involves a VBA macro. The VBA macro, the Excel file, and the GAP
model have been prepared in advance. We are not going into the explanation of how to
write the VB macro because the user is expected to have (or be trained in) the required
computing knowledge.
The actual time required to perform the example is short since all the files have been
prepared. The exercise is simple, just press a button in the Excel file provided.
However, the purpose of this example is providing an introduction to OpenServer
capabilities and providing a template which can be used for developing other macros.
Files required for this example:
The files for this example and the final model are in the following
directory.
~\samples\OpenServer\GAP\
located in a platform and then the gas is taken to shore through a main pipeline.
OpenServer Examples
502
Figure 10.17:
Gas Sample
503
OpenServer
This is the simple spreadsheet used as an example in section 4.2 of MBAL User Guide.
CALCWELL.XLS
This is an advanced spreadsheet macro that is used to calculate the well schedule
required to meet a fixed production rate. The user may specify a single well type and the
maximum number of wells available. The macro will then calculate at each step the
minimum number of wells required to meet the required rate. The well schedule dialog
will contain the required wells on completion of the macro.
DATABASE.XLS
This spreadsheet shows an example of transferring data from a database into MBAL. In
this example we first read some instantaneous rates from an Access database and
write them into Excel. The instantaneous rates are then converted to cumulative rates
OpenServer User's Manual
OpenServer Examples
504
including the entered downtime. These cumulative rates are then transferred to the
MBAL production history data. Note that this example requires "Data Access Object"
(DAO) to be installed and selected for use with Excel.
MBSAMPLES.XLS
This example runs two predictions with different OOIP and displays a summary of
results for both runs.
SENSITIV.XLS
This example runs a prediction for a number of OOIP and RDs. It runs a prediction for
each combination of values and displays the final cumulative rate and pressure for each
run it also saves a prediction stream for each run.
OPENSERV.MDB
This is an Access database example that is used to transfer data from the database to
MBAL. Measured rates and pressures are stored in the database. The macro converts
these to cumulative rates and transfers them to the MBAL tank production history.
MBALTEST.PXB
This is the example of the batch file method used in section 4.3 in the MBAL User
Guide
In this example we calculate a manifold pressure schedule to keep the rate above a
target rate. At each time step the macro checks the current rate. If the rate falls below
the target rate, the macro will add a new row to the table of production and constraints to
decrease the manifold pressure by a fixed amount. After running the macro, the
production and constraints dialog will contain the calculated manifold pressure
schedule.
STEP2.XLS
In this example we increase the PI of the well by a fixed percentage every n year the
percentage and number of years n is read from the spreadsheet.
STEP3.XLS
In this example we calculate a well schedule that will achieve an entered rate for the
duration of the prediction. The well schedule is initialised with 10 wells each of the two
well definitions. We then run the prediction step by step and check if the specified rate
is produced. If not, we add new rows to the well schedule until the rate is produced. The
two well definitions are added alternatively. On completion of the prediction, the
calculated well schedule can be viewed in the well schedule dialog.
505
OpenServer
In this example we do a prediction where we calculate the tank pressure from a manifold
pressure for each well rather than a common manifold pressure for all wells. It also uses
the input production schedule as a maximum well rate constraint. This particular form of
the prediction can be used to check that the prediction matches the Wc and GOR from
the production history for multi-layer cases.
DA1.XLS
This file contains the macro described in detail in the previous section concerning the
high level direct access OpenServer.
DA2.XLS
This file contains the macro described in detail in the previous section concerning the
low level direct access OpenServer.
OpenServer Examples
506
Step 2: Access the VBA script utility of the spreadsheet from the following path
507
OpenServer
Step 3: Open the PROSPER file to work with. In this case it is the Oilwell.out sample file
installed in the samples directory or PROSPER:
OpenServer Examples
508
Creating this OpenServer macro will revolve around the same steps as doing the
calculation manually. So, the commands to be used can be accessed using the Ctrl and
Right Click functionality.
Step 4: Access the system calculation screen and get the string that controls the well
head pressure
509
OpenServer
OpenServer Examples
510
This line will set the fist node pressure to be 150psi. Note that the Open Server only
transfers values, not units. So the number 150 will take whatever units are in the
PROSPER file.
Step 8: Use the list of commands to find the right command to perform the system
calculation in PROSPER. The list of commands can be accessed from the Wizard
function and then selecting Edit on one of the pre-entered Wizards.
511
OpenServer
OpenServer Examples
512
Step 10: From the PROSPER file list of variables, get the string that extracts the results
of the system calculation
513
OpenServer
OpenServer Examples
514
Notice that the DoGet function will send the result to cell A20 of Excel.
Step 12: Execute the macro
Once this is done (by selecting the Run button on the Excel spreadsheet), the rate result
can be seen in cell A20 of the active Excel sheet as shown below:
515
OpenServer
Just to check that the result extracted is the same as the one given by PROSPER, the
system calculation screen shows the same number as the rate result:
OpenServer Examples
516