Identify Additional IWEL and SWEL Items

In particular, add entries from WECON, WGRUPCON and, WVFPEXP and fix
an incorrect item attribution for the WTEST 'reason' parameter.

Thanks to [at]tskille for invaluable assistance in identify these
items.
This commit is contained in:
Bård Skaflestad
2022-05-05 23:04:12 +02:00
parent 67b7fe58b3
commit b36f415a96
2 changed files with 699 additions and 204 deletions

View File

@@ -39,15 +39,64 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
Status = 10, // Well status
VFPTab = 11, // ID (one-based) of well's current VFP table.
EconWorkoverProcedure = 14, // Economic limit workover procedure (WECON(7)).
// 0 => No action taken ("NONE"),
// 1 => Close worst-offending connection ("CON"),
// 2 => Close worst-offending connection and
// all other connections below this ("+CON"),
// 3 => Shut/stop well ("WELL"),
// 6 => Plug well ("PLUG").
PreferredPhase = 15, // Well's preferred phase (from WELSPECS)
item18 = 17, // Unknown
XFlow = 22,
item25 = 24, // Unknown
item32 = 31, // Unknown
WTestCloseReason = 39,
WTestConfigReason = 42,
WTestRemaining = 45,
XFlow = 22, // Whether or not well supports cross flow.
// 0 => Cross flow NOT supported
// 1 => Cross flow IS supported.
WGrupConControllable = 24, // Well controllable by group (WGRUPCON(2))
// -1 => YES, 0 => NO
EconLimitEndRun = 29, // Whether or not to end simulation run at next report time
// if well is shut or stopped for any reason (WECON(8)).
// 0 => No, 1 => Yes.
item32 = 31, // Unkown
WGrupConGRPhase = 32, // Phase to which well's guiderate applies (WGRUPCON(4))
// 0 => None/defaulted,
// 1 => Oil,
// 2 => Water,
// 3 => Gas,
// 4 => Liquid,
// 5 => Surface flow rate of injecting phase (injectors only),
// 6 => Reservoir fluid volume rate.
WTestCloseReason = 39, // Dynamic reason for closing a well
// 0 => Flowing or manually SHUT/STOPped
// 3 => Well closed for Physical reasons (P)
// 5 => Well closed for Economic reasons (E)
// 6 => Well closed for Group/Field reasons (G)
// 9 => Well closed for THP design limit (D)
WTestConfigReason = 40, // Which checks to perform when deciding to
// close a well in WTEST (WTEST(3)).
//
// Product of prime factors representing individual reasons.
// 2 => Physical (P),
// 3 => Economic (E),
// 5 => Group or Field (G),
// 7 => THP design limit (D),
// 11 => Test connections individually (C).
//
// Example: PEG = 2 * 3 * 5 = 30
// PEGDC = 2 * 3 * 5 * 7 * 11 = 2310
WTestRemaining = 45, // Remaining number of times well can be tested (WTEST(4)).
// 0 => Unlimited number of tests
// >0 => Well can be tested at most this many more times
item48 = 47, // Unknown
HistReqWCtrl = 49, // Well's requested control mode from
@@ -55,6 +104,16 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
LiftOpt = 53, // Well's lift gas injection to be calculated by optimisation or not
THPLookupVFPTable = 54, // How to look up VFP table values for THP controlled wells
// (WVFPEXP(2)). 0 => Implicit, 1 => Explicit.
EconLimitQuantity = 55, // Quantity to which well's economic limits apply (WECON(10))
// 0 => Well's flow rate ("RATE")
// 1 => Well's potential flow rates ("POTN")
EconWorkoverProcedure_2 = 66, // Secondary economic limit workover procedure (WECON(12)).
// Usually just a copy of EconWorkoverProcedure.
MsWID = 70, // Multisegment well ID
// Value 0 for regular wells
// Value 1..#MS wells for MS wells
@@ -76,9 +135,23 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
// = 2 for MSW wells and DF (WELSEGS item 7)
CloseWellIfTHPStabilised = 86, // Whether or not to close well
// if operating in "stabilised"
// part of VFP curve (WVFPEXP(3))
// 0 => No, 1 => Yes
PreventTHPIfUnstable = 93, // Whether or not to prevent well
// changing from rate control to THP
// control if constrained to operate
// on unstable side of VFP curve.
// WVFPEXP(4).
// 0 => No,
// 2 => YES1,
// 3 => YES2.
CompOrd = 98, // Well's completion ordering scheme.
LiftOptAllocExtra = 144
LiftOptAllocExtra = 144,
};
namespace Value {
@@ -147,6 +220,61 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
Auto = 3,
};
namespace WGrupCon {
enum Controllable : int {
Yes = -1,
No = 0,
};
enum GRPhase : int {
Defaulted = 0,
Oil = 1,
Water = 2,
Gas = 3,
Liquid = 4,
SurfaceInjectionRate = 5,
ReservoirVolumeRate = 6,
};
} // namespace WGrupCon
namespace WVfpExp {
enum Lookup : int {
Implicit = 0,
Explicit = 1,
};
enum class CloseStabilised : int {
No = 0,
Yes = 1,
};
enum class PreventTHP : int {
No = 0,
Yes1 = 2,
Yes2 = 3,
};
} // namespace WVfpExp
namespace EconLimit {
enum WOProcedure : int {
None = 0, // NONE
Con = 1, // CON
ConAndBelow = 2, // +CON
StopOrShut = 3, // WELL
Plug = 6, // PLUG
};
enum EndRun : int {
No = 0, // Run continues if well shut/stopped
Yes = 1, // Run terminates if well shut/stopped
};
enum Quantity : int {
Rate = 0, // Apply limits to actual flow rates ("RATE")
Potential = 1, // Apply limits to potential flow rates ("POTN")
};
} // namespace EconLimit
} // Value
} // IWell
@@ -165,13 +293,25 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
DatumDepth = 9, // Well's reference depth for BHP
Alq_value = 10, // Well's artificial lift quantity
DrainageRadius = 17, // Well's drainage radius - item 7 from WELSPECS
EfficiencyFactor1 = 24, // Item2 from WEFAC; this value is repeated at two locations.
EfficiencyFactor2 = 31, // Item2 from WEFAC
WTestInterval = 32,
EconLimitMinOil = 12, // Well's minimum oil production rate economic limit (WECON(2))
EconLimitMinGas = 13, // Well's minimum gas production rate economic limit (WECON(3))
EconLimitMaxWct = 14, // Well's maximum water cut economic limit (WECON(4))
EconLimitMaxGor = 15, // Well's maximum gas/oil ratio economic limit (WECON(5))
DrainageRadius = 16, // Well's drainage radius (WELSPECS(7))
WGrupConGuideRate = 17, // Well's guide rate (WGRUPCON(3))
EconLimitMaxWgr = 18, // Well's maximum water/gas ratio economic limit (WECON(6))
EfficiencyFactor1 = 24, // Well's efficiency factor (WEFAC(2))
EfficiencyFactor2 = 31, // Well's efficiency factor (WEFAC(2), copy of EfficiencyFactor1)
WTestInterval = 32, // Well's WTEST interval (WTEST(2))
HistLiqRateTarget = 33, // Well's historical/observed liquid
// rate target/limit
WTestStartupTime = 39,
WTestStartupTime = 39, // Well's WTEST startup time (WTEST(5))
HistGasRateTarget = 54, // Well's historical/observed gas rate
// target/limit
@@ -182,7 +322,14 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
LOmaxRate = 56, // Well's maximum lift gas rate
LOweightFac = 57, // Well's wighting factor for preferential allocation of lift gas
LOminRate = 67, // Well's mimimum lift gas rate
LOincFac =115,
EconLimitMaxWct_2 = 71, // Well's secondary maximum water cut economic limit (WECON(11)).
EconLimitMinLiq = 82, // Well's minimum liquid production rate economic limit (WECON(14)).
WGrupConGRScaling = 84, // Guide rate scaling factor (WGRUPCON(5))
LOincFac = 115,
TracerOffset = 122, // Tracer data start at this index
};