Accessories¶
Accessories are localized devices and sources placed along the production or service system. They add inflow, leakage, restriction, pumping, gas lift, or pigging behavior that cannot be represented by boundary conditions alone.
This page focuses on top-level accessory objects such as sources, valves, pumps, and pigs. Endpoint objects like separator, surfaceChoke, and gasInj are described in boundary-conditions.md, although they are closely related.
Common Pattern¶
Most accessories share these concepts:
active/ativo— enable or disable without removing the objectid/id— unique identifiermeasuredLength/comprimentoMedido— location along the linetime/tempo— event schedule for time-varying arrays
Not every accessory uses all of them. Some are arrays of objects (valve, ipr, liquidSource); some are single objects (masterValve, surfaceChoke).
Reservoir and Inflow Sources¶
IPR Source¶
The IPR object defines reservoir inflow as a function of drawdown between reservoir static pressure and tubing bottomhole pressure.
JSON key:
ipr(EN) ·ipr(PT)
Core geometry and fluid reference:
prodFluidId·indiFluidoProprodFluidIndex·indFluidoPro(legacy alias)measuredLength·comprimentoMedido
Model selector:
iprType·tipoIPR0= linear IPR1= combined Vogel2= Vogel
Time-series groups:
- Static pressure:
staticPressureTime/tempoPressaoEstatica,staticPressure/pressaoEstatica - Reservoir temperature:
temperaturesTime/tempoTemperaturas,temperatures/temperaturas - Productivity index:
ipTime/tempoip,ip/ip - Maximum rate (Vogel):
qMaxTime/tempoqMax,qMax/qMax - Injectivity index:
iiTime/tempoii,ii/ii
Note
ii is relevant for reverse-flow and injection-related cases, not only conventional production.
Liquid Source¶
Prescribed standard-condition liquid inflow. Associated free gas is inferred from the referenced production fluid and in-situ thermodynamics.
JSON key:
liquidSource(EN) ·fonteLiquido(PT)
Main fields:
prodFluidId·indiFluidoPromeasuredLength·comprimentoMedidotime·tempotemperature·temperaturabeta·beta— complementary-fluid ratioliquidFlowRate·vazaoLiquido
Mass Source¶
Prescribed total mass source with optional explicit gas split.
JSON key:
massSource(EN) ·fonteMassa(PT)
Main fields:
prodFluidId·indiFluidoProthermType·tipoTermo0= gas fraction computed by equilibrium at in-situ conditions1= explicit gas mass flow must be providedtotalMassFlowRate·vazaoMassTcomplementaryMassFlowRate·vazaoMassCgasMassFlow·vazaoMassG(only forthermType = 1)temperature·temperatura
Gas Source¶
Prescribed gas inflow, either dry gas using gasFluid or rich gas tied to a production-fluid definition.
JSON key:
gasSource(EN) ·fonteGas(PT)
Main fields:
dry·secotrue= dry gas fromgasFluidfalse= rich gas linked toprodFluidIdprodFluidId·indiFluidoPro(whendry = false)gasFlowRate·vazaoGascomplementaryFluidFlowRate·vazaoFluidoComplementar(impurity fraction, ppm)temperature·temperatura
Porous Sources¶
Two porous-source objects delegate configuration to external JSON files:
porousRadialSource(EN) ·fontePoroRadial(PT)porous2DSource(EN) ·fontePoro2D(PT)
Both use:
measuredLength·comprimentoMedidofile·arquivo
Pressure-Coupled Opening / Leak¶
Pressure Source¶
pressureSource models a leak, opening, or exchange point between tubing and an external pressurized medium. Flow may go in either direction depending on local pressure difference and check setting.
JSON key:
pressureSource(EN) ·fontePressao(PT)
Fluid definition:
fluidType·tipoFluido1= external hydrocarbon assumed equal to current tubing fluid0= external fluid explicitly defined byprodFluidIdprodFluidId·indiFluidoProgasAmbient·ambienteGas— admit only gaseous fraction of external fluid
Flow-direction control:
check·check0= bidirectional opening1= vacuum breaker (only environment to tubing)-1= check-valve behavior (only tubing to environment)
Opening definition:
openingType·TipoAbertura0= opening given as area ratio1= opening given as diameter ratioopening·aberturatime·tempocd·cd
External-medium state:
pressure·pressaotemperature·temperaturabeta·betaambientFluidQuality·titAmb
Gas-Lift Valve Source (VGL)¶
Gas-Lift Source¶
gasLiftSource defines a gas-lift valve connecting service line and production line. It is more detailed than a generic gas source because it needs both production-side and service-side tap positions and valve calibration data.
JSON key:
gasLiftSource(EN) ·fonteGasLift(PT)
Geometry and tap positioning:
annulusColumnFlag·colunaEanulartrue= service tap is inferred at same elevation as production tapfalse= user must giveserviceMeasuredLengthprodMeasuredLength·comprimentoMedidoProducaoserviceMeasuredLength·comprimentoMedidoServico
Valve type:
valveType·tipoValvula0= orifice1= pressure-calibrated valve2= Venturi
Physical parameters:
orificeDiameter·diametroOrificioouterDiameter·diametroExterno— port diameter for pressure-calibrated valvevglDischCoef·cdvglliquidDischCoef·cdvLiqareaRatio·razaoAreacalibrationPressure·pressaoCalibracao[psi]calibrationTemperature·temperaturaCalibracao[degF]
Note
annulusColumnFlag = true is convenient when the service-line pressure tap should be automatically aligned by elevation with the production-side tap.
Valves and Chokes¶
Generic Two-Phase Valve¶
valve is an optional two-phase restriction using the Sachdeva model.
JSON key:
valve(EN) ·valvula(PT)
Main fields:
cvCurve·curvaCV0= opening values are area ratios1= opening values are stem displacementmeasuredLength·comprimentoMedidotime·tempoopening·aberturacd·cdx1,cv1for stem-displacement calibration
Production Master Valve¶
masterValve is the production Wet Christmas Tree valve.
JSON key:
masterValve(EN) ·master1(PT)
Important details from schema:
- In steady-state it mainly defines position.
- In transient mode it should always be defined when WCT operation matters.
- Uses fixed discharge coefficient 0.84.
- Has
activeAreaRatio·razaoAreaAtivato avoid instability near fully open state.
Main fields:
active,cvCurve,activeAreaRatiomeasuredLengthtime,openingx1,cv1
Service-Line Master Valve¶
masterValve2 is the simplified service-line WCT valve.
JSON key:
masterValve2(EN) ·master2(PT)
Behavior is simplified/binary compared with masterValve.
Surface Choke¶
surfaceChoke is a fixed-position outlet restriction analogous to a valve.
JSON key:
surfaceChoke(EN) ·chokeSup(PT)
Main fields:
cvCurve·curvaCVtime·tempoopening·aberturadischargeCoefficient·coeficienteDescargamodel·modelo(currently only 0 = Sachdeva)x1,cv1
Injection Choke¶
injectionChoke is the service-line choke for single-phase gas.
JSON key:
injectionChoke(EN) ·chokeInj(PT)
Main fields:
active·ativotime·tempoopening·aberturadischargeCoefficient·coeficienteDescarga
Pumps and Localized Pressure Devices¶
ESP¶
The ESP object contains full curve data and speed scheduling.
JSON key:
esp(EN) ·bcs(PT)
Main fields:
measuredLength·comprimentoMedidotime·tempofrequency·frequenciaflowRate·vazao[BPD]power·potencia[hp]efficiency·eficienciapumpHead·head[ft]referenceFreq·freqrefstage·nestagmanufacturerStage·nestagFabmotorEfficiency·EficienciaMotorminFrequency·FrequenciaMinimahiCorrection·correcHI
Volumetric Pump¶
Positive-displacement pump using an isochoric compression model.
JSON key:
volumetricPump(EN) ·bombaVolumetrica(PT)
Main fields:
measuredLength·comprimentoMedidotime·tempofrequency·frequenciacapacity·capacidadepolyFactor·fatorpoli
Pressure Drop / Increment¶
pressureDrop applies a localized pressure increment over time. It can also approximate pump behavior through gas-compression and phase-efficiency settings.
JSON key:
pressureDrop(EN) ·deltaPressao(PT)
Main fields:
pressureDrop·deltaPressaogasCompType·tipoCompGas0= adiabatic1= polytropic2= isothermalpolyFacOrAdiabConst·fatPoliliquidEfficiency·eficLiqgasEfficiency·eficGas
Pigging¶
pig defines launch and receive positions and the launch time.
JSON key:
pig(EN/PT)
Main fields:
launcher·lancadorreceiver·recebedortime·tempo
Note
The current public schema documents launch position, receive position, and launch time. The parser contains some extra legacy/internal pig parameters, but they are not part of the public schema and are therefore intentionally not documented here.
Practical Guidance¶
- Place accessories at physically meaningful measured lengths and verify geometry direction conventions before interpreting results.
- Introduce one active accessory at a time while validating a model.
- For time-varying valves/chokes, use ramps instead of instantaneous steps when possible.
- For gas-lift valves, verify production and service tap positions carefully; elevation consistency matters.
- For pressure sources, be explicit about allowed flow direction using
check. - For rich-gas sources (
dry = false), ensure the linked production fluid is thermodynamically consistent with the scenario.
Example: IPR Source¶
{
"ipr": [
{
"id": 0,
"active": true,
"prodFluidId": 0,
"measuredLength": 2500.0,
"iprType": 1,
"staticPressureTime": [0],
"staticPressure": [320.0],
"temperaturesTime": [0],
"temperatures": [85.0],
"ipTime": [0],
"ip": [12.0],
"iiTime": [0],
"ii": [1.0]
}
]
}
Example: Mass Source with Explicit Gas Split¶
{
"massSource": [
{
"id": 0,
"active": true,
"prodFluidId": 0,
"measuredLength": 1500.0,
"thermType": 1,
"time": [0],
"temperature": [60.0],
"totalMassFlowRate": [20.0],
"complementaryMassFlowRate": [0.0],
"gasMassFlow": [2.0]
}
]
}
Example: Two-Phase Valve with Opening Ramp¶
{
"valve": [
{
"id": 0,
"active": true,
"measuredLength": 1500.0,
"cvCurve": 0,
"cd": 0.84,
"time": [0, 60, 120],
"opening": [0.0, 0.5, 1.0]
}
]
}
Example: ESP¶
{
"esp": [
{
"id": 0,
"active": true,
"measuredLength": 3000.0,
"time": [0],
"frequency": [60.0],
"referenceFreq": 60.0,
"stage": 100,
"flowRate": [1000, 2000, 3000],
"pumpHead": [200, 180, 140],
"power": [20, 35, 50],
"efficiency": [0.45, 0.60, 0.52]
}
]
}
Tip
When debugging a complex model, deactivate all but one accessory and validate the isolated effect before combining multiple controls, sources, and pumps.