sixgill package

sixgill.abstract_simulation module

class sixgill.abstract_simulation.AbstractSimulation(model, sim_type)
Bases: object

get_state(simulation_id)
Returns the state of the simulation

Returns the state from the simulation.

Parameters:
simulation_id (str) – Required. The id of the simulation returned from start_simulation call.

Returns:
The state of the simulation. sim_status indicates whether the simulation is still running. messages contains the simulation messages returned by the simulator.

Return type:
SimulationState

Examples

    >>> sim_state = model.tasks.networksimulation.get_state(simulation_id)

get_messages(simulation_id)
Returns the simulation progress message of the simulation

Returns the simulation progress message from the simulation.

Parameters:
simulation_id (str) – Required. The id of the simulation returned from start_simulation call.

Returns:
messages – The simulation messages returned by the simulator.

Return type:
list

Examples

    >>> messages = model.tasks.networksimulation.get_messages(simulation_id)

get_summary(simulation_id)
Returns the warning, info and error messages of the simulation

Returns the warning, info and error messages from the simulation.

Parameters:
simulation_id (str) – Required. The id of the simulation returned from start_simulation call.

Returns:
summary – The keys of the dictionary are “Error”, “Info” and “Warning” and their values are a list of corresponding messages as shown in Stingray UI

Return type:
dictionary

Examples

    >>> messages = model.tasks.networksimulation.get_summary(simulation_id)

get_results(simulation_id)
Returns the results from the simulation.

Returns the results from the simulation.

Parameters:
simulation_id (str) – Required. The id of the simulation returned from start_simulation call.

Returns:
The simulation results.

Return type:
dict

Examples

    >>> sim_results = model.tasks.networksimulation.get_results(simulation_id)

delete_results(simulation_id)
Delete a simulation.

Delete a simulation.

Parameters:
simulation_id (str) – Required. The id of the simulation returned from start_simulation call.

Returns:
Whether the simulation is deleted or not.

Return type:
bool

Examples

    >>> model.tasks.networksimulation.delete_results(simulation_id)

class sixgill.abstract_simulation.AbstractSingleBranchSimulation(model, sim_type)
Bases: AbstractSimulation

validate(producer, study: str | None = None, validate_model=True) List[ValidationIssue]
Validates the task.

Parameters:

  • producer (str) – Required. The name of the producer for the simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • validate_model (Boolean) – True by default. If True, it validates the whole model plus the task.

Returns:
a list of ValidationIssue instances.

Return type:
list

Examples

    >>> issues = model.tasks.ptprofilesimulation.validate(producer="Well2 - Oil", study = "Study 1")
    >>> for issue in issues:
            print(issue.message)
            print(issue.path)
            print(issue.property_name)

delete_sensitivities(producer, study: str | None = None)
Deletes the sensitivities of a simulation(if any)

Parameters:

  • producer (str) – Required. The name of the producer for the simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Examples

    >>> model.tasks.ptprofilesimulation.delete_sensitivities("Well 1", study = "Study 1")

class sixgill.abstract_simulation.AbstractNetworkSimulation(model, sim_type)
Bases: AbstractSimulation

validate(study: str | None = None, validate_model=True) List[ValidationIssue]
Validates the task

Parameters:

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • validate_model (Boolean) – True by default. If True, it validates the whole model plus the task

Returns:
a list of ValidationIssue instances.

Return type:
list

Examples

    >>> issues = model.tasks.networksimulation.validate()
    >>> for issue in issues:
            print(issue.message)
            print(issue.path)
            print(issue.property_name)

class sixgill.abstract_simulation.AbstractAdvancedWellSimulation(model, sim_type)
Bases: AbstractSimulation

validate(producer, study: str | None = None, validate_model=True) List[ValidationIssue]
Validates the task

Parameters:

  • producer (str) – Required. The name of the producer for the simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • validate_model (Boolean) – True by default. If True, it validates the whole model plus the task.

Returns:
a list of ValidationIssue instances.

Return type:
list

Examples

    >>> issues = model.tasks.systemperformance.validate(producer="Well2 - Oil", study = "Study 1")
    >>> for issue in issues:
            print(issue.message)
            print(issue.path)
            print(issue.property_name)

sixgill.compositional module

class sixgill.compositional.FluidSettings(model)
Bases: object

Primary class for operating on fluids

property fluid_type
The current fluid type set for the model

Returns:
One of the fluid mode defined in definitions FluidType class

Return type:
FluidType

property compositional
The compositional fluid settings

class sixgill.compositional.CompositionalFluidSettings(model)
Bases: object

property pvt_package
The compositional fluid package set for the model

Returns:
One of the fluid flash package type defined in definitions PVTPackage class

Return type:
PVTPackage

property equation_of_state
The compositional fluid equation of state

Returns:
One of the fluid equation of state defined in definitions EquationOfState class

Return type:
EquationOfState

property viscosity_correlation
The compositional fluid viscosity correlation method

Returns:
One of the fluid viscosity correlation method defined in definitions ViscosityCorrelationMethod class

Return type:
ViscosityCorrelationMethod

property volume_shift_correlation
The compositional fluid volume shift correlation method

Returns:
One of the fluid volume shift correlation method defined in definitions VolumeShiftCorrelationMethod class

Return type:
VolumeShiftCorrelation

property critical_property_correlation
The compositional fluid critical property correlation method

Returns:
One of the fluid critical property correlation method defined in definitions CriticalPropertyCorrelationMethod class

Return type:
CriticalPropertyCorrelation

property thermal_coefficient_correlation
The compositional fluid thermal coefficient correlation method

Returns:
One of the fluid thermal coefficient correlation method defined in definitions ThermalCoefficientsCorrelationMethod class

Return type:
ThermalCoefficientsCorrelation

property acf_correlation
The compositional fluid Acf correlation method

Returns:
One of the fluid Acf correlation method defined in definitions AcfCorrelationMethod class

Return type:
ThermalCoefficientsCorrelation

property salinity_model
The compositional fluid sanity model type

Returns:
One of the fluid salinity model type defined in definitions SalinityModel class

Return type:
SalinityModel

select_components(selected_components: list) None
Select the components that will be used by the compositional fluid in the model.

Parameters:
selected_components (list) – The list of fluid component names based on the fluid flash package.

Return type:
None

unselect_components(unselected_components: list)
Unselect the components that are no longer used by the compositional fluid in the model.

Parameters:
unselected_components (list) – The list of fluid component names based on the fluid flash package.

Returns:
If a component cannot be unselected, a ValueError will be raised to tell the reason.

Return type:
None

add_pseudocomponent(component_name, parameters={}) None
Add a user defined fluid component that will be used by the compositional fluid in the model.

Parameters:

  • component_name (str) – The name of the new component.

  • parameters (dict) – Optional. The parameters for the user defined component.

Returns:
If the component cannot be added, a ValueError will be raised to tell the reason.

Return type:
None

delete_pseudocomponent(component_name)
Delete a user defined fluid component that is no longer used by the compositional fluid in the model.

Parameters:
component_name (str) – The name of the user defined component.

Returns:
If the component cannot be deleted, a ValueError will be raised to tell the reason.

Return type:
None

get_composition(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords) DataFrame
Return fluid composition in the context.

Returns fluid composition in the context. It will fail if no item or more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to look for compositional fluid.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
The fluid composition data frame includes the following columns: Component, SpecifiedFraction (indexed by Component)

Return type:
pandas.DataFrame

Examples

    >>> df = model.fluids.compositional.get_composition(context="C-Fluid")
    >>> dfw = model.fluids.compositional.get_composition(
                      CompositionalFluid="C-Fluid")

set_composition(context: str | None = None, value=None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the fluid composition in the context.

Set data frame to the fluid composition in the context. It will fail if more than one item is found in the context.

Parameters:

  • value (DataFrame or dict) – Required. The data frame or dict to set to the fluid composition The fluid composition data frame includes the following columns: Component, SpecifiedFraction (indexed by Component) If dict is used, keys are considered as Component and values are considered as SpecifiedFraction

  • context (str) – Optional. The context string to look for the compositional fluid.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.fluids.compositional.set_composition(context="C-Fluid", value = df)
    >>> model.fluids.compositional.set_composition(CompositionalFluid="C-Fluid",
                        value = df)

sixgill.definitions module

The definitions sub-module maintains the enumerations and static classes that are available in the Pipesim Python Toolkit.

class sixgill.definitions.Units
Bases: object

Available unit of measurement categories

METRIC = 'PIPESIM_METRIC'

SI = 'PIPESIM_SI'

FIELD = 'PIPESIM_FIELD'

class sixgill.definitions.Tasks
Bases: object

Available Pipesim simulation tasks

NETWORKSIMULATION = 'NetworkSim'

NETWORKOPTIMIZERSIMULATION = 'NetworkOptSim'

PTPROFILESIMULATION = 'PTProfileSim'

NODALANALYSISOPERATION = 'NodalAnalysisOp'

WELLPERFORMANCECURVESOPERATION = 'WellPerformanceCurvesSim'

SYSTEMANALYSISOPERATION = 'SystemAnalysisOp'

GLDIAGNOSTICSOPERATION = 'GLDiagnosticsOp'

VFPTABLESSOPERATION = 'VfpTablesOp'

SYSTEMPERFORMANCE = 'SystemPerformance'

WELLCALIBRATION = 'WellCalibrationOp'

class sixgill.definitions.Connection
Bases: object

SOURCE = 'Source'

DESTINATION = 'Destination'

SOURCEPORT = 'Source Port'

class Separator
Bases: object

TOP = 'Top Port'

BOTTOM = 'Bottom Port'

BOOT = 'Boot Port'

class AdvancedWell
Bases: object

TOP = 'Top Port'

MIDDLE = 'Middle Port'

BOTTOM = 'Bottom Port'

class sixgill.definitions.SimulationState
Bases: object

RUNNING = 'Running'

COMPLETED = 'Completed'

FAILED = 'Failed'

class sixgill.definitions.SimulationOptions
Bases: object

PARALLELISM = 'Parallelism'

RESTART = 'Restart'

GENERATEOUTPUTFILE = 'GenerateOutputFile'

class sixgill.definitions.ModelComponents
Bases: object

Available model components

BLACKOILFLUID = 'BlackOilFluid'

BOUNDARY = 'Boundary'

CASING = 'Casing'

CHECKVALVE = 'CheckValve'

CHOKE = 'Choke'

COMPLETION = 'Completion'

COMPLETIONCONINGPOINT = 'CompletionConingPoint'

COMPLETIONMODEL = 'CompletionModel'

COMPOSITIONALFLUID = 'CompositionalFluid'

COMPRESSOR = 'Compressor'

ENGINEKEYWORDS = 'EngineKeywords'

ESP = 'ESP'

EXPANDER = 'Expander'

FILEBASEDFLUID = 'FileBasedFluid'

FLOWLINE = 'Flowline'

FLUIDCOMPONENT = 'FluidComponent'

GASLIFTINJECTION = 'GasLiftInjection'

GENERICEQUIPMENT = 'GenericEquipment'

GRAVELPACK = 'GravelPack'

HEATEXCHANGER = 'HeatExchanger'

INJECTOR = 'Injector'

IPRBACKPRESSURE = 'IPRBackPressure'

IPRDARCY = 'IPRDarcy'

IPRTRILINEAR = 'IPRTriLinear'

IPRFETKOVITCH = 'IPRFetkovitch'

IPRFORCHHEIMER = 'IPRForchheimer'

IPRHORIZONTALPI = 'IPRHorizontalPI'

IPRHYDRAULICFRACTURE = 'IPRHydraulicFracture'

IPRJONES = 'IPRJones'

IPRPIMODEL = 'IPRPIModel'

IPRPSSBABUODEH = 'IPRPSSBabuOdeh'

IPRSSJOSHI = 'IPRSSJoshi'

IPRVOGEL = 'IPRVogel'

JUNCTION = 'Junction'

LINER = 'Liner'

MEASUREMENTPOINT = 'MeasurementPoint'

MFLFLUID = 'MFLFluid'

MULTIPLIERADDER = 'MultiplierAdder'

MULTIPHASEBOOSTER = 'MultiphaseBooster'

GENERICBOOSTER = 'GenericBooster'

ONESUBSEABOOSTER = 'OneSubseaBooster'

WETGASCOMPRESSOR = 'WetGasCompressor'

OPEN_HOLE = 'OpenHole'

PACKER = 'Packer'

PCP = 'PCP'

PUMP = 'Pump'

PVTFLUID = 'PVTFluid'

RODPUMP = 'RodPump'

SINGLEPHASESEPARATOR = 'SinglephaseSeparator'

SINK = 'Sink'

SLIDINGSLEEVE = 'SlidingSleeve'

SOURCE = 'Source'

SPOTREPORT = 'SpotReport'

STUDY = 'Study'

SUBSURFACESAFETYVALVE = 'SubsurfaceSafetyValve'

THREEPHASESEPARATOR = 'ThreePhaseSeparator'

TUBING = 'Tubing'

TUBINGPLUG = 'TubingPlug'

TWOPHASESEPARATOR = 'TwoPhaseSeparator'

WATERTEMPVELOCITYSURVEY = 'WaterTempVelocitySurvey'

WELL = 'Well'

NETWORKSIMULATION = 'NetworkSim'

NETWORKOPTIMIZERSIMULATION = 'NetworkOptSim'

PTPROFILESIMULATION = 'PTProfileSim'

NODALANALYSISOPERATION = 'NodalAnalysisOp'

WELLPERFORMANCECURVESOPERATION = 'WellPerformanceCurvesSim'

SYSTEMANALYSISOPERATION = 'SystemAnalysisOp'

GLDIAGNOSTICSOPERATION = 'GLDiagnosticsOp'

VFPTABLESOPERATION = 'VfpTablesOp'

SYSTEMPERFORMANCE = 'SystemPerformance'

WELLCALIBRATION = 'WellCalibrationOp'

GLOBALCATALOG = 'GlobalCatalog'

RISKINDEXLIMITS = 'RiskIndexLimits'

FLOWCORRELATION = 'FlowCorrelation'

HEATTRANSFEROPTIONS = 'HeatTransferOptions'

FLOWCONTROLVALVE = 'FlowControlValve'

class sixgill.definitions.Parameters
Bases: object

Available parameters by model component

class Location
Bases: object

LATITUDE = 'Latitude'

LONGITUDE = 'Longitude'

NONCLUSTEREDLATITUDE = 'SchematicLatitude'

NONCLUSTEREDLONGITUDE = 'SchematicLongitude'

ELEVATION = 'Elevation'

class SchematicPosition
Bases: object

X_COORD = 'X'

Y_COORD = 'Y'

class DownholeLocation
Bases: object

TOPMEASUREDDEPTH = 'TopMeasuredDepth'

BOTTOMMEASUREDDEPTH = 'BottomMeasuredDepth'

TUBINGSECTIONTYPE = 'TubingSectionType'

class ModelComponent
Bases: object

NAME = 'Name'

ISACTIVE = 'IsActive'

class DownholeComponent
Bases: ModelComponent, DownholeLocation

class SurfaceComponent
Bases: ModelComponent, Location, SchematicPosition

class DownholeOrSurfaceComponent
Bases: ModelComponent, DownholeLocation, Location, SchematicPosition

class AbstractTubingSection
Bases: DownholeComponent

ISFLOWPRESENTINSIDE = 'IsFlowPresentInside'

TOPMEASUREDDEPTH = 'TopMeasuredDepth'

GRADE = 'Grade'

DENSITY = 'Density'

BOREHOLEDIAMETER = 'BoreholeDiameter'

CEMENTTOP = 'CementTop'

CEMENTDENSITY = 'CementDensity'

ANNULUSMATERIALTYPE = 'AnnulusMaterialType'

ANNULUSMATERIALDENSITY = 'AnnulusMaterialDensity'

INNERDIAMETER = 'InnerDiameter'

ROUGHNESS = 'Roughness'

WALLTHICKNESS = 'WallThickness'

LENGTH = 'Length'

THERMALCONDUCTIVITY = 'ThermalConductivity'

CEMENTTHERMALCONDUCTIVITY = 'CementThermalConductivity'

FLUIDTHERMALCONDUCTIVITY = 'FluidThermalConductivity'

SECTIONTYPE = 'SectionType'

class AssociatedToFluid
Bases: object

ASSOCIATEDBLACKOILFLUID = 'AssociatedBlackOilFluid'

ASSOCIATEDCOMPOSITIONALFLUID = 'AssociatedCompositionalFluid'

ASSOCIATEDMFLFLUID = 'AssociatedMFLFluid'

class CanBeTemplate
Bases: object

ISTEMPLATE = 'IsTemplate'

ISBUILTINTEMPLATE = 'IsBuiltinTemplate'

class SharedPumpParameters
Bases: object

EFFICIENCY = 'Efficiency'

POWER = 'Power'

PRESSURE = 'Pressure'

PRESSUREDIFFERENTIAL = 'PressureDifferential'

PRESSURERATIO = 'PressureRatio'

USECURVES = 'UseCurves'

class SharedPumpCatalogParameters
Bases: object

MANUFACTURER = 'Manufacturer'

MODEL = 'Model'

BASESPEED = 'BaseSpeed'

OPERATINGSPEED = 'OperatingSpeed'

SHOWPOWER = 'ShowPower'

class FluidLink
Bases: object

RESERVOIRPRESSURE = 'ReservoirPressure'

RESERVOIRTEMPERATURE = 'ReservoirTemperature'

COMPLETIONTESTTYPE = 'CompletionTestType'

USETESTDATA = 'UseTestData'

USECONINGDATA = 'UseConingData'

CONEDGASSG = 'ConedGasSG'

USEGASRATIO = 'UseGasRatio'

USEWATERRATIO = 'UseWaterRatio'

GOR = 'GOR'

OGR = 'OGR'

GLR = 'GLR'

LGR = 'LGR'

GWR = 'GWR'

WGR = 'WGR'

WATERCUT = 'WaterCut'

USEFLUIDOVERRIDES = 'UseFluidOverrides'

OVERRIDESINITIALIZED = 'OverridesInitialized'

class Fluid
Bases: CanBeTemplate, FluidLink

COMMENT = 'Comment'

HASOVERRIDE = 'HasOverride'

class FileBasedFluid
Bases: Fluid

FLUIDFILENAME = 'FluidFileName'

class About
Bases: object

TOOLKITVERSION = 'ToolkitVersion'

WEBAPIVERSION = 'WebAPIVersion'

MODELFILENAME = 'ModelFilename'

UNITSYSTEM = 'UnitSystem'

UIUNITSYSTEM = 'UiUnitSystem'

class SimulationSetting
Bases: object

AMBIENTTEMPERATURE = 'AmbientTemperature'

ATMOSPHERICPRESSURE = 'AtmosphericPressure'

WINDSPEED = 'WindSpeed'

SOILTYPE = 'SoilType'

SOILCONDUCTIVITY = 'SoilConductivity'

METOCEANDATALOCATION = 'MetoceanDataLocation'

EROSIONALVELOCITYCONSTANT = 'ErosionalVelocityConstant'

CORROSIONMODEL = 'CorrosionModel'

CORROSIONEFFICIENCY = 'CorrosionEfficiency'

PIPESEGMENTATIONMAXREPORTINGINTERVAL = 'PipeSegmentationMaxReportingInterval'

PIPESEGMENTATIONPRINTSEGMENTATIONRESULT = 'PipeSegmentationPrintSegmentationResult'

PIPESEGMENTATIONMAXSEGMENTLENGTH = 'PipeSegmentationMaxSegmentLength'

MAXEMULSIONINVERSIONWATERCUT = 'MaxEmulsionInversionWaterCut'

NETWORKSOLVERMETHOD = 'NetworkSolver'

NETWORKSOLVERTOLERANCE = 'NetworkSolverTolerance'

ADVANCEDWELLTOLERANCE = 'AdvancedWellTolerance'

NETWORKSOLVERMAXITERATIONS = 'NetworkSolverMaxIterations'

SINGLEBRANCHKEYWORDS = 'SingleBranchKeywords'

NETWORKTOPKEYWORDS = 'NetworkTopKeywords'

NETWORKBOTTOMKEYWORDS = 'NetworkBottomKeywords'

GISELEVATIONINTERVAL = 'GISElevationInterval'

GISELEVATIONMAXPOINTS = 'GISElevationMaxPoints'

USEGLOBALFLOWCORRELATIONS = 'UseGlobalFlowCorrelations'

USEGLOBALCORROSIONMODEL = 'UseGlobalCorrosionModel'

USEGLOBALHEATTRANSFER = 'UseGlobalHeatTransfer'

ESPSLIPPAGEFACTOR = 'PumpSpeedFactor'

class FlowCorrelation
Bases: object

SWAPANGLE = 'SwapAngle'

OVERRIDEGLOBAL = 'OverrideGlobal'

class SinglePhase
Bases: object

CORRELATION = 'SinglePhaseCorrelation'

FACTOR = 'SinglePhaseFactor'

class Multiphase
Bases: object

class Vertical
Bases: object

SOURCE = 'VerticalMultiphaseSource'

CORRELATION = 'VerticalMultiphaseCorrelation'

HOLDUPFACTOR = 'VerticalMultiphaseHoldupFactor'

FRICTIONFACTOR = 'VerticalMultiphaseFrictionFactor'

class Horizontal
Bases: object

SOURCE = 'HorizontalMultiphaseSource'

CORRELATION = 'HorizontalMultiphaseCorrelation'

HOLDUPFACTOR = 'HorizontalMultiphaseHoldupFactor'

FRICTIONFACTOR = 'HorizontalMultiphaseFrictionFactor'

class HeatTransferOption
Bases: object

PIPEBURIALMETHOD = 'PipeBurialMethod'

INSIDEFILMCOEFFMETHOD = 'InsideFilmCoeffMethod'

UVALUEMULTIPLIER = 'UValueMultiplier'

ENABLEHYDRATESUBCOOLCALC = 'EnableHydrateSubcoolCalc'

OVERRIDEGLOBAL = 'OverrideGlobal'

class BlackOilFluid
Bases: Fluid

API = 'API'

FRACTIONCO2 = 'CO2Fraction'

FRACTIONCO = 'COFraction'

GASSPECIFICGRAVITY = 'GasSpecificGravity'

GLR = 'GLR'

GOR = 'GOR'

USEGASRATIO = 'UseGasRatio'

USEWATERRATIO = 'UseWaterRatio'

GWR = 'GWR'

FRACTIONH2 = 'H2Fraction'

FRACTIONH2S = 'H2SFraction'

FRACTIONN2 = 'N2Fraction'

WATERCUT = 'WaterCut'

WATERSPECIFICGRAVITY = 'WaterSpecificGravity'

DEADOILDENSITY = 'DeadOilDensity'

USEDEADOILDENSITY = 'UseDeadOilDensity'

DEADOILVISCOSITYCORR = 'DeadOilViscosityCorr'

DEADOILTEMPERATURE1 = 'DeadOilTemperature1'

DEADOILTEMPERATURE2 = 'DeadOilTemperature2'

DEADOILVISCOSITY1 = 'DeadOilViscosity1'

DEADOILVISCOSITY2 = 'DeadOilViscosity2'

LIVEOILVISCOSITYCORR = 'LiveOilViscosityCorr'

LIQUIDVISCOSITYCALC = 'LiquidViscosityCalc'

USEBRAUNERULLMANEQUATION = 'UseBraunerUllmanEquation'

USERWATERCUTCUTOFF = 'UserWatercutCutOff'

UNDERSATURATEDOILVISCOSITYPARA = 'UndersaturatedOilViscosityParA'

UNDERSATURATEDOILVISCOSITYPARB = 'UndersaturatedOilViscosityParB'

UNDERSATURATEDOILVISCOSITYCORR = 'UndersaturatedOilViscosityCorr'

VANDUSERK1 = 'VandUserk1'

VANDUSERK2 = 'VandUserk2'

RICHARDSONKOIW = 'Richardsonkoiw'

RICHARDSONKWIO = 'Richardsonkwio'

OGR = 'OGR'

LGR = 'LGR'

WGR = 'WGR'

ISTEMPLATE = 'IsTemplate'

ISBUILTINTEMPLATE = 'IsBuiltinTemplate'

USERVISCOSITYTABLE = 'UserViscosityTable'

USEREMULSIONTABLE = 'UserEmulsionViscosityTable'

class SinglePointCalibration
Bases: object

SOLUTIONGAS = 'SolutionGas'

LIVEOILFVFCORRELATION = 'OilFVFCorrelation'

LIVEOILVISCCORRELATION = 'LiveOilViscCorrelation'

UNDERSATURATEDOILFVFCORR = 'UndersaturatedOilFVFCorr'

GASCOMPRESSCORRELATION = 'GasCompressCorrelation'

GASVISCCORRELATION = 'GasViscCorrelation'

ABOVEBBPTYPE = 'AboveBBPType'

BELOWBBPTYPE = 'BelowBBPType'

BUBBLEPOINTSATGAS_VALUE = 'BubblepointSatGas_Value'

BUBBLEPOINTSATGAS_PRESSURE = 'BubblepointSatGas_Pressure'

BUBBLEPOINTSATGAS_TEMPERATURE = 'BubblepointSatGas_Temperature'

ABOVEBBPDENSITY_VALUE = 'AboveBBPDensity_Value'

ABOVEBBPDENSITY_PRESSURE = 'AboveBBPDensity_Pressure'

ABOVEBBPDENSITY_TEMPERATURE = 'AboveBBPDensity_Temperature'

ABOVEBBPOFVF_VALUE = 'AboveBBPOFVF_Value'

ABOVEBBPOFVF_PRESSURE = 'AboveBBPOFVF_Pressure'

ABOVEBBPOFVF_TEMPERATURE = 'AboveBBPOFVF_Temperature'

BELOWBBPDENSITY_VALUE = 'BelowBBPDensity_Value'

BELOWBBPDENSITY_PRESSURE = 'BelowBBPDensity_Pressure'

BELOWBBPDENSITY_TEMPERATURE = 'BelowBBPDensity_Temperature'

BELOWBBPOFVF_VALUE = 'BelowBBPOFVF_Value'

BELOWBBPOFVF_PRESSURE = 'BelowBBPOFVF_Pressure'

BELOWBBPOFVF_TEMPERATURE = 'BelowBBPOFVF_Temperature'

BELOWBBPLIVEOILVISCOSITY_VALUE = 'BelowBBPLiveOilViscosity_Value'

BELOWBBPLIVEOILVISCOSITY_PRESSURE = 'BelowBBPLiveOilViscosity_Pressure'

BELOWBBPLIVEOILVISCOSITY_TEMPERATURE = 'BelowBBPLiveOilViscosity_Temperature'

BELOWBBPGASVISCOSITY_VALUE = 'BelowBBPGasViscosity_Value'

BELOWBBPGASVISCOSITY_PRESSURE = 'BelowBBPGasViscosity_Pressure'

BELOWBBPGASVISCOSITY_TEMPERATURE = 'BelowBBPGasViscosity_Temperature'

BELOWBBPGASZ_VALUE = 'BelowBBPGasZ_Value'

BELOWBBPGASZ_PRESSURE = 'BelowBBPGasZ_Pressure'

BELOWBBPGASZ_TEMPERATURE = 'BelowBBPGasZ_Temperature'

class ThermalData
Bases: object

GASHEATCAPACITY = 'GasHeatCapacity'

OILHEATCAPACITY = 'OilHeatCapacity'

WATERHEATCAPACITY = 'WaterHeatCapacity'

GASCONDUCTIVITY = 'GasConductivity'

OILCONDUCTIVITY = 'OilConductivity'

WATERCONDUCTIVITY = 'WaterConductivity'

ENTHALPYCALCMETHOD = 'EnthalpyCalcMethod'

LATENTHEATOFVAPORIZATION = 'LatentHeatOfVaporization'

class BlackOilUserViscosityTable
Bases: object

TEMPERATURE = 'Temperature'

VISCOSITY = 'Viscosity'

class BlackOilUserEmulsionTable
Bases: object

WATERCUT = 'Watercut'

VISCOSITYRATIO = 'ViscosityRatio'

class Boundary
Bases: object

USEPQCURVE = 'UsePQCurve'

USEGASRATIO = 'UseGasRatio'

USEWATERRATIO = 'UseWaterRatio'

ISSURFACECONDITION = 'IsSurfaceCondition'

TEMPERATURE = 'Temperature'

PRESSURE = 'Pressure'

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

GOR = 'GOR'

OGR = 'OGR'

GLR = 'GLR'

LGR = 'LGR'

WATERCUT = 'WaterCut'

GWR = 'GWR'

WGR = 'WGR'

FLOWRATETYPE = 'FlowRateType'

COMPLETIONNAME = 'CompletionName'

ISBOTTOMCOMPLETION = 'IsBottomCompletion'

ISACTIVE = 'IsActive'

WELLNAME = 'WellName'

BOUNDARYNODETYPE = 'BoundaryNodeType'

BOUNDARYNODENAME = 'BoundaryNodeName'

class RateConstraint
Bases: object

OILFLOWRATE = 'OilFlowRate'

WATERFLOWRATE = 'WaterFlowRate'

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

class LocalConstraint
Bases: object

WELLCONTRIBUTION = 'IsControlledWell'

ALHANATICHECK = 'AlhanatiCheck'

FORCESTABLEFLOW = 'ForceStableFlow'

WELLSTATUS = 'WellMayShutIn'

MINGASLIFTRATE = 'MinGasliftRate'

MAXGASLIFTRATE = 'MaxGasliftRate'

MAXCHPFORGASINJECTION = 'MaxChpForGasInjection'

MINLIQUIDRATE = 'MinLiquidRate'

MAXLIQUIDRATE = 'MaxLiquidRate'

MINTOTALGASRATE = 'MinTotalGasRate'

MAXTOTALGASRATE = 'MaxTotalGasRate'

MAXWATERRATE = 'MaxWaterRate'

MAXWELLHEADTEMPERATURE = 'MaxWellheadTemperature'

MAXDRAWDOWNPRESSURE = 'MaxDrawdownPressure'

MINBUBBLEPOINTPRESSURE = 'MinBubblePointPressure'

MAXEVR = 'MaxEvr'

MAXVELOCITY = 'MaxVelocity'

MINPOWER = 'MinPower'

MAXPOWER = 'MaxPower'

MINFREQUENCY = 'MinFrequency'

MAXFREQUENCY = 'MaxFrequency'

MINSPEED = 'MinSpeed'

MAXSPEED = 'MaxSpeed'

MINBEANSIZE = 'MinBeanSize'

MAXBEANSIZE = 'MaxBeanSize'

MAXPRODUCEDGASRATE = 'MaxProducedGasRate'

MAXINJECTIONGASRATE = 'MaxInjectionGasRate'

MAXGOR = 'MaxGor'

MAXCO2 = 'MaxCo2'

MAXH2S = 'MaxH2s'

MAXOILRATE = 'MaxOilRate'

class OptimizerInitialConditions
Bases: object

DUALSTRINGWELLID = 'SiblingWellId'

CONSTRAINTTYPE = 'ConstraintType'

INJECTIONGAS = 'InjectionRate'

ESPFREQUENCY = 'ESPOperatingFrequency'

PCPSPEED = 'PCPOperatingSpeed'

CHOKESIZE = 'BeanSize'

class Casing
Bases: AbstractTubingSection

class CheckValve
Bases: SurfaceComponent

CHECKVALVESETTING = 'CheckValveSetting'

class Choke
Bases: DownholeOrSurfaceComponent

ADJUSTSUBCRITICALCORRELATION = 'AdjustSubcriticalCorrelation'

BEANSIZE = 'BeanSize'

BOTHPHASESFLOWCOEFFICIENT = 'BothPhasesFlowCoefficient'

CALCULATECRITICALPRESSURERATIO = 'CalculateCriticalPressureRatio'

GASEXPANSIONFACTOR = 'GasExpansionFactor'

CRITICALCORRELATION = 'CriticalCorrelation'

CRITICALPRESSURERATIO = 'CriticalPressureRatio'

DISCHARGECOEFFICIENT = 'DischargeCoefficient'

GASPHASEFLOWCOEFFICIENT = 'GasPhaseFlowCoefficient'

HEATCAPACITYRATIO = 'HeatCapacityRatio'

USEFLOWRATEFORCRITICALFLOW = 'UseFlowrateForCriticalFlow'

USEPRESSURERATIOFORCRITICALFLOW = 'UsePressureRatioForCriticalFlow'

USESONICDOWNSTREAMVELOCITYFORCRITICALFLOW = 'UseSonicDownstreamVelocityForCriticalFlow'

USESONICUPSTREAMVELOCITYFORCRITICALFLOW = 'UseSonicUpstreamVelocityForCriticalFlow'

LIQUIDPHASEFLOWCOEFFICIENT = 'LiquidPhaseFlowCoefficient'

SUBCRITICALCORRELATION = 'SubCriticalCorrelation'

TOLERANCE = 'Tolerance'

UPSTREAMPIPEID = 'UpstreamPipeID'

PRINTDETAILEDCALCULATIONS = 'PrintDetailedCalculations'

class Completion
Bases: DownholeComponent, AssociatedToFluid, FluidLink

DIAMETER = 'Diameter'

LENGTH = 'Length'

PHASEANGLE = 'PhaseAngle'

SHOTDENSITY = 'ShotDensity'

PENETRATIONDEPTH = 'PenetrationDepth'

FLUIDENTRYTYPE = 'FluidEntryType'

GEOMETRYPROFILETYPE = 'GeometryProfileType'

RESERVOIRPRESSURE = 'ReservoirPressure'

RESERVOIRTEMPERATURE = 'ReservoirTemperature'

TESTPOINTS = 'CompletionTestPoints'

IPRMODEL = 'IPRModel'

class CompletionConingPoint
Bases: object

LIQUIDFLOWRATE = 'LiquidFlowRate'

GOR = 'GOR'

WATERCUT = 'WaterCut'

class CompositionalFluid
Bases: Fluid

COMPONENTFRACTIONTYPE = 'ComponentFractionType'

USETUNEDFRACTIONS = 'UseTunedFractions'

SHOWALLCOMPONENTS = 'ShowAllComponents'

LIQUIDVISCOSITYCALC = 'LiquidViscosityCalc'

USEBRAUNERULLMANEQUATION = 'UseBraunerUllmanEquation'

USERWATERCUTCUTOFF = 'UserWatercutCutOff'

VANDUSERK1 = 'VandUserk1'

VANDUSERK2 = 'VandUserk2'

RICHARDSONKOIW = 'Richardsonkoiw'

RICHARDSONKWIO = 'Richardsonkwio'

IONSODIUM = 'SodiumIon'

IONCALCIUM = 'CalciumIon'

IONMAGNESIUM = 'MagnesiumIon'

IONPOTASSIUM = 'PotassiumIon'

IONSTRONTIUM = 'StrontiumIon'

IONBARIUM = 'BariumIon'

IONIRON = 'IronIon'

IONCHLORIDE = 'ChlorideIon'

IONSULPHATE = 'SulphateIon'

IONBICARBONATE = 'BicarbonateIon'

IONBROMIDE = 'BromideIon'

TOTALDISSOLVEDSOLIDS = 'TotalDissolvedSolids'

SALTWATERDENSITYTYPE = 'SaltWaterDensityType'

SALTWATERDENSITY = 'SaltWaterDensity'

SALTWATERSALINITY = 'SaltWaterSalinity'

SALTWATERTEMPERATURE = 'SaltWaterTemperature'

ISTEMPLATE = 'IsTemplate'

ISBUILTINTEMPLATE = 'IsBuiltinTemplate'

USEREMULSIONTABLE = 'UserEmulsionViscosityTable'

COMPOSITION = 'Composition'

class Compressor
Bases: SurfaceComponent, SharedPumpParameters, SharedPumpCatalogParameters

ROUTE = 'Route'

HONOURSTONEWALLLIMIT = 'HonourStonewallLimit'

ISRECIPROCATING = 'IsReciprocating'

HEADFACTOR = 'HeadFactor'

class IPRTriLinear
Bases: object

DISTANCETOBOUNDARY = 'DistanceToBoundary'

OUTERRESPERM = 'OuterResPerm'

INNERRESPERM = 'InnerResPerm'

OUTERRESPOROSITY = 'OuterResPorosity'

INNERRESPOROSITY = 'InnerResPorosity'

OUTERRESCOMPRESSIBILITY = 'OuterResCompressibility'

INNERRESCOMPRESSIBILITY = 'InnerResCompressibility'

NUMHYDRAULICFRAC = 'NumHydraulicFrac'

HYDRAULICFRACHALF = 'HydraulicFracHalf'

HYDRAULICFRACWIDTH = 'HydraulicFracWidth'

HYDRAULICFRACPERM = 'HydraulicFracPerm'

HYDRAULICFRACPOROSITY = 'HydraulicFracPorosity'

HYDRAULICFRACCOMPRESSIBILITY = 'HydraulicFracCompressibility'

CALCSKIN = 'CalcSkin'

TIME = 'Time'

RESERVOIRTHICKNESS = 'ReservoirThickness'

CALCULATIONTYPE = 'CalculationType'

ISGASMODEL = 'IsGasModel'

USEVOGELBELOWBUBBLEPOINT = 'UseVogelBelowBubblePoint'

USEVOGELWATERCUTCORRECTION = 'UseVogelWaterCutCorrection'

class IPRDarcy
Bases: object

RATIOTYPE = 'RatioType'

DAMAGEDZONEPERMRATIO = 'DamagedZonePermRatio'

COMPACTEDZONEPERMRATIO = 'CompactedZonePermRatio'

COMPLETIONVERTICALPERMRATIO = 'CompletionVerticalPermRatio'

COMPLETIONINTERVALRATIO = 'CompletionIntervalRatio'

DAMAGEDZONESKIN = 'DamagedZoneSkin'

PERFORATIONSKIN = 'PerforationSkin'

COMPACTEDZONESKIN = 'CompactedZoneSkin'

PARTIALPENETRATIONSKIN = 'PartialPenetrationSkin'

DEVIATIONSKIN = 'DeviationSkin'

GRAVELPACKSKIN = 'GravelPackSkin'

FRACPACKSKIN = 'FracPackSkin'

CALCULATEMECHANICALSKIN = 'CalculateMechanicalSkin'

CALCULATERATEDEPENDENTSKIN = 'CalculateRateDependentSkin'

CHOKELENGTH = 'ChokeLength'

OBSOLETECOMPACTEDZONEDIAMETER = 'ObsoleteCompactedZoneDiameter'

COMPACTEDZONETHICKNESS = 'CompactedZoneThickness'

COMPACTEDZONEPERMEABILITY = 'CompactedZonePermeability'

COMPLETIONDEVIATION = 'CompletionDeviation'

COMPLETIONVERTICALPERMEABILITY = 'CompletionVerticalPermeability'

COMPLETIONINTERVAL = 'CompletionInterval'

DAMAGEDEPTH = 'DamageDepth'

OBSOLETEDAMAGEDZONEDIAMETER = 'ObsoleteDamagedZoneDiameter'

DAMAGEDZONETHICKNESS = 'DamagedZoneThickness'

DAMAGEDZONEPERMEABILITY = 'DamagedZonePermeability'

DRAINAGERADIUS = 'DrainageRadius'

FRACTURECHOKEPERMEABILITY = 'FractureChokePermeability'

FRACTUREFACEDAMAGEPERMEABILITY = 'FractureFaceDamagePermeability'

FRACTUREHALFLENGTH = 'FractureHalfLength'

FRACTUREPROPPANTPERMEABILITY = 'FractureProppantPermeability'

FRACTUREWIDTH = 'FractureWidth'

ISGASMODEL = 'IsGasModel'

MECHANICALSKIN = 'MechanicalSkin'

PERFSKINMETHOD = 'PerfSkinMethod'

RATEDEPENDENTGASSKIN = 'RateDependentGasSkin'

RATEDEPENDENTLIQUIDSKIN = 'RateDependentLiquidSkin'

RESERVOIRAREA = 'ReservoirArea'

RESERVOIRPERMEABILITY = 'ReservoirPermeability'

RESERVOIRTHICKNESS = 'ReservoirThickness'

SHAPEFACTOR = 'ShapeFactor'

USERELATIVEPERMEABILITY = 'UseRelativePermeability'

USECHOKEFRACTURESKIN = 'UseChokeFractureSkin'

USEDAMAGEDZONESKIN = 'UseDamagedZoneSkin'

USEDRAINAGERADIUS = 'UseDrainageRadius'

USEFRACTUREFACESKIN = 'UseFractureFaceSkin'

USEFRACTURESKIN = 'UseFractureSkin'

USEGRAVELPACKSKIN = 'UseGravelPackSkin'

USEPARTIALPENETRATIONDEVIATIONSKIN = 'UsePartialPenetrationDeviationSkin'

USEPERFORATIONSKIN = 'UsePerforationSkin'

USEPSEUDOPRESSUREMETHOD = 'UsePseudoPressureMethod'

USEVOGELBELOWBUBBLEPOINT = 'UseVogelBelowBubblepoint'

USEVOGELWATERCUTCORRECTION = 'UseVogelWaterCutCorrection'

WELLCOMPLETIONTYPE = 'WellCompletionType'

ISTRANSIENT = 'IsTransient'

COMPRESSIBILITY = 'Compressibility'

POROSITY = 'Porosity'

TIME = 'Time'

WATERSATURATION = 'WaterSaturation'

RELATIVEPERMEABILITYOIL = 'RelativePermeabilityOil'

RELATIVEPERMEABILITYWATER = 'RelativePermeabilityWater'

class DistributedCompletionModel
Bases: object

RATIOTYPE = 'RatioType'

DAMAGEDZONEPERMRATIO = 'DamagedZonePermRatio'

COMPACTEDZONEPERMRATIO = 'CompactedZonePermRatio'

COMPLETIONVERTICALPERMRATIO = 'CompletionVerticalPermRatio'

DAMAGEDZONESKIN = 'DamagedZoneSkin'

PERFORATIONSKIN = 'PerforationSkin'

COMPACTEDZONESKIN = 'CompactedZoneSkin'

PARTIALPENETRATIONSKIN = 'PartialPenetrationSkin'

DEVIATIONSKIN = 'DeviationSkin'

GRAVELPACKSKIN = 'GravelPackSkin'

FRACPACKSKIN = 'FracPackSkin'

CALCULATESKIN = 'CalculateSkin'

OBSOLETECOMPACTEDZONEDIAMETER = 'ObsoleteCompactedZoneDiameter'

COMPACTEDZONETHICKNESS = 'CompactedZoneThickness'

COMPACTEDZONEPERMEABILITY = 'CompactedZonePermeability'

COMPLETIONLENGTH = 'CompletionLength'

COMPLETIONMODELTYPE = 'CompletionModelType'

OBSOLETEDAMAGEDZONEDIAMETER = 'ObsoleteDamagedZoneDiameter'

DAMAGEDZONETHICKNESS = 'DamagedZoneThickness'

DAMAGEDZONEPERMEABILITY = 'DamagedZonePermeability'

FLUIDOFVF = 'FluidOFVF'

FLUIDVISCOSITY = 'FluidViscosity'

GASPI = 'GasPI'

GASZ = 'GasZ'

GRAVELPACKPERMEABILITY = 'GravelPackPermeability'

GRAVELPACKTUNNEL = 'GravelPackTunnel'

HORIZONTALWELLLENGTH = 'HorizontalWellLength'

ISGASMODEL = 'IsGasModel'

LIQUIDPI = 'LiquidPI'

LOCATIONECCEN = 'LocationEccen'

LOCATIONXPOS = 'LocationXPos'

LOCATIONYPOS = 'LocationYPos'

LOCATIONZPOS = 'LocationZPos'

PERFORATIONDIAMETER = 'PerforationDiameter'

PERFORATIONLENGTH = 'PerforationLength'

PERFORATIONSHOTDENSITY = 'PerforationShotDensity'

PERMEABILITYX = 'PermeabilityX'

PERMEABILITYY = 'PermeabilityY'

PERMEABILITYZ = 'PermeabilityZ'

RESERVOIREXTENT = 'ReservoirExtent'

RESERVOIRTHICKNESS = 'ReservoirThickness'

RESERVOIRXDIM = 'ReservoirXDim'

RESERVOIRYDIM = 'ReservoirYDim'

SPECIFIEDSKIN = 'SpecifiedSkin'

USEDISTRIBUTEDPI = 'UseDistributedPI'

WELLLENGTH = 'WellLength'

WELLCOMPLETIONTYPE = 'WellCompletionType'

class IPRPSSBabuOdeh
Bases: DistributedCompletionModel

class IPRSSJoshi
Bases: DistributedCompletionModel

class IPRHorizontalPI
Bases: DistributedCompletionModel

class EngineKeywords
Bases: DownholeOrSurfaceComponent

KEYWORDS = 'Keywords'

class ESP
Bases: DownholeComponent

SERIES = 'Series'

USESTAGEBYSTAGECALC = 'UseStageByStageCalc'

BASEFREQUENCY = 'BaseFrequency'

CASINGID = 'CasingID'

OPERATINGPRODUCTIONRATE = 'OperatingProductionRate'

OPERATINGFREQUENCY = 'OperatingFrequency'

DIAMETER = 'Diameter'

GASSEPARATOREFFICIENCY = 'GasSeparatorEfficiency'

HASGASSEPARATOR = 'HasGasSeparator'

HEADFACTOR = 'HeadFactor'

MANUFACTURER = 'Manufacturer'

MAXFLOWRATE = 'MaxFlowRate'

MINFLOWRATE = 'MinFlowRate'

MODEL = 'Model'

NUMBERSTAGES = 'NumberStages'

USEVISCOSITYCORRECTION = 'UseViscosityCorrection'

POWER = 'Power'

USEPOWER = 'UsePower'

PERMANENTMAGNETMOTOR = 'PermanentMagnetMotor'

NUMBEROFPOLES = 'NumberOfPoles'

OVERRIDESLIPPAGEFACTOR = 'OverrideSlippageFactor'

SLIPPAGEFACTOR = 'SlippageFactor'

FLOWRATEFACTOR = 'FlowrateFactor'

POWERFACTOR = 'PowerFactor'

COEFFICIENTA = 'CoefficientA'

COEFFICIENTB = 'CoefficientB'

POWERCORRECTION = 'PowerCorrection'

ISPOWERCORRECTIONCALCULATED = 'IsPowerCorrectionCalculated'

CABLELENGTHBELOWPUMP = 'CableLengthBelowPump'

RECOMBINEGAS = 'RecombineGas'

class MotorCoefficients
Bases: object

PFValues = 'PFValues'

AMPValues = 'AMPValues'

EFFValues = 'EFFValues'

class MotorCatalogData
Bases: object

MANUFACTURER = 'MotorManufacturer'

MOTORNAME = 'MotorName'

NPPOWER = 'NPPower'

NPVOLTAGE = 'NPVoltage'

NPAMPERAGE = 'NPAmperage'

FLOOREFFICIENCY = 'FloorEfficiency'

FLOORPOWERFACTOR = 'FloorPowerFactor'

class CableCatalogData
Bases: object

NAME = 'CableName'

VDROP = 'VDrop'

MAXAMPS = 'MaxAmps'

class ESPMotorCoefficient
Bases: object

AMPVALUE = 'AMPValue'

PFVALUE = 'PFValue'

EFFVALUE = 'EFFValue'

class Expander
Bases: SurfaceComponent, SharedPumpParameters

ROUTE = 'Route'

class IPRFetkovitch
Bases: object

ABSOLUTEOPENFLOWPOTENTIAL = 'AbsoluteOpenFlowPotential'

NEXPONENT = 'NExponent'

class FlowControlValve
Bases: DownholeComponent

USEGENERICMODE = 'UseGenericMode'

SIZECALC = 'SizeCalc'

CHOKEAREA = 'ChokeArea'

PORTDIAMETER = 'PortDiameter'

PORTSNUMBER = 'PortsNumber'

SUBCRITICALCORRELATION = 'SubCriticalCorrelation'

CALCULATECRITICALPRESSURERATIO = 'CalculateCriticalPressureRatio'

CRITICALPRESSURERATIO = 'CriticalPressureRatio'

LIQUIDFLOWCOEFFICIENT = 'LiquidFlowCoefficient'

GASFLOWCOEFFICIENT = 'GasFlowCoefficient'

MAXIMUMFLOWRATETYPE = 'MaximumFlowRateType'

MAXIMUMLIQUIDRATE = 'MaxLiquidFlowThroughValve'

MAXIMUMWATERRATE = 'MaxWaterFlowThroughValve'

MAXIMUMGASRATE = 'MaxGasFlowThroughValve'

MAXIMUMMASSRATE = 'MaxMassFlowThroughValve'

class ValveCatalogData
Bases: object

MANUFACTURER = 'Manufacturer'

TYPE = 'Type'

MODEL = 'Model'

DIAMETER = 'Diameter'

POSITION = 'Position'

class ValveCoefficient
Bases: object

POSITION = 'Position'

OPENINGAREA = 'OpeningArea'

LIQUIDFLOWCOEFFICIENT = 'ValveLiquidFlowCoefficient'

GASFLOWCOEFFICIENT = 'ValveGasFlowCoefficient'

class Flowline
Bases: SurfaceComponent

SHOWASRISER = 'ShowAsRiser'

DETAILEDMODEL = 'DetailedModel'

USEGISDATA = 'UseGISData'

UNDULATIONRATE = 'UndulationRate'

ENTERSURVEYLENGTH = 'EnterSurveyLength'

MEASUREDDISTANCE = 'MeasuredDistance'

HORIZONTALDISTANCE = 'HorizontalDistance'

ELEVATIONDIFFERENCE = 'ElevationDifference'

SEABEDDEPTH = 'SeabedDepth'

PLATFORMHEIGHT = 'PlatformHeight'

AMBIENTTEMPERATURE = 'AmbientTemperature'

AMBIENTAIRTEMPERATURE = 'AmbientAirTemperature'

AMBIENTWATERTEMPERATURE = 'AmbientWaterTemperature'

AMBIENTTEMPERATUREOPTIONS = 'AmbientTemperatureOptions'

AMBIENTFLUIDTYPE = 'AmbientFluidType'

WATERINTERPOLATIONMETHOD = 'WaterInterpolationMethod'

DEVIATIONSURVEYCALC = 'DeviationSurveyCalc'

ISFLIPPED = 'IsFlipped'

GEOTHERMALSURVEYINDEX = 'GeothermalSurveyIndex'

USEGLOBALSETTINGS = 'UseGlobalSettings'

ISDOWNCOMER = 'IsDowncomer'

USEENVIRONMENTALDATA = 'UseEnvironmentalData'

SURFACETEMPERATURE = 'SurfaceTemperature'

DEPTHATSTART = 'DepthAtStart'

USEDEPTH = 'UseDepth'

OVERRIDECORROSION = 'OverrideCorrosion'

ANNULUSFLOW = 'AnnulusFlow'

INNERDIAMETER = 'InnerDiameter'

LENGTH = 'Length'

ROUGHNESS = 'Roughness'

WALLTHICKNESS = 'WallThickness'

INNERPIPEOUTSIDEDIAMETER = 'InnerPipeOutsideDiameter'

OUTERPIPEINSIDEDIAMETER = 'OuterPipeInsideDiameter'

OUTERPIPEWALLTHICKNESS = 'OuterPipeWallThickness'

CATALOGNAME = 'CatalogName'

CATALOGLABEL = 'CatalogLabel'

ENTEROD = 'EnterOD'

GEOMETRYPROFILE = 'GeometryProfile'

GEOTHERMALPROFILE = 'FlowlineGeothermalProfile'

class HeatTransfer
Bases: object

GROUNDCONDUCTIVITY = 'GroundConductivity'

INCLUDEINSIDEFILMCOEFF = 'IncludeInsideFilmCoeff'

ISUCALCULATED = 'IsUCalculated'

PIPEBURIALDEPTH = 'PipeBurialDepth'

PIPECONDUCTIVITY = 'PipeConductivity'

SURROUNDINGFLUIDVELOCITY = 'SurroundingFluidVelocity'

USETHERMALSURVEY = 'UseThermalSurvey'

UCOEFFUSER = 'UCoeffUser'

UCOEFFUSERAIR = 'UCoeffUserAir'

UCOEFFUSERWATER = 'UCoeffUserWater'

UTYPE = 'UType'

UTYPEAIR = 'UTypeAir'

UTYPEWATER = 'UTypeWater'

class FluidComponent
Bases: ModelComponent

MOLECULARWEIGHT = 'MolecularWeight'

TCRIT = 'Tcrit'

TBOIL = 'Tboil'

TMELT = 'Tmelt'

PCRIT = 'Pcrit'

VCRIT = 'Vcrit'

ZCRIT = 'Zcrit'

VCRITVISCOSITY = 'VcritViscosity'

ACF = 'Acf'

PARACHOR = 'Parachor'

OMEGAA = 'OmegaA'

OMEGAB = 'OmegaB'

REFERENCEDENSITY = 'ReferenceDensity'

EOSVOLUMESHIFT = 'EoSVolumeShift'

SPECIFICGRAVITY = 'SpecificGravity'

WATSONKFACTOR = 'WatsonKFactor'

HEATVAPOURISATION = 'HeatVapourisation'

CALORIFICVALUE = 'CalorificValue'

THERMEXPCOEFF = 'ThermExpCoeff'

HYDROCARBONFORM = 'HydrocarbonForm'

ISUSERDEFINED = 'IsUserDefined'

THERMALCOEFFICIENT0 = 'ThermalCoefficient0'

THERMALCOEFFICIENT1 = 'ThermalCoefficient1'

THERMALCOEFFICIENT2 = 'ThermalCoefficient2'

THERMALCOEFFICIENT3 = 'ThermalCoefficient3'

THERMALCOEFFICIENT4 = 'ThermalCoefficient4'

THERMALCOEFFICIENT5 = 'ThermalCoefficient5'

THERMALCOEFFICIENT6 = 'ThermalCoefficient6'

class FluidComponentFraction
Bases: object

SPECIFIEDFRACTION = 'SpecifiedFraction'

TUNEDFRACTION = 'TunedFraction'

COMPONENT = 'Component'

class IPRForchheimer
Bases: object

COEFFICIENTA = 'CoefficientA'

COEFFICIENTF = 'CoefficientF'

class GasLiftInjection
Bases: DownholeComponent

GASLIFTTYPE = 'GasLiftType'

GASRATE = 'GasRate'

GLR = 'GLR'

GLRINCREASE = 'GLRIncrease'

VALVEDIAMETER = 'ValveDiameter'

MANUFACTURER = 'Manufacturer'

SERIES = 'Series'

VALVETYPE = 'ValveType'

VALVESIZE = 'ValveSize'

PORTSIZE = 'PortSize'

PORTAREA = 'PortArea'

BELLOWAREA = 'BellowArea'

DISCHARGECOEFFICIENT = 'DischargeCoefficient'

DISCHARGETOFULLYOPEN = 'DischargeToFullyOpen'

PTRO = 'Ptro'

VALVECHOKE = 'ValveChoke'

SPRINGPRESSURE = 'SpringPressure'

TUNINGFACTOR = 'TuningFactor'

class GenericEquipment
Bases: SurfaceComponent

DISCHARGEPRESSURE = 'DischargePressure'

DISCHARGETEMPERATURE = 'DischargeTemperature'

DUTY = 'Duty'

PRESSUREDROP = 'PressureDrop'

PRESSURERATIO = 'PressureRatio'

PRESSURESPEC = 'PressureSpec'

ROUTE = 'Route'

TEMPERATUREDIFFERENTIAL = 'TemperatureDifferential'

TEMPERATURESPEC = 'TemperatureSpec'

class Pump
Bases: SurfaceComponent, SharedPumpParameters, SharedPumpCatalogParameters

ROUTE = 'Route'

DESIGNPRODUCTIONRATE = 'DesignProductionRate'

MAXFLOWRATE = 'MaxFlowRate'

MINFLOWRATE = 'MinFlowRate'

NUMBERSTAGES = 'NumberStages'

USEVISCOSITYCORRECTION = 'UseViscosityCorrection'

BASESTAGES = 'BaseStages'

HEADFACTOR = 'HeadFactor'

class GeographicSurvey
Bases: object

LATITUDE = 'Latitude'

LONGITUDE = 'Longitude'

ISVERTEX = 'IsVertex'

class GravelPack
Bases: object

GRAVELCASINGID = 'GravelCasingId'

GRAVELPERMEABILITY = 'GravelPermeability'

GRAVELSCREENSIZE = 'GravelScreenSize'

GRAVELTUNNELLENGTH = 'GravelTunnelLength'

class HeatExchanger
Bases: object

DISCHARGEPRESSURE = 'DischargePressure'

DISCHARGETEMPERATURE = 'DischargeTemperature'

DUTY = 'Duty'

PRESSUREDROP = 'PressureDrop'

PRESSURESPEC = 'PressureSpec'

TEMPERATUREDIFFERENTIAL = 'TemperatureDifferential'

TEMPERATURESPEC = 'TemperatureSpec'

class Injector
Bases: DownholeOrSurfaceComponent, AssociatedToFluid

GASFLOWRATE = 'GasFlowRate'

INJECTEDFLUID = 'InjectedFluid'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

TEMPERATURE = 'Temperature'

FLOWRATETYPE = 'FlowrateType'

USEGASRATIO = 'UseGasRatio'

USEWATERRATIO = 'UseWaterRatio'

GOR = 'GOR'

OGR = 'OGR'

GLR = 'GLR'

LGR = 'LGR'

GWR = 'GWR'

WGR = 'WGR'

WATERCUT = 'WaterCut'

USEFLUIDOVERRIDES = 'UseFluidOverrides'

OVERRIDESINITIALIZED = 'OverridesInitialized'

class IPRBackPressure
Bases: object

CONSTANTC = 'ConstantC'

SLOPEN = 'SlopeN'

class IPRHydraulicFracture
Bases: object

FRACTUREHALFLENGTH = 'FractureHalfLength'

FRACTUREPERMEABILITY = 'FracturePermeability'

FRACTUREWIDTH = 'FractureWidth'

ISGASMODEL = 'IsGasModel'

POROSITY = 'Porosity'

RESERVOIRPERMEABILITY = 'ReservoirPermeability'

RESERVOIRRADIUS = 'ReservoirRadius'

RESERVOIRTHICKNESS = 'ReservoirThickness'

TIME = 'Time'

TOTALCOMPRESSIBILITY = 'TotalCompressibility'

USETRANSIENTMODEL = 'UseTransientModel'

USEVOGELBELOWBUBBLEPOINT = 'UseVogelBelowBubblepoint'

USEVOGELWATERCUTCORRECTION = 'UseVogelWaterCutCorrection'

class IPRPIModel
Bases: object

GASPI = 'GasPI'

ISGASMODEL = 'IsGasModel'

LIQUIDPI = 'LiquidPI'

USEVOGELBELOWBUBBLEPOINT = 'UseVogelBelowBubblepoint'

USEVOGELWATERCUTCORRECTION = 'UseVogelWaterCutCorrection'

class IPRJones
Bases: object

GASCOEFFICIENTA = 'GasCoefficientA'

GASCOEFFICIENTB = 'GasCoefficientB'

ISGASMODEL = 'IsGasModel'

LIQUIDCOEFFICIENTA = 'LiquidCoefficientA'

LIQUIDCOEFFICIENTB = 'LiquidCoefficientB'

class Source
Bases: SurfaceComponent, AssociatedToFluid

USEPQCURVE = 'UsePQCurve'

TEMPERATURE = 'Temperature'

SELECTEDRATETYPE = 'SelectedRateType'

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

PRESSURE = 'Pressure'

USEGASRATIO = 'UseGasRatio'

USEWATERRATIO = 'UseWaterRatio'

GOR = 'GOR'

OGR = 'OGR'

GLR = 'GLR'

LGR = 'LGR'

GWR = 'GWR'

WGR = 'WGR'

WATERCUT = 'WaterCut'

USEFLUIDOVERRIDES = 'UseFluidOverrides'

OVERRIDESINITIALIZED = 'OverridesInitialized'

PQCURVE = 'PQCurve'

class Junction
Bases: Source

TREATASSOURCE = 'TreatAsSource'

class Liner
Bases: AbstractTubingSection

class MeasurementPoint
Bases: object

CONNECTEDTOSTARTEQUIPMENT = 'ConnectedToStartEquipment'

class MFLFluid
Bases: FileBasedFluid

LIQUIDVISCOSITYCALC = 'LiquidViscosityCalc'

USERWATERCUTCUTOFF = 'UserWatercutCutOff'

USEBRAUNERULLMANEQUATION = 'UseBraunerUllmanEquation'

VANDUSERK1 = 'VandUserk1'

VANDUSERK2 = 'VandUserk2'

RICHARDSONKOIW = 'Richardsonkoiw'

RICHARDSONKWIO = 'Richardsonkwio'

USEREMULSIONTABLE = 'UserEmulsionViscosityTable'

class MultiphaseBooster
Bases: SurfaceComponent

TOTALPOWER = 'Power'

DISCHARGEPRESSURE = 'Pressure'

PRESSUREDIFFERENTIAL = 'PressureDifferential'

PRESSURERATIO = 'PressureRatio'

TYPE = 'BoosterType'

class GenericMultiphaseBooster
Bases: MultiphaseBooster

PUMPEFFICIENCY = 'Efficiency'

COMPRESSOREFFICIENCY = 'BoosterEfficiency'

class SharedOneSubseaParameters
Bases: MultiphaseBooster

PUMPMODEL = 'PumpModel'

TUNINGFACTOR = 'TuningFactor'

NUMBEROFBOOSTERSINPARALLEL = 'NumberOfBoostersInParallel'

class OneSubseaMultiphaseBooster
Bases: SharedOneSubseaParameters

SPEEDLIMIT = 'SpeedLimit'

RECIRCULATIONFLOWRATE = 'RecirculationFlowRate'

class OneSubseaWetGasCompressor
Bases: SharedOneSubseaParameters

SPEEDSETPOINT = 'SpeedSetPoint'

UPSTREAMCOOLERMODEL = 'UpstreamCoolerModel'

UPSTREAMCOOLERDUTY = 'UpstreamCoolerDuty'

DOWNSTREAMCOOLERMODEL = 'DownstreamCoolerModel'

DOWNSTREAMCOOLERDUTY = 'DownstreamCoolerDuty'

RECIRCULATIONMASSRATE = 'RecirculationRate'

MAXTEMPERATURE = 'MaxTemperature'

class MultiplierAdder
Bases: SurfaceComponent

ADDER = 'Adder'

SCALER = 'Scaler'

USEASMULTIPLIER = 'UseAsMultiplier'

ADDERRATETYPE = 'AdderRateType'

ADDEDLIQUID = 'AddedLiquid'

ADDEDGAS = 'AddedGas'

ADDEDMASS = 'AddedMass'

class OpenHole
Bases: AbstractTubingSection

class Packer
Bases: DownholeComponent

class PCP
Bases: DownholeComponent

BASESPEED = 'BaseSpeed'

CASINGID = 'CasingID'

OPERATINGPRODUCTIONRATE = 'OperatingProductionRate'

OPERATINGSPEED = 'OperatingSpeed'

DIAMETER = 'Diameter'

GASSEPARATOREFFICIENCY = 'GasSeparatorEfficiency'

HASGASSEPARATOR = 'HasGasSeparator'

HEADFACTOR = 'HeadFactor'

MANUFACTURER = 'Manufacturer'

NOMINALFLOWRATE = 'NominalFlowRate'

MODEL = 'Model'

USEVISCOSITYCORRECTION = 'UseViscosityCorrection'

POWER = 'Power'

USEPOWER = 'UsePower'

SPEEDFACTOR = 'SpeedFactor'

SLIPFACTOR = 'SlipFactor'

FLOWRATEFACTOR = 'FlowrateFactor'

POWERFACTOR = 'PowerFactor'

ISTOPDRIVE = 'IsTopDrive'

RODDIAMETER = 'RodDiameter'

class PVTFluid
Bases: FileBasedFluid

class RodPump
Bases: DownholeComponent

GASSEPARATOREFFICIENCY = 'GasSeparatorEfficiency'

HASGASSEPARATOR = 'HasGasSeparator'

HASGASRECOMBINEDATWELLHEAD = 'HasGasRecombinedAtWellHead'

NOMINALFLOWRATE = 'NominalFlowRate'

USEVISCOSITYCORRECTION = 'UseViscosityCorrection'

MAXDP = 'MaxDP'

MAXPOWER = 'MaxPower'

RODDIAMETER = 'RodDiameter'

BASISTYPE = 'BasisType'

SLIPECOEFFICIENT = 'SlipCoefficient'

PUMPEFFICIENCY = 'PumpEfficiency'

STROKEPERMINUTE = 'StrokesPerMinute'

STROKELENGTH = 'StrokeLength'

PLUNGERDIAMTER = 'PlungerDiameter'

class SinglePhaseSeparator
Bases: DownholeComponent

EFFICIENCY = 'Efficiency'

SEPARATEDFLUID = 'SeparatedFluid'

class Sink
Bases: SurfaceComponent

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

PRESSURE = 'Pressure'

FLOWRATETYPE = 'FlowrateType'

class SlidingSleeve
Bases: DownholeComponent

ISOPEN = 'IsOpen'

class SpotReport
Bases: DownholeOrSurfaceComponent

FLOWMAP = 'FlowMap'

PHASEENVELOPE = 'PhaseEnvelope'

COMPOSITIONDETAILS = 'CompositionDetails'

STOCKTANKFLUID = 'StockTankFluid'

FLOWINGFLUID = 'FlowingFluid'

CUMULATIVEVALUES = 'CumulativeValues'

MULTIPHASEFLOWVALUES = 'MultiPhaseFlowValues'

SLUGGINGVALUES = 'SluggingValues'

PIGGINGVALUES = 'PiggingValues'

HEATTRANSFERVALUES = 'HeatTransferValues'

CUSTOM = 'Custom'

CUSTOMREPORTNAME = 'CustomReportName'

CUSTOMKEYWORDS = 'CustomKeywords'

class CompositionDetailsReport
Bases: object

GENERALDATA = 'General data'

PHASEFRACTIONS = 'Phase fractions'

COMPONENTTABLE = 'Component table'

SpotReportSectionMapping = {'Composition details': 'CompositionDetails', 'Cumulative values': 'CumulativeValues', 'Flow map': 'FlowMap', 'Flowing fluid properties': 'FlowingFluid', 'Heat transfer values': 'HeatTransferValues', 'Multiphase flow values': 'MultiPhaseFlowValues', 'Phase envelope': 'PhaseEnvelope', 'Pigging values': 'PiggingValues', 'Slugging values': 'SluggingValues', 'Stock tank fluid properties': 'StockTankFluid'}

SpotReportDisplayName = {'CompositionDetails': 'Composition details', 'CumulativeValues': 'Cumulative values', 'FlowMap': 'Flow map', 'FlowingFluid': 'Flowing fluid properties', 'HeatTransferValues': 'Heat transfer values', 'MultiPhaseFlowValues': 'Multiphase flow values', 'PhaseEnvelope': 'Phase envelope', 'PiggingValues': 'Pigging values', 'SluggingValues': 'Slugging values', 'StockTankFluid': 'Stock tank fluid properties'}

class SubsurfaceSafetyValve
Bases: DownholeComponent

BEANID = 'BeanID'

class Study
Bases: object

NAME = 'Name'

DESCRIPTION = 'Description'

class AbstractTask
Bases: object

TASKNAME = 'Name'

DESCRIPTION = 'Description'

STUDY = 'Study'

USEPHASERATIO = 'UsePhaseRatio'

FLOWRATECONDITION = 'FlowRateCondition'

FLOWRATECONDITIONTEMPERATURE = 'FlowRateConditionTemperature'

FLOWRATECONDITIONPRESSURE = 'FlowRateConditionPressure'

class SingleBranchSimulation
Bases: AbstractTask

PRODUCER = 'Producer'

BRANCHTERMINATOR = 'BranchTerminator'

SENSITIVITYVARIABLES = 'SensitivityVariables'

SENSITIVITYVARIABLE = 'SensitivityVariable'

class SensitivityVariable
Bases: object

COMPONENT = 'Component'

VARIABLE = 'Variable'

VALUES = 'Values'

APPLYALL = 'ApplyAll'

TYPE = 'Type'

class VfpTablesSimulation
Bases: SingleBranchSimulation

ARTIFICIALLIFTSENSITIVITY = 'ArtificialLiftSensitivity'

LIQUIDRATESENSITIVITY = 'LiquidRateSensitivity'

GASRATESENSITIVITY = 'GasRateSensitivity'

GORSENSITIVITY = 'GorSensitivity'

GLRSENSITIVITY = 'GlrSensitivity'

OGRSENSITIVITY = 'OgrSensitivity'

LGRSENSITIVITY = 'LgrSensitivity'

WATERCUTSENSITIVITY = 'WatercutSensitivity'

WGRSENSITIVITY = 'WgrSensitivity'

GWRSENSITIVITY = 'GwrSensitivity'

OUTLETPRESSURESENSITIVITY = 'OutletPressureSensitivity'

RESERVOIRSIMULATOR = 'TableType'

TABLENUMBER = 'TableNumber'

INCLUDETEMPERATURE = 'IncludeTemperature'

BOTTOMHOLEDATUMDEPTH = 'WellHeadDepth'
VFPTABLETYPE is for source only(no need for well)

Type:
Note

VFPTABLETYPE = 'GenerateInjectionTable'

RATETYPE = 'RateType'

GLRATIOTYPE = 'GLRatioType'

GWRATIOTYPE = 'GWRatioType'

GOR = 'GOR'

GLR = 'GLR'

GWR = 'GWR'

WGR = 'WGR'

WATERCUT = 'WaterCut'

LIQUIDFLOWRATE = 'LiquidFlowRate'

GASFLOWRATE = 'GasFlowRate'

class NetworkSimulation
Bases: AbstractTask

USESURFACEBOUNDARYCONDITIONS = 'UseSurfaceBoundaryConditions'

class NetworkOptimizerSimulation
Bases: AbstractTask

class ObjectiveFunctionTypes
Bases: object

MAXOILRATE = 'MaxOilRate'

MAXLIQUIDRATE = 'MaxLiquidRate'

MAXPRODUCEDGASRATE = 'MaxProducedGasRate'

MAXTOTALGASRATE = 'MaxTotalGasRate'

MINOILRATE = 'MinOilRate'

MINLIQUIDRATE = 'MinLiquidRate'

MINPRODUCEDGASRATE = 'MinProducedGasRate'

MINTOTALGASRATE = 'MinTotalGasRate'

MINPOWER = 'MinPower'

class InjectionGasrateTypes
Bases: object

FIXEDINJECTIONGASRATE = 'FixedInjectionGasrate'

MAXIMUMINJECTIONGASRATE = 'MaximumInjectionGasrate'

class GenerateCurvesTypes
Bases: object

ALWAYS = 'Always'

SELECTEDWELLS = 'SelectedWells'

class PowerTypes
Bases: object

FIXEDPOWER = 'FixedPower'

MAXIMUMPOWER = 'MaximumPower'

class RateTypes
Bases: object

FIXEDLIQUIDRATE = 'FixedLiquidrate'

FIXEDGASRATE = 'FixedGasrate'

FIXEDOILRATE = 'FixedOilrate'

class ControlTypes
Bases: object

GASLIFT = 'Gaslift'

ESP = 'Esp'

PCP = 'Pcp'

CHOKE = 'Choke'

class Options
Bases: object

class WellCurveParameters
Bases: object

CONTROLVALUESPERCURVE = 'ControlValuesPerCurve'

PRESSUREVALUESPERWELL = 'PressureValuesPerWell'

MINIMUMCHOKEBEANSIZE = 'MinBeanSizePerWell'

MAXIMUMCHOKEBEANSIZE = 'MaxBeanSizePerWell'

MINIMUMESPFREQUENCY = 'MinFrequencyPerWell'

MAXIMUMESPFREQUENCY = 'MaxFrequencyPerWell'

MINIMUMPCPSPEED = 'MinSpeedPerWell'

MAXIMUMPCPSPEED = 'MaxSpeedPerWell'

MINIMUMGASLIFTPERWELL = 'MinGasliftPerWell'

MAXIMUMGASLIFTPERWELL = 'MaxGasliftPerWell'

REGENERATECURVES = 'GenerateCurvesType'

class NetworkSolver
Bases: object

LINKTOOPTIMIZERTOLERANCE = 'LinkToTolerance'

NATWORKFAILURETOLERANCE = 'FailureTolerance'

class Search
Bases: object

CONSTRAINTSCONVEGENCETOLERANCE = 'SearchConverganceTolerance'

MAXIMUMGASRATE = 'SearchMinGasRate'

GASRATEMARGINALGRADIENT = 'SearchMarginGradient'

MINIMUMPOWER = 'SearchMinPower'

POWERMARGINALGRADIENT = 'SearchPowerMarginGradient'

class Initialization
Bases: object

UseLastKnownWellheadPressure = 'UseLastKnownWellheadPressures'

InitialWellheadPressure = 'InitialWellheadPressure'

UseCurrentControlParameters = 'UseCurrentControlParameters'

class Optimization
Bases: object

CONSTRAINTSCONVERGENCETOLERANCE = 'ToleranceConstraint'

PRESSURECONVERGENCETOLERANCE = 'TolerancePressure'

CONSTRAINTSMAXITERATIONS = 'MaxIterationsConstraint'

PRESSUREMAXITERATIONS = 'MaxIterationsPressure'

DAMPINGTHRESHOLD = 'DampingThreshold'

DAMPINGFACTOR = 'DampingFactor'

STABLEFLOWMARGIN = 'StableFlowMargin'

ACCELERATEBRANCHCONSTRAINTS = 'AccelerateBranchConstraints'

MAXIMUMOPTIMIZERRESTARTS = 'MaximumRestarts'

VERBOSEMESSAGES = 'VerboseMessages'

class OptimizationControl
Bases: object

OBJECTIVEFUNCTION = 'ObjectiveFunction'

class ControlVariables
Bases: object

CHOKEBEANSIZE = 'ChokeBeanSize'

GASLIFTRATE = 'GasliftRate'

ESPFREQUENCY = 'ESPFrequency'

PCPSPEED = 'PCPSpeed'

class OptimizationTargets
Bases: object

INJECTIONTYPE = 'InjectionType'

INJECTIONRATE = 'InjectionGasRate'

POWERTYPE = 'PowerType'

POWER = 'Power'

LIQUIDRATETYPE = 'RateType'

LIQUIDRATE = 'LiquidRate'

class GlobalConstraints
Bases: object

MINIMUMTOTALGASRATE = 'MinimumTotalGasRate'

MAXIMUMTOTALGASRATE = 'MaximumTotalGasRate'

MAXIMUMPRODUCEDGASRATE = 'MaximumProducedGasRate'

MAXIMUMWATERRATE = 'MaximumWaterRate'

MAXIMUMLIQUIDRATE = 'MaximumLiquidRate'

MAXIMUMOILRATE = 'MaximumOilRate'

MAXIMUMTOTALGOR = 'MaximumTotalGOR'

MAXIMUMCO2 = 'MaximumCO2'

MAXIMUMH2S = 'MaximumH2S'

class Scope
Bases: object

IGNOREGLOBALCONSTRAINS = 'IgnoreGlobalConstrains'

IGNORELOCALCONSTRAINS = 'IgnoreLocalConstrains'

class GLDiagnosticsSimulation
Bases: SingleBranchSimulation

OUTLETPRESSURE = 'OutletPressure'

DIAGNOSTICSTYPE = 'DiagnosticsType'

THROTTLING = 'ThrottlingOption'

INJECTIONGRADIENT = 'PressureGradientType'

TARGETINJECTIONRATE = 'TargetInjectionRate'

SURFACEINJECTIONTEMPERATURE = 'SurfaceGasTemperature'

SURFACEINJECTIONPRESSURE = 'SurfaceGasPressure'

class PTProfileSimulation
Bases: SingleBranchSimulation

CALCULATEDVARIABLE = 'CalculationVariableType'

CUSTOMVARIABLE = 'CalculationVariable'

FLOWRATETYPE = 'FlowRateType'

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

INLETPRESSURE = 'InletPressure'

OUTLETPRESSURE = 'OutletPressure'

class CustomVariable
Bases: object

COMPONENT = 'Component'

VARIABLE = 'Variable'

MINVALUE = 'MinValue'

MAXVALUE = 'MaxValue'

ISDIRECTPROPORTIONALITY = 'IsDirectProportionality'

class SystemAnalysisSimulation
Bases: PTProfileSimulation

SENSITIVITYMETHOD = 'SensitivityMethod'

class WellPerformanceCurvesSimulation
Bases: SingleBranchSimulation

FLOWRATEPOINTS = 'FlowratePoints'
Deprecated, please use SensitivityVariable instead

class SENSITIVITYVARIABLE
Bases: object

COMPONENT = 'Component'

VARIABLE = 'Variable'

VALUES = 'Values'

APPLYALL = 'ApplyAll'

class NodalAnalysisSimulation
Bases: SingleBranchSimulation

OUTLETPRESSURE = 'OutletPressure'

NODALMEASUREMENTPOINT = 'NodalMeasurementPoint'

MAXOUTFLOWPRESSURE = 'MaxOutflowPressure'

MAXFLOWRATETYPE = 'MaxFlowRateType'

MAXGASRATE = 'MaxGasRate'

MAXLIQUIDRATE = 'MaxLiquidRate'

MAXMASSRATE = 'MaxMassRate'

INFLOWPOINTS = 'InflowPoints'

OUTFLOWPOINTS = 'OutflowPoints'

LIMITINFLOW = 'LimitInflow'

LIMITOUTFLOW = 'LimitOutflow'

class ThreePhaseSeparator
Bases: SurfaceComponent

GASOILEFFICIENCY = 'GasOilEfficiency'

WATEROILEFFICIENCY = 'WaterOilEfficiency'

PRESSURE = 'Pressure'

PRODUCTFLUID = 'ProductFluid'

class Tubing
Bases: AbstractTubingSection

class TwoPhaseSeparator
Bases: SurfaceComponent

EFFICIENCY = 'Efficiency'

PRESSURE = 'Pressure'

PRODUCTIONSTREAM = 'ProductionStream'

DISCARDEDSTREAM = 'DiscardedStream'

class IPRVogel
Bases: object

ABSOLUTEOPENFLOWPOTENTIAL = 'AbsoluteOpenFlowPotential'

VOGELCOEFFICIENT = 'VogelCoefficient'

class WaterTempVelocitySurvey
Bases: object

ISGLOBAL = 'IsGlobal'

class GasliftSensitivity
Bases: object

COMPONENTNAME = 'Gas lift data'

SURFACEGASTEMPERATURE = 'SurfaceGasTemperature'

SURFACEGASPRESSURE = 'SurfaceGasPressure'

TARGETINJECTIONRATE = 'TargetInjectionRate'

MINIMUMINJECTIONRATE = 'MinimumInjectionRate'

MAXIMUMINJECTIONRATE = 'MaximumInjectionRate'

MINVALVEINJECTIONDP = 'MinValveInjectionDP'

class Well
Bases: SurfaceComponent, AssociatedToFluid, CanBeTemplate

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

FLOWRATETYPE = 'FlowRateType'

ISINJECTION = 'IsInjection'

ISSIMPLE = 'IsSimple'

CHECKVALVESETTING = 'CheckValveSetting'

WELLHEADDEPTH = 'WellheadDepth'

AMBIENTTEMPERATURE = 'AmbientTemperature'

USEGASLIFTVALVE = 'UseGasliftValve'

ALHANATICHECK = 'AlhanatiCheck'

SURFACEGASTEMPERATURE = 'SurfaceGasTemperature'

SURFACEGASPRESSURE = 'SurfaceGasPressure'

TARGETINJECTIONRATE = 'TargetInjectionRate'

MINIMUMINJECTIONRATE = 'MinimumInjectionRate'

MAXIMUMINJECTIONRATE = 'MaximumInjectionRate'

MINVALVEINJECTIONDP = 'MinValveInjectionDP'

GASLIFTINPUTOPTION = 'GasLiftInputOption'

GASSPECIFICGRAVITY = 'GasSpecificGravity'

TUNINGFACTOR = 'TuningFactor'

TESTRACKTEMPERATURE = 'TestRackTemperature'

NITROGENCORRECTIONTYPE = 'NitrogenCorrectionType'

TRAJECTORY = 'Trajectory'

GEOTHERMALPROFILE = 'BoreholeGeothermalProfile'

COMMENTS = 'Comments'

WELLOUTLETEQUIPMENT = 'WellOutletEquipment'

ISMULTIPOINTING = 'IsMultiPointing'

DIAGNOSTICSTYPE = 'DiagnosticsType'

THROTTLINGOPTION = 'ThrottlingOption'

PRESSUREGRADIENTTYPE = 'PressureGradientType'

OVERRIDECORROSION = 'OverrideCorrosion'

TYPE = 'WellType'

TUBINGCONFIGURATION = 'TubingConfig'

ISINJECTIONTHROUGHOUTERTUBING = 'IsInjectionThroughOuterTubing'

class HeatTransfer
Bases: object

UVALUEINPUTOPTION = 'HeatTransferMethod'

UCOEFF = 'UCoeff'

USEWELLHEADAMBIENTTEMPERATURE = 'UseWellHeadAmbientTemperature'

PRODUCTIONINJECTIONTIME = 'ProductionInjectionTime'

HEATTRANSFERCOEFFICIENTSTATUS = 'HeatTransferCoefficientStatus'

TUBINGHEADFLUIDTEMPERATURE = 'ProductionFluidMeasuredTemperature'

LONGTUBINGHEADFLUIDTEMPERATURE = 'ProductionFluidMeasuredTemperature'

SHORTTUBINGHEADFLUIDTEMPERATURE = 'ShortTubingProductionFluidMeasuredTemperature'

ISGEOSURVEYDEPTHTVD = 'IsGeoSurveyDepthTVD'

class DeviationSurvey
Bases: object

SURVEYTYPE = 'SurveyType'

RELATIVEDEPTHOPTION = 'DeviationRelativeDepth'

DEPENDENTPARAMETER = 'TrajectoryDependantParameter'

CALCULATEUSINGTANGENTIALMETHOD = 'CalculateUsingTangentialMethod'

class NodalPoint
Bases: object

NODALTYPE = 'NodalType'

DEPTH = 'Depth'

WELLSTRINGTYPE = 'WellStringType'

EQUIPMENT = 'Equipment'

NAME = 'Name'

class NodalOperatingEnvelopePlot
Bases: object

GASFLOWRATE = 'GasFlowrate'

GASFLOWRATEPRESSURE = 'GasFlowratePressure'

OILFLOWRATE = 'OilFlowrate'

OILFLOWRATEPRESSURE = 'OilFlowratePressure'

MASSFLOWRATE = 'MassFlowrate'

MASSFLOWRATEPRESSURE = 'MassFlowratePressure'

LIQUIDFLOWRATE = 'LiquidFlowrate'

LIQUIDFLOWRATEPRESSURE = 'LiquidFlowratePressure'

class GlobalCatalog
Bases: object

NAME = 'Name'

CATALOGTYPE = 'CatalogType'

class FlowlineGeometry
Bases: object

MEASUREDDISTANCE = 'MeasuredDistance'

HORIZONTALDISTANCE = 'HorizontalDistance'

ELEVATION = 'Elevation'

LATITUDE = 'Latitude'

LONGITUDE = 'Longitude'

ISVERTEX = 'IsVertex'

class GeothermalSurvey
Bases: object

MEASUREDDISTANCE = 'MeasuredDistance'

HORIZONTALDISTANCE = 'HorizontalDistance'

TEMPERATURE = 'Temperature'

CURRENTVELOCITY = 'CurrentVelocity'

UCOEFF = 'UCoeff'

THERMALCONDUCTIVITY = 'ThermalConductivity'

DENSITY = 'Density'

SPECIFICHEATCAPACITY = 'SpecificHeatCapacity'

class CoatingHeatTransfer
Bases: object

THERMALCONDUCTIVITY = 'ThermalConductivity'

DESCRIPTION = 'Description'

THICKNESS = 'Thickness'

class RelativePermeability
Bases: object

WATERSATURATION = 'WaterSaturation'

RELATIVEPERMEABILITYOIL = 'RelativePermeabilityOil'

RELATIVEPERMEABILITYWATER = 'RelativePermeabilityWater'

class WellTrajectory
Bases: object

MEASUREDDEPTH = 'MeasuredDepth'

TRUEVERTICALDEPTH = 'TrueVerticalDepth'

INCLINATION = 'Inclination'

AZIMUTH = 'Azimuth'

MAXDOGLEGSEVERITY = 'MaxDogLegSeverity'

class CompletionTestPoint
Bases: object

LIQUIDFLOWRATE = 'LiquidFlowRate'

GASFLOWRATE = 'GasFlowRate'

STATICRESERVOIRPRESSURE = 'StaticReservoirPressure'

BOTTOMHOLEFLOWINGPRESSURE = 'BottomHoleFlowingPressure'

class PQCurve
Bases: object

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

PRESSURE = 'Pressure'

class RiskIndexLimits
Bases: object

NEGLIGIBLE = 'Negligible'

LOW = 'Low'

MODERATE = 'Moderate'

HIGH = 'High'

class TpaCorrosionModel
Bases: object

OXYGENORBACTERIA = 'OxygenOrBacteria'

PREEXISTINGDAMAGE = 'PreExistingDamage'

POWDERORDEBRIS = 'PowderOrDebris'

PIPEDEPLOYMENTYEAR = 'PipeDeploymentYear'

CORROSIONASSESSMENTYEAR = 'CorrosionAssessmentYear'

class DeWaardCorrosionModel
Bases: object

EFFICIENCY = 'Efficiency'

CALCULATEPH = 'CalculatePH'

PHVALUE = 'PHValue'

class Wellstream
Bases: AssociatedToFluid

ISPRODUCTIONFLOWDIRECTION = 'IsProductionFLowDirection'

CHECKVALVESETTINGS = 'CheckValveSetting'

USEPQCURVE = 'UsePQCurve'

TEMPERATURE = 'Temperature'

SELECTEDRATETYPE = 'SelectedRateType'

GASFLOWRATE = 'GasFlowRate'

LIQUIDFLOWRATE = 'LiquidFlowRate'

MASSFLOWRATE = 'MassFlowRate'

PRESSURE = 'Pressure'

USEGASRATIO = 'UseGasRatio'

USEWATERRATIO = 'UseWaterRatio'

GOR = 'GOR'

OGR = 'OGR'

GLR = 'GLR'

LGR = 'LGR'

GWR = 'GWR'

WGR = 'WGR'

WATERCUT = 'WaterCut'

USEFLUIDOVERRIDES = 'UseFluidOverrides'

class WellCalibration
Bases: SingleBranchSimulation

TESTDATA = 'TestData'

USEOILFLUID = 'UseOilFluid'

CALIBRATIONCORRELATIONS = 'CalibrationCorrelations'

class Test
Bases: object

NAME = 'Name'

DATE = 'Date'

ISACTIVE = 'IsActive'

COMMENTS = 'Comments'

TESTVALUES = 'Values'

PARAMETERFACTORS = 'ParameterFactors'

class TestData
Bases: object

VALUE = 'Value'

class ParameterFactor
Bases: object

MINVALUE = 'MinValue'

MAXVALUE = 'MaxValue'

INITIALVALUE = 'InitialValue'

class sixgill.definitions.Constants
Bases: object

Enumerated constants used by Pipesim domain model

class WellCalibration
Bases: object

Constants for WellCalibration results publishing.

NORMALIZED = 'Normalized'

PARAMETERNAME = 'ParameterName'

CALIBRATE = 'Calibrate'

TESTOBJECTID = '_TestObjectId'

FLUIDTYPE = 'FluidType'

OIL = 'Oil'

GAS = 'Gas'

class Profile
Bases: object

Profile result types for well calibration.

ORIGINAL = 'Original'

CALIBRATED = 'Calibrated'

NORMALIZED = 'Normalized'

MEASUREDDATA = 'Measured Data'

class Results
Bases: object

Results structure properties.

CASES = 'Cases'

CASENAME = 'CaseName'

MATCHINGQUALITY = 'MatchingQuality'

TUNINGPARAMETERS = 'TuningParameters'

NAME = 'Name'

UNIT = 'Unit'

VARIABLE = 'Variable'

MEASURED = 'Measured'

ORIGINALMODEL = 'OriginalModel'

ORIGINALMODELDIFF = 'OriginalModelDiff'

CALIBRATED = 'Calibrated'

CALIBRATEDDIFF = 'CalibratedDiff'

NORMALIZED = 'Normalized'

NORMALIZEDDIFF = 'NormalizedDiff'

INITIAL = 'Initial'

OPTIMIZED = 'Optimized'

OPTIMIZEDDIFF = 'OptimizedDiff'

PROFILEDATA = 'ProfileData'

class TubingConfiguration
Bases: object

SINGLESTRING = 'SingleString'

CONCENTRICTUBING = 'ConcentricTubing'

DUALSTRING = 'DualString'

class WellType
Bases: object

Available well types

PRODUCTION = 'Production'

INJECTION = 'Injection'

ADVANCED = 'Advanced'

class Wellstream
Bases: object

TOP = 'Top'

MIDDLE = 'Middle'

BOTTOM = 'Bottom'

class BoundaryNode
Bases: object

TUBING = 'Tubing'

ANNULUS = 'Annulus'

SHORTTUBING = 'Short tubing'

LONGTUBING = 'Long tubing'

INNERTUBING = 'Inner tubing'

OUTERTUBING = 'Outer tubing'

class ConstraintType
Bases: object

GASLIFT = 'Gaslift'

ESP = 'Esp'

PCP = 'Pcp'

CHOKE = 'Choke'

FLOWLINE = 'Flowline'

SINK = 'Sink'

NOCONTROL = 'NoControl'

class WellImportFluidConflict
Bases: object

CREATENEW = 'CreateNew'

USEEXISTING = 'UseExisting'

DONTIMPORT = 'DontImport'

class SoilType
Bases: object

PEATDRY = 'PeatDry'

PEATWET = 'PeatWet'

PEATICY = 'PeatIcy'

LOAM = 'Loam'

SANDYDRY = 'SandyDry'

SANDYMOIST = 'SandyMoist'

SANDYSOAKED = 'SandySoaked'

CLAYDRY = 'ClayDry'

CLAYMOIST = 'ClayMoist'

CLAYWET = 'ClayWet'

CLAYFROZEN = 'ClayFrozen'

GRAVEL = 'Gravel'

GRAVELSANDY = 'GravelSandy'

LIMESTONE = 'Limestone'

SANDSTONE = 'Sandstone'

ICE = 'Ice'

ICEN40C = 'IceN40C'

SNOWLOOSE = 'SnowLoose'

SNOWHARD = 'SnowHard'

USERDEFINED = 'UserDefined'

class MetoceanDataLocation
Bases: object

GULFOFMEXICO = 'GOM'

NORTHSEA = 'NSea'

WESTAFRICA = 'WAfrica'

WESTAUSTRALIA = 'WAustralia'

OFFSHOREBRAZIL = 'OffshoreBrazil'

USERDEFINED = 'UserDefined'

class NetworkSolverMethod
Bases: object

AUTOMATIC = 'Automatic'

STANDARD = 'Standard'

ADVANCED = 'Advanced'

class LiveOilFVFCorrelation
Bases: object

STANDING = 'Standing'

VASQUEZANDBEGGS = 'VasquezAndBeggs'

KARTOATMODJO = 'Kartoatmodjo'

PETROSKYFARSHAD = 'PetroskyFarshad'

ELSHARKAWY = 'Elsharkawy'

class UndersaturatedOilFVFCorrelation
Bases: object

VASQUEZANDBEGGS = 'VasquezAndBeggs'

PETROSKYFARSHAD = 'PetroskyFarshad'

class LiveOilViscCorrelation
Bases: object

BEGGSANDROBINSON = 'BeggsAndRobinson'

CHEWANDCONNALY = 'ChewandConnaly'

KARTOATMODJO = 'Kartoatmodjo'

KHAN = 'Khan'

DEGHETTO = 'DeGhetto'

HOSSAIN = 'Hossain'

ELSHARKAWY = 'Elsharkawy'

PETROSKYFARSHAD = 'PetroskyFarshad'

class GasCompressCorrelation
Bases: object

STANDING = 'Standing'

HALLANDYARBOROUGH = 'HallAndYarborough'

DRANCHUKROBINSON = 'Robinsonetal'

class GasViscCorrelation
Bases: object

LEEETAL = 'Leeetal'

class CharacterizationSystem
Bases: object

PVTI = 'PVTi'

DBR = 'DBR'

MULTIFLASH = 'Multiflash'

class BICsCorrelation
Bases: object

PVTI = 'PVTi'

OILANDGAS1 = 'OilAndGas1'

OILANDGAS2 = 'OilAndGas2'

OILANDGAS3 = 'OilAndGas3'

OILANDGAS4 = 'OilAndGas4'

class IPRModels
Bases: object

IPRBACKPRESSURE = 'IPRBackPressure'

IPRDARCY = 'IPRDarcy'

IPRTRILINEAR = 'IPRTriLinear'

IPRFETKOVITCH = 'IPRFetkovitch'

IPRFORCHHEIMER = 'IPRForchheimer'

IPRHORIZONTALPI = 'IPRHorizontalPI'

IPRHYDRAULICFRACTURE = 'IPRHydraulicFracture'

IPRJONES = 'IPRJones'

IPRPIMODEL = 'IPRPIModel'

IPRPSSBABUODEH = 'IPRPSSBabuOdeh'

IPRSSJOSHI = 'IPRSSJoshi'

IPRVOGEL = 'IPRVogel'

class ErosionModels
Bases: object

API14E = 'API14e'

class CorrosionModels
Bases: object

DEWAARD1995 = 'deWaard1995'

TPA = 'Tpa'

NONE = 'None'

class CompositionalFluidFlash
Bases: object

class PhysicalPropertiesMethod
Bases: object

INTERPOLATE = 'Interpolate'

HYBRID = 'Hybrid'

RIGOROUS = 'Rigorous'

class TemperatureEnthalpyMethod
Bases: object

INTERPOLATE = 'Interpolate'

HYBRID = 'Hybrid'

RIGOROUS = 'Rigorous'

class SingleComponentSystem
Bases: object

YES = 'Yes'

NO = 'No'

AUTOMATIC = 'Automatic'

class MultiphaseFlowCorrelationSource
Bases: object

BAKER_JARDINE = 'BJA'

TULSA = 'Tulsa'

OLGAS = 'OLGAS'

TUFFPUNIFIED = 'TUFFP Unified'

LEDAFLOWPM = 'LedaFlow PM'

NEOTEC = 'Neotec'

class MultiphaseFlowCorrelation
Bases: object

class BakerJardine
Bases: object

ANSARI = 'Ansari'

BEGGSBRILLORIGINAL = 'Beggs & Brill Original'

BEGGSBRILLTAITELDUKLERMAP = 'Beggs & Brill, Taitel Dukler map'

BEGGSBRILLREVISED = 'Beggs & Brill Revised'

BEGGSBRILLREVISEDTAITELDUKLERMAP = 'Beggs & Brill Revised, Taitel Dukler map'

BAKERJARDINEREVISED = 'Baker Jardine Revised'

DUKLERAGAFLANIGAN = 'Dukler, AGA & Flanigan'

DUKLERAGAFLANIGAN_EATONHOLDUP = 'Dukler, AGA & Flanigan (Eaton Holdup)'

MUKHERJEEBRILL = 'Mukherjee & Brill'

NOSLIPASSUMPTION = 'No Slip Assumption'

OLIEMANS = 'Oliemans'

XIAO = 'Xiao'

DUNSROS = 'Duns & Ros'

GOVIERAZIZFOGARASI = 'Govier, Aziz & Fogarasi'

GRAY_MODIFIED = 'Gray (modified)'

GRAY_ORIGINAL = 'Gray (original)'

HAGEDORNBROWN = 'Hagedorn & Brown'

HAGEDORNBROWNDUNSROSMAP = 'Hagedorn & Brown, Duns & Ros map'

ORKISZEWSKI = 'Orkiszewski'

class OLGAS
Bases: object

OLGAS20171_2PHASE = 'OLGAS 2017.1 2-Phase'

OLGAS20171_3PHASE = 'OLGAS 2017.1 3-Phase'

OLGAS20171_3PHASEHD = 'OLGAS 2017.1 3-Phase HD'

OLGAS20231_2PHASE = 'OLGAS 2023.1 2-Phase'

OLGAS20231_3PHASE = 'OLGAS 2023.1 3-Phase'

OLGAS20231_3PHASEHD = 'OLGAS 2023.1 3-Phase HD'

OLGAS20251_2PHASE = 'OLGAS 2025.1 2-Phase'

OLGAS20251_3PHASE = 'OLGAS 2025.1 3-Phase'

OLGAS20251_3PHASEHD = 'OLGAS 2025.1 3-Phase HD'

OLGAS20261_2PHASE = 'OLGAS 2026.1 2-Phase'

OLGAS20261_2PHASECO2 = 'OLGAS 2026.1 2-Phase CO2'

OLGAS20261_3PHASE = 'OLGAS 2026.1 3-Phase'

OLGAS20261_3PHASEHD = 'OLGAS 2026.1 3-Phase HD'

class TUFFPUnified
Bases: object

TUFFPV20111_3PHASE_DEFAULT = 'TUFFP v. 2011.1 3-Phase (default)'

TUFFPV20111_3PHASE_EMULSIONOVERRIDE = 'TUFFP v. 2011.1 3-Phase (emulsion override)'

TUFFPV20111_2PHASE = 'TUFFP v. 2011.1 2-Phase'

TUFFPV2024_3PHASE = 'TUFFP v. 2024 3-Phase'

class LedaFlowPM
Bases: object

LEDAFLOWV14_3PHASE = 'LedaFlow v. 1.4 3-Phase'

LEDAFLOWV14_2PHASE = 'LedaFlow v. 1.4 2-Phase'

LEDAFLOWV22_3PHASE = 'LedaFlow v. 2.2 3-Phase'

LEDAFLOWV22_2PHASE = 'LedaFlow v. 2.2 2-Phase'

class Neotec
Bases: object

GREGORY = 'Gregory'

AZIZGOVIERFOGARASI = 'Aziz Govier Fogarasi'

EATONOLIEMANS = 'Eaton Oliemans'

HUGHMARKDUKLER = 'Hughmark Dukler'

XIAOMODFILM = 'Xiao Mod. Film'

GOMEZ = 'Gomez'

GOMEZENHANCED = 'Gomez Enhanced'

class TulsaLegacy
Bases: object

BEGGSBRILL = 'Beggs & Brill'

DUNSROS = 'Duns & Ros'

GOVIERAZIZ = 'Govier, Aziz'

HAGEDORNBROWN_REVISED = 'Hagedorn & Brown (Revised)'

HAGEDORNBROWN_ORIGINAL = 'Hagedorn & Brown (Original)'

MUKHERJEEBRILL = 'Mukherjee & Brill'

ORKISZEWSKI = 'Orkiszewski'

DUKLER = 'Dukler'

class NodalAnalysisLimits
Bases: object

LIQUIDFLOWRATE = 'LiquidFlowRate'

GASFLOWRATE = 'GasFlowRate'

MASSFLOWRATE = 'MassFlowRate'

class FlowRateCondition
Bases: object

STOCKTANK = 'StockTank'

INSITU = 'Flowing'

class TubingPosition
Bases: object

POSITIONED = 'Positioned'

CENTRALIZED = 'Centralized'

FLUSHJOINT = 'FlushJoint'

NOTPOSITIONED = 'NotPositioned'

class HeatTransferCoefficient
Bases: object

CALCULATE = 'Calculate'

SPECIFY = 'Specify'

class PerforationPosition
Bases: object

POSITIONED = 'Positioned'

CENTERED = 'Centered'

ECCENTERED = 'Eccentered'

class PerforationGunPhaseAngle
Bases: object

ZERO = 'zero'

P45 = 'p45'

P60 = 'p60'

P72 = 'p72'

P90 = 'p90'

P99 = 'p99'

P120 = 'p120'

P120_P60 = 'p120_p60'

P135_P45 = 'p135_p45'

P140_P20 = 'p140_p20'

P180 = 'p180'

PM10 = 'pm10'

PM20 = 'pm20'

PM45 = 'pm45'

ZERO_PM45 = 'zero_pm45'

PM60 = 'pm60'

ZERO_PM60 = 'zero_pm60'

PM90 = 'pm90'

P45_PNDLM = 'p45_pndlm'

ZERO_PM35 = 'zero_pm35'

MOEB45 = 'moeb45'

P120_P40 = 'p120_p40'

class PerforationGunHardware
Bases: object

STANDARD = 'Standard'

OBSOLETE = 'Obsolete'

NONSTANDARD = 'NonStandard'

PURE = 'PURE'

STDPURE = 'STDPURE'

OBSPURE = 'ObsPURE'

NONSTANDARDPURE = 'NonStandardPURE'

MYSTERY = 'Mystery'

UNKNOWN = 'Unknown'

class PenetrationModelOptions
Bases: object

ROCKONLY = 'RockOnly'

CONCRETEONLY = 'ConcreteOnly'

ROCKORCONCRETE = 'RockOrConcrete'

class PenetrationModelType
Bases: object

ROCK = 'Rock'

CONCRETE = 'Concrete'

class NodalPointType
Bases: object

SURFACE = 'Surface'

DOWNHOLE = 'Downhole'

class PerforationGunAPITestEdition
Bases: object

ESTIMATED_API = 'Estimated_API'

UNOFFICIAL_API = 'Unofficial_API'

UNOFFICIAL_C_33M = 'Unofficial_C_33M'

UNOFFICIAL_19B_1ST_ED = 'Unofficial_19B_1st_Ed'

RP43_4THED = 'RP43_4thEd'

RP43_5THED = 'RP43_5thEd'

RP43_C_33M = 'RP43_C_33M'

A19B_1STED = 'A19B_1stEd'

CUSTOM_VALUES = 'Custom_Values'

BASED_CUSTOM_VALUES = 'Based_Custom_Values'

BASED_A19B_1STED = 'Based_A19B_1stEd'

BASED_RP43_C_33M = 'Based_RP43_C_33M'

BASED_RP43_5THED = 'Based_RP43_5thEd'

BASED_RP43_4THED = 'Based_RP43_4thEd'

BASED_UNOFFICIAL_19B_1ST_ED = 'Based_Unofficial_19B_1st_Ed'

BASED_UNOFFICIAL_C_33M = 'Based_Unofficial_C_33M'

BASED_UNOFFICIAL_API = 'Based_Unofficial_API'

class DeviationSurveyType
Bases: object

VERTICAL = 'VerticalDeviation'

TWODIMENSIONAL = 'TwoDimensional'

THREEDIMENSIONAL = 'ThreeDimensional'

class ReferenceDepthOption
Bases: object

OriginalRKB = 'OriginalRKB'

RKB = 'RKB'

GL = 'GL'

MSL = 'MSL'

THF = 'THF'

class UValueInputOption
Bases: object

InputSingleUValue = 'InputSingleUValue'

InputMultipleUValues = 'InputMultipleUValues'

class PipeHeatTransfer
Bases: object

INSULATED = 'Insulated'

COATED = 'Coated'

BAREINAIR = 'BareInAir'

BAREINWATER = 'BareInWater'

USERSUPPLIED = 'UserSupplied'

class PipeBurialMethod
Bases: object

METHOD2009 = 'Method2009'

METHOD2000 = 'Method2000'

METHOD1983 = 'Method1983'

class InsideFilmCoeffMethod
Bases: object

KREITH = 'Kreith'

KAMINSKY = 'Kaminsky'

class TrilinearCalculationType
Bases: object

CONSTANTPRESSURE = 'ConstantPressure'

CONSTANTRATE = 'ConstantRate'

class FlowRateType
Bases: object

LIQUIDFLOWRATE = 'LiquidFlowRate'

GASFLOWRATE = 'GasFlowRate'

MASSFLOWRATE = 'MassFlowRate'

class FlowControlValveMaxFlowRateType
Bases: object

LIQUIDFLOWRATE = 'LiquidFlowRate'

WATERFLOWRATE = 'WaterFlowRate'

GASFLOWRATE = 'GasFlowRate'

MASSFLOWRATE = 'MassFlowRate'

class FlowControlValveSizeCalc
Bases: object

CHOKEAREA = 'EquivalentChokeArea'

PORTDIAMETER = 'PortDiameter'

class RangeType
Bases: object

RANGEINCREMENT = 'rangeIncrement'

RANGEDECREMENT = 'rangeDecrement'

RANGESTEP = 'rangeStep'

RANGEMULTIPLY = 'rangeMultiply'

class SinglePhaseFlowCorrelation
Bases: object

MOODY = 'Moody'

AGA = 'AGA'

PANHANDLEA = "Panhandle 'A'"

PANHANDLEB = "Panhandle 'B'"

HAZEN_WILLIAMS = 'Hazen - Williams'

WEYMOUTH = 'Weymouth'

CULLENDER_SMITH = 'Cullender - Smith'

class SystemVarType
Bases: object

UNDEFINED = 'varUndefined'

INLETPRESSURE = 'varInletPressure'

OUTLETPRESSURE = 'varOutletPressure'

LIQFLOWRATE = 'varLiqFlowrate'

GASFLOWRATE = 'varGasFlowrate'

MASSFLOWRATE = 'varMassFlowrate'

CUSTOM = 'varCustom'

class DeviationRelativeDepth
Bases: object

ORIGINALRKB = 'OriginalRKB'

RKB = 'RKB'

GL = 'GL'

MSL = 'MSL'

THF = 'THF'

class TrajectoryDependentParameter
Bases: object

MD = 'MD'

TVD = 'TVD'

ANGLE = 'Angle'

class SurveyType
Bases: object

VERTICALDEVIATION = 'VerticalDeviation'

TWODIMENSIONAL = 'TwoDimensional'

THREEDIMENSIONAL = 'ThreeDimensional'

class ZoneMaterial
Bases: object

UNKNOWN = 'unknown'

SHALE = 'shale'

SAND = 'sand'

WATER = 'water'

class GISWMSLayerPropertyFormat
Bases: object

PNG = 'PNG'

JPEG = 'JPEG'

class GasRatioOption
Bases: object

GLR = 'GLR'

GOR = 'GOR'

LGR = 'LGR'

OGR = 'OGR'

class WaterRatioOption
Bases: object

WATERCUT = 'WaterCut'

GWR = 'GWR'

WGR = 'WGR'

class DeadOilViscosityCorrelation
Bases: object

BEGGSANDROBINSON = 'BeggsAndRobinson'

GLASO = 'Glaso'

KARTOATMODJO = 'Kartoatmodjo'

DEGHETTO = 'DeGhetto'

HOSSAIN = 'Hossain'

ELSHARKAWY = 'Elsharkawy'

PETROSKYFARSHAD = 'PetroskyFarshad'

USER2POINT = 'User2Point'

USERTABLE = 'UserTable'

class LiveOilViscosityCorrelation
Bases: object

BEGGSANDROBINSON = 'BeggsAndRobinson'

CHEWANDCONNALY = 'ChewandConnaly'

KARTOATMODJO = 'Kartoatmodjo'

KHAN = 'Khan'

DEGHETTO = 'DeGhetto'

HOSSAIN = 'Hossain'

ELSHARKAWY = 'Elsharkawy'

PETROSKYFARSHAD = 'PetroskyFarshad'

class EnthalpyCalcMethod
Bases: object

METHOD1983 = 'Method1983'

METHOD2009 = 'Method2009'

class UndersaturatedOilViscosityCorrelation
Bases: object

NONE = 'None'

VASQUEZANDBEGGS = 'VasquezAndBeggs'

KOUZEL = 'Kouzel'

KARTOATMODJO = 'Kartoatmodjo'

KHAN = 'Khan'

DEGHETTO = 'DeGhetto'

HOSSAIN = 'Hossain'

ELSHARKAWY = 'Elsharkawy'

BERGMANANDSUTTON = 'BergmanAndSutton'

PETROSKYFARSHAD = 'PetroskyFarshad'

class CriticalFlowCorrelation
Bases: object

MECHANISTIC = 'Mechanistic'

GILBERT = 'Gilbert'

ROS = 'Ros'

ACHONG = 'Achong'

BAXENDELL = 'Baxendell'

ASHFORD = 'Ashford'

POETBECK = 'Poetbeck'

OMANA = 'Omana'

PILEHVARI = 'Pilehvari'

class SubCriticalFlowCorrelation
Bases: object

MECHANISTIC = 'Mechanistic'

API14B = 'API14b'

ASHFORD = 'Ashford'

class ComponentFractionType
Bases: object

MOLE = 'Mole'

MASS = 'Mass'

class LiquidViscosityCalculationMethod
Bases: object

CONTINUOUSPHASE = 'ContinuousPhase'

OILWATERVOLUMERATIO = 'OilWaterVolumeRatio'

ORIGINALWOELFLIN = 'OriginalWoelflin'

WOELFLINLOOSE = 'WoelflinLoose'

WOELFLINMEDIUM = 'WoelflinMedium'

WOELFLINTIGHT = 'WoelflinTight'

BRINKMAN = 'Brinkman'

VANDVAND = 'VandVand'

VANDBARNEAMIZRAHI = 'VandBarneaMizrahi'

VANDUSER = 'VandUser'

RICHARDSON = 'Richardson'

LEVITONLEIGHTON = 'LevitonLeighton'

USERTABLE = 'UserTable'

class SaltWaterDensity
Bases: object

DEFAULTDENSITY = 'DefaultDensity'

DENSITY = 'Density'

SALINITY = 'Salinity'

class FluidFlashType
Bases: object

PRESSURETEMPERATURE = 'PressureTemperature'

PRESSUREENTHALPYMASS = 'PressureEnthalpyMass'

PRESSUREENTROPYMASS = 'PressureEntropyMass'

PRESSUREENTHALPYMOLAR = 'PressureEnthalpyMolar'

PRESSUREENTROPYMOLAR = 'PressureEntropyMolar'

class IPRDarcyRatioType
Bases: object

RATIO = 'Ratio'

ABSOLUTE = 'Absolute'

class PerforationSkinMethod
Bases: object

MCLEOD = 'McLeod'

KARAKASTARIQ = 'KarakasTariq'

class WellCompletionType
Bases: object

NONE = 'None'

OPENHOLE = 'OpenHole'

PERFORATED = 'Perforated'

GRAVELPACKEDANDPERFORATED = 'GravelPackedAndPerforated'

OPENHOLEGRAVELPACK = 'OpenHoleGravelPack'

FRACPACK = 'FracPack'

class ChokeValveEquation
Bases: object

MECHANISTIC = 'Mechanistic'

APIRP11V2 = 'APIRP11V2'

class AmbientTemperatureOption
Bases: object

INPUTSINGLEVALUE = 'InputSingleValue'

INPUTMULTIPLEVALUES = 'InputMultipleValues'

USEGLOBALVALUE = 'UseGlobalValue'

class AmbientFluid
Bases: object

AIR = 'Air'

WATER = 'Water'

class WaterInterpolationMethod
Bases: object

INTERPOLATE = 'Interpolate'

STEPFUNCTION = 'StepFunction'

class DeviationSurveyCalculationMethod
Bases: object

MEASUREDDISTANCE = 'measuredDistance'

HORIZONTALDISTANCE = 'horizontalDistance'

VERTICALDISTANCE = 'verticalDistance'

class CompletionTestType
Bases: object

MULTIPOINT = 'Multipoint'

ISOCHRONAL = 'Isochronal'

class GasLiftType
Bases: object

INJECTIONGASRATE = 'InjectionGasRate'

GLR = 'GLR'

GLRINCREASE = 'GLRIncrease'

class GaugeType
Bases: object

UNDEFINED = 'gaugeUndefined'

PRESSURE = 'gaugePressure'

FLOWRATE = 'gaugeFlowRate'

TEMPERATURE = 'gaugeTemperature'

class HeatExchangerPressureSpecification
Bases: object

DISCHARGEPRESSURE = 'dischargePressure'

PRESSUREDROP = 'pressureDrop'

class HeatExchangerTemperatureSpecification
Bases: object

DELTATEMPERATURE = 'deltaTemperature'

DISCHARGETEMPERATURE = 'dischargeTemperature'

DUTY = 'duty'

class OilCalibrationType
Bases: object

DENSITY = 'Density'

OFVF = 'OFVF'

class RodPumpBasisType
Bases: object

STROKELENGTHFREQUENCY = 'StrokeLengthFrequency'

NOMINALRATE = 'NominalRate'

class NetworkDiagramLayerProperty
Bases: object

DEFAULT = 'Default'

LINKLAYER = 'LinkLayer'

EQUIPMENT = 'Equipment'

JUNCTION = 'Junction'

SINKSOURCE = 'SinkSource'

FOLDERS = 'Folders'

GAUGES = 'Gauges'

PROPERTYPANELS = 'PropertyPanels'

CUSTOM = 'Custom'

class SensitivityVariableType
Bases: object

NONE = 'varNone'

INFLOW = 'varInflow'

OUTFLOW = 'varOutflow'

XAXIS = 'varXAxis'

SENSITIVITY = 'varSensitivity'

class CalculatedVariable
Bases: object

INLETPRESSURE = 'calcInletPressure'

OUTLETPRESSURE = 'calcOutletPressure'

FLOWRATE = 'calcFlowrate'

CUSTOM = 'calcCustom'

class Fluid
Bases: object

LIQUID = 'liquid'

GAS = 'gas'

WATER = 'water'

class FluidType
Bases: object

BLACKOIL = 'fluidBlackOil'

COMPOSITIONAL = 'fluidCompositional'

PVT = 'fluidPVT'

MFL = 'fluidMFL'

STEAM = 'fluidSteam'

class PVTPackage
Bases: object

E300 = 'E300'

GERG = 'GERG'

MULTIFLASH = 'MULTIFLASH'

class MultiphaseBoosterType
Bases: object

GENERIC = 'GenericBooster'

ONESUBSEA = 'OneSubseaBooster'

WETGASCOMPRESSOR = 'WetGasCompressor'

class OneSubseaBoosterModel
Bases: object

HX310_250_180 = 'FRAMO Helico-Axial 310-250/180'

HX310_400_180 = 'FRAMO Helico-Axial 310-400/180'

HX310_500_45 = 'FRAMO Helico-Axial 310-500/45'

HX310_500_180 = 'FRAMO Helico-Axial 310-500/180'

HX310_600_120 = 'FRAMO Helico-Axial 310-600/120'

HX310_700_45 = 'FRAMO Helico-Axial 310-700/45'

HX310_800_120 = 'FRAMO Helico-Axial 310-800/120'

HX310_900_45 = 'FRAMO Helico-Axial 310-900/45'

HX310_1100_45 = 'FRAMO Helico-Axial 310-1100/45'

HX310_1100_120 = 'FRAMO Helico-Axial 310-1100/120'

HX360_1200_38 = 'FRAMO Helico-Axial 360-1200/38'

HX360_1500_38 = 'FRAMO Helico-Axial 360-1500/38'

HX360_1800_38 = 'FRAMO Helico-Axial 360-1800/38'

HX330_350_200 = 'OneSubsea Helico-Axial 330-350/200'

HX330_450_200 = 'OneSubsea Helico-Axial 330-450/200'

HX330_550_200 = 'OneSubsea Helico-Axial 330-550/200'

HX330_650_200 = 'OneSubsea Helico-Axial 330-650/200'

HX330_800_200 = 'OneSubsea Helico-Axial 330-800/200'

HX330_1000_200 = 'OneSubsea Helico-Axial 330-1000/200'

HX330_1200_200 = 'OneSubsea Helico-Axial 330-1200/200'

HX330_1400_200 = 'OneSubsea Helico-Axial 330-1400/200'

class WetGasCompressorModel
Bases: object

CRC385_2400_51 = 'OneSubsea-CRC385-2400-51'

CRC385_3600_51 = 'OneSubsea-CRC385-3600-51'

CRC385_4800_51 = 'OneSubsea-CRC385-4800-51'

CRC385_5800_51 = 'OneSubsea-CRC385-5800-51'

CRC385_6900_51 = 'OneSubsea-CRC385-6900-51'

CRC385_8400_51 = 'OneSubsea-CRC385-8400-51'

class WetGasCompressorCoolerModel
Bases: object

NONE = 'None'

USERSPECIFIED = 'User specified'

COOLER6M8B = 'Cooler-6m-8b'

class SeparatorProductFluid
Bases: object

LIQUID = 'liquid'

GAS = 'gas'

WATER = 'water'

OIL = 'oil'

GASOIL = 'gasOil'

GASWATER = 'gasWater'

class TubingSectionType
Bases: object

CASING = 'Casing'

LINER = 'Liner'

OPENHOLE = 'OpenHole'

TUBING = 'Tubing'

TAILPIPE = 'TailPipe'

LONGTUBING = 'Long'

SHORTTUBING = 'Short'

INNERTUBING = 'Inner'

OUTERTUBING = 'Outer'

class AnnulusMaterial
Bases: object

CEMENT = 'Cement'

MUD = 'Mud'

BRINE = 'Brine'

WATER = 'Water'

GAS = 'Gas'

OIL = 'Oil'

DIESEL = 'Diesel'

ACID = 'Acid'

class UserEquipmentType
Bases: object

SURFACE = 'Surface'

ARTIFICIALLIFT = 'ArtificialLift'

DOWNHOLE = 'Downhole'

class CheckValveSetting
Bases: object

NONE = 'None'

BLOCKFORWARD = 'BlockForward'

BLOCKREVERSE = 'BlockReverse'

BLOCKBOTH = 'Off'

class GasLiftInputOption
Bases: object

USEGASSPECIFICGRAVITY = 'UseGasSpecificGravity'

ASSOCIATEEXISTINGFLUID = 'AssociateExistingFluid'

class NitrogenCorrectionMethod
Bases: object

DAKSUTTON = 'DakSutton'

WRINKLEREADES1989 = 'WrinklerEades1989'

class GenericEquipmentPressureSpecification
Bases: object

DISCHARGEPRESSURE = 'dischargePressure'

DELTAPRESSURE = 'deltaPressure'

PRESSURERATIO = 'pressureRatio'

class GenericEquipmentThermodynamics
Bases: object

DEFAULT = 'defaultRoute'

ISENTHALPIC = 'isenthalpicRoute'

ISENTROPIC = 'isentropicRoute'

ISOTHERMAL = 'isothermalRoute'

class CompressorThermodynamics
Bases: object

ADIABATIC = 'routeAdiabatic'

POLYTROPIC = 'routePolytropic'

MOLLIER = 'routeMollier'

class ViscosityCorrection
Bases: object

NONE = 'None'

CENTRILIFT = 'Centrilift'

REDA = 'Reda'

TURZO = 'Turzo'

USER = 'User'

class ProfilePlotOption
Bases: object

DEFAULT = 'Default'

ELEVATIONVSPRESSURE = 'ElevationVsPressure'

ELEVATIONVSTEMPERATURE = 'ElevationVsTemperature'

PRESSUREVSTOTAL_DISTANCE = 'PressureVsTotal_Distance'

TEMPERATUREVSTOTAL_DISTANCE = 'TemperatureVsTotal_Distance'

class PumpThermodynamics
Bases: object

ADIABATIC = 'Adiabatic'

MOLLIER = 'Mollier'

ISOTHERMAL = 'Isothermal'

class CompletionFluidEntry
Bases: object

SINGLEPOINT = 'SinglePoint'

DISTRIBUTED = 'Distributed'

class Orientation
Bases: object

VERTICAL = 'Vertical'

HORIZONTAL = 'Horizontal'

class BoreholeFluid
Bases: object

MUD = 'Mud'

BRINE = 'Brine'

WATER = 'Water'

GAS = 'Gas'

OIL = 'Oil'

DIESEL = 'Diesel'

ACID = 'Acid'

class FormationFluid
Bases: object

OIL = 'Oil'

WATER = 'Water'

GAS = 'Gas'

class RockType
Bases: object

SANDSTONE = 'Sandstone'

LIMESTONE = 'Limestone'

DOLOMITE = 'Dolomite'

SHALE = 'Shale'

COAL = 'Coal'

class PerforationFlowRate
Bases: object

LIQUIDFLOWRATE = 'LiquidFlowRate'

GASFLOWRATE = 'GasFlowRate'

class SensitivityMethod
Bases: object

PERMUTED = 'Permuted'

STEPWITHVARIABLE1 = 'StepWithVariable1'

STEPWITHXAXIS = 'StepWithXAxis'

class VFPTablesOperationTable
Bases: object

ECLIPSE = 'TableEclipse'

PORES = 'TablePores'

VIP = 'TableVIP'

COMP4 = 'TableComp4'

MORES = 'TableMoRes'

class VfpTablesType
Bases: object

PRODUCTION = 'Production'

INJECTION = 'Injection'

class DiagnosticsType
Bases: object

FIXEDPRESSURE = 'FixedPressure'

FIXEDINJECTION = 'FixedInjection'

FIXEDBOTH = 'FixedBoth'

class ThrottlingType
Bases: object

ON = 'On'

OFF = 'Off'

class FlowDirectionTypes
Bases: object

FORWARD = 'forward'

BACKWARD = 'backward'

UNKNOWN = 'unknown'

class PressureGradientType
Bases: object

INCLUDEFRICTIONLOSSES = 'FrictionElevation'

STATIC = 'Static'

class GasLift
Bases: object

Gas Lift Design constants

class DiagnosticsOperationDiagnostics
Bases: object

FIXEDPRESSURE = 'FixedPressure'

FIXEDINJECTION = 'FixedInjection'

FIXEDBOTH = 'FixedBoth'

class DiagnosticsOperationThrottling
Bases: object

ON = 'On'

OFF = 'Off'

class PressureGradient
Bases: object

FRICTIONELEVATION = 'FrictionElevation'

STATIC = 'Static'

class SolutionPoint
Bases: object

LIQUIDPRODRATE = 'LiquidProdRate'

RESERVOIRPRESSURE = 'ReservoirPressure'

INJECTIONRATE = 'InjectionRate'

INJECTIONPRESSURE = 'InjectionPressure'

class DesignSpacing
Bases: object

NEWSPACING = 'NewSpacing'

CURRENTSPACING = 'CurrentSpacing'

OPTIMUMDEPTH = 'OptimumDepth'

VALVEPORTDEPTH = 'ValvePortDepth'

class ResponseSolution
Bases: object

LIQUIDPRODRATE = 'LiquidProdRate'

RESERVOIRPRESSURE = 'ReservoirPressure'

INJECTIONRATE = 'InjectionRate'

INJECTIONPRESSURE = 'InjectionPressure'

class TransferFactor
Bases: object

PINJPPROD = 'PinjPprod'

PPROD = 'Pprod'

class TransferGradient
Bases: object

SURFACEOFFSET = 'SurfaceOffset'

SURFACEOFFSETDP = 'SurfaceOffsetDP'

class DesignMethod
Bases: object

IPOSURFACECLOSE = 'IpoSurfaceClose'

IPOPTMINMAX = 'IpoPtMinMax'

PPODESIGN = 'PpoDesign'

class UnloadingTemperature
Bases: object

INJECTION = 'Injection'

PRODUCTION = 'Production'

AMBIENT = 'Ambient'

UNLOADING = 'Unloading'

class ProductionPressureCurve
Bases: object

MODEL = 'Model'

class DesignSolutionPoint
Bases: object

LIQUIDPRODRATE = 'LiquidProdRate'

RESERVOIRPRESSURE = 'ReservoirPressure'

INJECTIONRATE = 'InjectionRate'

INJECTIONPRESSURE = 'InjectionPressure'

class TopValveLocation
Bases: object

LIQUIDTOSURFACE = 'LiquidToSurface'

LIQUIDLEVEL = 'LiquidLevel'

CALCLIQUIDLEVEL = 'CalcLiquidLevel'

class OperatingValves
Bases: object

ORIFICE = 'Orifice'

IPO = 'IPO'

PPO = 'PPO'

class DesignTreatTransferGradient
Bases: object

OPENINGPRESSURE = 'OpeningPressure'

CLOSINGPRESSURE = 'ClosingPressure'

class DesignTransferGradientDP
Bases: object

INJECTIONPRESSURE = 'InjectionPressure'

PRODUCTIONPRESSURE = 'ProductionPressure'

class BlackOilCalibrationSolutionGas
Bases: object

LASATER = 'Lasater'

STANDING = 'Standing'

VASQUEZANDBEGGS = 'VasquezAndBeggs'

GLASO = 'Glaso'

KARTOATMODJO = 'Kartoatmodjo'

DEGHETTOETAL = 'DeGhettoEtAl'

PETROSKYFARSHAD = 'PetroskyFarshad'

class MultiflashComponent
Bases: object

ONE_2_DIETHYLBENZENE = '1,2-Diethylbenzene'

TWO_2_DIMETHYLPROPANE = '2,2-Dimethylpropane'

THREE_METHYL_HEXANE = '3-methyl hexane'

AMMONIA = 'Ammonia'

ARGON = 'Argon'

BENZENE = 'Benzene'

BUTANE = 'Butane'

CARBON_DIOXIDE = 'Carbon Dioxide'

CARBON_MONOXIDE = 'Carbon Monoxide'

CUMENE = 'Cumene'

CYCLOHEXANE = 'Cyclohexane'

CYCLOPENTANE = 'Cyclopentane'

DECANE = 'Decane'

DIETHYLENE_GLYCOL = 'Diethylene Glycol'

DOCOSANE = 'Docosane'

DODECANE = 'Dodecane'

DOTRIACONTANE = 'Dotriacontane'

EICOSANE = 'Eicosane'

ETHANE = 'Ethane'

ETHANOL = 'Ethanol'

ETHYLBENZENE = 'Ethylbenzene'

ETHYLCYCLOHEXANE = 'Ethylcyclohexane'

ETHYLENE = 'Ethylene'

ETHYLENE_GLYCOL = 'Ethylene Glycol'

HELIUM = 'Helium'

HENEICOSANE = 'Heneicosane'

HEPTACOSANE = 'Heptacosane'

HEPTADECANE = 'Heptadecane'

HEPTANE = 'Heptane'

HEXACOSANE = 'Hexacosane'

HEXADECANE = 'Hexadecane'

HEXANE = 'Hexane'

HEXATRIACONTANE = 'Hexatriacontane'

HYDROGEN = 'Hydrogen'

HYDROGEN_SULPHIDE = 'Hydrogen Sulphide'

ISOBUTANE = 'Isobutane'

ISOPENTANE = 'Isopentane'

METHANE = 'Methane'

METHANOL = 'Methanol'

METHYLCYCLOHEXANE = 'Methylcyclohexane'

METHYLCYCLOPENTANE = 'Methylcyclopentane'

M_XYLENE = 'M-Xylene'

NAPHTHALENE = 'Naphthalene'

NITROGEN = 'Nitrogen'

NONACOSANE = 'Nonacosane'

NONADECANE = 'Nonadecane'

NONANE = 'Nonane'

OCTACOSANE = 'Octacosane'

OCTADECANE = 'Octadecane'

OCTANE = 'Octane'

OXYGEN = 'Oxygen'

O_XYLENE = 'O-Xylene'

PENTACOSANE = 'Pentacosane'

PENTADECANE = 'Pentadecane'

PENTANE = 'Pentane'

PROPANE = 'Propane'

P_XYLENE = 'P-Xylene'

SALT_COMPONENT = 'Salt Component'

TETRACOSANE = 'Tetracosane'

TETRADECANE = 'Tetradecane'

TOLUENE = 'Toluene'

TRIACONTANE = 'Triacontane'

TRICOSANE = 'Tricosane'

TRIDECANE = 'Tridecane'

TRIETHYLENE_GLYCOL = 'Triethylene Glycol'

UNDECANE = 'Undecane'

WATER = 'Water'

class E300Component
Bases: object

BEN = 'BEN'

C1 = 'C1'

C10 = 'C10'

C11 = 'C11'

C12 = 'C12'

C13 = 'C13'

C14 = 'C14'

C15 = 'C15'

C16 = 'C16'

C17 = 'C17'

C18 = 'C18'

C19 = 'C19'

C2 = 'C2'

C20 = 'C20'

C21 = 'C21'

C22 = 'C22'

C23 = 'C23'

C24 = 'C24'

C25 = 'C25'

C26 = 'C26'

C27 = 'C27'

C28 = 'C28'

C29 = 'C29'

C3 = 'C3'

C30 = 'C30'

C31 = 'C31'

C32 = 'C32'

C33 = 'C33'

C34 = 'C34'

C35 = 'C35'

C36 = 'C36'

C37 = 'C37'

C38 = 'C38'

C39 = 'C39'

C4 = 'C4'

C40 = 'C40'

C41 = 'C41'

C42 = 'C42'

C43 = 'C43'

C44 = 'C44'

C45 = 'C45'

C5 = 'C5'

C6 = 'C6'

C7 = 'C7'

C8 = 'C8'

C9 = 'C9'

CO = 'CO'

CO2 = 'CO2'

CYCLOC6 = 'CycloC6'

ETHYLBENZENE = 'Ethylbenzene'

H2 = 'H2'

H2O = 'H2O'

H2S = 'H2S'

IC4 = 'IC4'

IC5 = 'IC5'

MCYCLOC5 = 'McycloC5'

MCYCLOC6 = 'McycloC6'

MPXYLENE = 'MPXylene'

N2 = 'N2'

NC4 = 'NC4'

NC5 = 'NC5'

OXYLENE = 'OXylene'

TOL = 'TOL'

class GERGComponent
Bases: object

ARGON = 'Argon'

CARBON_DIOXIDE = 'Carbon dioxide'

CARBON_MONOXIDE = 'Carbon monoxide'

ETHANE = 'Ethane'

HELIUM = 'Helium'

HYDROGEN = 'Hydrogen'

HYDROGEN_SULPHIDE = 'Hydrogen sulphide'

ISOBUTANE = 'Isobutane'

ISOPENTANE = 'Isopentane'

METHANE = 'Methane'

N_BUTANE = 'n-Butane'

N_DECANE = 'n-Decane'

N_HEPTANE = 'n-Heptane'

N_HEXANE = 'n-Hexane'

NITROGEN = 'Nitrogen'

N_NONANE = 'n-Nonane'

N_OCTANE = 'n-Octane'

N_PENTANE = 'n-Pentane'

OXYGEN = 'Oxygen'

PROPANE = 'Propane'

WATER = 'Water'

class EmulsionViscosityMethod
Bases: object

Set to viscosity of the continuous phase

CONTINUOUSPHASE = 'ContinuousPhase'

OILWATERVOLUMERATIO = 'OilWaterVolumeRatio'

ORIGINALWOELFLIN = 'OriginalWoelflin'

WOELFLINLOOSE = 'WoelflinLoose'

WOELFLINMEDIUM = 'WoelflinMedium'

WOELFLINTIGHT = 'WoelflinTight'

BRINKMAN = 'Brinkman'

VANDVAND = 'VandVand'

VANDBARNEAMIZRAHI = 'VandBarneaMizrahi'

VANDUSER = 'VandUser'

RICHARDSON = 'Richardson'

LEVITONLEIGHTON = 'LevitonLeighton'

KENDALLMONROE = 'KendallMonroe'

USERTABLE = 'UserTable'

class EquationOfState
Bases: object

class Multiflash
Bases: object

PENGROBINSON2PARAMETER = 'PengRobinson2Parameter'

PENGROBINSON3PARAMETER = 'PengRobinson3Parameter'

REDLICHKWONG = 'RedlichKwong'

SOAVEREDLICHKWONG2PARAMETER = 'SoaveRedlichKwong2Parameter'

SOAVEREDLICHKWONG3PARAMETER = 'SoaveRedlichKwong3Parameter'

SOAVEREDLICHKWONG3PARAMETERNRTLMIXINGRULE = 'SoaveRedlichKwong3ParameterNRTLMixingRule'

BENEDICTWEBBRUBINSTARLING = 'BenedictWebbRubinStarling'

CUBICPLUSASSOCIATION = 'CubicPlusAssociation'

CORRESPONDINGSTATES = 'CorrespondingStates'

class GERG
Bases: object

GERG_REFPROP = 'GERG_REFPROP'

class E300
Bases: object

PENGROBINSON3PARAMETERCORRECTED = 'PengRobinson3ParameterCorrected'

PENGROBINSON2PARAMETERCORRECTED = 'PengRobinson2ParameterCorrected'

SOAVEREDLICHKWONG3PARAMETER = 'SoaveRedlichKwong3Parameter'

SOAVEREDLICHKWONG2PARAMETER = 'SoaveRedlichKwong2Parameter'

class ViscosityCorrelationMethod
Bases: object

LOHRENZBRAYCLARK = 'LohrenzBrayClark'

PEDERSEN = 'Pedersen'

AASBERGPETERSEN = 'AasbergPetersen'

NIST = 'NIST'

PEDERSENTWU = 'PedersenTwu'

SUPERTRAPP = 'SuperTRAPP'

class VolumeShiftCorrelationMethod
Bases: object

SORIEDE = 'Soriede'

PENELOUXDBR = 'PenelouxDBR'

MULTIFLASH = 'Multiflash'

class CriticalPropertyCorrelationMethod
Bases: object

KESLERLEE = 'KeslerLee'

CAVETT = 'Cavett'

RIAZIDAUBERT = 'RiaziDaubert'

WINN = 'Winn'

PEDERSEN = 'Pedersen'

SINGLECARBONNUMBER = 'SingleCarbonNumber'

class ThermalCoefficientsCorrelationMethod
Bases: object

KESLERLEE = 'KeslerLee'

KESLERLEEMODIFIED = 'KeslerLeeModified'

MULTIFLASH = 'Multiflash'

class AcfCorrelationMethod
Bases: object

KESLERLEE = 'KeslerLee'

EDMISTER = 'Edmister'

THOMASSEN = 'Thomassen'

PEDERSEN = 'Pedersen'

SINGLECARBONNUMBER = 'SingleCarbonNumber'

class SalinityModel
Bases: object

NONE = 'None'

IONANALYSIS = 'IonAnalysis'

TDS = 'TDS'

class FluidComponentType
Bases: object

HYDROCARBON = 'Hydrocarbon'

NONHYDROCARBON = 'NonHydrocarbon'

class sixgill.definitions.OptimizerVariables
Bases: object

The optimizer Results Variables

GAS_LIFT_RATE = 'OptimizerGas_lift_rate'

WELL_IS_SHUT_OFF = 'OptimizerWell_is_shut_off'

TOTAL_ALLOCATED_POWER_USED = 'OptimizerTotal_allocated_power_used'

TOTAL_ALLOCATED_GAS_INJECTED = 'OptimizerTotal_allocated_gas_injected'

PERCENT_CHANGE_IN_WATER_RATE = 'OptimizerPercent_change_in_water_rate'

PERCENT_CHANGE_IN_GAS_RATE = 'OptimizerPercent_change_in_gas_rate'

PERCENT_CHANGE_IN_OIL_RATE = 'OptimizerPercent_change_in_oil_rate'

TOTAL_WATER_RATE = 'OptimizerTotal_water_rate'

TOTAL_OIL_RATE = 'OptimizerTotal_oil_rate'

EFFICIENCY = 'OptimizerEfficiency'

POWER = 'OptimizerPower'

FREQUENCY = 'OptimizerFrequency'

SPEED = 'OptimizerSpeed'

MAXIMUM_GOR = 'OptimizerMaximum_GOR'

MAXIMUM_CO2 = 'OptimizerMaximum_CO2'

MAXIMUM_H2S = 'OptimizerMaximum_H2S'

BUBBLE_POINT_MARGIN_ = 'OptimizerBubble_point_margin_'

DRAWDOWN_PRESSURE_DROP = 'OptimizerDrawdown_pressure_drop'

MAXIMUM_EROSIONAL_VELOCITY_RATIO = 'OptimizerMaximum_Erosional_velocity_ratio'

CASING_HEAD_PRESSURE = 'OptimizerCasing_head_pressure'

OUTLET_TEMPERATURE = 'OptimizerOutlet_temperature'

OUTLET_PRESSURE = 'OptimizerOutlet_pressure'

WATER_RATE = 'OptimizerWater_rate'

LIQUID_RATE = 'OptimizerLiquid_rate'

OIL_RATE = 'OptimizerOil_rate'

BEAN_SIZE = 'OptimizerBean_size'

TOTAL_GAS_RATE = 'OptimizerTotal_gas_rate'

class sixgill.definitions.SystemVariables
Bases: object

The System and Equipment Results Variables

ALHANATI_CRITERION1 = 'AlhanatiCriterion1'

ALHANATI_CRITERION2 = 'AlhanatiCriterion2'

ARTIFICIAL_LIFT_QUANTITY = 'ArtificialLiftQuantity'

BOTTOM_HOLE_PRESSURE = 'BottomHolePressure'

CASE_NUMBER = 'CaseNumber'

CASE_STATUS = 'CaseStatus'

CASING_HEAD_PRESSURE = 'CasingHeadPressure'

CONED_GOR = 'ConedGOR'

ESP_DELTA_PRESSURE = 'ESPDeltaPressure'

ESP_DELTA_TEMPERATURE = 'ESPDeltaTemperature'

ESP_DISCHARGE_PRESSURE = 'ESPDischargePressure'

ESP_EFFICIENCY = 'ESPEfficiency'

ESP_EFFICIENCY_FACTOR = 'ESPEfficiencyFactor'

ESP_FLOWRATE_FACTOR = 'ESPFlowrateFactor'

ESP_FREQUENCY = 'ESPFrequency'

ESP_HEAD = 'ESPHead'

ESP_HEAD_FACTOR = 'ESPHeadFactor'

ESP_INTAKE_GAS_VOLUME_FRACTION = 'ESPIntakeGasVolumeFraction'

ESP_INTAKE_PRESSURE = 'ESPIntakePressure'

ESP_INTAKE_TOTAL_VOLUMETRIC_FLOWRATE = 'ESPIntakeTotalVolumetricFlowrate'

ESP_NUMBER_OF_STAGES = 'ESPNumberOfStages'

ESP_POWER = 'ESPPower'

ESP_POWER_FACTOR = 'ESPPowerFactor'

ESP_SUCTION_GAS_VOLUME_FRACTION = 'ESPSuctionGasVolumeFraction'

FRICTION_FACTOR_MEAN = 'FrictionFactorMean'

GAS_INJECTION_DEPTH = 'GasInjectionDepth'

GAS_INJECTION_GAS_TEMPERATURE_BEFORE_MIXING = 'GasInjectionGasTemperatureBeforeMixing'

GAS_INJECTION_PRODUCTION_TEMPERATURE_DOWNSTREAM = 'GasInjectionProductionTemperatureDownstream'

GAS_INJECTION_PRODUCTION_TEMPERATURE_UPSTREAM = 'GasInjectionProductionTemperatureUpstream'

GAS_INJECTION_VALVE_DELTA_TEMPERATURE = 'GasInjectionValveDeltaTemperature'

GAS_INJECTION_VALVE_DELTA_PRESSURE = 'GasInjectionValveDeltaPressure'

GAS_LIFT_DIAGNOSTICS_PORT_DIAMETER = 'GLDiagnosticsValvePortDiameter'

GAS_LIFT_DIAGNOSTICS_POSITION_STATUS = 'GLDiagnosticsValvePositionStatus'

GAS_LIFT_DIAGNOSTICS_DOME_TEMPERATURE = 'GLDiagnosticsValveDomeTemperature'

GAS_LIFT_DIAGNOSTICS_GAS_RATE_NO_THROTTLING = 'GLDiagnosticsValveGasRateNoThrottling'

GAS_LIFT_DIAGNOSTICS_STATUS = 'GLDiagnosticsValveStatus'

GAS_LIFT_DIAGNOSTICS_CLOSING_PRESSURE = 'GLDiagnosticsValveClosingPressure'

GAS_LIFT_DIAGNOSTICS_OPENING_PRESSURE = 'GLDiagnosticsValveOpeningPressure'

GAS_LIFT_DIAGNOSTICS_DOME_PRESSURE = 'GLDiagnosticsValveDomePressure'

GAS_LIFT_DIAGNOSTICS_PTRO = 'GLDiagnosticsValvePtro'

GAS_LIFT_DIAGNOSTICS_DISCHARGE_COEFFICIENT = 'GLDiagnosticsValveDischargeCoefficient'

GAS_LIFT_DIAGNOSTICS_PORT_TO_BELLOW_AREA = 'GLDiagnosticsValvePortToBellowArea'

GAS_LIFT_DIAGNOSTICS_OPERATION_MODE = 'GLDiagnosticsValveOperationMode'

GAS_LIFT_DIAGNOSTICS_PORT_TYPE = 'GLDiagnosticsValveType'

GAS_LIFT_INJECTION_CASING_HEAD_TEMPERATURE = 'GasLiftInjectionCasingHeadTemperature'

GAS_LIFT_INJECTION_PORT_DIAMETER = 'GasLiftInjectionPortDiameter'

GAS_LIFT_INJECTION_CASING_PRESSURE = 'GasLiftInjectionCasingPressure'

GAS_LIFT_INJECTION_PRESSURE = 'GasLiftInjectionPressure'

GAS_LIFT_INJECTION_RATIO = 'GasLiftInjectionRatio'

GAS_LIFT_INJECTION_SOURCE_PRESSURE = 'GasLiftInjectionSourcePressure'

GAS_LIFT_INJECTION_CASING_TEMPERATURE = 'GasLiftInjectionCasingTemperature'

GAS_LIFT_INJECTION_TEMPERATURE = 'GasLiftInjectionTemperature'

HEAT_TRANSFER_COEFFICIENT = 'HeatTransferCoefficient'

HEEL_GOR_STOCKTANK = 'HeelGORStockTank'

HEEL_MASS_FLOWRATE_FLUID = 'HeelMassFlowrateFluid'

HEEL_PRESSURE = 'HeelPressure'

HEEL_RESERVOIR_DRAWDOWN = 'HeelReservoirDrawdown'

HEEL_TEMPERATURE = 'HeelTemperature'

HEEL_VELOCITY_FLUID = 'HeelVelocityFluid'

HEEL_VOLUME_FLOWRATE_FLUID_INSITU = 'HeelVolumeFlowrateFluidInSitu'

HEEL_VOLUME_FLOWRATE_FLUID_STOCKTANK = 'HeelVolumeFlowrateFluidStockTank'

HEEL_VOLUME_FLOWRATE_GAS_STOCKTANK = 'HeelVolumeFlowrateGasStockTank'

HEEL_FLOWING_GAS_FLOWRATE_STOCKTANK = 'Gas flowrate at heel (standard cond)'

HEEL_VOLUME_FLOWRATE_LIQUID_INSITU = 'HeelVolumeFlowrateLiquidInSitu'

HEEL_VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'HeelVolumeFlowrateLiquidStockTank'

HEEL_VOLUME_FLOWRATE_OIL_STOCKTANK = 'HeelVolumeFlowrateOilStockTank'

HEEL_WATER_CUT_STOCKTANK = 'HeelWaterCutStockTank'

INLET_EROSIONAL_VELOCITY_RATIO = 'InletErosionalVelocityRatio'

INLET_GOR_STOCKTANK = 'InletGORStockTank'

INLET_MASS_FLOWRATE_FLUID = 'InletMassFlowrateFluid'

INLET_MASS_FRACTION_GAS = 'InletMassFractionGas'

INLET_TEMPERATURE = 'InletTemperature'

INLET_VELOCITY_FLUID = 'InletVelocityFluid'

INLET_VELOCITY_GAS = 'InletVelocityGas'

INLET_VELOCITY_LIQUID = 'InletVelocityLiquid'

INLET_VOLUME_FLOWRATE_FLUID_INSITU = 'InletVolumeFlowrateFluidInSitu'

INLET_VOLUME_FLOWRATE_FLUID_STOCKTANK = 'InletVolumeFlowrateFluidStockTank'

INLET_VOLUME_FLOWRATE_GAS_INSITU = 'InletVolumeFlowrateGas'

INLET_VOLUME_FLOWRATE_GAS_STOCKTANK = 'InletVolumeFlowrateGasStockTank'

INLET_VOLUME_FLOWRATE_LIQUID_INSITU = 'InletVolumeFlowrateLiquid'

INLET_VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'InletVolumeFlowrateLiquidStockTank'

INLET_VOLUME_FLOWRATE_OIL_STOCKTANK = 'InletVolumeFlowrateOilStockTank'

INLET_VOLUME_FRACTION_LIQUID = 'InletVolumeFractionLiquid'

INLET_WATER_CUT_STOCKTANK = 'InletWaterCutStockTank'

INPUT_FLOWRATE = 'InputFlowrate'

INPUT_TUBING_HEAD_PRESSURE = 'InputTubingHeadPressure'

INPUT_WATERCUT = 'InputWatercut'

INPUT_WATER_RATIO = 'InputWaterRatio'

MASS_FLOWRATE_AT_NODAL_ANALYSIS_POINT = 'MassFlowrateAtNodalAnalysisPoint'

MAXIMUM_CORROSION_RATE = 'MaximumCorrosionRate'

MAXIMUM_CORROSION_RISK = 'MaximumCorrosionRisk'

MAXIMUM_EROSION_RISK = 'MaximumErosionRisk'

MAXIMUM_EROSIONAL_VELOCITY_RATIO = 'MaximumErosionalVelocityRatio'

MAXIMUM_EROSION_RATE = 'MaximumErosionRate'

MAXIMUM_HEAT_TRANSFER_COEFFICIENT = 'MaximumHeatTransferCoefficient'

MAXIMUM_HYDRATE_SUB_COOLING_TEMPERATURE_DIFFERENCE = 'MaximumHydrateSubCoolingTemperatureDifference'

MAXIMUM_LIQUID_LOADING_GAS_RATE = 'MaximumLiquidLoadingGasRate'

MAXIMUM_LIQUID_LOADING_VELOCITY_RATIO = 'MaximumLiquidLoadingVelocityRatio'

MAXIMUM_VELOCITY_FLUID = 'MaximumVelocityFluid'

MAXIMUM_VELOCITY_GAS = 'MaximumVelocityGas'

MAXIMUM_VELOCITY_LIQUID = 'MaximumVelocityLiquid'

MAXIMUM_WAX_SUB_COOLING_TEMPERATURE_DIFFERENCE = 'MaximumWaxSubCoolingTemperatureDifference'

NODAL_POINT_BUBBLE_POINT_PRESSURE = 'NodalPointBubblePointPressure'

NODAL_POINT_ENTHALPY_FLUID = 'NodalPointEnthalpyFluid'

NODAL_POINT_FRACTION_LIQUID = 'NodalPointFractionLiquid'

NODAL_POINT_GLR_STOCKTANK = 'NodalPointGLRStockTank'

NODAL_POINT_LGR_STOCKTANK = 'NodalPointLGRStockTank'

NODAL_POINT_MASS_FLOWRATE_FLUID = 'NodalPointMassFlowrateFluid'

NODAL_POINT_PRESSURE = 'NodalPointPressure'

NODAL_POINT_TEMPERATURE = 'NodalPointTemperature'

NODAL_POINT_VELOCITY_FLUID = 'NodalPointVelocityFluid'

NODAL_POINT_VOLUME_FLOWRATE_FLUID_INSITU = 'NodalPointVolumeFlowrateFluidInSitu'

NODAL_POINT_VOLUME_FLOWRATE_FLUID_STOCKTANK = 'NodalPointVolumeFlowrateFluidStockTank'

NODAL_POINT_VOLUME_FLOWRATE_GAS_INSITU = 'NodalPointVolumeFlowrateGasInSitu'

NODAL_POINT_VOLUME_FLOWRATE_GAS_STOCKTANK = 'NodalPointVolumeFlowrateGasStockTank'

NODAL_POINT_VOLUME_FLOWRATE_LIQUID_INSITU = 'NodalPointVolumeFlowrateLiquidInSitu'

NODAL_POINT_VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'NodalPointVolumeFlowrateLiquidStockTank'

NODAL_POINT_VOLUME_FLOWRATE_OIL_STOCKTANK = 'NodalPointVolumeFlowrateOilStockTank'

NODAL_POINT_WATER_CUT_INSITU = 'NodalPointWaterCutInSitu'

NODAL_POINT_WATER_CUT_STOCKTANK = 'NodalPointWaterCutStockTank'

OUTLET_EROSIONAL_VELOCITY = 'OutletErosionalVelocity'

OUTLET_EROSIONAL_VELOCITY_RATIO = 'OutletErosionalVelocityRatio'

OUTLET_FRACTION_CO = 'OutletFractionCO'

OUTLET_FRACTION_CO2 = 'OutletFractionCO2'

OUTLET_FRACTION_H2S = 'OutletFractionH2S'

OUTLET_FRACTION_H2 = 'OutletFractionH2'

OUTLET_FRACTION_N2 = 'OutletFractionN2'

OUTLET_GLR_STOCKTANK = 'OutletGLRStockTank'

OUTLET_GOR_STOCKTANK = 'OutletGORStockTank'

OUTLET_LGR_STOCKTANK = 'OutletLGRStockTank'

OUTLET_MASS_FLOWRATE_FLUID = 'OutletMassFlowrateFluid'

OUTLET_MASS_FLOWRATE_GAS_STOCKTANK = 'OutletMassFlowrateGasStockTank'

OUTLET_MASS_FLOWRATE_OIL_STOCKTANK = 'OutletMassFlowrateOilStockTank'

OUTLET_MASS_FLOWRATE_WATER_STOCKTANK = 'OutletMassFlowrateWaterStockTank'

OUTLET_MASS_FRACTION_GAS = 'OutletMassFractionGas'

OUTLET_SPECIFIC_GRAVITY_GAS = 'OutletSpecificGravityGas'

OUTLET_VELOCITY_FLUID = 'OutletVelocityFluid'

OUTLET_VELOCITY_GAS = 'OutletVelocityGas'

OUTLET_VELOCITY_LIQUID = 'OutletVelocityLiquid'

OUTLET_VOLUME_FLOWRATE_FLUID_INSITU = 'OutletVolumeFlowrateFluidInSitu'

OUTLET_VOLUME_FLOWRATE_FLUID_STOCKTANK = 'OutletVolumeFlowrateFluidStockTank'

OUTLET_VOLUME_FLOWRATE_GAS_INSITU = 'OutletVolumeFlowrateGas'

OUTLET_VOLUME_FLOWRATE_GAS_STOCKTANK = 'OutletVolumeFlowrateGasStockTank'

OUTLET_VOLUME_FLOWRATE_LIQUID_INSITU = 'OutletVolumeFlowrateLiquid'

OUTLET_VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'OutletVolumeFlowrateLiquidStockTank'

OUTLET_VOLUME_FLOWRATE_OIL_STOCKTANK = 'OutletVolumeFlowrateOilStockTank'

OUTLET_VOLUME_FLOWRATE_WATER_STOCKTANK = 'OutletVolumeFlowrateWaterStockTank'

OUTLET_VOLUME_FRACTION_LIQUID = 'OutletVolumeFractionLiquid'

OUTLET_WATER_CUT_STOCKTANK = 'OutletWaterCutStockTank'

PCP_DISCHARGE_PRESSURE = 'PCPDischargePressure'

PCP_EFFICIENCY = 'PCPEfficiency'

PCP_INTAKE_PRESSURE = 'PCPIntakePressure'

PCP_INTAKE_VOLUMETRIC_FLOWRATE_FLUID = 'PCPIntakeVolumetricFlowrateFluid'

PCP_POWER = 'PCPPower'

PCP_SPEED = 'PCPSpeed'

PCP_TORQUE = 'PCPTorque'

PIPE_OUTSIDE_DIAMETER = 'PipeOutsideDiameter'

PRESSURE_DROP_TOTAL_ACCELERATION = 'PressureDropTotalAcceleration'

PRESSURE_DROP_TOTAL_COMPLETION = 'PressureDropTotalCompletion'

RECORD_COUNT = 'RecordCount'

RESISTANCE_ELEVATIONAL = 'ResistanceElevational'

RESISTANCE_FRICTIONAL = 'ResistanceFrictional'

REYNOLDS_NUMBER_MEAN = 'ReynoldsNumberMean'

SEVERE_SLUGGING_INDICATOR = 'SevereSluggingIndicator'

SLUG_FREQUENCY1IN1000 = 'SlugFrequency1In1000'

SLUG_FREQUENCY_MEAN = 'SlugFrequencyMean'

SLUG_LENGTH1IN1000 = 'SlugLength1In1000'

SLUG_LENGTH_MEAN = 'SlugLengthMean'

SLUG_VOLUME1IN1000 = 'SlugVolume1In1000'

SLUG_VOLUME_MEAN = 'SlugVolumeMean'

SPECIFIC_GRAVITY_PRODUCED_GAS = 'SpecificGravityProducedGas'

SPHERE_GENERATED_LIQUID_VOLUME = 'SphereGeneratedLiquidVolume'

SPHERE_GENERATED_LIQUID_VOLUME_DUMPING_TIME = 'SphereGeneratedLiquidVolumeDumpingTime'

SPHERE_TRANSIT_TIME = 'SphereTransitTime'

STOCK_TANK_GAS_AT_NODAL_ANALYSIS_POINT = 'StockTankGasAtNodalAnalysisPoint'

STOCK_TANK_LIQUID_AT_NODAL_ANALYSIS_POINT = 'StockTankLiquidAtNodalAnalysisPoint'

SURFACE_INJECTION_CHOKE_DIAMETER = 'SurfaceInjectionChokeDiameter'

SYSTEM_INLET_PRESSURE = 'SystemInletPressure'

SYSTEM_INLET_TEMPERATURE = 'SystemInletTemperature'

SYSTEM_OUTLET_PRESSURE = 'SystemOutletPressure'

SYSTEM_OUTLET_TEMPERATURE = 'SystemOutletTemperature'

SYSTEM_PRESSURE_LOSS = 'SystemPressureLoss'

SYSTEM_TEMPERATURE_DIFFERENCE = 'SystemTemperatureDifference'

TIME_HOURS = 'Time_Hours'

TOE_PRESSURE = 'ToePressure'

TOE_RESERVOIR_DRAWDOWN = 'ToeReservoirDrawdown'

TOE_TEMPERATURE = 'ToeTemperature'

TOE_VELOCITY_FLUID = 'ToeVelocityFluid'

TOTAL_INJECTION_GAS = 'TotalInjectionGas'

TOTAL_LIQUID_HOLDUP = 'TotalLiquidHoldup'

TOTAL_OIL_HOLDUP = 'TotalOilHoldup'

TOTAL_PRESSURE_DROP_ELEVATIONAL = 'TotalPressureDropElevational'

TOTAL_PRESSURE_DROP_FRICTIONAL = 'TotalPressureDropFrictional'

TOTAL_WATER_HOLDUP = 'TotalWaterHoldup'

WELLHEAD_GOR_STOCKTANK = 'WellheadGORStockTank'

WELLHEAD_MASS_FLOWRATE_FLUID = 'WellheadMassFlowrateFluid'

WELLHEAD_PRESSURE = 'WellheadPressure'

WELLHEAD_TEMPERATURE = 'WellheadTemperature'

WELLHEAD_TRUE_VERTICAL_DEPTH = 'WellheadTrueVerticalDepth'

WELLHEAD_VOLUME_FLOWRATE_FLUID_INSITU = 'WellheadVolumeFlowrateFluidInSitu'

WELLHEAD_VOLUME_FLOWRATE_GAS_STOCKTANK = 'WellheadVolumeFlowrateGasStockTank'

WELLHEAD_VOLUME_FLOWRATE_LIQUID_INSITU = 'WellheadVolumeFlowrateLiquidInSitu'

WELLHEAD_VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'WellheadVolumeFlowrateLiquidStockTank'

WELLHEAD_VOLUME_FLOWRATE_OIL_STOCKTANK = 'WellheadVolumeFlowrateOilStockTank'

WELLHEAD_VOLUME_FLOWRATE_FLUID_STOCKTANK = 'WellheadVolumeFlowrateFluidStockTank'

WELLHEAD_WATER_CUT_STOCKTANK = 'WellheadWaterCutStockTank'

ABSOLUTE_SPEED = 'AbsoluteSpeed'

API_GRAVITY_OIL = 'ApiGravityOil'

ARTIFICIAL_LIFT_FLOWRATE_CONVERSION_FACTOR = 'ArtificialLiftFlowrateConversionFactor'

ARTIFICIAL_LIFT_FLOWRATE_TYPE = 'ArtificialLiftFlowrateType'

BEAN_SIZE = 'BeanSize'

COILED_TUBING_INJECTION_PRESSURE = 'CoiledTubingInjectionPressure'

COMPLETION_VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'CompletionVolumeFlowrateLiquidStockTank'

COMPRESSOR_EFFICIENCY = 'CompressorEfficiency'

COMPRESSOR_POWER = 'CompressorPower'

CONTAMINANTS_CO2 = 'ContaminantsCO2'

CONTAMINANTS_H2S = 'ContaminantsH2S'

CONTAMINANTS_N2 = 'ContaminantsN2'

CRITICAL_PRESSURE_RATIO = 'CriticalPressureRatio'

DELTA_ENTHALPY = 'DeltaEnthalpy'

DELTA_ENTROPY = 'DeltaEntropy'

DELTA_PRESSURE = 'DeltaPressure'

DELTA_TEMPERATURE = 'DeltaTemperature'

DENSITY_FLUID_MEAN = 'DensityFluidMean'

DENSITY_GAS_STOCKTANK = 'DensityGasStockTank'

DENSITY_OIL_STOCKTANK = 'DensityOilStockTank'

DENSITY_WATER_STOCKTANK = 'DensityWaterStockTank'

DIAMETER_RATIO = 'DiameterRatio'

DISCHARGE_COEFFICIENT = 'DischargeCoefficient'

DISCHARGE_PRESSURE = 'DischargePressure'

DOWNSTREAM_COOLER_DUTY = 'DownstreamCoolerDuty'

DOWNSTREAM_DENSITY = 'DownstreamDensity'

DOWNSTREAM_HEAT_CAPACITY_RATIO = 'DownstreamHeatCapacityRatio'

DOWNSTREAM_MACH_NUMBER = 'DownstreamMachNumber'

DOWNSTREAM_PRESSURE = 'DownstreamPressure'

DOWNSTREAM_SONIC_VELOCITY = 'DownstreamSonicVelocity'

DOWNSTREAM_VELOCITY = 'DownstreamVelocity'

DOWNSTREAM_VELOCITY_RATIO_CRITICAL = 'DownstreamVelocityRatioCritical'

DUTY = 'Duty'

EFFICIENCY = 'Efficiency'

ELEVATION_DELTA_PRESSURE = 'ElevationDeltaPressure'

ELEVATION_DIFFERENCE = 'ElevationDifference'

ENTHALPY = 'Enthalpy'

EQUIPMENT_TYPE = 'EquipmentType'

EROSIONAL_VELOCITY = 'ErosionalVelocity'

EROSIONAL_VELOCITY_MAXIMUM = 'ErosionalVelocityMaximum'

EROSIONAL_VELOCITY_RATIO = 'ErosionalVelocityRatio'

EXPANSION_FACTOR_GAS = 'ExpansionFactorGas'

EXPANSION_FACTOR_GAS_CRITICAL = 'ExpansionFactorGasCritical'

FLOW_COEFFICIENT_FLUID = 'FlowCoefficientFluid'

FLOW_COEFFICIENT_GAS = 'FlowCoefficientGas'

FLOW_COEFFICIENT_LIQUID = 'FlowCoefficientLiquid'

FLOW_FACTOR = 'FlowFactor'

FLOWING_GAS_VOLUME_FLOWRATE = 'FlowingGasVolumeFlowrate'

FLOWRATE = 'Flowrate'

FLOWRATE_BEYOND_CURVE_MAX_RATE = 'FlowrateBeyondCurveMaxRate'

FLOWRATE_DERIVATIVE_OF_OUTLET_PRESSURE = 'FlowrateDerivativeOfOutletPressure'

FLOWRATE_RATIO_CRITICAL = 'FlowrateRatioCritical'

FLOWRATE_TYPE = 'FlowrateType'

FLUID_HANDLE_STRING = 'FluidHandleString'

FRICTION_DELTA_PRESSURE = 'FrictionDeltaPressure'

GENERIC_EQUIPMENT_DELTA_PRESSURE = 'GenericEquipmentPressureDrop'

GLR_INSITU = 'GLRInSitu'

GLR_STOCKTANK = 'GLRStockTank'

LGR_STOCKTANK = 'LGRStockTank'

GOR_STOCKTANK = 'GORStockTank'

GWR_STOCKTANK = 'GWRStockTank'

HEAD = 'Head'

COMPRESSOR_HEAD = 'CompressorHead'

HEAT_CAPACITY_RATIO_UPSTREAM = 'HeatCapacityRatioUpstream'

HEEL_DRAWDOWN = 'HeelDrawdown'

INJECTION_FLUID_ENTHALPY = 'InjectionFluidEnthalpy'

INJECTION_FLUID_GAS_FLOWRATE_STOCKTANK = 'InjectionFluidGasFlowrateStockTank'

INJECTION_FLUID_LIQUID_FLOWRATE_STOCKTANK = 'InjectionFluidLiquidFlowrateStockTank'

INJECTION_FLUID_MASS_FLOWRATE_STOCKTANK = 'InjectionFluidMassFlowrateStockTank'

INJECTION_FLUID_SPECIFIC_GRAVITY_GAS = 'InjectionFluidSpecificGravityGas'

INJECTION_FLUID_TEMPERATURE = 'InjectionFluidTemperature'

INJECTION_GAS_PRESSURE_AT_CASING_HEAD = 'InjectionGasPressureAtCasingHead'

INJECTION_GAS_PRESSURE_AT_INJECTION_POINT = 'InjectionGasPressureAtInjectionPoint'

INJECTION_GAS_TEMPERATURE_AT_CASING_HEAD = 'InjectionGasTemperatureAtCasingHead'

INJECTION_GAS_TEMPERATURE_AT_INJECTION_POINT = 'InjectionGasTemperatureAtInjectionPoint'

INJECTION_PORT_DELTA_PRESSURE = 'InjectionPortDeltaPressure'

INJECTION_PORT_DELTA_TEMPERATURE = 'InjectionPortDeltaTemperature'

INJECTION_PORT_DEPTH = 'InjectionPortDepth'

INLET_PRESSURE = 'InletPressure'

INLET_PRESSURE_DERIVATIVE_OF_FLOWRATE = 'InletPressureDerivativeOfFlowrate'

INLET_PRESSURE_DERIVATIVE_OF_OUTLET_PRESSURE = 'InletPressureDerivativeOfOutletPressure'

INPUT_FLOWRATE_GAS = 'InputFlowrateGas'

INPUT_FLOWRATE_LIQUID = 'InputFlowrateLiquid'

INPUT_FLOWRATE_OIL = 'InputFlowrateOil'

INPUT_MASS_FLOWRATE_FLUID = 'InputMassFlowrateFluid'

INPUT_TEMPERATURE = 'InputTemperature'

IS_CRITICAL_FLOW = 'IsCriticalFlow'

IS_INJECTING_INTO_COMPLETION = 'IsInjectingIntoCompletion'

IS_SUPER_CRITICAL = 'IsSuperCritical'

LIMITED_BY = 'LimitedBy'

LIMIT_RATIO = 'LimitRatio'

LIQUID_FLOWRATE_CRITICAL = 'LiquidFlowrateCritical'

LIQUID_RATE = 'LiquidRate'

MASS_FLOWRATE_CRITICAL = 'MassFlowrateCritical'

MASS_FLOWRATE_FLUID = 'MassFlowrateFluid'

MASS_FLOWRATE_GAS_STOCKTANK = 'MassFlowrateGasStockTank'

MASS_FLOWRATE_O_IL_STOCKTANK = 'MassFlowrateOIlStockTank'

MASS_FLOWRATE_STOCKTANK = 'MassFlowrateStockTank'

MASS_FLOWRATE_WATER_STOCKTANK = 'MassFlowrateWaterStockTank'

MASS_RATE = 'MassRate'

MASS_RATE_REMOVED = 'MassRateRemoved'

MAX_RATIO_CRITICAL = 'MaxRatioCritical'

OGR_STOCKTANK = 'OGRStockTank'

OUTLET_PRESSURE_DERIVATIVE_OF_FLOWRATE = 'OutletPressureDerivativeOfFlowrate'

OUTLET_PRESSURE = 'OutputPressure'

OUTPUT_FLOWRATE_GAS = 'OutputFlowrateGas'

OUTPUT_FLOWRATE_LIQUID = 'OutputFlowrateLiquid'

OUTPUT_FLOWRATE_OIL = 'OutputFlowrateOil'

INPUT_FLOWRATE_WATER = 'InputFlowrateWater'

OUTPUT_FLOWRATE_WATER = 'OutputFlowrateWater'

OUTPUT_MASS_FLOWRATE_FLUID = 'OutputMassFlowrateFluid'

POWER = 'Power'

SURFACEPOWER = 'SurfacePower'

PRESSURE = 'Pressure'

PRESSURE_DIFFERENCE = 'PressureDifference'

PRESSURE_DIFFERENCE_CRITICAL = 'PressureDifferenceCritical'

PRESSURE_MAXIMUM = 'PressureMaximum'

PRESSURE_RATIO = 'PressureRatio'

PRESSURE_RATIO_CRITICAL = 'PressureRatioCritical'

PRESSURE_REDUCTION_PER_STAGE = 'PressureReductionPerStage'

PUMP_EFFICIENCY = 'PumpEfficiency'

PUMP_POWER = 'PumpPower'

RESERVOIR_TEMPERATURE_AVERAGE = 'ReservoirTemperatureAverage'

ROUTE = 'Route'

SPECIFIC_GRAVITY_GAS_STOCKTANK = 'SpecificGravityGasStockTank'

SPECIFIC_GRAVITY_OIL_INSITU = 'SpecificGravityOilInSitu'

SPECIFIC_GRAVITY_WATER_INSITU = 'SpecificGravityWaterInSitu'

SPEED = 'Speed'

SPEED_FRACTION = 'SpeedFraction'

STAGES = 'Stages'

STATIC_DELTA_PRESSURE = 'StaticDeltaPressure'

STATIC_RESERVOIR_PRESSURE = 'StaticReservoirPressure'

STONEWALL_LIMIT_EXCEEDED = 'StonewallLimitExceeded'

SUCTION_INLET_GAS_VOLUME_PERCENT = 'SuctionInletGasVolumePercent'

SUCTION_PRESSURE = 'SuctionPressure'

SUCTION_PRESSURE_DOWNSTREAM_OF_INLET_CHOKE = 'SuctionPressureDownstreamOfInletChoke'

SURFACE_CHOKE_DIAMETER = 'SurfaceChokeDiameter'

SURFACE_INJECTION_PRESSURE = 'SurfaceInjectionPressure'

TEMPERATURE = 'Temperature'

TEMPERATURE_FLOWING = 'TemperatureFlowing'

TEMPERATURE_MIXED_FLUID = 'TemperatureMixedFluid'

TEMPERATURE_PRODUCTION_FLUID = 'TemperatureProductionFluid'

TOE_DRAWDOWN = 'ToeDrawdown'

TOTAL_VOLUME_RATE_BOOSTER = 'TotalVolumeRateBooster'

TOTAL_VOLUME_RATE_OOS_BOOSTER = 'TotalVolumeRateOOSBooster'

TUBING_PRESSURE = 'TubingPressure'

TYPE = 'Type'

UPSTREAM_COOLER_DUTY = 'UpstreamCoolerDuty'

UPSTREAM_DENSITY = 'UpstreamDensity'

UPSTREAM_MACH_NUMBER = 'UpstreamMachNumber'

UPSTREAM_PIPE_ID = 'UpstreamPipeID'

UPSTREAM_PRESSURE = 'UpstreamPressure'

UPSTREAM_SONIC_VELOCITY = 'UpstreamSonicVelocity'

UPSTREAM_VELOCITY = 'UpstreamVelocity'

UPSTREAM_VELOCITY_RATIO_CRITICAL = 'UpstreamVelocityRatioCritical'

VISCOSITY_CORRELATION_FACTOR_FOR_EFFICIENCY = 'ViscosityCorrelationFactorForEfficiency'

VISCOSITY_CORRELATION_FACTOR_FOR_FLOWRATE = 'ViscosityCorrelationFactorForFlowrate'

VISCOSITY_CORRELATION_FACTOR_FOR_HEAD = 'ViscosityCorrelationFactorForHead'

VISCOSITY_CORRELATION_FACTOR_FOR_POWER = 'ViscosityCorrelationFactorForPower'

VOLUME_FLOWRATE_FLUID = 'VolumeFlowrateFluid'

VOLUME_FLOWRATE_GAS_INSITU = 'VolumeFlowrateGasInSitu'

VOLUME_FLOWRATE_GAS_STOCKTANK = 'VolumeFlowrateGasStockTank'

VOLUME_FLOWRATE_GAS_STANDARD = 'VolumeFlowrateGasStandard'

VOLUME_FLOWRATE_LIQUID_INSITU = 'VolumeFlowrateLiquidInSitu'

VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'VolumeFlowrateLiquidStockTank'

VOLUME_FLOWRATE_OIL_INSITU = 'VolumeFlowrateOilInSitu'

VOLUME_FLOWRATE_OIL_STOCKTANK = 'VolumeFlowrateOilStockTank'

VOLUME_FLOWRATE_WATER_INSITU = 'VolumeFlowrateWaterInSitu'

VOLUME_FLOWRATE_WATER_STOCKTANK = 'VolumeFlowrateWaterStockTank'

VOLUME_FRACTION_GAS = 'VolumeFractionGas'

WATER_CUT_INSITU = 'WaterCutInSitu'

WATER_CUT_STOCKTANK = 'WaterCutStockTank'

WATER_OIL_RATIO = 'WaterOilRatio'

WGR_STOCKTANK = 'WGRStockTank'

WORKING_SPEED = 'WorkingSpeed'

WELL_CURVE_PERFORMANCE_PWI = 'WellCurvePerformancePwiId'

VFP_TABLES = 'VFP_TABLES'

VFP_TABLES_WITH_TEMPERATURE = 'VFP_TABLES_WITH_TEMPERATURE'

TOTAL_MOVING_LIQUID_VOLUME = 'TotalMovingLiquidVolume'

TOTAL_STATIC_LIQUID_VOLUME = 'TotalStaticLiquidVolume'

SPHERE_TIME_IN_PIPELINE = 'SphereTimeInPipeline'

MOTOR_LOAD = 'MotorLoad'

MOTOR_EFFICIENCY = 'MotorEfficiency'

MOTOR_CURRENT = 'MotorCurrent'

MOTOR_VOLTAGE = 'MotorVoltage'

MOTOR_POWER_FACTOR = 'MotorPowerFactor'

CABLE_VOLTAGE_DROP = 'CableVoltageDrop'

FLOW_DIRECTION = 'FlowDirectionVariable'

OPENING_AREA = 'OpeningArea'

FLOW_CONTROL_VALVE_POSITION = 'Position'

MINIMUM_MAOP = 'Minimum MAOP'

MAXIMUM_MAOP_RATIO = 'Maximum MAOP ratio'

MAXIMUM_MAOP_RISK = 'Maximum MAOP risk'

RECIRCULATING_FLOW = 'Recirculating flow'

class sixgill.definitions.ProfileVariables
Bases: object

Available Results Profile Variables

AMBIENT_FLUID_COEFFICIENT_OF_EXPANSION = 'AmbientFluidCoefficientOfExpansion'

AMBIENT_FLUID_CONDUCTIVITY = 'AmbientFluidConductivity'

AMBIENT_FLUID_DENSITY = 'AmbientFluidDensity'

AMBIENT_FLUID_HEAT_CAPACITY = 'AmbientFluidHeatCapacity'

AMBIENT_FLUID_VELOCITY = 'AmbientFluidVelocity'

AMBIENT_FLUID_VISCOSITY = 'AmbientFluidViscosity'

AMBIENT_TEMPERATURE_AT_NODE = 'AmbientTemperatureAtNode'

ANNULUS_INSIDE_DIAMETER = 'AnnulusInsideDiameter'

ANNULUS_OUTSIDE_DIAMETER = 'AnnulusOutsideDiameter'

ASPHALTENE_FORMATION_TEMPERATURE = 'AsphalteneFormationTemperature'

BP_BUBBLE_LENGTH1IN1000 = 'BPBubbleLength1In1000'

BP_BUBBLE_LENGTH_MEAN = 'BPBubbleLengthMean'

BP_SLUG_FREQUENCY = 'BPSlugFrequency'

BP_SLUG_FREQUENCY1IN1000 = 'BPSlugFrequency1In1000'

BP_SLUG_LENGTH1IN1000 = 'BPSlugLength1In1000'

BP_SLUG_LENGTH_MEAN = 'BPSlugLengthMean'

BP_SLUG_LIQUID_HOLDUP = 'BPSlugLiquidHoldup'

BUBBLE_POINT_PRESSURE_INSITU = 'BubblePointPressureInSitu'

BURIAL_DEPTH_CIRCUMFERENCE = 'BurialDepthCircumference'

BURIAL_DEPTH_FACTOR_EXTRA = 'BurialDepthFactorExtra'

BURIAL_DEPTH_OF_PIPE_CENTERLINE = 'BurialDepthOfPipeCenterline'

BURIAL_DEPTH_OF_PIPE_TOPMOST_COAT = 'BurialDepthOfPipeTopmostCoat'

CASING_GAS_PRESSURE = 'CasingGasPressure'

CASING_GAS_TEMPERATURE = 'CasingGasTemperature'

COEF_OF_EXPANSION_GAS = 'CoefOfExpansionGas'

COEF_OF_EXPANSION_LIQUID = 'CoefOfExpansionLiquid'

COMPRESSIBILITY_OIL_INSITU = 'CompressibilityOilInSitu'

CONDUCTIVITY_FLUID_INSITU = 'ConductivityFluidInSitu'

CONDUCTIVITY_GAS_INSITU = 'ConductivityGasInSitu'

CONDUCTIVITY_LIQUID_INSITU = 'ConductivityLiquidInSitu'

CONDUCTIVITY_OIL_INSITU = 'ConductivityOilInSitu'

CONDUCTIVITY_WATER_INSITU = 'ConductivityWaterInSitu'

CORROSION_RATE = 'CorrosionRate'

CORROSION_PIT_RATE = 'CorrosionPitRate'

CORROSION_CUMULATIVE_LOSS = 'CorrosionCumulativeLoss'

CORROSION_RISK = 'CorrosionRisk'

CROSS_SECTIONAL_AREA_FOR_FLOW = 'CrossSectionalAreaForFlow'

CUMULATIVE_ACCELERATION_PRESSURE_DIFFERENCE = 'CumulativeAccelerationPressureDifference'

CUMULATIVE_ELEVATION_PRESSURE_DIFFERENCE = 'CumulativeElevationPressureDifference'

CUMULATIVE_FRICTION_PRESSURE_DIFFERENCE = 'CumulativeFrictionPressureDifference'

CUMULATIVE_GAS_HOLDUP = 'CumulativeGasHoldup'

CUMULATIVE_LIQUID_HOLDUP = 'CumulativeLiquidHoldup'

CUMULATIVE_OIL_HOLDUP = 'CumulativeOilHoldup'

CUMULATIVE_PIPELINE_VOLUME = 'CumulativePipelineVolume'

CUMULATIVE_WATER_HOLDUP = 'CumulativeWaterHoldup'

DENSITY_FLUID_INSITU = 'DensityFluidInSitu'

DENSITY_FLUID_NO_SLIP_INSITU = 'DensityFluidNoSlipInSitu'

DENSITY_GAS_INSITU = 'DensityGasInSitu'

DENSITY_GAS_STOCKTANK = 'DensityGasStockTank'

DENSITY_LIQUID_INSITU = 'DensityLiquidInSitu'

DENSITY_LIQUID_STOCKTANK = 'DensityLiquidStockTank'

DENSITY_OIL_INSITU = 'DensityOilInSitu'

DENSITY_OIL_STOCKTANK = 'DensityOilStockTank'

DENSITY_WATER_INSITU = 'DensityWaterInSitu'

DENSITY_WATER_STOCKTANK = 'DensityWaterStockTank'

DISTRIBUTED_PI_GAS_INSITU = 'DistributedPIGasInSitu'

DISTRIBUTED_PI_LIQUID_INSITU = 'DistributedPILiquidInSitu'

EFFECTIVE_PERMEABILITY = 'EffectivePermeability'

ELEVATION = 'Elevation'

ENTHALPY_FLUID = 'EnthalpyFluid'

ENTROPY_FLUID_INSITU = 'EntropyFluidInSitu'

EQUIVALENT_HYDRAULIC_DIAMETER = 'EquivalentHydraulicDiameter'

EROSION_RISK = 'ErosionRisk'

EROSIONAL_VELOCITY = 'ErosionalVelocity'

EROSIONAL_VELOCITY_RATIO = 'ErosionalVelocityRatio'

EROSION_RATE = 'ErosionRate'

FLOW_PATTERN_GAS_LIQUID = 'FlowPatternGasLiquid'

FLOW_PATTERN_OIL_WATER = 'FlowPatternOilWater'

FLOWRATE_GAS_INSITU = 'FlowrateGasInSitu'

FLOWRATE_LIQUID_INSITU = 'FlowrateLiquidInsitu'

FORMATION_VOLUME_FACTOR_OIL_INSITU = 'FormationVolumeFactorOilInSitu'

FRICTION_FACTOR_RATIO_TWO_PHASE = 'FrictionFactorRatioTwoPhase'

FRICTION_FACTOR_SINGLE_PHASE = 'FrictionFactorSinglePhase'

FROUDE_NUMBER_GAS = 'FroudeNumberGas'

FROUDE_NUMBER_LIQUID = 'FroudeNumberLiquid'

GLR_STOCKTANK = 'GLRStockTank'

GOR_STOCKTANK = 'GORStockTank'

GROUND_CONDUCTIVITY = 'GroundConductivity'

GROUND_HEAT_TRANSFER_COEFFICIENT = 'GroundHeatTransferCoefficient'

GROUND_HEAT_TRANSFER_COEFFICIENT_NO_ADJUSTMENT_BY_AREA_RATIO = 'GroundHeatTransferCoefficientNoAdjustmentByAreaRatio'

GWR_STOCKTANK = 'GWRStockTank'

HEAT_CAPACITY_FLUID_INSITU = 'HeatCapacityFluidInSitu'

HEAT_CAPACITY_GAS_INSITU = 'HeatCapacityGasInSitu'

HEAT_CAPACITY_LIQUID_INSITU = 'HeatCapacityLiquidInSitu'

HEAT_CAPACITY_OIL_INSITU = 'HeatCapacityOilInSitu'

HEAT_CAPACITY_WATER_INSITU = 'HeatCapacityWaterInSitu'

HOLDUP_FRACTION_LIQUID = 'HoldupFractionLiquid'

HOLDUP_LIQUID_WATER = 'HoldupLiquidWater'

HORIZONTAL_DISTANCE = 'HorizontalDistance'

HORIZONTAL_POSITION = 'HorizontalPosition'

HYDRATE_FORMATION_TEMPERATURE = 'HydrateFormationTemperature'

HYDRATE_SUB_COOLING_DELTA_TEMPERATURE = 'HydrateSubCoolingDeltaTemperature'

HYDROSTATIC_HEAD = 'HydrostaticHead'

INLINE_HEATER_MINIMUM_TEMPERATURE = 'InlineHeaterMinimumTemperature'

INLINE_HEATER_POWER_AVAILABLE = 'InlineHeaterPowerAvailable'

INLINE_HEATER_POWER_USED = 'InlineHeaterPowerUsed'

INPUT_HEAT_TRANSFER_COEFFICIENT = 'InputHeatTransferCoefficient'

INSIDE_FILM_FORCED_CONV_NUSSELT_NUMBER = 'InsideFilmForcedConvNusseltNumber'

INSIDE_FILM_GAS_GRASHOF_NUMBER = 'InsideFilmGasGrashofNumber'

INSIDE_FILM_GAS_HEAT_TRANSFER_COEFFICIENT = 'InsideFilmGasHeatTransferCoefficient'

INSIDE_FILM_GAS_NUSSELT_NUMBER = 'InsideFilmGasNusseltNumber'

INSIDE_FILM_GAS_PRANDTL_NUMBER = 'InsideFilmGasPrandtlNumber'

INSIDE_FILM_GAS_REYNOLDS_NUMBER = 'InsideFilmGasReynoldsNumber'

INSIDE_FILM_GRASHOF_NUMBER = 'InsideFilmGrashofNumber'

INSIDE_FILM_GRASHOF_NUMBER_LIQUID = 'InsideFilmGrashofNumberLiquid'

INSIDE_FILM_LIQUID_HEAT_TRANSFER_COEFFICIENT = 'InsideFilmLiquidHeatTransferCoefficient'

INSIDE_FILM_LIQUID_NUSSELT_NUMBER = 'InsideFilmLiquidNusseltNumber'

INSIDE_FILM_LIQUID_PRANDTL_NUMBER = 'InsideFilmLiquidPrandtlNumber'

INSIDE_FILM_LIQUID_REYNOLDS_NUMBER = 'InsideFilmLiquidReynoldsNumber'

INSIDE_FILM_MEAN_HEAT_TRANSFER_COEFFICIENT = 'InsideFilmMeanHeatTransferCoefficient'

INSIDE_FILM_NATURAL_CONV_NUSSELT_NUMBER = 'InsideFilmNaturalConvNusseltNumber'

INSIDE_FILM_NUSSELT_NUMBER = 'InsideFilmNusseltNumber'

INSIDE_FILM_PRANDTL_NUMBER = 'InsideFilmPrandtlNumber'

INSIDE_FILM_REYNOLDS_NUMBER = 'InsideFilmReynoldsNumber'

INSIDE_FLUID_FILM_HEAT_TRANSFER_COEFFICIENT = 'InsideFluidFilmHeatTransferCoefficient'

JOULE_THOMPSON_COEFFICIENT_INSITU = 'JouleThompsonCoefficientInSitu'

LAYER_STATIC_PRESSURE = 'LayerStaticPressure'

LGR_STOCKTANK = 'LGRStockTank'

LIQUID_LOADING_GAS_RATE = 'LiquidLoadingGasRate'

LIQUID_LOADING_VELOCITY = 'LiquidLoadingVelocity'

LIQUID_LOADING_VELOCITY_RATIO = 'LiquidLoadingVelocityRatio'

LIVE_OIL_SATURATED_VISCOSITY_INSITU = 'LiveOilSaturatedViscosityInSitu'

MACH_NUMBER_IN_FLUID = 'MachNumberInFluid'

MASS_FLOWRATE = 'MassFlowrate'

MASS_FLOWRATE_GAS_INSITU = 'MassFlowrateGasInSitu'

MASS_FLOWRATE_GAS_STOCKTANK = 'MassFlowrateGasStockTank'

MASS_FLOWRATE_LIQUID_INSITU = 'MassFlowrateLiquidInSitu'

MASS_FLOWRATE_LIQUID_STOCKTANK = 'MassFlowrateLiquidStockTank'

MASS_FLOWRATE_OIL_INSITU = 'MassFlowrateOilInSitu'

MASS_FLOWRATE_OIL_STOCKTANK = 'MassFlowrateOilStockTank'

MASS_FLOWRATE_WATER_INSITU = 'MassFlowrateWaterInSitu'

MASS_FLOWRATE_WATER_STOCKTANK = 'MassFlowrateWaterStockTank'

MASS_FRACTION_GAS_INSITU = 'MassFractionGasInSitu'

MASS_FRACTION_LIQUID_INSITU = 'MassFractionLiquidInSitu'

MEAN_COEF_OF_EXPANSION_FLUID = 'MeanCoefOfExpansionFluid'

MEAN_VELOCITY_FLUID = 'MeanVelocityFluid'

MEASURED_DEPTH = 'MeasuredDepth'

MOLAR_DENSITY_STOCKTANK = 'MolarDensityStockTank'

MOLAR_VOLUME_STOCKTANK = 'MolarVolumeStockTank'

MOLECULAR_WEIGHT_FLUID = 'MolecularWeightFluid'

MOLE_FRACTION_CO = 'MoleFractionCO'

MOLE_FRACTION_CO2 = 'MoleFractionCO2'

MOLE_FRACTION_H2 = 'MoleFractionH2'

MOLE_FRACTION_H2S = 'MoleFractionH2S'

MOLE_FRACTION_N2 = 'MoleFractionN2'

MUDLINE_TEMPERATURE = 'MudlineTemperature'

NODE_NUMBER = 'NodeNumber'

OGR_STOCKTANK = 'OGRStockTank'

OIL_FORMATION_VOLUME_FACTOR = 'OilFormationVolumeFactor'

OUTSIDE_FILM_FORCED_CONVECTION_HEAT_TRANSFER_COEFFICIENT = 'OutsideFilmForcedConvectionHeatTransferCoefficient'

OUTSIDE_FILM_FORCED_CONVECTION_NUSSELT_NUMBER = 'OutsideFilmForcedConvectionNusseltNumber'

OUTSIDE_FILM_FREE_CONVECTION_HEAT_TRANSFER_COEFFICIENT = 'OutsideFilmFreeConvectionHeatTransferCoefficient'

OUTSIDE_FILM_FREE_CONVECTION_NUSSELT_NUMBER = 'OutsideFilmFreeConvectionNusseltNumber'

OUTSIDE_FILM_GRASHOF_NUMBER = 'OutsideFilmGrashofNumber'

OUTSIDE_FILM_HEAT_TRANSFER_COEFFICIENT_FOR_BURIED_PORTION = 'OutsideFilmHeatTransferCoefficientForBuriedPortion'

OUTSIDE_FILM_HEAT_TRANSFER_COEFFICIENT_FOR_EXPOSED_PORTION = 'OutsideFilmHeatTransferCoefficientForExposedPortion'

OUTSIDE_FILM_PRANDTL_NUMBER = 'OutsideFilmPrandtlNumber'

OUTSIDE_FILM_RALEIGH_NUMBER = 'OutsideFilmRaleighNumber'

OUTSIDE_FILM_REYNOLDS_NUMBER = 'OutsideFilmReynoldsNumber'

OUTSIDE_FLUID_FILM_HEAT_TRANSFER_COEFFICIENT = 'OutsideFluidFilmHeatTransferCoefficient'

OVERALL_AMBIENT_HEAT_TRANSFER_COEFFICIENT = 'OverallAmbientHeatTransferCoefficient'

OVERALL_HEAT_TRANSFER_COEFFICIENT = 'OverallHeatTransferCoefficient'

OVERALL_HEAT_TRANSFER_COEFFICIENT_OF_BURIED_PORTION = 'OverallHeatTransferCoefficientOfBuriedPortion'

OVERALL_HEAT_TRANSFER_COEFFICIENT_OF_EXPOSED_PORTION = 'OverallHeatTransferCoefficientOfExposedPortion'

PHASE_INVERSION_WATERCUT_LIQUID_INSITU = 'PhaseInversionWatercutLiquidInsitu'

PIPE_ANGLE_TO_HORIZONTAL = 'PipeAngleToHorizontal'

PIPE_COATINGS_THICKNESS = 'PipeCoatingsThickness'

PIPE_INSIDE_DIAMETER = 'PipeInsideDiameter'

PIPE_INSIDE_TEMPERATURE = 'PipeInsideTemperature'

PIPE_INSIDE_TEMPERATURE_BURIED_PART = 'PipeInsideTemperatureBuriedPart'

PIPE_INSIDE_TEMPERATURE_EXPOSED_PART = 'PipeInsideTemperatureExposedPart'

PIPE_OUTSIDE_DIAMETER = 'PipeOutsideDiameter'

PIPE_OUTSIDE_DIAMETER_WITH_COATINGS = 'PipeOutsideDiameterWithCoatings'

PIPE_OUTSIDE_TEMPERATURE = 'PipeOutsideTemperature'

PIPE_OUTSIDE_TEMPERATURE_BURIED_PART = 'PipeOutsideTemperatureBuriedPart'

PIPE_OUTSIDE_TEMPERATURE_EXPOSED_PART = 'PipeOutsideTemperatureExposedPart'

PIPE_WALL_CONDUCTIVITY = 'PipeWallConductivity'

PIPE_WALL_HEAT_TRANSFER_COEFFICIENT = 'PipeWallHeatTransferCoefficient'

PIPE_WALL_ROUGHNESS = 'PipeWallRoughness'

PIPE_WALL_THICKNESS = 'PipeWallThickness'

PRESSURE = 'Pressure'

PRESSURE_DROP_RATIO_ELEVATION = 'PressureDropRatioElevation'

PRESSURE_DROP_RATIO_FRICTION = 'PressureDropRatioFriction'

PRESSURE_DROP_RATIO_TOTAL = 'PressureDropRatioTotal'

PRESSURE_GRADIENT_ACCELERATION = 'PressureGradientAcceleration'

PRESSURE_GRADIENT_ELEVATION = 'PressureGradientElevation'

PRESSURE_GRADIENT_FRICTION = 'PressureGradientFriction'

PRESSURE_GRADIENT_TOTAL = 'PressureGradientTotal'

RELATIVE_PERMEABILITY_OIL = 'RelativePermeabilityOil'

RELATIVE_PERMEABILITY_WATER = 'RelativePermeabilityWater'

RESERVOIR_DRAWDOWN = 'ReservoirDrawdown'

RESERVOIR_PRESSURE = 'ReservoirPressure'

RESERVOIR_SATURATION = 'ReservoirSaturation'

RESERVOIR_SPECIFIC_GAS_INFLOW = 'ReservoirSpecificGasInflow'

RESERVOIR_SPECIFIC_MASS_INFLOW = 'ReservoirSpecificMassInflow'

RESERVOIR_TEMPERATURE = 'ReservoirTemperature'

RESISTANCE_OF_BURIED_PORTION_OVERALL = 'ResistanceOfBuriedPortionOverall'

RESISTANCE_OF_EXPOSED_PORTION_OVERALL = 'ResistanceOfExposedPortionOverall'

RESISTANCE_OF_OUTSIDE_FILM_ON_EXPOSED_PORTION = 'ResistanceOfOutsideFilmOnExposedPortion'

REYNOLDS_NUMBER = 'ReynoldsNumber'

SAND_PRODUCTION_RATE = 'SandProductionRate'

SEGMENT_ENTHALPY_GRADIENT = 'SegmentEnthalpyGradient'

SEGMENT_INFLOW_RATE_GRADIENT = 'SegmentInflowRateGradient'

SEGMENT_LENGTH = 'SegmentLength'

SEGMENT_PRESSURE_GRADIENT = 'SegmentPressureGradient'

SEGMENT_TEMPERATURE_GRADIENT = 'SegmentTemperatureGradient'

SINGLE_PHASE_ELEVATION_PRESSURE_GRADIENT = 'SinglePhaseElevationPressureGradient'

SINGLE_PHASE_FRICTIONAL_PRESSURE_GRADIENT = 'SinglePhaseFrictionalPressureGradient'

SINGLE_PHASE_TOTAL_PRESSURE_GRADIENT = 'SinglePhaseTotalPressureGradient'

SKIN_DUE_TO_COMPACTED_ZONE = 'SkinDueToCompactedZone'

SKIN_DUE_TO_DAMAGED_WELLBORE = 'SkinDueToDamagedWellbore'

SKIN_DUE_TO_GRAVEL_PACK = 'SkinDueToGravelPack'

SKIN_DUE_TO_PERFORATION_GEOMETRY = 'SkinDueToPerforationGeometry'

SKIN_FACTOR_OVERALL = 'SkinFactorOverall'

SKIN_FACTOR_RATE_DEPENDENT = 'SkinFactorRateDependent'

SKIN_TURBULENT_DUE_TO_DAMAGED_WELLBORE = 'SkinTurbulentDueToDamagedWellbore'

SKIN_TURBULENT_DUE_TO_GRAVEL_PACKING = 'SkinTurbulentDueToGravelPacking'

SKIN_TURBULENT_DUE_TO_PERFORATIONS = 'SkinTurbulentDueToPerforations'

SLIP_RATIO_GAS_LIQUID = 'SlipRatioGasLiquid'

SLIP_RATIO_OIL_WATER = 'SlipRatioOilWater'

SLUG_FREQUENCY1IN10 = 'SlugFrequency1In10'

SLUG_FREQUENCY1IN100 = 'SlugFrequency1In100'

SLUG_FREQUENCY1IN1000 = 'SlugFrequency1In1000'

SLUG_FREQUENCY_MEAN = 'SlugFrequencyMean'

SEVERE_SLUGGING_INDICATOR_POTS = 'SeverSluggingIndicatorPots'

SLUG_LENGTH1IN10 = 'SlugLength1In10'

SLUG_LENGTH1IN100 = 'SlugLength1In100'

SLUG_LENGTH1IN1000 = 'SlugLength1In1000'

SLUG_LENGTH_MEAN = 'SlugLengthMean'

SLUG_VOLUME1IN10 = 'SlugVolume1In10'

SLUG_VOLUME1IN100 = 'SlugVolume1In100'

SLUG_VOLUME1IN1000 = 'SlugVolume1In1000'

SLUG_VOLUME_MEAN = 'SlugVolumeMean'

SOLUTION_GAS_IN_OIL_INSITU = 'SolutionGasInOilInSitu'

SOLUTION_GAS_IN_WATER_INSITU = 'SolutionGasInWaterInSitu'

SOLUTION_GAS_POTENTIAL_IN_LIQUID_INSITU = 'SolutionGasPotentialInLiquidInSitu'

SOLUTION_GAS_POTENTIAL_IN_OIL_INSITU = 'SolutionGasPotentialInOilInSitu'

SOLUTION_GAS_POTENTIAL_IN_WATER_INSITU = 'SolutionGasPotentialInWaterInSitu'

SOLUTION_GAS_VOLUME_FLOWRATE_INSITU = 'SolutionGasVolumeFlowrateInSitu'

SONIC_VELOCITY_IN_FLUID = 'SonicVelocityInFluid'

SPECIFIC_GRAVITY_GAS_INSITU = 'SpecificGravityGasInSitu'

SPECIFIC_GRAVITY_GAS_STOCKTANK = 'SpecificGravityGasStockTank'

SPECIFIC_GRAVITY_LIQUID_STOCKTANK = 'SpecificGravityLiquidStockTank'

SPECIFIC_GRAVITY_OIL_STOCKTANK = 'SpecificGravityOilStockTank'

SPECIFIC_GRAVITY_WATER_STOCKTANK = 'SpecificGravityWaterStockTank'

SPECIFIC_HEAT_CAPACITY_RATIO_GAS_INSITU = 'SpecificHeatCapacityRatioGasInSitu'

SPHERE_GENERATED_LIQUID_VOLUME_DUMPING_TIME_TOTAL = 'SphereGeneratedLiquidVolumeDumpingTimeTotal'

SPHERE_GENERATED_LIQUID_VOLUME_FROM_SECTION = 'SphereGeneratedLiquidVolumeFromSection'

SPHERE_GENERATED_LIQUID_VOLUME_SO_FAR = 'SphereGeneratedLiquidVolumeSoFar'

SPHERE_TRANSIT_TIME_FROM_SECTION = 'SphereTransitTimeFromSection'

SUPERFICIAL_VELOCITY_GAS = 'SuperficialVelocityGas'

SUPERFICIAL_VELOCITY_LIQUID = 'SuperficialVelocityLiquid'

SUPERFICIAL_VELOCITY_OIL = 'SuperficialVelocityOil'

SUPERFICIAL_VELOCITY_WATER = 'SuperficialVelocityWater'

SURFACE_TENSION_LIQUID_INSITU = 'SurfaceTensionLiquidInSitu'

SURFACE_TENSION_OIL_GAS_INSITU = 'SurfaceTensionOilGasInSitu'

SURFACE_TENSION_OIL_WATER_INSITU = 'SurfaceTensionOilWaterInSitu'

SURFACE_TENSION_WATER_GAS_INSITU = 'SurfaceTensionWaterGasInSitu'

TEMPERATURE = 'Temperature'

TEMPERATURE_FLUID = 'TemperatureFluid'

TEMPERATURE_GRADIENT_ELEVATION = 'TemperatureGradientElevation'

TEMPERATURE_GRADIENT_GROUND_AND_AMBIENT = 'TemperatureGradientGroundAndAmbient'

TEMPERATURE_GRADIENT_HEAT_TRANSFER = 'TemperatureGradientHeatTransfer'

TEMPERATURE_GRADIENT_INSIDE_FILM = 'TemperatureGradientInsideFilm'

TEMPERATURE_GRADIENT_JOULE_THOMSON = 'TemperatureGradientJouleThomson'

TEMPERATURE_GRADIENT_OVERALL = 'TemperatureGradientOverall'

TEMPERATURE_GRADIENT_PIPE_AND_COATINGS = 'TemperatureGradientPipeAndCoatings'

TOTAL_DISTANCE = 'TotalDistance'

TOTAL_SPHERE_TRANSIT_TIME_SO_FAR = 'TotalSphereTransitTimeSoFar'

TRUE_VERTICAL_DEPTH = 'TrueVerticalDepth'

VELOCITY_GAS = 'VelocityGas'

VELOCITY_LIQUID = 'VelocityLiquid'

VELOCITY_OIL = 'VelocityOil'

VELOCITY_WATER = 'VelocityWater'

VISCOSITY_DEAD_OIL_STOCKTANK = 'ViscosityDeadOilStockTank'

VISCOSITY_FLUID_NO_SLIP_INSITU = 'ViscosityFluidNoSlipInSitu'

VISCOSITY_FLUID_SLIP_INSITU = 'ViscosityFluidSlipInSitu'

VISCOSITY_GAS_INSITU = 'ViscosityGasInSitu'

VISCOSITY_LIQUID_INSITU = 'ViscosityLiquidInSitu'

VISCOSITY_OIL_INSITU = 'ViscosityOilInSitu'

VISCOSITY_WATER_INSITU = 'ViscosityWaterInSitu'

VOLUME_FLOWRATE_FLUID_INSITU = 'VolumeFlowrateFluidInSitu'

VOLUME_FLOWRATE_GAS_INSITU = 'VolumeFlowrateGasInSitu'

VOLUME_FLOWRATE_GAS_INSITU_IDEAL = 'VolumeFlowrateGasInsituIdeal'

VOLUME_FLOWRATE_GAS_STOCKTANK = 'VolumeFlowrateGasStockTank'

VOLUME_FLOWRATE_LIQUID_INSITU = 'VolumeFlowrateLiquidInSitu'

VOLUME_FLOWRATE_LIQUID_STOCKTANK = 'VolumeFlowrateLiquidStockTank'

VOLUME_FLOWRATE_OIL_INSITU = 'VolumeFlowrateOilInSitu'

VOLUME_FLOWRATE_OIL_STOCKTANK = 'VolumeFlowrateOilStockTank'

VOLUME_FLOWRATE_WATER_INSITU = 'VolumeFlowrateWaterInSitu'

VOLUME_FLOWRATE_WATER_STOCKTANK = 'VolumeFlowrateWaterStockTank'

VOLUME_FRACTION_GAS_INSITU = 'VolumeFractionGasInSitu'

VOLUME_FRACTION_LIQUID = 'VolumeFractionLiquid'

VOLUME_FRACTION_LIQUID_STOCKTANK = 'VolumeFractionLiquidStockTank'

WATERCUT = 'Watercut'

WATER_CUT_STOCKTANK = 'WaterCutStockTank'

WAX_FORMATION_TEMPERATURE = 'WaxFormationTemperature'

WAX_SUB_COOLING_DELTA_TEMPERATURE = 'WaxSubCoolingDeltaTemperature'

WGR_STOCKTANK = 'WGRStockTank'

Z_FACTOR_GAS_INSITU = 'ZFactorGasInSitu'

GAS_WALL_SHEAR_STRESS = 'GasWallShearStress'

OIL_WALL_SHEAR_STRESS = 'OilWallShearStress'

WATER_WALL_SHEAR_STRESS = 'WaterWallShearStress'

LIQUID_WALL_SHEAR_STRESS = 'LiquidWallShearStress'

MAOP = 'Max. Allowable Operating Pressure'

MAOP_RATIO = 'Max. Allowable Operating Pressure ratio'

MAOP_RISK = 'Max. Allowable Operating Pressure risk'

class sixgill.definitions.SpotReportVariables
Bases: object

PRESSURE = 'Pressure'

TEMPERATURE = 'Temperature'

STOCK_TANK_GAS_FLOWRATE = 'StockTankGasFlowrate'

STOCK_TANK_LIQUID_FLOWRATE = 'StockTankLiquidFlowrate'

STOCK_TANK_OIL_FLOWRATE = 'StockTankOilFlowrate'

STOCK_TANK_WATER_FLOWRATE = 'StockTankWaterFlowrate'

STOCK_TANK_GAS_MASS_FLOWRATE = 'StockTankGasMassFlowrate'

STOCK_TANK_LIQUID_MASS_FLOWRATE = 'StockTankLiquidMassFlowrate'

STOCK_TANK_OIL_MASS_FLOWRATE = 'StockTankOilMassFlowrate'

STOCK_TANK_WATER_MASS_FLOWRATE = 'StockTankWaterMassFlowrate'

STOCK_TANK_GLR = 'StockTankGlr'

STOCK_TANK_GOR = 'StockTankGor'

STOCK_TANK_LGR = 'StockTankLgr'

STOCK_TANK_OGR = 'StockTankOgr'

STOCK_TANK_GWR = 'StockTankGwr'

STOCK_TANK_WGR = 'StockTankWgr'

STOCK_TANK_WATERCUT = 'StockTankWatercut'

STOCK_TANK_MOLAR_DENSITY = 'StockTankMolarDensity'

STOCK_TANK_GAS_DENSITY = 'StockTankGasDensity'

STOCK_TANK_LIQUID_DENSITY = 'StockTankLiquidDensity'

STOCK_TANK_OIL_DENSITY = 'StockTankOilDensity'

STOCK_TANK_WATER_DENSITY = 'StockTankWaterDensity'

STOCK_TANK_GAS_SPECIFIC_GRAVITY = 'StockTankGasSpecificGravity'

STOCK_TANK_LIQUID_SPECIFIC_GRAVITY = 'StockTankLiquidSpecificGravity'

STOCK_TANK_OIL_SPECIFIC_GRAVITY = 'StockTankOilSpecificGravity'

STOCK_TANK_WATER_SPECIFIC_GRAVITY = 'StockTankWaterSpecificGravity'

STOCK_TANK_LIQUID_VOLUME_FRACTION = 'StockTankLiquidVolumeFraction'

MASS_FLOWRATE = 'MassFlowrate'

MOLECULAR_WEIGHT_OF_TOTAL_STREAM = 'MolecularWeightOfTotalStream'

AMBIENT_TEMPERATURE_AT_NODE = 'AmbientTemperatureAtNode'

INSIDE_FLUID_FILM_HEAT_TRANSFER_COEFFICIENT = 'InsideFluidFilmHeatTransferCoefficient'

OVERALL_HEAT_TRANSFER_COEFFICIENT = 'OverallHeatTransferCoefficient'

PIPE_OUTSIDE_DIAMETER = 'PipeOutsideDiameter'

TEMPERATURE_GRADIENT_OVERALL = 'TemperatureGradientOverall'

TEMPERATURE_GRADIENT_ELEVATION = 'TemperatureGradientElevation'

TEMPERATURE_GRADIENT_JOULE_THOMSON = 'TemperatureGradientJouleThomson'

TEMPERATURE_GRADIENT_HEAT_TRANSFER = 'TemperatureGradientHeatTransfer'

TEMPERATURE_GRADIENT_INSIDE_FILM = 'TemperatureGradientInsideFilm'

TEMPERATURE_GRADIENT_PIPE_COATINGS = 'TemperatureGradientPipe&Coatings'

TEMPERATURE_GRADIENT_GROUND_AMBIENT = 'TemperatureGradientGround&Ambient'

FLOWING_LIQUID_FLOWRATE = 'FlowingLiquidFlowrate'

FLOWING_GAS_FLOWRATE = 'FlowingGasFlowrate'

FLOWING_OIL_FLOWRATE = 'FlowingOilFlowrate'

FLOWING_WATER_FLOWRATE = 'FlowingWaterFlowrate'

FLOWING_GAS_VOLUME_FLOWRATE = 'FlowingGasVolumeFlowrate'

FLOWING_LIQUID_VOLUME_FLOWRATE = 'FlowingLiquidVolumeFlowrate'

FLOWING_TOTAL_FLOWRATE = 'FlowingTotalFlowrate'

FLOWING_GAS_MASS_FLOWRATE = 'FlowingGasMassFlowrate'

FLOWING_LIQUID_MASS_FLOWRATE = 'FlowingLiquidMassFlowrate'

FLOWING_OIL_MASS_FLOWRATE = 'FlowingOilMassFlowrate'

FLOWING_WATER_MASS_FLOWRATE = 'FlowingWaterMassFlowrate'

FLOWING_LIQUID_MASS_FRACTION = 'FlowingLiquidMassFraction'

FLOWING_LIQUID_VOLUME_FRACTION = 'FlowingLiquidVolumeFraction'

LIQUID_HOLDUP_FRACTION = 'LiquidHoldupFraction'

FLOWING_WATERCUT = 'FlowingWatercut'

FLOWING_LIQUID_PHASE_INVERSION_WATERCUT = 'FlowingLiquidPhaseInversionWatercut'

FLOWING_GAS_VOLUME_FRACTION = 'FlowingGasVolumeFraction'

FLOWING_GAS_SPECIFIC_GRAVITY = 'FlowingGasSpecificGravity'

FLOWING_GAS_IN_SOLUTION = 'FlowingGasInSolution'

FLOWING_SOLUTION_GAS_IN_OIL = 'FlowingSolutionGasInOil'

FLOWING_SOLUTION_GAS_IN_WATER = 'FlowingSolutionGasInWater'

FLOWING_POTENTIAL_OF_SOLUTION_GAS_IN_LIQUID = 'FlowingPotentialOfSolutionGasInLiquid'

FLOWING_POTENTIAL_OF_SOLUTION_GAS_IN_OIL = 'FlowingPotentialOfSolutionGasInOil'

FLOWING_POTENTIAL_OF_SOLUTION_GAS_IN_WATER = 'FlowingPotentialOfSolutionGasInWater'

FLOWING_BUBBLE_POINT_PRESSURE = 'FlowingBubblePointPressure'

FLOWING_GAS_DENSITY = 'FlowingGasDensity'

FLOWING_LIQUID_DENSITY = 'FlowingLiquidDensity'

FLOWING_OIL_DENSITY = 'FlowingOilDensity'

FLOWING_WATER_DENSITY = 'FlowingWaterDensity'

FLOWING_NO_SLIP_MIXTURE_DENSITY = 'FlowingNoSlipMixtureDensity'

FLOWING_GAS_VISCOSITY = 'FlowingGasViscosity'

FLOWING_LIQUID_VISCOSITY = 'FlowingLiquidViscosity'

FLOWING_OIL_VISCOSITY = 'FlowingOilViscosity'

FLOWING_WATER_VISCOSITY = 'FlowingWaterViscosity'

FLOWING_NO_SLIP_MIXTURE_VISCOSITY = 'FlowingNoSlipMixtureViscosity'

FLOWING_LIQUID_SURFACE_TENSION = 'FlowingLiquidSurfaceTension'

FLOWING_OIL_GAS_SURFACE_TENSION = 'FlowingOilGasSurfaceTension'

FLOWING_WATER_GAS_SURFACE_TENSION = 'FlowingWaterGasSurfaceTension'

FLOWING_OIL_WATER_SURFACE_TENSION = 'FlowingOilWaterSurfaceTension'

FLOWING_OIL_FORMATION_VOLUME_FACTOR = 'FlowingOilFormationVolumeFactor'

FLOWING_OIL_COMPRESSIBILITY = 'FlowingOilCompressibility'

FLUID_ENTHALPY = 'FluidEnthalpy'

FLOWING_ENTROPY = 'FlowingEntropy'

FLOWING_GAS_Z_FACTOR = 'FlowingGasZFactor'

MACH_NUMBER_IN_FLUID = 'MachNumberInFluid'

SONIC_VELOCITY_IN_FLUID = 'SonicVelocityInFluid'

FLOWING_IDEAL_GAS_FLOWRATE = 'Flowing(Ideal)GasFlowrate'

FLOWING_JOULE_THOMPSON_COEFFICIENT = 'FlowingJouleThompsonCoefficient'

TOTAL_DISTANCE = 'TotalDistance'

CUMULATIVE_LIQUID_HOLDUP = 'CumulativeLiquidHoldup'

CUMULATIVE_OIL_HOLDUP = 'CumulativeOilHoldup'

CUMULATIVE_WATER_HOLDUP = 'CumulativeWaterHoldup'

CUMULATIVE_GAS_HOLDUP = 'CumulativeGasHoldup'

CUMULATIVE_PIPELINE_VOLUME = 'CumulativePipelineVolume'

TOTAL_SPHERE_GENERATED_LIQUID_VOLUME_SO_FAR = 'TotalSphereGeneratedLiquidVolumeSoFar'

CUMULATIVE_FRICTION_PRESSURE_DIFFERENCE = 'CumulativeFrictionPressureDifference'

CUMULATIVE_ELEVATION_PRESSURE_DIFFERENCE = 'CumulativeElevationPressureDifference'

CUMULATIVE_ACCELERATION_PRESSURE_DIFFERENCE = 'CumulativeAccelerationPressureDifference'

FLOW_PATTERN_GAS_LIQUID = 'FlowPattern,GasLiquid'

FLOW_PATTERN_OIL_WATER = 'FlowPattern,OilWater'

WATER_HOLDUP_IN_LIQUID = 'WaterHoldupInLiquid'

GAS_LIQUID_SLIP_RATIO = 'Gas/LiquidSlipRatio'

OIL_WATER_SLIP_RATIO = 'Oil/WaterSlipRatio'

LIQUID_SUPERFICIAL_VELOCITY = 'LiquidSuperficialVelocity'

GAS_SUPERFICIAL_VELOCITY = 'GasSuperficialVelocity'

OIL_SUPERFICIAL_VELOCITY = 'OilSuperficialVelocity'

WATER_SUPERFICIAL_VELOCITY = 'WaterSuperficialVelocity'

LIQUID_VELOCITY = 'LiquidVelocity'

GAS_VELOCITY = 'GasVelocity'

OIL_VELOCITY = 'OilVelocity'

WATER_VELOCITY = 'WaterVelocity'

FLUID_MEAN_VELOCITY = 'FluidMeanVelocity'

EROSIONAL_VELOCITY_RATIO = 'ErosionalVelocityRatio'

LIQUID_LOADING_VELOCITY_RATIO = 'LiquidLoadingVelocityRatio'

PIPE_INSIDE_DIAMETER = 'PipeInsideDiameter'

EQUIVALENT_HYDRAULIC_DIAMETER = 'EquivalentHydraulicDiameter'

ANNULUS_INSIDE_DIAMETER = 'AnnulusInsideDiameter'

ANNULUS_OUTSIDE_DIAMETER = 'AnnulusOutsideDiameter'

CROSS_SECTIONAL_AREA_FOR_FLOW = 'CrossSectionalAreaForFlow'

PIPE_ANGLE_TO_HORIZONTAL = 'PipeAngleToHorizontal'

PIPE_WALL_ROUGHNESS = 'PipeWallRoughness'

FLOWING_SLIP_MIXTURE_DENSITY = 'FlowingSlipMixtureDensity'

FLOWING_SLIP_MIXTURE_VISCOSITY = 'FlowingSlipMixtureViscosity'

PRESSURE_GRADIENT = 'PressureGradient'

FRICTION_PRESSURE_GRADIENT = 'FrictionPressureGradient'

ELEVATION_PRESSURE_GRADIENT = 'ElevationPressureGradient'

ACCELERATION_PRESSURE_GRADIENT = 'AccelerationPressureGradient'

REYNOLDS_NUMBER = 'ReynoldsNumber'

LIQUID_FROUDE_NUMBER = 'LiquidFroudeNumber'

GAS_FROUDE_NUMBER = 'GasFroudeNumber'

SEVERE_SLUGGING_INDICATOR_POTS = 'SevereSluggingIndicatorPots'

MEAN_SLUG_VOLUME = 'MeanSlugVolume'

MEAN_SLUG_LENGTH = 'MeanSlugLength'

MEAN_SLUG_FREQUENCY = 'MeanSlugFrequency'

ONE_IN_1000_SLUG_VOLUME = '1In1000SlugVolume'

ONE_IN_1000_SLUG_LENGTH = '1In1000SlugLength'

ONE_IN_1000_SLUG_FREQUENCY = '1In1000SlugFrequency'

BP_MEAN_SLUG_LENGTH = 'BpMeanSlugLength'

BP_SLUG_FREQUENCY = 'BpSlugFrequency'

BP_SLUG_LIQUID_HOLDUP = 'BpSlugLiquidHoldup'

BP_1_IN_1000_SLUG_LENGTH = 'Bp1In1000SlugLength'

BP_1_IN_1000_SLUG_FREQUENCY = 'Bp1In1000SlugFrequency'

TOTAL_SPHERE_TRANSIT_TIME_SO_FAR = 'TotalSphereTransitTimeSoFar'

TOTAL_SPHERE_GENERATED_LIQUID_VOLUME_DUMPING_TIME_SO_FAR = 'TotalSphereGeneratedLiquidVolumeDumpingTimeSoFar'

COMPONENTS = 'Components'

class sixgill.definitions.OutputVariables
Bases: object

class System
Bases: object

GAS_FIELD = ['PipeOutsideDiameter', 'SystemPressureLoss', 'SystemInletPressure', 'SystemOutletPressure', 'SystemOutletTemperature', 'TotalLiquidHoldup', 'InletVolumeFlowrateLiquid', 'InletVolumeFlowrateGas', 'InletVelocityFluid', 'OutletVolumeFlowrateLiquid', 'OutletVolumeFlowrateGas', 'OutletVelocityFluid', 'OutletVolumeFlowrateLiquidStockTank', 'OutletGLRStockTank', 'OutletMassFlowrateFluid', 'CaseNumber', 'InletWaterCutStockTank', 'InputTubingHeadPressure', 'InputFlowrate', 'TotalInjectionGas', 'GasLiftInjectionRatio', 'GasLiftInjectionCasingPressure', 'GasLiftInjectionCasingTemperature', 'GasLiftInjectionPortDiameter', 'GasLiftInjectionSourcePressure', 'GasLiftInjectionCasingHeadTemperature', 'PCPIntakePressure', 'PCPIntakeVolumetricFlowrateFluid', 'PCPEfficiency', 'PCPPower', 'PCPTorque', 'PCPSpeed', 'PCPDischargePressure', 'ESPIntakeGasVolumeFraction', 'ESPIntakePressure', 'ESPIntakeTotalVolumetricFlowrate', 'ESPSuctionGasVolumeFraction', 'ESPDischargePressure', 'ESPDeltaPressure', 'ESPPower', 'ESPNumberOfStages', 'ESPHead', 'ESPDeltaTemperature', 'ESPEfficiency', 'ESPEfficiencyFactor', 'ESPFlowrateFactor', 'ESPHeadFactor', 'ESPPowerFactor', 'BottomHolePressure', 'InputWatercut', 'InletVolumeFlowrateLiquidStockTank', 'InletMassFlowrateFluid', 'WellheadPressure', 'WellheadVolumeFlowrateLiquidStockTank', 'WellheadVolumeFlowrateLiquidInSitu', 'WellheadVolumeFlowrateGasStockTank', 'WellheadMassFlowrateFluid', 'NodalPointVolumeFlowrateLiquidStockTank', 'NodalPointPressure', 'NodalPointMassFlowrateFluid', 'TotalPressureDropElevational', 'TotalPressureDropFrictional', 'OutletVolumeFlowrateOilStockTank', 'OutletMassFlowrateOilStockTank', 'OutletVolumeFlowrateWaterStockTank', 'OutletMassFlowrateWaterStockTank', 'OutletVolumeFlowrateGasStockTank', 'OutletMassFlowrateGasStockTank', 'NodalPointVolumeFlowrateGasStockTank', 'InletVolumeFlowrateGasStockTank', 'SevereSluggingIndicator', 'SlugVolumeMean', 'SlugLengthMean', 'SlugFrequencyMean', 'ErosionalVelocityMaximum', 'MaximumErosionalVelocityRatio', 'ESPFrequency', 'SphereGeneratedLiquidVolume', 'InletMassFractionGas', 'TotalOilHoldup', 'TotalWaterHoldup', 'SystemTemperatureDifference', 'OutletWaterCutStockTank', 'OutletGORStockTank', 'OutletFractionCO2', 'OutletFractionH2S', 'OutletFractionN2', 'OutletFractionH2', 'OutletFractionCO', 'CaseStatus', 'MaximumVelocityGas', 'InletErosionalVelocityRatio', 'OutletErosionalVelocityRatio', 'MaximumHydrateSubCoolingTemperatureDifference', 'MaximumErosionRate', 'MaximumCorrosionRate', 'MaximumErosionRisk', 'MaximumCorrosionRisk', 'MaximumLiquidLoadingVelocityRatio', 'MaximumLiquidLoadingGasRate', 'NodalPointBubblePointPressure']

WELL_PERFORMANCE = ['PipeOutsideDiameter', 'SystemPressureLoss', 'SystemInletPressure', 'SystemOutletPressure', 'SystemOutletTemperature', 'TotalLiquidHoldup', 'InletVolumeFlowrateLiquid', 'InletVolumeFlowrateGas', 'InletVelocityFluid', 'OutletVolumeFlowrateLiquid', 'OutletVolumeFlowrateGas', 'OutletVelocityFluid', 'OutletVolumeFlowrateLiquidStockTank', 'OutletGLRStockTank', 'OutletMassFlowrateFluid', 'CaseNumber', 'InletWaterCutStockTank', 'InputTubingHeadPressure', 'InputFlowrate', 'TotalInjectionGas', 'GasLiftInjectionRatio', 'GasLiftInjectionCasingPressure', 'GasLiftInjectionCasingTemperature', 'GasLiftInjectionPortDiameter', 'GasLiftInjectionSourcePressure', 'GasLiftInjectionCasingHeadTemperature', 'PCPIntakePressure', 'PCPIntakeVolumetricFlowrateFluid', 'PCPEfficiency', 'PCPPower', 'PCPTorque', 'PCPSpeed', 'PCPDischargePressure', 'ESPIntakeGasVolumeFraction', 'ESPIntakePressure', 'ESPIntakeTotalVolumetricFlowrate', 'ESPSuctionGasVolumeFraction', 'ESPDischargePressure', 'ESPDeltaPressure', 'ESPPower', 'ESPNumberOfStages', 'ESPHead', 'ESPDeltaTemperature', 'ESPEfficiency', 'ESPEfficiencyFactor', 'ESPFlowrateFactor', 'ESPHeadFactor', 'ESPPowerFactor', 'BottomHolePressure', 'InputWatercut', 'InletVolumeFlowrateLiquidStockTank', 'InletMassFlowrateFluid', 'WellheadPressure', 'WellheadVolumeFlowrateLiquidStockTank', 'WellheadVolumeFlowrateLiquidInSitu', 'WellheadMassFlowrateFluid', 'NodalPointVolumeFlowrateLiquidStockTank', 'NodalPointPressure', 'NodalPointVolumeFlowrateLiquidInSitu', 'NodalPointVolumeFlowrateGasInSitu', 'NodalPointMassFlowrateFluid', 'HeelReservoirDrawdown', 'TotalPressureDropElevational', 'TotalPressureDropFrictional', 'OutletVolumeFlowrateOilStockTank', 'OutletMassFlowrateOilStockTank', 'OutletVolumeFlowrateWaterStockTank', 'OutletMassFlowrateWaterStockTank', 'OutletVolumeFlowrateGasStockTank', 'OutletMassFlowrateGasStockTank', 'WellheadVolumeFlowrateOilStockTank', 'NodalPointVolumeFlowrateOilStockTank', 'WellheadVolumeFlowrateGasStockTank', 'NodalPointVolumeFlowrateGasStockTank', 'InletVolumeFlowrateGasStockTank', 'SevereSluggingIndicator', 'SlugVolumeMean', 'SlugLengthMean', 'SlugFrequencyMean', 'ErosionalVelocityMaximum', 'MaximumErosionalVelocityRatio', 'ESPFrequency', 'SphereGeneratedLiquidVolume', 'WellheadTemperature', 'PressureDropTotalCompletion', 'InletMassFractionGas', 'SystemTemperatureDifference', 'OutletWaterCutStockTank', 'OutletGORStockTank', 'CaseStatus', 'MaximumErosionRate', 'MaximumCorrosionRate', 'MaximumErosionRisk', 'MaximumCorrosionRisk', 'MaximumLiquidLoadingVelocityRatio', 'MaximumLiquidLoadingGasRate', 'NodalPointBubblePointPressure']

FLOW_ASSURANCE = ['PipeOutsideDiameter', 'SystemPressureLoss', 'SystemInletPressure', 'SystemOutletPressure', 'SystemOutletTemperature', 'TotalLiquidHoldup', 'InletVolumeFlowrateLiquid', 'InletVolumeFlowrateGas', 'InletVelocityFluid', 'OutletVolumeFlowrateLiquid', 'OutletVolumeFlowrateGas', 'OutletVelocityFluid', 'HeatTransferCoefficient', 'OutletVolumeFlowrateLiquidStockTank', 'OutletGLRStockTank', 'OutletMassFlowrateFluid', 'CaseNumber', 'InletWaterCutStockTank', 'InputTubingHeadPressure', 'InputFlowrate', 'TotalInjectionGas', 'GasLiftInjectionRatio', 'GasLiftInjectionCasingPressure', 'GasLiftInjectionCasingTemperature', 'GasLiftInjectionPortDiameter', 'GasLiftInjectionSourcePressure', 'GasLiftInjectionCasingHeadTemperature', 'PCPIntakePressure', 'PCPIntakeVolumetricFlowrateFluid', 'PCPEfficiency', 'PCPPower', 'PCPTorque', 'PCPSpeed', 'PCPDischargePressure', 'ESPIntakeGasVolumeFraction', 'ESPIntakePressure', 'ESPIntakeTotalVolumetricFlowrate', 'ESPSuctionGasVolumeFraction', 'ESPDischargePressure', 'ESPDeltaPressure', 'ESPPower', 'ESPNumberOfStages', 'ESPHead', 'ESPDeltaTemperature', 'ESPEfficiency', 'ESPEfficiencyFactor', 'ESPFlowrateFactor', 'ESPHeadFactor', 'ESPPowerFactor', 'BottomHolePressure', 'InputWatercut', 'InletVolumeFlowrateLiquidStockTank', 'InletMassFlowrateFluid', 'WellheadPressure', 'WellheadVolumeFlowrateLiquidStockTank', 'WellheadVolumeFlowrateLiquidInSitu', 'WellheadVolumeFlowrateGasStockTank', 'WellheadMassFlowrateFluid', 'NodalPointVolumeFlowrateLiquidStockTank', 'NodalPointPressure', 'NodalPointMassFlowrateFluid', 'TotalPressureDropElevational', 'TotalPressureDropFrictional', 'OutletVolumeFlowrateOilStockTank', 'OutletMassFlowrateOilStockTank', 'OutletVolumeFlowrateWaterStockTank', 'OutletMassFlowrateWaterStockTank', 'OutletVolumeFlowrateGasStockTank', 'OutletMassFlowrateGasStockTank', 'WellheadVolumeFlowrateOilStockTank', 'NodalPointVolumeFlowrateGasStockTank', 'InletVolumeFlowrateGasStockTank', 'SevereSluggingIndicator', 'SlugVolumeMean', 'SlugLengthMean', 'SlugFrequencyMean', 'SlugVolume1In1000', 'SlugLength1In1000', 'SlugFrequency1In1000', 'ErosionalVelocityMaximum', 'MaximumErosionalVelocityRatio', 'ESPFrequency', 'SphereGeneratedLiquidVolume', 'PressureDropTotalAcceleration', 'InletMassFractionGas', 'TotalOilHoldup', 'TotalWaterHoldup', 'SystemTemperatureDifference', 'MaximumHeatTransferCoefficient', 'OutletWaterCutStockTank', 'OutletGORStockTank', 'CaseStatus', 'MaximumVelocityFluid', 'MaximumVelocityLiquid', 'MaximumVelocityGas', 'MaximumHydrateSubCoolingTemperatureDifference', 'MaximumWaxSubCoolingTemperatureDifference', 'MaximumErosionRate', 'MaximumCorrosionRate', 'MaximumErosionRisk', 'MaximumCorrosionRisk', 'MaximumLiquidLoadingVelocityRatio', 'MaximumLiquidLoadingGasRate', 'NodalPointBubblePointPressure', 'TotalMovingLiquidVolume', 'TotalStaticLiquidVolume', 'Minimum MAOP', 'Maximum MAOP ratio', 'Maximum MAOP risk']

LARGE_NETWORK = ['PipeOutsideDiameter', 'SystemPressureLoss', 'SystemInletPressure', 'SystemOutletPressure', 'SystemOutletTemperature', 'TotalLiquidHoldup', 'InletVolumeFlowrateLiquid', 'InletVolumeFlowrateGas', 'InletVelocityFluid', 'OutletVolumeFlowrateLiquid', 'OutletVolumeFlowrateGas', 'OutletVelocityFluid', 'OutletVolumeFlowrateLiquidStockTank', 'OutletGLRStockTank', 'OutletMassFlowrateFluid', 'TotalInjectionGas', 'GasLiftInjectionRatio', 'GasLiftInjectionCasingPressure', 'GasLiftInjectionCasingTemperature', 'GasLiftInjectionPortDiameter', 'GasLiftInjectionSourcePressure', 'GasLiftInjectionCasingHeadTemperature', 'PCPIntakePressure', 'PCPIntakeVolumetricFlowrateFluid', 'PCPEfficiency', 'PCPPower', 'PCPTorque', 'PCPSpeed', 'PCPDischargePressure', 'ESPIntakeGasVolumeFraction', 'ESPIntakePressure', 'ESPIntakeTotalVolumetricFlowrate', 'ESPSuctionGasVolumeFraction', 'ESPDischargePressure', 'ESPDeltaPressure', 'ESPPower', 'ESPNumberOfStages', 'ESPHead', 'ESPDeltaTemperature', 'ESPEfficiency', 'ESPEfficiencyFactor', 'ESPFlowrateFactor', 'ESPHeadFactor', 'ESPPowerFactor', 'BottomHolePressure', 'InletVolumeFlowrateLiquidStockTank', 'InletMassFlowrateFluid', 'WellheadPressure', 'WellheadVolumeFlowrateLiquidStockTank', 'WellheadVolumeFlowrateLiquidInSitu', 'WellheadVolumeFlowrateGasStockTank', 'NodalPointVolumeFlowrateLiquidStockTank', 'NodalPointPressure', 'NodalPointMassFlowrateFluid', 'TotalPressureDropElevational', 'TotalPressureDropFrictional', 'OutletVolumeFlowrateOilStockTank', 'OutletMassFlowrateOilStockTank', 'OutletVolumeFlowrateWaterStockTank', 'OutletMassFlowrateWaterStockTank', 'OutletVolumeFlowrateGasStockTank', 'OutletMassFlowrateGasStockTank', 'WellheadVolumeFlowrateOilStockTank', 'NodalPointVolumeFlowrateGasStockTank', 'InletVolumeFlowrateGasStockTank', 'SevereSluggingIndicator', 'SlugVolumeMean', 'SlugLengthMean', 'SlugFrequencyMean', 'ErosionalVelocityMaximum', 'MaximumErosionalVelocityRatio', 'ESPFrequency', 'SphereGeneratedLiquidVolume', 'InletMassFractionGas', 'SystemTemperatureDifference', 'OutletWaterCutStockTank', 'OutletGORStockTank', 'MaximumErosionRate', 'MaximumCorrosionRate', 'MaximumErosionRisk', 'MaximumCorrosionRisk', 'MaximumLiquidLoadingVelocityRatio', 'MaximumLiquidLoadingGasRate', 'NodalPointBubblePointPressure']

class Profile
Bases: object

GAS_FIELD = ['HorizontalDistance', 'TotalDistance', 'Elevation', 'Pressure', 'Temperature', 'HoldupFractionLiquid', 'VelocityLiquid', 'VelocityGas', 'MeanVelocityFluid', 'NodeNumber', 'HydrostaticHead', 'PipeInsideDiameter', 'EnthalpyFluid', 'Watercut', 'VolumeFractionLiquid', 'TrueVerticalDepth', 'MeasuredDepth', 'FlowrateLiquidInsitu', 'FlowrateGasInSitu', 'PressureGradientTotal', 'AmbientTemperatureAtNode', 'PressureGradientFriction', 'PressureGradientElevation', 'PressureGradientAcceleration', 'VolumeFlowrateGasStockTank', 'VolumeFlowrateLiquidStockTank', 'VolumeFlowrateOilStockTank', 'GLRStockTank', 'LGRStockTank', 'MassFlowrate', 'VolumeFlowrateGasInSitu', 'VolumeFlowrateLiquidInSitu', 'VolumeFlowrateOilInSitu', 'VolumeFractionGasInSitu', 'SpecificGravityGasInSitu', 'DensityGasInSitu', 'ViscosityGasInSitu', 'ViscosityLiquidInSitu', 'EntropyFluidInSitu', 'ZFactorGasInSitu', 'SlugVolumeMean', 'SlugLengthMean', 'SlugFrequencyMean', 'SeverSluggingIndicatorPots', 'ErosionalVelocity', 'ErosionalVelocityRatio', 'FlowPatternGasLiquid', 'FlowPatternOilWater', 'SuperficialVelocityLiquid', 'SuperficialVelocityGas', 'HorizontalPosition', 'ErosionRate', 'CorrosionRate', 'CorrosionPitRate', 'CorrosionCumulativeLoss', 'ErosionRisk', 'CorrosionRisk', 'HydrateFormationTemperature', 'HydrateSubCoolingDeltaTemperature', 'LiquidLoadingVelocity', 'LiquidLoadingVelocityRatio', 'LiquidLoadingGasRate']

WELL_PERFORMANCE = ['HorizontalDistance', 'TotalDistance', 'Elevation', 'Pressure', 'Temperature', 'HoldupFractionLiquid', 'VelocityLiquid', 'VelocityGas', 'MeanVelocityFluid', 'NodeNumber', 'HydrostaticHead', 'PipeInsideDiameter', 'Watercut', 'VolumeFractionLiquid', 'TrueVerticalDepth', 'MeasuredDepth', 'FlowrateLiquidInsitu', 'FlowrateGasInSitu', 'ReservoirDrawdown', 'PressureGradientTotal', 'LayerStaticPressure', 'OilFormationVolumeFactor', 'AmbientTemperatureAtNode', 'SkinTurbulentDueToDamagedWellbore', 'SkinFactorOverall', 'SkinFactorRateDependent', 'SkinDueToDamagedWellbore', 'SkinDueToPerforationGeometry', 'SkinDueToCompactedZone', 'SkinDueToGravelPack', 'SkinTurbulentDueToPerforations', 'SkinTurbulentDueToGravelPacking', 'EffectivePermeability', 'PressureGradientFriction', 'PressureGradientElevation', 'PressureGradientAcceleration', 'VolumeFlowrateGasStockTank', 'VolumeFlowrateLiquidStockTank', 'VolumeFlowrateOilStockTank', 'GLRStockTank', 'LGRStockTank', 'MassFlowrate', 'VolumeFlowrateGasInSitu', 'VolumeFlowrateLiquidInSitu', 'VolumeFlowrateOilInSitu', 'VolumeFlowrateWaterInSitu', 'VolumeFractionGasInSitu', 'BubblePointPressureInSitu', 'DensityLiquidInSitu', 'DensityOilInSitu', 'DensityWaterInSitu', 'ViscosityGasInSitu', 'ViscosityLiquidInSitu', 'ErosionalVelocity', 'ErosionalVelocityRatio', 'HeatCapacityGasInSitu', 'HeatCapacityLiquidInSitu', 'FlowPatternGasLiquid', 'FlowPatternOilWater', 'SuperficialVelocityLiquid', 'SuperficialVelocityGas', 'HorizontalPosition', 'ErosionRate', 'CorrosionRate', 'CorrosionPitRate', 'CorrosionCumulativeLoss', 'ErosionRisk', 'CorrosionRisk', 'LiquidLoadingVelocity', 'LiquidLoadingVelocityRatio', 'LiquidLoadingGasRate', 'SpecificHeatCapacityRatioGasInSitu', 'SeverSluggingIndicatorPots']

FLOW_ASSURANCE = ['HorizontalDistance', 'TotalDistance', 'Elevation', 'Pressure', 'Temperature', 'HoldupFractionLiquid', 'VelocityLiquid', 'VelocityGas', 'MeanVelocityFluid', 'NodeNumber', 'HydrostaticHead', 'PipeInsideDiameter', 'EnthalpyFluid', 'Watercut', 'VolumeFractionLiquid', 'TrueVerticalDepth', 'MeasuredDepth', 'FlowrateLiquidInsitu', 'FlowrateGasInSitu', 'PressureGradientTotal', 'AmbientTemperatureAtNode', 'PressureGradientFriction', 'PressureGradientElevation', 'PressureGradientAcceleration', 'ReynoldsNumber', 'VolumeFlowrateGasStockTank', 'VolumeFlowrateLiquidStockTank', 'VolumeFlowrateOilStockTank', 'GLRStockTank', 'LGRStockTank', 'MassFlowrate', 'VolumeFlowrateGasInSitu', 'VolumeFlowrateLiquidInSitu', 'VolumeFlowrateOilInSitu', 'VolumeFlowrateWaterInSitu', 'VolumeFractionGasInSitu', 'BubblePointPressureInSitu', 'DensityGasInSitu', 'DensityLiquidInSitu', 'DensityOilInSitu', 'DensityWaterInSitu', 'DensityFluidNoSlipInSitu', 'DensityFluidInSitu', 'ViscosityGasInSitu', 'ViscosityLiquidInSitu', 'EntropyFluidInSitu', 'SlugVolumeMean', 'SlugLengthMean', 'SlugFrequencyMean', 'SeverSluggingIndicatorPots', 'SlugVolume1In1000', 'SlugLength1In1000', 'SlugFrequency1In1000', 'ErosionalVelocity', 'ErosionalVelocityRatio', 'OverallHeatTransferCoefficient', 'InsideFluidFilmHeatTransferCoefficient', 'HeatCapacityGasInSitu', 'HeatCapacityLiquidInSitu', 'FlowPatternGasLiquid', 'FlowPatternOilWater', 'SuperficialVelocityLiquid', 'SuperficialVelocityGas', 'HorizontalPosition', 'ErosionRate', 'CorrosionRate', 'CorrosionPitRate', 'CorrosionCumulativeLoss', 'ErosionRisk', 'CorrosionRisk', 'HydrateFormationTemperature', 'HydrateSubCoolingDeltaTemperature', 'WaxFormationTemperature', 'WaxSubCoolingDeltaTemperature', 'AsphalteneFormationTemperature', 'LiquidLoadingVelocity', 'LiquidLoadingVelocityRatio', 'LiquidLoadingGasRate', 'TemperatureGradientElevation', 'TemperatureGradientJouleThomson', 'TemperatureGradientHeatTransfer', 'TemperatureGradientOverall', 'TemperatureGradientInsideFilm', 'TemperatureGradientPipeAndCoatings', 'TemperatureGradientGroundAndAmbient', 'SpecificHeatCapacityRatioGasInSitu', 'Max. Allowable Operating Pressure', 'Max. Allowable Operating Pressure ratio', 'Max. Allowable Operating Pressure risk']

LARGE_NETWORK = ['HorizontalDistance', 'TotalDistance', 'Elevation', 'Pressure', 'Temperature', 'HoldupFractionLiquid', 'VelocityLiquid', 'VelocityGas', 'MeanVelocityFluid', 'HydrostaticHead', 'PipeInsideDiameter', 'Watercut', 'VolumeFractionLiquid', 'FlowrateLiquidInsitu', 'FlowrateGasInSitu', 'PressureGradientTotal', 'AmbientTemperatureAtNode', 'PressureGradientFriction', 'PressureGradientElevation', 'PressureGradientAcceleration', 'VolumeFlowrateGasStockTank', 'VolumeFlowrateLiquidStockTank', 'VolumeFlowrateOilStockTank', 'GLRStockTank', 'LGRStockTank', 'MassFlowrate', 'VolumeFlowrateGasInSitu', 'VolumeFlowrateLiquidInSitu', 'VolumeFlowrateOilInSitu', 'VolumeFlowrateWaterInSitu', 'VolumeFractionGasInSitu', 'DensityLiquidInSitu', 'DensityOilInSitu', 'DensityWaterInSitu', 'ViscosityGasInSitu', 'ViscosityLiquidInSitu', 'SlugVolumeMean', 'SlugLengthMean', 'SlugFrequencyMean', 'SeverSluggingIndicatorPots', 'ErosionalVelocity', 'ErosionalVelocityRatio', 'HeatCapacityGasInSitu', 'HeatCapacityLiquidInSitu', 'FlowPatternGasLiquid', 'FlowPatternOilWater', 'HorizontalPosition', 'ErosionRate', 'CorrosionRate', 'CorrosionPitRate', 'CorrosionCumulativeLoss', 'ErosionRisk', 'CorrosionRisk', 'LiquidLoadingVelocity', 'LiquidLoadingVelocityRatio', 'LiquidLoadingGasRate', 'SpecificHeatCapacityRatioGasInSitu']

class sixgill.definitions.EspCurvesVariables
Bases: object

Available Results Profile Variables

VARIABLESPEEDCURVE = ('Speed',)

VARIABLEPERFORMANCECURVE = 'Performance'

VALUES = ('Values',)

VALUE = ('Value',)

UNIT = ('Unit',)

FREQUENCIES = ('Frequencies',)

OPERATINGENVELOPE = ('OperatingEnvelope',)

FLOWRATE = ('Flowrate',)

MODEL = ('Model',)

MANUFACTURER = ('Manufacturer',)

MAXFLOWRATE = ('MaxFlowrate',)

MINFLOWRATE = ('MinFlowrate',)

STAGES = ('BaseStages',)

FREQUENCY = ('Frequency',)

SPEED = ('Speed',)

POWER = ('Power',)

HEAD = ('Head',)

EFFICIENCY = ('Efficiency',)

INPUTS = ('Inputs',)

OPERATINGPOINT = ('OperatingPoint',)

MINCURVE = ('MinCurve',)

BEPCURVE = ('BepCurve',)

MAXCURVE = ('MaxCurve',)

class sixgill.definitions.RequestMessageType(*values)
Bases: str, Enum

Available options for optimizer request message

NONE = 'None'

DATA_ONLY = 'DataOnly'

DATA_AND_MODELTEXT = 'DataAndModelText'

DATA_AND_MODELFILENAME = 'DataAndModelFileName'

sixgill.ErosionCorrosionRiskIndexLimits module

Definition of the ValidationIssue class

class sixgill.ErosionCorrosionRiskIndexLimits.ErosionCorrosionRiskIndexLimits(node, units_manager, is_erosion)
Bases: object

A class to describe the risk index limits

property negligible
Get the negligible value

property low
Get the low value

property moderate
Get the moderate value

property high
Get the high value

sixgill.model_setting module

class sixgill.model_setting.ModelSetting(model)
Bases: dict

A class to get and set the model and simulation settings

get(key, default=None)
Return the value for key if key is in the dictionary, else default.

items()
Return a set-like object providing a view on the dict’s items.

keys()
Return a set-like object providing a view on the dict’s keys.

values()
Return an object providing a view on the dict’s values.

pop(k[, d]) v, remove specified key and return the corresponding value.
If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem(*args, **kwargs)
Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

clear(*args, **kwargs)
Remove all items from the dict.

update([E, ]**F) None.  Update D from mapping/iterable E and F.
If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

setdefault(*args, **kwargs)
Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

fromkeys(*args, **kwargs)
Create a new dictionary with keys from iterable and values set to value.

property ambient_temperature

property atmospheric_pressure

property wind_speed

property soil_type

property soil_conductivity

property metocean_data_location

property erosional_velocity_constant

property corrosion_model

property corrosion_efficiency

property max_report_interval_length

property print_computation_segment_result

property max_computation_segment_length

property max_emulsion_inversion_watercut

property network_solver_method

property network_solver_tolerance

property advanced_well_solver_tolerance

property network_solver_max_iterations

property single_branch_keywords

property network_keywords_top

property network_keywords_bottom

property gis_elevation_interval

property gis_elevation_max_points

property use_global_flow_correlation

property use_global_heat_transfer

property use_global_corrosion_model

property pump_speed_factor

property global_flow_correlation
Return global flow correlation settings as a dictionary

property global_heat_transfer_option
Return global heat transfer options as a dictionary

property erosion_limits
The erosion risk index limits

property corrosion_limits
Deprecated. Use corrosion_model_dewaard.corrosion_limits instead. The corrosion risk index limits

property corrosion_model_dewaard
The dewaard corrosion model

property corrosion_model_tpa
The tpa corrosion model

get_corrosion_models(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) dict
Return corrosion model for wells or flowlines that match the given context. If no context specified, return all corrosion models for wells and flowlines.

Parameters:

  • context (str) – Optional. The context string to search in.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
A dictionary that contains corrosion model settings. If the corrosion model is set to “None”, the dictionary will be empty

Return type:
dict

Examples

    >>> model.sim_settings.get_corrosion_models(context="Well 23")
    >>> model.sim_settings.get_corrosion_models()

set_corrosion_models(corrosion_data)
Set corrosion model settings for wells and flowlines from a dictionary. The key of the dictionary is the name of flowline or well that corrosion model is associated with and the value is a sub dictionary that contains corrosion model settings. If name is “Default”, it is considered the global default corrosion model. the settings not belonging to the corrosion model are ignored. Ex: TPA corrosion model has no setting for PH value, if PH value is specified for a TPA model, it will be ignored The keys of sub dictionary are: Parameters.DeWaardCorrosionModel.EFFICIENCY Parameters.DeWaardCorrosionModel.CALCULATEPH Parameters.DeWaardCorrosionModel.PHVALUE

Parameters.TpaCorrosionModel.OXYGENORBACTERIA Parameters.TpaCorrosionModel.PREEXISTINGDAMAGE Parameters.TpaCorrosionModel.POWDERORDEBRIS Parameters.TpaCorrosionModel.PIPEDEPLOYMENTYEAR Parameters.TpaCorrosionModel.CORROSIONASSESSMENTYEAR

get_flow_correlations(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) dict
Return flow correlation settings for wells or flowlines that match the given context. If no context specified, return all flow correlation settings for wells and flowlines.

Parameters:

  • context (str) – Optional. The context string to search in.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
A dictionary that contains flow correlation settings.

Return type:
dict

Examples

    >>> model.sim_settings.get_flow_correlations(context="Well 23")
    >>> model.sim_settings.get_flow_correlations()

get_heat_transfer_options(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) dict
Return heat transfer options for wells or flowlines that match the given context. If no context specified, return all heat transfer options for wells and flowlines.

Parameters:

  • context (str) – Optional. The context string to search in.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
A dictionary that contains heat transfer options.

Return type:
dict

Examples

    >>> model.sim_settings.get_heat_transfer_options(context="Well 23")
    >>> model.sim_settings.get_heat_transfer_options()

set_flow_correlations(flow_correlations)
Set flow correlation settings for well and flowlines from a dictionary. The key of the dictionary is the name of flowline or well that flow correlation is associated with and the value is a sub dictionary that contains flow correlation settings. If name is “Default”, it is considered the global default flow correlation. The keys of sub dictionary are: VerticalMultiphaseSource: Vertifical multiphase flow correlation source VerticalMultiphaseCorrelation: Vertifical multiphase flow correlation name VerticalMultiphaseHoldupFactor: Vertifical multiphase flow correlation holdup factor VerticalMultiphaseFrictionFactor: Vertifical multiphase flow correlation fricition factor HorizontalMultiphaseSource: Horizontal multiphase flow correlation source HorizontalMultiphaseCorrelation: Horizontal multiphase flow correlation name HorizontalMultiphaseHoldupFactor: Horizontal multiphase flow correlation holdup factor HorizontalMultiphaseFrictionFactor: Horizontal multiphase flow correlation fricition factor SwapAngle : Vertical and horizontal swap angle SinglePhaseCorrelation : Single phase flow correlation name SinglePhaseFactor : Single phase flow correlation factor

set_heat_transfer_options(heat_transfer_options)
Set heat transfer option settings for well and flowlines from a dictionary. The key of the dictionary is the name of flowline or well that heat transfer option is associated with and the value is a sub dictionary that contains heat transfer options. If name is “Default”, it is considered as global heat transfer options. The keys of sub dictionary are: PipeBurialMethod: Pipe burial method InsideFilmCoeffMethod: Inside film coefficient method UValueMultiplier: U value multiplier EnableHydrateSubcoolCalc: boolean flag indicating whether to enable hydrate subcooling calculation

class sixgill.model_setting.GlobalFlowCorrelation(get_web_api, get_flow_corr, set_flow_corr)
Bases: object

A class to get and set the global flow correlations.

property vertical_source

property vertical_correlation

property vertical_holdup_factor

property vertical_friction_factor

property horizontal_source

property horizontal_correlation

property horizontal_holdup_factor

property horizontal_friction_factor

class sixgill.model_setting.GlobalHeatTransferOption(get_web_api, get_htc_opt, set_htc_opt)
Bases: object

A class to get and set the global heat transfer options

property pipe_burial_method

property inside_film_coeff_method

property u_value_multiplier

property hydrate_subcooling_calc

sixgill.network_optimizer_simulation module

The network_optimizer_simulation module maintains the high level network optimization methods for the Pipesim Python Toolkit.

class sixgill.network_optimizer_simulation.NetworkOptimizerSimulation(model, sim_type)
Bases: AbstractNetworkSimulation

Various methods supporting the network optimization

get_conditions(study: str | None = None) Dict
Returns the network optimizer boundary conditions.

Returns the network optimizer boundary conditions for the specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The boundary condition for the study specified.

Return type:
dict

Examples

    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_conditions()
    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_conditions("Study 1")
    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_conditions(study="Study 1")

set_conditions(boundaries: dict | None = None, study: str | None = None)
Sets the network optimizer boundary conditions.

Sets the network optimizer boundary conditions for the study specified. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created network optimizer simulation operation.

Return type:
Network optimizer simulation operation

Examples

    >>> model.tasks.networkoptimizersimulation.set_conditions(
                boundaries={"Well:VertComp":{
                                Parameters.Boundary.PRESSURE:NAN,
                                Parameters.Boundary.TEMPERATURE:150,
                                Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                                Parameters.Boundary.GASFLOWRATE:5}
                            })
    >>> model.tasks.networkoptimizersimulation.set_conditions(
                boundaries={"Well:VertComp":{
                                Parameters.Boundary.PRESSURE:3000,
                                Parameters.Boundary.TEMPERATURE:150,
                                Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                                Parameters.Boundary.GASFLOWRATE:NAN}
                            },
                study = "Study 1")

reset_conditions(study: str | None = None)
Resets the network optimizer boundary conditions from the model.

Resets the network optimizer boundary conditions for the study specified from the model.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
True or False. The reset succeeded (True) or not (False).

Return type:
Bool

Examples

    >>> model.tasks.networkoptimizersimulation.reset_conditions()
    >>> model.tasks.networkoptimizersimulation.reset_conditions(study = "Study 1")

get_initial_conditions(study: str | None = None) Dict
Returns the network optimizer initial conditions .

Returns the network optimizer initial conditions for the specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Initial conditions includes: Control type, injection gas, ESP freq, PCP speed, Choke size and Dual string.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The initial conditions for the study specified

Return type:
dict

Examples

    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_initial_conditions()
    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_initial_conditions("Study 1")
    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_initial_conditions(study="Study 1")

set_initial_conditions(initial_conditions: dict | None = None, study: str | None = None)
Sets the network optimizer initial conditions.

Sets the network optimizer initial conditions for the specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Initial conditions includes: Control type, injection gas, ESP freq, PCP speed and Choke size without dual string. Dual string is done separately

Parameters:

  • initial_conditions (dict) – Optional. The initial conditions to be set on the study(Note: dual strings has to be set separately).

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created network optimizer simulation operation.

Return type:
Network optimizer simulation operation

Examples

    >>> model.tasks.networkoptimizersimulation.set_initial_conditions(
                boundaries={"Well:VertComp":{Parameters.OptimizerInitialConditions.INJECTIONGAS:NAN,
                Parameters.OptimizerInitialConditions.ESPFREQUENCY:55}})

get_local_constraints(study: str | None = None) Dict
Returns the network optimizer task local_constraints.

Returns the network optimizer task local_constraints for the specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The the network optimizer task local_constraints.

Return type:
dict

Examples

    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_local_constraints()
    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_local_constraints("Study 1")
    >>> studynetsim1 = model.tasks.networkoptimizersimulation.get_local_constraints(study="Study 1")

set_local_constraints(constraints: dict | None = None, study: str | None = None)
Sets the network optimizer task local_constraints.

Sets the network optimizer task local_constraints for the specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:

  • constraints (dict) – Optional. The local constraints to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created network optimizer simulation operation.

Return type:
Network optimizer simulation operation

Examples

    >>> model.tasks.networkoptimizersimulation.set_local_constraints(
                constraints={"Well:VertComp":{
                    Parameters.LocalConstraint.MAXPOWER:150,
                    Parameters.LocalConstraint.MINLIQUIDRATE:150}
                })
    >>> model.tasks.networkoptimizersimulation.set_local_constraints(
            constraints={"Well:VertComp":{
                    Parameters.LocalConstraint.MAXPOWER:150,
                    Parameters.LocalConstraint.MINLIQUIDRATE:150}},
            study = "Study 1")

get_parameters(study: str | None = None) Dict
Returns the network optimizer task parameters.

Returns the network optimizer task parameters for the specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters includes: optimization control( optimization type, control variables, optimization targets and global constraints) and options (optimization, initialization, network solver, search and well curve parameters options)

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The the network optimizer task parameters.

Return type:
dict

Examples

    >>> parsmeters1 = model.tasks.networkoptimizersimulation.get_parameters()
    >>> parsmeters1 = model.tasks.networkoptimizersimulation.get_parameters("Study 1")
    >>> parsmeters1 = model.tasks.networkoptimizersimulation.get_parameters(study="Study 1")

set_parameters(parameters, study: str | None = None)
Sets the network optimizer task parameters.

Sets the network optimizer task parameters for specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:

  • parameters (dict) – The parameters to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created network optimizer simulation operation.

Return type:
Network optimizer simulation operation

Examples

    >>> model.tasks.networkoptimizersimulation.set_parameters(
                parameters=
                {
                Parameters.NetworkOptimizerSimulation.OptimizationControl.ControlVariables.CHOKEBEANSIZE:True,
                Parameters.NetworkOptimizerSimulation.OptimizationControl.OptimizationTargets.INJECTIONRATE:3
                })
    >>> model.tasks.networkoptimizersimulation.set_parameters(
                parameters=
                {
                Parameters.NetworkOptimizerSimulation.OptimizationControl.ControlVariables.CHOKEBEANSIZE:True,
                Parameters.NetworkOptimizerSimulation.OptimizationControl.OptimizationTargets.INJECTIONRATE:3
                }, study = "Study 1")

set_dual_strings(reset=False, pair_wells: list | None = None, unpair_wells: list | None = None, study: str | None = None)
Sets the network optimizer task dual string parameters Pairs/unpairs wells(when pairing, two wells will be combined to act as one). Note: To get dual string parameters, use get_initial_conditions.

If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:

  • pair_wells (list of strings) – Optional.The names of the wells to be paired(must be even number of well names).

  • unpair_wells (list of strings) – Optional.The names of the paired wells to be separated(must be even number of well names).

  • reset (boolean) – Optional: Separates all dual strings

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created network optimizer simulation operation.

Return type:
Network optimizer simulation operation

Examples

    >>> model.tasks.networkoptimizersimulation.set_dual_strings(
                pair_wells=["well_1","well_3"], study = "Study 1"
                )
    >>> model.tasks.networkoptimizersimulation.set_dual_strings(
                reset=True, study = "Study 1"
                )
    >>> model.tasks.networkoptimizersimulation.set_dual_strings(
                pair_wells=["well_1","well_3"],
                unpair_wells=["well_4","well_2"],
                study = "Study 1")

reset_dual_strings(study: str | None = None)

Resets to unpair dual strings for all the wells.

Resets to unpair dual strings for all the wells for a specific study If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:

  • ——-

  • Network optimizer simulation operation – The existing or created network optimizer simulation operation.

Examples

    >>> model.tasks.networkoptimizersimulation.reset_dual_strings(study = "Study 1")
    >>> model.tasks.networkoptimizersimulation.reset_dual_strings()

run(boundaries: dict | None = None, constraints: dict | None = None, initial_conditions: dict | None = None, parameters: dict | None = None, study: str | None = None)
Runs a network optimizer task

Runs a network optimizer task for the specified study. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • constraints (dict) – Optional. The blocal constraints to be set on the study.

  • initial_conditions (dict) – Optional. The initial conditions to be set on the study.

  • parameters (dict) – Optional.The parameters to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • Returns (dict) – Results of a network optimization run.

Examples

    >>> model.tasks.networkoptimizersimulation.run(
                parameters=
                {
                Parameters.NetworkOptimizerSimulation.OptimizationControl.ControlVariables.CHOKEBEANSIZE:True,
                Parameters.NetworkOptimizerSimulation.OptimizationControl.OptimizationTargets.INJECTIONRATE:3
                })
    >>> model.tasks.networkoptimizersimulation.run(
                parameters=
                {
                Parameters.NetworkOptimizerSimulation.OptimizationControl.ControlVariables.CHOKEBEANSIZE:True,
                Parameters.NetworkOptimizerSimulation.OptimizationControl.OptimizationTargets.INJECTIONRATE:3
                }, study = "Study 1")

start(boundaries: dict | None = None, constraints: dict | None = None, initial_conditions: dict | None = None, parameters: dict | None = None, study: str | None = None)
Starts running a simulation of the specified type, returning the simulation id immediately which can be used later to check the status and get the results. If the network optimizer simulation task does not exist in the study, a new one will be created.

Parameters:

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • constraints (dict) – Optional. The blocal constraints to be set on the study.

  • initial_conditions (dict) – Optional. The initial conditions to be set on the study.

  • parameters (dict) – Optional.The parameters to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> model.tasks.networkoptimizersimulation.start(
                parameters=
                {
                Parameters.NetworkOptimizerSimulation.OptimizationControl.ControlVariables.CHOKEBEANSIZE:True,
                Parameters.NetworkOptimizerSimulation.OptimizationControl.OptimizationTargets.INJECTIONRATE:3
                })
    >>> model.tasks.networkoptimizersimulation.start(
                parameters=
                {
                Parameters.NetworkOptimizerSimulation.OptimizationControl.ControlVariables.CHOKEBEANSIZE:True,
                Parameters.NetworkOptimizerSimulation.OptimizationControl.OptimizationTargets.INJECTIONRATE:3
                }, study = "Study 1")

generate_engine_files(folder_path: str | None = None, study: str | None = None, generate_keyword_files=False, generate_request_message: RequestMessageType | None = RequestMessageType.NONE) List[str]
Create network optimizer engine files. Create network optimizer engine files for the specified study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model file folder.

  • study (str) – Optional. The study name.

  • generate_keyword_files (True/False)

  • generate_request_message (RequestMessageType) – NONE: No Request message is generated DATA_ONLY: Only data section, no model_text,, no “data” keyword, the request message is same as today DATA_AND_MODELTEXT: {“model_text”: “xxxxxxxxxxxxxxxxxxxxxxxxxxx”, “data” :{….}} DATA_AND_MODELFILENAME: {“model_filename”: “filename.tnt”, “data” :{….}}

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.networkoptimizersimulation.generate_engine_files()
    >>> engine_files = model.tasks.networkoptimizersimulation.generate_engine_files(
                               study='Study 1')
    >>> engine_files = model.tasks.networkoptimizersimulation.generate_engine_files(
                               folder_path="D:/Temp", study='Study 1')

get_engine_files(study: str | None = None, generate_keyword_files=False, generate_request_message: RequestMessageType | None = RequestMessageType.NONE) List[str]
Get engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • study (str) – Optional. The study name.

  • generate_keyword_files (True/False)

  • generate_request_message (RequestMessageType) – NONE: No Request message is generated DATA_ONLY: Only data section, no model_text,, no “data” keyword, the request message is same as today DATA_AND_MODELTEXT: {“model_text”: “xxxxxxxxxxxxxxxxxxxxxxxxxxx”, “data” :{….}} DATA_AND_MODELFILENAME: {“model_filename”: “filename.tnt”, “data” :{….}}

Returns:
The list of engine files generated.

Return type:
Dictionary

Examples

    >>> files_content = model.tasks.networkoptimizersimulation.get_engine_files()
    >>> files_content = model.tasks.networkoptimizersimulation.get_engine_files(
                               study='Study 1', generate_keyword_files=True)
    >>> files_content = model.tasks.networkoptimizersimulation.get_engine_files(
                               generate_request_message="DATA_ONLY", study='Study 1')
    >>> \# Get the curve file content of Well_1:
    >>> print(files_content['Well_1'])
    >>> \# Get the tnt content(the key is the project name.tnt):
    >>> print(files_content['CSN_312_ESP Optimization.tnt'])
    >>> \# Get the request message(json)
    >>> print(files_content['RequestMessage'])
    >>> \# Get the request message 64(json)
    >>> print(files_content['RequestMessage64'])

apply_results(study: str | None = None)
Applies the optimization results to the model.

Parameters:
study (str) – Optional. The study name.

Examples

    >>> model.tasks.networkoptimizersimulation.apply_results()
    >>> model.tasks.networkoptimizersimulation.get_engine_files(study='Study 1')

sixgill.optimizer_simulation_result module

optimizer_simulation_result

class sixgill.optimizer_simulation_result.OptimizerResults(units_mgr, web_api_result, simulation, state)
Bases: SimulationResult

property well_results
well results of the simulation.

Returns:
A nested dictionary. The key of outer dictionary is the name of the well, and it’s value is a nested ordered dictionary of key values, key is variable name and value is the value.

Return type:
defaultdict(OrderedDict)

Examples

    >>> \# the value of CHP for Well_1
    >>> print(result.well_results['Well_1'][OptimizerVariables.CASING_HEAD_PRESSURE])
    >>> 2001.66209137371129

property flowline_results
flowline results of the simulation.

Returns:
A nested dictionary. The key of outer dictionary is the name of the flowline, and it’s value is a nested ordered dictionary of key values, key is variable name and value is the value.

Return type:
defaultdict(OrderedDict)

Examples

    >>> \# the value of oil rate for Fl_1
    >>> result.flowline_results['Fl_1'][OptimizerVariables.OIL_RATE]

property sink_results
sink results of the simulation.

Returns:
A nested dictionary. The key of outer dictionary is the name of the sink, and it’s value is a nested ordered dictionary of key values, key is variable name and value is the value.

Return type:
defaultdict(OrderedDict)

Examples

    >>> \# the value of oil rate for sink_1
    >>> result.sink_results['sink_1'][OptimizerVariables.OIL_RATE]

property total_results
total results of the simulation.

Returns:
A dictionary. The key is variable name and value is the value.

Return type:
defaultdict(OrderedDict)

Examples

    >>> \# the value of total oil rate
    >>> result.total_results[OptimizerVariables.TOTAL_OIL_RATE]

property units
gets the units :returns: A dictionary. The key is variable name and value is the unit. :rtype: defaultdict(OrderedDict)

Examples

    >>> \# the unit of CHP
    >>> result.units[OptimizerVariables.CASING_HEAD_PRESSURE]
    >>>psia

property variable_names
gets the variable names :returns: A dictionary. The key is variable name and value is the name. :rtype: defaultdict(OrderedDict)

Examples

    >>> \# the name of CHP
    >>> result.variable_names[OptimizerVariables.CASING_HEAD_PRESSURE]
    >>>CHP

sixgill.pipesim module

The Pipesim module maintains the high level classes and methods for the Pipesim Python Toolkit. This includes aspects such as the Model() class for creating a session with a Pipesim model as well as the static classes that enumerate the options that are available.

class sixgill.pipesim.Model(pipesim_session, model_file, unit_system)
Bases: object

The Model() class defines a session for working with a Pipesim model. It maintains the connection details of the session while the Manta module performs the actual interaction with the Pipesim model. Users should open a Pipesim model using the Model.open() which takes care of handling the low level Manta calls.

Parameters:

  • pipesim_session (manta.server.manager.PipesimManager) – The pipesim_session object from the Manta module.

  • model_file (str) – The full folder and filename of the Pipesim file.

  • unit_system (str) – The engineering units system being used for reading and writing the values, as defined by the Units static class.

Returns:
The Pipesim model session object.

Return type:
Model

Examples

    >>> mymodel=Model.open("C:/ProjectX/Models/Pipesim/ProjectXModel.pips")

property is_open
Whether the Pipesim model is open (True) or not (False)

property api
The low level Manta library API

property filename
The model file name and path

property session
The model session

static update_data_context(filename: str, model_type: str, save_as: str, model_update_url: str | None = None, data_partition: str | None = None, token: str | None = None, appkey: str | None = None, report_messages_of_type: ReportMessageTypes | None = ReportMessageTypes.ALL, production_study_name: str | None = None, max_retries: str | None = None, base_retry_time: str | None = None, max_time: str | None = None, jitter_factor: str | None = None) production_data_update_status
Updates the model with the latest production data

Note

base_sleep_time = min(max_time, base_retry_time * retry_number) sleep_time = base_sleep_time +/- random(jitter_factor * base_sleep_time)

Parameters:

  • filename (str) – Full path to the pips file to be updated

  • model_type (str) – Type of the model: [pipesim-well, pipesim network]

  • save_as (str) – Full path to where to save the updated model

  • model_update_url (str) – a file or url address of the service providing the operational data

  • data_partition (str) – data partition

  • token (str) – access token

  • appkey (Optional[str]) – appKey

  • report_messages_of_type – indicate what type of messages to report(default is all types)

  • production_study_name (Optional[str]) – name of the production study

  • max_retries (Optional[str]) – maximum number of retries when HTTP request is failed

  • base_retry_time (Optional[str]) – base time used to calculate sleep time for each retry

  • max_time (Optional[str]) – maximum base sleep time

  • jitter_factor (Optional[str]) – jitter factor

Returns:
A class containing lists of messages and properties.

Return type:
[production_data_update_status]

static open(filename: str, units: str | None = 'PIPESIM_FIELD', in_memory_results: bool | None = True)
Open a Pipesim model

Opens the Pipesim model.

Parameters:

  • filename (str) – The Pipesim model path and file name.

  • units (str) – The engineering units that will be used by POET. This is one of the Units enumerations, with the default being FIELD units.

  • in_memory_results (bool) – If True simulation results will be deleted after run and will not be saved, otherwise they will be kept and saved.

Returns:
The model object that has been open.

Return type:
Model

Examples

    >>> model = Model.open("C:/POET Demo/CSN_301_small network.pips")
    >>> model = Model.open("C:/MyProject/FlowNetwork.pips", Units.METRIC)

static new(filename: str, units: str | None = 'PIPESIM_FIELD', overwrite: bool | None = False, in_memory_results: bool | None = True)
Open a new Pipesim model

Opens a new Pipesim model.

Parameters:

  • filename (str) – The new Pipesim model path and file name.

  • units (str) – The engineering units that will be used by POET. This is one of the Units enumerations, with the default being FIELD units.

  • overwrite (bool) – If the file already exists, this flag will define if it should be overwrited or not.

  • in_memory_results (bool) – If True simulation results will be deleted after run and will not be saved, otherwise they will be kept and saved.

Returns:
The model object that has been open.

Return type:
Model

Examples

    >>> model = Model.new("C:/POET Demo/new_workspace.pips")
    >>> model = Model.new("C:/MyProject/NewWorkspace.pips", Units.METRIC)

open_ui(filename: str | None = '')
Open a Pipesim file with Pipesim UI

Opens the Pipesim model file in the Pipesim UI. It supports opening a model directly, and opening the model that is open in the Toolkit. A model that is open in the Pipesim Python Toolkit will be saved and closed before opening in the UI. This is because changes cannot be made to a model simultaneously in the UI and through the Python Toolkit.

Parameters:
filename (str) – The Pipesim file path and name. This is not required when opening a model that is already open in the Python Toolkit.

Examples

    >>> \# Without first opening the model in Python
    >>> Model.open_ui("C:/POET Demo/CSN_301_small network.pips")
    >>> \# While the model is open in the Python Toolkit
    >>> model = Model.open("C:/POET Demo/CSN_301_small network.pips")
    >>> model.open_ui()

save(filename='', view_type='')
Save the Pipesim model

Saves the Pipesim model. If the filename is not specified then it peforms a save; if the filename is specified then it performs a Save As. the suffix “pips” may be omitted.

Parameters:

  • filename (str) – Optional. The full path and name of the file to save.

  • view_type (str) – Optional. The view type(Pipesim UI will open in Network view or well view). can be ViewTypes.WELL or ViewTypes.NETWORK

Examples

    >>> model.save()
    >>> model.save("C:/Temp/MyModel2.pips")
    >>> model.save("C:/Temp/MyModel2.pips",ViewTypes.WELL)
    >>> model.save("C:/Temp/MyModel2.pips",ViewTypes.NETWORK)

close()
Close the Pipesim model

Closes the Pipesim model.

Examples

    >>> model.close()

validate() List[ValidationIssue]
Validates the model or a specified well, task.

Returns:
a list of ValidationIssue instances.

Return type:
list

Examples

    >>> issues = model.validate()
    >>> for issue in issues:
            print(issue.message)
            print(issue.path)
            print(issue.property_name)

property context: AbstractModelContext
The root context of this model.

Returns:
Returns the model context object that matches the entirety of the model.

Return type:
AbstractModelContext

find(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) List[str]
Find the model components in the context.

Find the specified components in the model.

Parameters:

  • context (str) – Optional. The context (identifier) of the item to look for.

  • component (str) – Optional. The model component to look for.

  • model_context (AbstractModelContext) – Optional. The model context object to look for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
Returns a list of the component contexts (identifiers) of the model components that match the specified criteria.

Return type:
list

Examples

    >>> model.find(component=ModelComponents.CHOKE, Name="CK-1")
    >>> model.find(Well="Well03")

find_components(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) List[AbstractModelContext]
Find the full context of the specified component

Returns the context objects of the items found. This is functionally similar to the find() but returns the list of AbstractModelContext objects rather than the context strings.

Parameters:

  • context (str) – Optional. The context string to search in.

  • component (str) – Optional. The model component to look for.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
Returns a list of the contexts for each of the model components that match the specified criteria.

Return type:
list[AbstractModelContext]

Examples

    >>> model.find_components(component=ModelComponents.CHOKE, context="CK-1")
    >>> model.find_components(component=ModelComponents.COMPLETION, Well="Well03")

find_component_objects(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) List[Component]
Find the model components in the context.

Find the specified components in the model.

Parameters:

  • context (str) – Optional. The context (identifier) of the item to look for.

  • component (str) – Optional. The model component to look for.

  • model_context (AbstractModelContext) – Optional. The model context object to look for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
Returns a list of the Component instances that match the specified criteria.

Return type:
list

Examples

    >>> model.find_component_objects(component=ModelComponents.CHOKE, Name="CK-1")
    >>> model.find_component_objects(Well="Well03")

filter(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Filter the model, creating a submodel of the items of interest

Returns a Model class containing only the items specified in the context. This allows the model to be filtered by specific aspects and then accessed using the usual methods, such as get and set, on the filtered model.

Parameters:

  • context (str) – Optional. The context (identifier) of the item to look for.

  • component (str) – Optional. The model component to look for.

  • model_context (AbstractModelContext) – Optional. The model context object to look for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
Returns a list of the component contexts (identifiers) of the model components that match the specified criteria.

Return type:
list

Examples

    >>> \# Filter for all the flowlines
    >>> filtered_model = model.filter(Flowline=ALL)
    >>> \# Filter for all the items in the specified well
    >>> filtered_model = model.filter(Well="Well03")

describe(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, parameter: str | None = None, **context_keywords: str)
Describe a parameter given a context.

Returns an object with properties for the parameter description such as the units of measurement and unit conversions. The available properties are:

  • units: The units of measurement, e.g. inches

  • units_symbol: The symbol(s) for the unit of measurement, e.g. ins

  • si_offset: The unit conversion offset (bias) from SI

  • si_factor: The unit conversion factor (gain) from SI

Parameters:

  • context (str) – Optional. The context (identifier) of the item to look for.

  • parameter (str) – Required. The parameter that needs to be described.

  • component (str) – Optional. The model component to look for.

  • model_context (AbstractModelContext) – Optional. The model context object to look for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
The object with the descriptions.

Return type:
Description

Examples

    >>> eu = model.describe(context="Well",
                           parameter=Parameters.Well.TESTRACKTEMPERATURE).units

get_value(context: str | None = None, parameter: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) Any
Return a single parameter value from a context in the model.

The function queries the model for the specified item and parameter returning the parameter value. An error is raised if the context matches more than one item.

Parameters:

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • parameter (str) – Optional. The parameter on the item to return the value of.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
The value of the specified parameter.

Return type:
var

Examples

    >>> val = model.get_value(context="Choke23",
                              parameter=Parameters.Choke.BEANSIZE)
    >>> val = model.get_value(Well="Well 23", Choke="CK1",
                              parameter=Parameters.Choke.BEANSIZE)

set_node_value(node, parameter: str, value: Any = None)

set_value(context: str | None = None, parameter: str | None = None, value: Any = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set a parameter value on a single context item in the model.

The function queries the model for the specified item and then sets the parameter to the specified value. An error is raised if the context matches more than one item.

Parameters:

  • context (str) – Optional. The context string to search in. Context can also be an instanse of “Component” class

  • parameter (str) – Required. The parameter on the item to be set.

  • value (var) – Required. The value to set the parameter to.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_value(context="Choke23",
                        parameter=Parameters.Choke.BEANSIZE, value=4.5)
    >>> model.set_value(Well="Well 23", Choke="CK1",
                        parameter=Parameters.Choke.BEANSIZE, value=5)

set_all_value(context: str | None = None, parameter: str | None = None, value: Any = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set a parameter value for all items in the context.

The function queries the model for the specified items and then sets the parameter to the specified value. It sets the parameter for all items within the context.

Parameters:

  • context (str) – Optional. The context string to search in.

  • parameter (str) – Required. The parameter on the item(s) to set.

  • value (var) – Required. The value to set the parameter to.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_all_value(Source=ALL,
                            parameter=Parameters.Source.ASSOCIATEDBLACKOILFLUID,
                            value = 'BK111')

change_equipment_string(string: str, context: str | None = None, depth_md: float | None = None, component: str | None = None, model_context: AbstractModelContext | None = None)
Set a string value of a single context item in the model.

The function queries the model for the specified item and then sets the string to the specified value. An error is raised if the context matches more than one item.

Parameters:

  • string (str) – Required. The tubing string type of the item to be set.

  • context (str) – Optional. The context string to search in. Context can also be an instanse of “Component” class

  • depth_md (float) – Optional. The measured depth of the item to be set.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The context to search in.

Examples

    >>> model.change_equipment_string(context = "Chk0",
                                    string = Constants.TubingSectionType.LONGTUBING, depth_md = 1000)

get_values(context: str | None = None, parameters: List[str] = [], component: str | None = None, model_context: AbstractModelContext | None = None, show_units: bool = False, **context_keywords: str) Dict
Returns a dictionary with the parameters and values from a context.

The function queries the model for the specified items and parameters returning a dictionary. The key of the dictionary is context string, and the value of the dictionary is a sub dictionary, which contains parameter as the key and its value

Parameters:

  • context (str) – Optional. The context string to search in.

  • parameters (list) – Optional. The parameter on the item to return the value of. If empty or not provided then it returns all the parameters.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
The dictionary containing the parameter values.

Return type:
Dict

Examples

    >>> dict = model.get_values(context="Choke23",
                                parameters=[Parameters.Choke.BEANSIZE,
                                Parameters.Choke.CRITICALPRESSURERATIO])
    >>> dict = model.get_values(Well="Well 23", Choke="CK1",
                                parameters=[Parameters.Choke.BEANSIZE,
                                Parameters.Choke.CRITICALPRESSURERATIO])

set_values(dict: Dict, context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set parameters values as specified by the Python dictionary.

The key of the dictionary is context string, and the value of the dictionary is a sub dictionary, which specify the parameter as key and its value. The dictionary is therefore the same format as the get_values() function.

Parameters:
dict (Dict) – Required. The Python dictionary to set the item parameters.

Examples

    >>> model.set_values(dict=values)

get_wellstream(port: str | None = 'Top', context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) str
Return the name of the wellstream equipment for specified port.

Parameters:

  • port (str) – Optional for conventional wells, but required for advanced wells. The port name. It must be one of Constants.Wellstream.

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
The name of the wellstream equipment for specified port.

Return type:
str

Examples

    >>> val = model.get_wellstream(Well="Well", port = Constants.Wellstream.TOP)

set_wellstream(surface_component_name: str, port: str | None = 'Top', context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set the wellstream for the specified port.

Parameters:

  • surface_component_name (str) – Required. The name of the surface component to be set as wellstream.

  • port (str) – Optional for conventional wells, but required for advanced wells. The port name. It must be one of Constants.Wellstream.

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • model_context (AbstractModelContext) – Optional. The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_wellstream(Well="Well", port=Constants.Wellstream.TOP, surface_component_name="Ck ")

reset_wellstreams(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Reset all wellstream to wellhead.

Parameters:

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.reset_wellstreams("Well")

get_wellstream_property(parameter: str, port: str | None = 'Top', context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set the wellstream property for the specified port.

Parameters:

  • parameter (str) – Required. The parameter on the wellstream to return the value of.

  • port (str) – Optional for conventional wells, but required for advanced wells. The port name. It must be one of Constants.Wellstream.

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Return type:
The value of the specified parameter

Examples

    >>> model.get_wellstream_property(Well="well_1",port=Constants.Wellstream.TOP, parameter=Parameters.Wellstream.ISPRODUCTIONFLOWDIRECTION)

get_wellstream_properties(port: str | None = 'Top', parameters: List[str] | None = [], context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set the wellstream property for the specified port.

Parameters:

  • port (str) – Optional for conventional wells, but required for advanced wells. The port name. It must be one of Constants.Wellstream.

  • parameters (List[str]) – Optional. The parameters on the wellstream to return the value of.

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:

  • dict

  • The parameters and respective values.

Examples

    >>> model.get_wellstream_properties(Well="well_1",port=Constants.Wellstream.TOP, parameters = {
                                        Parameters.Wellstream.GASFLOWRATE,
                                        Parameters.Wellstream.ISPRODUCTIONFLOWDIRECTION,
                                        Parameters.Wellstream.CHECKVALVESETTINGS,
                                        Parameters.Wellstream.USEPQCURVE
                                        })

set_wellstream_property(parameter: str, port: str | None = 'Top', context: str | None = None, value: Any = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set the wellstream property for the specified port.

Parameters:

  • parameter (str) – Required. The parameter on the wellstream to be set.

  • port (str) – Optional for conventional wells, but required for advanced wells. The port name. It must be one of Constants.Wellstream.

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • value (var) – Required. The value to set the parameter to.

  • component (str) – Optional. The type of the item.

  • model_context (AbstractModelContext) – Optional. The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_wellstream_property(Well="well_1",
                                      port=Constants.Wellstream.TOP,
                                      parameter = Parameters.Wellstream.GASFLOWRATE,
                                      value=123)

set_wellstream_properties(parameters: Dict, port: str | None = 'Top', context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set the wellstream property for the specified port.

Parameters:

  • parameters (Dict) – Required. The Python dictionary to set the wellstream parameters.

  • port (str) – Optional for conventional wells, but required for advanced wells. The port name. It must be one of Constants.Wellstream.

  • context (str) – Optional. The context (identifier) to search for. Context can also be an instanse of “Component” class.

  • model_context (AbstractModelContext) – Optional. The model context object to search for.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_wellstream_properties(Well="well_1", port=Constants.Wellstream.TOP, parameters = {
                                        Parameters.Wellstream.GASFLOWRATE: 234,
                                        Parameters.Wellstream.ISPRODUCTIONFLOWDIRECTION: False,
                                        Parameters.Wellstream.CHECKVALVESETTINGS: Constants.CheckValveSetting.BLOCKBOTH,
                                        Parameters.Wellstream.USEPQCURVE: True,
                                        })

get_metocean_data() DataFrame
Get the Metocean user defined data.

Returns:
The met ocean data frame includes following columns: Horizontal distance, Temperature and Current velocity

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_metocean_data()

set_metocean_data(data)
Set the Metocean user defined data.

Parameters:
data (DataFrame) – Required. The data frame to set to the user defined Metocean.

Examples

    >>> model.set_metocean_data(data=df)

delete_metocean_data()
delete the Metocean user defined data.

Examples

    >>> model.delete_metocean_data()

get_trajectory(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame
Get the specified well trajectory.

Get the well trajectory as identified by the specified context. If more than one item is found by the context then it will fail.

Parameters:

  • context (str) – Optional. The context string to search for well.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
The trajectory data frame includes following columns: MeasuredDepth Inclination, Azimuth and MaxDogLegSeverity

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_trajectory(context="Well-1")
    >>> dfw = model.get_trajectory(Well="Well 23")

set_trajectory(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set well trajectory to the values specified in the DataFrame.

Sets well trajectory to the values specified in the DataFrame. It will fail if more than one item is found by the context.

Parameters:

  • value (DataFrame) – Required. The data frame to set to the well trajectory.

  • context (str) – Optional. The context string to look for the well.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_trajectory(context="Well-1", value = df)
    >>> model.set_trajectory(Well="Well 23", value = df)

get_completion_ipr_points(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) IprPoints
Get pwf and rate values for the ipr model. It will fail if more than one item is found by the context.

Parameters:

  • context (str) – Optional. The context string to search for completion.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
ipr_points: a pandas.DataFrame containing the pressure and rate values messages: a list of stings of any messages produced by ipr calculation

Return type:
A class with two properties

Examples

    >>> results = model. get_completion_ipr_points(context="Well-1:VertComp")
    >>> print( results.ipr_points)
    >>> for msg in results.messages:
            print(msg)

get_completion_test_points(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords)
Return well completion test points found in the context.

Return well completion test points found in the context. It will fail if more than one item is found by the context.

Parameters:

  • context (str) – Optional. The context string of completion

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value). e.g. Well =’well_name’, Completion = ‘completion_name’

Returns:
The completion test points data frame includes following columns: LiquidFlowrate, GasFlowrate, StaticReservoirPressure, BottomHoleFlowingPressure

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_completion_test_points(context="Well-1:VertComp")

set_completion_test_points(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the completion test points of well in the context.

Set data frame to the completion test points of well in the context. It will fail if more than one item is found by the context.

Parameters:

  • value (DataFrame) – Required. The data frame to set to the well completion test points

  • context (str) – Optional. The context string to look for the completion

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_completion_test_points(context="Well-1:VertComp", value = df)

get_pq_curve(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords) DataFrame
Return PQ curve in the context.

Returns PQ curve in the context. It will fail if more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to look for source.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
The PQ curve data frame includes the following columns: GasFlowRate, LiquidFlowRate, MassFlowRate, Pressure

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_pq_curve(context="Source_1")
    >>> dfw = model.get_pq_curve(Source="Source 23")

set_pq_curve(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the PQ curve of source in the context.

Set data frame to the PQ curve of source in the context. It will fail if more than one item is found in the context or the source does not use PQ curve.

Parameters:

  • value (DataFrame) – Required. The data frame to set to the source PQ curve

  • context (str) – Optional. The context string to look for the source.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_pq_curve(context="Source-1", value = df)
    >>> model.set_pq_curve(Source="Source 23" value = df)

get_coating(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame
Return pipe coating table in the context.

Returns flowline pipe coating table in the context. It will fail if more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to search for flowline.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_coating(context="FL-3")
    >>> dfw = model.get_coating(Flowline="FL-3")

delete_coating(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Delete pipe coating table in the context. It will fail if more than one item is found in the context. ‘U value input’ will be reset to ‘Specify’ if ‘Calculate’ selected

Parameters:

  • context (str) – Optional. The context string to search for blackoil.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.delete_coating(context="FL-3")
    >>> model.delete_coating(Flowline="FL-3")

set_coating(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the pipe coating table in the context.

Set data frame to the pipe coating table in the context. It will fail if more than one item is found in the context.

Parameters:

  • value (DataFrame) – Required. The data frame to set to flowline model

  • context (str) – Optional. The context string to search for flowline.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_coating(context="FL-3", value = df)
    >>> model.set_coating(Flowline="FL-3", value = df)

raise_exception_if_completion_ipr_model_is_not_Darcy(model_context: AbstractModelContext | None = None)

get_relative_permeability_data(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame
Return relative permeability data in the context.

Returns Darcy IPR model relative permeability data in the context. It will fail if more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to search for Darcy IPR model.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_relative_permeability_data(context="Well:Comp-1:IPRDARCY")
    >>> dfw = model.get_relative_permeability_data(Well="Well", Completion="Comp-1")

delete_relative_permeability_data(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Delete relative permeability data in the context. It will fail if more than one item is found in the context. The UseRelativePermeability flag on the Darcy IPR model will be set to False.

Parameters:

  • context (str) – Optional. The context string to search for Darcy IPR model.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.delete_relative_permeability_data(context="Well:Comp-1:IPRDARCY")
    >>> model.delete_relative_permeability_data(Well="Well", Completion="Comp-1")

set_relative_permeability_data(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the relative permeability data in the context. It will fail if more than one item is found in the context. The UseRelativePermeability flag on the Darcy IPR model will be set to True.

Parameters:

  • value (DataFrame) – Required. The data frame to set to Darcy IPR model

  • context (str) – Optional. The context string to search for Darcy IPR model.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_relative_permeability_data(context="Well:Comp-1:IPRDARCY", value = df)
    >>> model.set_relative_permeability_data(Well="Well", Completion="Comp-1", value = df)

get_deadoil_viscosity_table(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame
Return blackoil user viscosity table in the context.

Returns blackoil user viscosity table in the context. It will fail if more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to search for blackoil.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_deadoil_viscosity_table(context="Heavy_Oil")
    >>> dfw = model.get_deadoil_viscosity_table(BlackOilFluid="Heavy_Oil")

delete_deadoil_viscosity_table(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Delete blackoil user viscosity table in the context. It will fail if more than one item is found in the context. Dead oil correlation will be reset to Beggs & Robinson if user table is selected

Parameters:

  • context (str) – Optional. The context string to search for blackoil.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.deletet_deadoil_viscosity_table(context="Heavy_Oil")
    >>> model.delete_deadoil_viscosity_table(BlackOilFluid="Heavy_Oil")

set_deadoil_viscosity_table(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the blackoil user viscosity table in the context.

Set data frame to the blackoil user viscosity table in the context. It will fail if more than one item is found in the context.

Parameters:

  • value (DataFrame) – Required. The data frame to set to black oil model

  • context (str) – Optional. The context string to search for blackoil.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_deadoil_viscosity_table(context="Heavy_Oil", value = df)
    >>> model.set_deadoil_viscosity_table(BlackOilFluid="Heavy_Oil", value = df)

get_mix_viscosity_table(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame
Return user mixture viscosity table in the context.

Returns user mixture viscosity table in the context. It will fail if more than one item is found in the context. Supports BlackOil, Compositional, and MFL fluids.

The fluid name can be passed directly without specifying the fluid type. The fluid type will be automatically resolved from the model.

Parameters:

  • context (str) – Optional. The fluid name or context string to search for the fluid. When just a fluid name is provided, the fluid type is automatically detected from the model.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_mix_viscosity_table("MyFluid")
    >>> df = model.get_mix_viscosity_table(context="Heavy_Oil")
    >>> dfw = model.get_mix_viscosity_table(BlackOilFluid="Heavy_Oil")
    >>> dfc = model.get_mix_viscosity_table(CompositionalFluid="MyCompFluid")
    >>> dfm = model.get_mix_viscosity_table(MFLFluid="MyMFLFluid")

delete_mix_viscosity_table(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Delete user mixture viscosity table in the context. It will fail if more than one item is found in the context. Supports BlackOil, Compositional, and MFL fluids. Emulsion viscosity method will be reset to ‘Set to viscosity of the continuous phase’ if user table is selected

The fluid name can be passed directly without specifying the fluid type. The fluid type will be automatically resolved from the model.

Parameters:

  • context (str) – Optional. The fluid name or context string to search for the fluid. When just a fluid name is provided, the fluid type is automatically detected from the model.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.delete_mix_viscosity_table("MyFluid")
    >>> model.delete_mix_viscosity_table(context="Heavy_Oil")
    >>> model.delete_mix_viscosity_table(BlackOilFluid="Heavy_Oil")
    >>> model.delete_mix_viscosity_table(CompositionalFluid="MyCompFluid")
    >>> model.delete_mix_viscosity_table(MFLFluid="MyMFLFluid")

set_mix_viscosity_table(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the user mixture viscosity table in the context.

Set data frame to the user mixture viscosity table in the context. It will fail if more than one item is found in the context. Supports BlackOil, Compositional, and MFL fluids.

The fluid name can be passed directly without specifying the fluid type. The fluid type will be automatically resolved from the model.

Parameters:

  • value (DataFrame) – Required. The data frame to set to the fluid model

  • context (str) – Optional. The fluid name or context string to search for the fluid. When just a fluid name is provided, the fluid type is automatically detected from the model.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_mix_viscosity_table("MyFluid", value = df)
    >>> model.set_mix_viscosity_table(context="Heavy_Oil", value = df)
    >>> model.set_mix_viscosity_table(BlackOilFluid="Heavy_Oil", value = df)
    >>> model.set_mix_viscosity_table(CompositionalFluid="MyCompFluid", value = df)
    >>> model.set_mix_viscosity_table(MFLFluid="MyMFLFluid", value = df)

get_geometry(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame
Return flowline geometry profile in the context.

Returns flowline geometry profile in the context. It will fail if more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to search for flowline. Context can also be an instanse of “Component” class.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
If flowline is in detialed mode, return flowline detailed profile data.

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_geometry(context="fl-1")
    >>> dfw = model.get_geometry(Flowline="fl-2")

set_geometry(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords)
Set data frame to the flowline geometry profile in the context.

Set data frame to the flowline geometry profile in the context. It will fail if more than one item is found in the context.

Parameters:

  • value (DataFrame) – Required. The data frame to set to the flowline geometry profile

  • context (str) – Optional. The context string to search for flowline.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_geometry(context="fl-1", value = df)
    >>> model.set_geometry(Flowline="fl-2", value = df)

get_geothermal_profile(context: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame
Return the flowline or well geothermal profile in the context.

Returnz the flowline or well geothermal profile in the context. It will fail if more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to search for flowline or well.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
Return geothermal data frame. If flowline is simple, or geothermal data use global settings, empty data frame is returned.

Return type:
pandas.DataFrame

Examples

    >>> df = model.get_geothermal_profile(context="fl-1")
    >>> dfw = model.get_geothermal_profile(Well="well-1")

set_geothermal_profile(context: str | None = None, value: DataFrame = None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Set the DataFrame values to the flowline geothermal profile in the context.

Sets the DataFrame values to the flowline geothermal profile in the context. It will fail if more than one item is found in the context.

Parameters:

  • value (DataFrame) – Required. The data frame to set to the flowline geothermal profile

  • context (str) – Optional. The context string to search for flowline or well.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.set_geothermal_profile(context="fl-1", value = df)
    >>> model.set_geothermal_profile(Flowline="fl-2", value = df)

read_catalog(context=None, model_context: AbstractModelContext | None = None, **context_keywords: str)
Update the equipment data from the catalog.

Update equipment data for an FCV, ESP, PCP, Pump or Compressor from the catalog. The equipment must have Manufacturer and Model set so that the entry in the catalog can be identified. It will fail if more than one item is found in the context.

Parameters:

  • context (str) – Optional. The context string to look for pump

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.read_catalog(context="Pump-1")

batch_update()
Apply batch updates to the model

Ordinarily changes to the model through set…() are immediately applied. The batch update allows a series of updates to be cached and then updated as group. This is useful where many changes need to be applied, which can be bundled together and applied all at once. This has a performance improvement over individual updates.

Return type:
None

Examples

    >>> with model.batch_update():
            model.set_value("Choke", Parameters.Choke.BEANSIZE, 56)
            model.set_geometry("FL-1", geometry_df)

property about
Return information about the current Pipesim version.

Returns the versions of Pipesim, web API and Pipesim Python Toolkit that are being used. Called as a function about() it returns a dictionary of the version information. It will also return the individual properties of the ModelAbout() class.

Parameters:
None

Returns:
Information about the Pipesim version.

Return type:
dict

Examples

    >>> version_dict = model.about()
    >>> webapi_version = model.about.webapi_version

get_elevation(lat: float, long: float) float
Get the elevation of a location

Returns the elevation of the latitude / longitude location.

Parameters:

  • lat (float) – Required. The latitude of the location in degree.

  • long (float) – Required. The longitude of the location in degree.

Returns:
The elevation of the location with specified lat and long in meter Raise ValueError exception if the location is invalid.

Return type:
float

Examples

    >>> elev = model.get_elevation(0.2, 0.5)

get_elevations(locations)
Get the elevation of a array of location points with latitude longitude

Returns an array of location points with latitude, longitude and elevation.

Parameters:
location (array[dic{Longitude:value,Latitude:value}, ...]) – Required. Location array with longitude and latitude points.

Returns:
array[dic{Longitude – The location array with latitude, longitude and elevetion values for each point. Raise ValueError exception if the location is invalid.

Return type:
value,Latitude:value, Elevetion:value}, …]

Examples

    >>> location = model.get_elevations([{Parameters.Location.LATITUDE:0.2,Parameters.Location.LONGITUDE:0.5}])

export_parameters(filename: str, with_templates: bool = False) str
Export the model parameters to a CSV file.

Exports the model parameters to a comma separated values (CSV) file. Note that this only includes the scalar model parameters and simulation settings; tabulated data such as trajectories and profiles are not included.

Parameters:

  • filename (str) – Required. The name of the CSV filename to save the CSV.

  • with_templates (bool) – Optional. Whether to include templates (True) or not (False). The default is False.

Returns:
The full absolute path to the CSV file saved.

Return type:
str

Examples

    >>> file = model.export_parameters(filename="C:/poet/model_details.pips")

property sim_settings
The simulation settings

property fluids
The fluid settings, primarily setting up compositional fluids

property tasks
The simulation tasks

export_well(context: str | None = None, folder: str | None = None, model_context: AbstractModelContext | None = None, well_names: List[str] | None = None, **context_keywords: str) List[str]
Export the specified well(s) into Pipesim files

Exports the specified well(s) in to individual Pipesim files in the specified folder. The filename will match the well name. If the well name is not specified then all the wells in the model are exported. If folder is not specified, then the wells are exported to the current working folder

Parameters:

  • context (str) – Optional. The context string to search for well.

  • folder (str) – Optional. The folder location to save the files into.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

  • well_names (List[str]) – Optional. A list of well names to be exported. If this parameter is specified, the context, model_context and context_keywords are ignored

Returns:
The list of filenames with full path of each well exported.

Return type:
list

Examples

    >>> files = model.export_well()
    >>> files = model.export_well(context="Well 03")
    >>> files = model.export_well(Well="Well 1")

import_well(filename, name, fluid_override=False, overwrite_existing=False)
Import a well into the model.

Imports the well from the file into the model with the specified options.

Parameters:

  • filename (str) – Required. The filename to import the well from

  • name (str) – Required. The name that will be given to the well in the model.

  • fluid_override (bool) – Specifies whether the fluid from the well import file overwrites the existing fluid in the model (True) or not (False).

  • overwrite_existing (bool) – Specifies whether the well will overwrite (replace) an existing well in the model with the same name.

Examples

    >>> model.import_well(filename="C:/temp/mywells/Well01.pips", name="Well02",
                          fluid_override=False, over_write_existing=False)

import_wells(folder, fluid_override=False, cache_update=True)
import all wells from a specified folder

Parameters:

  • folder (str) – The folder location where the .pips files are located. All the pips files in the folder will be imported The file name must match to a well name inside the model.

  • fluid_override (bool) – Specifies whether the fluid from the well import file overwrites the existing fluid in the model (True) or not (False).

  • cache_update (bool) – If False, the cache is not updated(better performance). User should exit the session afterwards as the cache is not reflecting the newly imported wells

Returns:
Returns a list of well names of the imported wells

Return type:
List[str]

Examples

    >>> folder = "C:/ImportFolder"
    >>> imported_well_names = model.import_wells(folder)
    >>> imported_well_names = model.import_wells(folder, True)
    >>> imported_well_names = model.import_wells(folder, True, True)

delete(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, parameter: str | None = None, **context_keywords: str)
Delete components from the model.

Deletes the specified components from the model

Parameters:

  • context (str) – Optional. The context string to search in.

  • component (str) – Optional. The model component to look for.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.delete(context="Sep01")

add(component, name, context: str | None = None, parameters: dict | None = {})
Adds components to the model.

Create a new items in the model of the specified component type.

Parameters:

  • component (str) – Required. The type of model component to add to the model. This is one of the ModelComponents enumerations.

  • name (str) – Required. The name of the item added to the model.

  • context (str) – Optional. The string representation of the context to add the component. For example, when adding downhole object to a well, it is the context string of the well.

  • parameters (dict) – Optional. The parameters to set when creating the item. If not specified then the item is created with the default parameters.

Examples

    >>> model.add(component=ModelComponents.BLACKOILFLUID, name="BO_01",
                  parameters={Parameters.BlackOilFluid.GOR:200})
    >>> model.add(component=ModelComponents.CHOKE, name="TSV-01",
                 {Parameters.Choke.BEANSIZE:5})
    >>> model.add(component=ModelComponents.CHOKE, name="ck", context="Well 1",
                  parameters={Parameters.DowholeLocation.TOPMEASUREDDEPTH:500,
                  Parameters.Choke.BEANSIZE=4.5})

copy(context: str, name: str, use_template: bool | None = False)
Duplicate an item in the model.

Copy a model component. Note that it only works for the following components in the current release:

  • Well

Parameters:

  • context (str) – The existing model component to be duplicated.

  • name (str) – The name of the duplicate. If this already exists then it will append a suffix to the name.

  • use_template (Boolean) – Optional. Duplicate the item from the the catalog, if it exists.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.copy(Well='Simple vertical', name='Sixgill', use_template=True)
    >>> model.copy(Name='Well01', name='Well01', use_template=False)

connect(source, destination, source_port=None)
Connect the source item to the destination item

Creates a connection from the source item to the destination item. It will fail if the source context or destination context match more than one item.

Parameters:

  • source (dict or context string) – The find context for the source item.

  • destination (dict or context string) – The find context for the destination item.

  • source_port (str) – If the source is a TwoPhaseSeparator or ThreePhaseSeparator, this is required to indicate which outlet should be used to make the connection, as provided by the Connection.Separator enumeration.

Examples

    >>> connect(source={ModelComponent.Well:"Well 3"},
                destination={"Choke":"TCV-03"})
    >>> connect(source="Sep-01", destination="ExportGasSink",
                source_port=Connection.Separator.Top)

disconnect(source, destination: str | None = None, port: str | None = None)
Disconnect the source and the destination components.

Removes the connection between the source model component and the destination model component. Altenatively, specifying the source and the source port will break the connection from the specified port. The method will fail if the source or destination contexts do not exist or there is no connection between them.

Parameters:

  • source (dict or str) – The source model component (starting point for the connection). This can either be a context string or a context dictionary.

  • destination (dict or str) – Optional. The destination model component (ending point of the connection).

  • port (str) – Optional. The port to be disconnected on the source model component. Note that some model components (e.g. Junction, Heat Exchange, Choke) do not have indentifiable inlet and outlet ports hence should need to use the destination argument instead.

Examples

    >>> disconnect(source={ModelComponent.Well:"Well 3"},
                   destination={Choke:"TCV-03"})
    >>> disconnect(source="Well 3", destination="TCV-03")

connections(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) List[Dict]
Get the model component connections in the context.

Returns the model component connections in the context. It is provided as a list of dictionaries with the Source, Destination and Source Port for easy revieiwng and formatting in a DataFrame. If no context is provided, then the information of all connections are returned.

Parameters:

  • context (str) – Optional. The context string to search for Source or Destination.

  • component (str) – Optional. The model component to look for Source or Destination.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
Return a list of dictionaries. Each dictionary contains connection information including Source, Source Port, and Destination

Return type:
List[Dict]

Examples

    >>> model.connections(Well=ALL)

get_connections(context: str | None = None, component: str | None = None, model_context: AbstractModelContext | None = None, **context_keywords: str) Dict
Get the connections for each item in the context.

Returns the connections for each item in the context. It is formatted as a dictionary of context, with each context providing the source, destination and the ports of the context items. It is therefore useful as a look-up table to find the inlets and outlets of specific model components. If no context is provided, then the information of all connections is returned.

Parameters:

  • context (str) – Optional. The context string to search for Source or Destination.

  • component (str) – Optional. The model component to look for Source or Destination.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Returns:
Returns a dictionary of dictionaries. Each dictionary contains connection information including Source, Source Port, and Destination

Return type:
Dict[Dict]

Examples

    >>> model.get_connections("MBD-101")

convert(context: str | None = None, to_component: str = None, model_context: AbstractModelContext | None = None, **context_keywords: str) DataFrame | None
Convert an item to the specified type of model component.

Converts a junction to either a WellHead, Source or Sink. If more than one item matches the search context then it will fail.

Parameters:

  • context (str) – Optional. The context string to search in.

  • to_component (str) – Required. The model component type to change the specified item into. This must be an enumeration of ModelComponents, though only WellHead, Source and Sink are supported at this time.

  • model_context (AbstractModelContext) – Optional. The context to search in.

  • context_keywords (str) – Comma separated list of context search criteria in the form of component=’value’, where component is the model component of the item, and value is the value of the model component. Values can also be ANY (matches any value) or NONE (matches no value).

Examples

    >>> model.convert(component=ModelComponents.Junction, context="JN-01",
                      to_component=ModelComponents.WELL)

class sixgill.pipesim.ModelAbout(model)
Bases: object

Provides details about the model, web API and Python Toolkit

property webapi_version
The Pipesim web API version

property filename
The model folder and file name

property toolkit_version
The Pipesim Python Toolkit version

property unit_system
The engineering unit system

property ui_unit_system
The engineering ui unit system

class sixgill.pipesim.Task(model)
Bases: object

property networksimulation

property systemperformance

property networkoptimizersimulation

property vfptablessimulation

property ptprofilesimulation

property nodalanalysis

property wellperformancecurvessimulation

property systemanalysissimulation

property gldiagnosticssimulation

property wellcalibration

class sixgill.pipesim.NetworkSimulation(model, sim_type)
Bases: AbstractNetworkSimulation

get_use_surface_conditions(study: str | None = None)
Returns the value of use surface conditions.

Returns the value of use surface conditions for the specified study. If the network simulation task does not exist in the study, a new one will be created.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The value of use surface conditions.

Return type:
bool

Examples

    >>> use_surface = model.tasks.networksimulation.get_use_surface_conditions()
    >>> use_surface = model.tasks.networksimulation.get_use_surface_conditions("Study 1")

set_use_surface_conditions(value: bool, study: str | None = None)
Sets the value of use surface conditions.

Sets the the value of use surface conditions for the specified study. If the network simulation task does not exist in the study, a new one will be created.

Parameters:

  • value (bool) – The value of use surface conditions. If true, set to use surface conditions. If false, set to use reservoir conditions.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Examples

    >>> model.tasks.networksimulation.set_use_surface_conditions(True)
    >>> model.tasks.networksimulation.set_use_surface_conditions(False, study = "Study 1")

get_constraint_branch_names(study: str | None = None) Dict
Returns the study constraint branch names.

Returns the network simulation constraint branch names for the specified study. If the network simulation task does not exist in the study, a new one will be created.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The study constraint branch names.

Return type:
dict

Examples

    >>> studynetsim1 = model.tasks.networksimulation.get_constraint_branch_names()
    >>> studynetsim1 = model.tasks.networksimulation.get_constraint_branch_names("Study 1")

get_conditions(use_surface_condition: bool | None = None, study: str | None = None) Dict
Returns the study conditions.

Returns the network simulation conditions for the specified study. If the network simulation task does not exist in the study, a new one will be created.

Parameters:

  • use_surface_condition (bool) – Optional. get surface conditions or reservoir conditions. If not provided, default is the conditions used in the model.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The study conditions.

Return type:
dict

Examples

    >>> studynetsim1 = model.tasks.networksimulation.get_conditions()
    >>> studynetsim1 = model.tasks.networksimulation.get_conditions("Study 1")
    >>> studynetsim1 = model.tasks.networksimulation.get_conditions(
                            use_surface_condition=True, study="Study 1")

set_conditions(boundaries: dict | None = {}, constraints: dict | None = {}, use_surface_condition: bool | None = None, study: str | None = None)
Sets the study conditions.

Sets the study conditions for the specified study. If the network simulation task does not exist in the study, a new one will be created.

Parameters:

  • use_surface_condition (bool) – Optional. set surface conditions or reservoir conditions. If not provided, default is the conditions used in the model.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • constraints (dict) – Optional. The rate constraints to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created network simulation operation.

Return type:
Network simulation operation

Examples

    >>> model.tasks.networksimulation.set_conditions(
                boundaries={"Well:VertComp":{
                    Parameters.Boundary.PRESSURE:NAN,
                    Parameters.Boundary.TEMPERATURE:150,
                    Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                    Parameters.Boundary.GASFLOWRATE:5}},
                constraints={"Well":{Parameters.RateConstraint.LIQUIDFLOWRATE:200.0}})
    >>> model.tasks.networksimulation.set_conditions(use_surface_condition=False,
                boundaries={"Well:VertComp":{
                                Parameters.Boundary.PRESSURE:NAN,
                                Parameters.Boundary.TEMPERATURE:150,
                                Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                                Parameters.Boundary.GASFLOWRATE:5}},
                study = "Study 1")

reset_conditions(study: str | None = None)
Resets the study conditions to be synchronized with the model.

Resets the study conditions to be synchronized with the model for the specified study.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Whether the reset succeeded (True) or not (False).

Return type:
bool

Examples

    >>> model.tasks.networksimulation.reset_conditions()
    >>> model.tasks.networksimulation.reset_conditions(study = "Study 1")

get_constraints(study: str | None = None) Dict
Returns the study constraints.

Returns the network simulation conditions for the specified study. If the network simulation task does not exist in the study, a new one will be created.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The study conditions.

Return type:
dict

Examples

    >>> studynetsim1 = model.tasks.networksimulation.get_constraints()
    >>> studynetsim1 = model.tasks.networksimulation.get_constraints("Study 1")

set_constraints(constraints, study: str | None = None)
Sets the study constraints.

Sets the study constraints for the specified study. If the network simulation task does not exist in the study, a new one will be created.

Parameters:

  • constraints (dict) – The constraints to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created network simulation operation.

Return type:
Network simulation operation

Examples

    >>> model.tasks.networksimulation.set_constraints(constraints={"Well":{Parameters.RateConstraint.LIQUIDFLOWRATE:200.0}})
    >>> model.tasks.networksimulation.set_constraints({"Well":{Parameters.RateConstraint.LIQUIDFLOWRATE:200.0}})
    >>> model.tasks.networksimulation.set_constraints(
                constraints={"Well":{Parameters.RateConstraint.LIQUIDFLOWRATE:200.0}},
                study = "Study 1")

delete_constraints(study: str | None = None)
Deletes the study constraints.

Parameters:
study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Whether the reset succeeded (True) or not (False).

Return type:
bool

Examples

    >>> model.tasks.networksimulation.delete_constraints()
    >>> model.tasks.networksimulation.delete_constraints(study = "Study 1")

generate_engine_files(folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model file folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.networksimulation.generate_engine_files()
    >>> engine_files = model.tasks.networksimulation.generate_engine_files(
                               study='Study 1')
    >>> engine_files = model.tasks.networksimulation.generate_engine_files(
                               folder_path="D:/Temp", study='Study 1')

run(profile_variables: list | None = None, system_variables: list | None = None, boundaries: dict | None = {}, constraints: dict | None = {}, use_surface_condition: bool | None = None, study: str | None = None, options: dict | None = {})
Runs a network simulation.

Runs a network simulation. Optionally the boundaries, constraints, and variables may be set at the same time avoiding the need to use set_conditions(). If the network simulation task does not exist in the study, a new one will be created. The method waits until the simulation has finished before returning, and then returns the results.

Parameters:

  • use_surface_condition (bool) – Optional. use surface conditions or reservoir conditions. If not provided, default is the conditions used in the model.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • constraints (dict) – Optional. The constraints to be set on the study.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • options (dict) – Optional. simulations options like generating ouput files and using Restart

Returns:
The simulation results.

Return type:
dict

Examples

    >>> sim_results = model.tasks.networksimulation.run(
                use_surface_condition=False,
                boundaries={"Well1.Comp1":{
                                    Parameters.Boundary.PRESSURE:NAN,
                                    Parameters.Boundary.LIQUIDFLOWRATE:200,
                                    Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.LIQUIDFLOWRATE}
                            },
                constraints={"Well":{Parameters.RateConstraint.LIQUIDFLOWRATE:200.0}},
                profile_variables=OutputVariables.Profile.GAS_FIELD,
                system_variables=OutputVariables.System.GAS_FIELD,
                options={SimulationOptions.GENERATEOUTPUTFILE:True,
                        SimulationOptions.RESTART:False,
                        SimulationOptions.PARALLELISM:4})#generate output file, do not use restart files, run with 4 cores

start(profile_variables: list | None = None, system_variables: list | None = None, boundaries: dict | None = {}, constraints: dict | None = {}, use_surface_condition: bool | None = None, options: dict | None = {}, study: str | None = None) str
Starts running a simulation of the specified type, returning the simulation id immediately which can be used later to check the status and get the results. If the network simulation task does not exist in the study, a new one will be created.

Parameters:

  • use_surface_condition (bool) – Optional. use surface conditions or reservoir conditions. If not provided, default is the conditions used in the model.

  • parameters (dict) – Optional. The parameters and respective values to set. For PT Profile, it must contain the name of the StartNode (Well or Source)

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • constraints (dict) – Optional. The constraints to be set on the study.

  • sensitivities (dict) – Optional. For PT Profile simulations, the sensitivities.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • options (dict) – Optional. simulations options like generating ouput files and using Restart

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> sim_id = model.tasks.networksimulation.start(use_surface_condition=False,
                      boundaries={"Well1.Comp1":{
                                            Parameters.Boundary.PRESSURE:NAN,
                                            Parameters.Boundary.LIQUIDFLOWRATE:200,
                                            Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.LIQUIDFLOWRATE}
                                  },
                      constraints={"Well":{Parameters.RateConstraint.LIQUIDFLOWRATE:200.0}},
                      profile_variables=OutputVariables.Profile.GAS_FIELD,
                      system_variables=OutputVariables.System.GAS_FIELD,
                      options={SimulationOptions.GENERATEOUTPUTFILE:True,
                                SimulationOptions.RESTART:False,
                                SimulationOptions.PARALLELISM:4}) #generate output file, do not use restart files, run with 4 cores

class sixgill.pipesim.PTProfileSimulation(model, sim_type)
Bases: AbstractSingleBranchSimulation

get_conditions(producer, study: str | None = None)
Returns the study conditions.

Returns the PT profile simulation conditions for the specified study. If the PT profile simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The PT profile settings in a dictionary format.

Return type:
dictZ

Examples

    >>> studyptsim1 = model.tasks.ptprofilesimulation.get_conditions("Well 1")
    >>> studyptsim1 = model.tasks.ptprofilesimulation.get_conditions("Well 1",
                               "Study 2")

set_conditions(producer, parameters={}, study: str | None = None)
Sets the study conditions.

Sets the PT profile simulation task conditions for the specified study. If the PT profile simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task.

  • parameters (dict) – Required. The conditions for PT profile task to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created PT profile operation.

Return type:
PT profile operation

Examples

    >>> model.tasks.ptprofilesimulation.set_conditions("Well 1",
                parameters={Parameters.PTProfileSimulation.INLETPRESSURE:3000,
                            Parameters.PTProfileSimulation.OUTLETPRESSURE:150,
                            Parameters.PTProfileSimulation.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                            Parameters.PTProfileSimulation.GASFLOWRATE:5})
    >>> model.tasks.ptprofilesimulation.set_conditions("Well 1",
                parameters={Parameters.PTProfileSimulation.INLETPRESSURE:3000,
                            Parameters.PTProfileSimulation.OUTLETPRESSURE:150,
                            Parameters.PTProfileSimulation.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                            Parameters.PTProfileSimulation.GASFLOWRATE:5},
                study="Study 2")

reset_conditions(producer, study: str | None = None)
Resets the study conditions to be synchronized with the model.

Resets the study conditions to be synchronized with the model for the specified study.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Whether the reset succeeded (True) or not (False).

Return type:
bool

Examples

    >>> model.tasks.ptprofilesimulation.reset_conditions("Well 1")
    >>> model.tasks.ptprofilesimulation.reset_conditions(
                                        "Well 1", study = "Study 1")

get_sensitivity_variables(producer, study: str | None = None) List[str]
Get the available sensitivity variable list.

Get the list of possible sensitivity variables for the PT profile simulation task. If the PT profile simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
a list of sensitivity variables names that can be applied to this task.

Return type:
list

Examples

    >>> model.tasks.ptprofilesimulation.get_sensitivity_variables("Well 1")
    >>> model.tasks.ptprofilesimulation.get_sensitivity_variables("Well 1",
                      study="Study 2")

get_calculated_variables(producer, study: str | None = None) List[str]
get the possible calculated variable list.

Get the list of possible calculated variable for the PT profile simulation task. If the PT profile simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
a list of possible calculated variable names that can be applied to this task.

Return type:
list

Examples

    >>> model.tasks.ptprofilesimulation.get_calculated_variables("Well 1")
    >>> model.tasks.ptprofilesimulation.get_calculated_variables("Well 1",
                      study="Study 2")

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.ptprofilesimulation.generate_engine_files(
                                producer="Well 1")
    >>> engine_files = model.tasks.ptprofilesimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp")
    >>> engine_files = model.tasks.ptprofilesimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp",
                                study="Study 1")

run(producer, parameters={}, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Runs a PT Profile simulation.

Runs a PT Profile simulation. Optionally the parameters and variables may be set at the same time avoiding the need to use set_conditions(). If the PT profile simulation task does not exist in the study, a new one will be created. The method waits until the simulation has finished before returning, and then returns the results.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation results.

Return type:
dict

Examples

    >>> sim_results = model.tasks.ptprofilesimulation.run( "Well 1",
            parameters={Parameters.PTProfileSimulation.OUTLETPRESSURE:200,
                        Parameters.PTProfileSimulation.SENSITIVITYVARIABLE:
                {Parameters.PTProfileSimulation.SensitivityVariable.COMPONENT:
                "VertComp",
                Parameters.PTProfileSimulation.SensitivityVariable.VARIABLE:
                "ReservoirPressure",
                Parameters.PTProfileSimulation.SensitivityVariable.VALUES:
                [2000,3000,4000]}
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

start(producer, parameters={}, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Starts running a PT Profile simulation, returning the simulation id immediately which can be used later to check the status and get the results If the PT profile simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the PT profile simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> sim_id = model.tasks.ptprofilesimulation.start( "Well 1",
            parameters={Parameters.PTProfileSimulation.OUTLETPRESSURE:200,
                        Parameters.PTProfileSimulation.SENSITIVITYVARIABLE:
                {Parameters.PTProfileSimulation.SensitivityVariable.COMPONENT:
                "VertComp",
                Parameters.PTProfileSimulation.SensitivityVariable.VARIABLE:
                "ReservoirPressure",
                Parameters.PTProfileSimulation.SensitivityVariable.VALUES:
                [2000,3000,4000]}
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

class sixgill.pipesim.GLDiagnosticsSimulation(model, sim_type)
Bases: AbstractSingleBranchSimulation

get_conditions(producer, study: str | None = None)
Returns the study conditions.

Returns the GLDiagnostics simulation conditions for the specified study. If the GLDiagnostics simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the GLDiagnostics simulation task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The GLDiagnostics settings in a dictionary format.

Return type:
dictZ

Examples

    >>> studyptsim1 = model.tasks.gldiagnosticssimulation.get_conditions("Well 1")
    >>> studyptsim1 = model.tasks.gldiagnosticssimulation.get_conditions("Well 1",
                               "Study 2")

set_conditions(producer, parameters={}, boundaries: dict | None = {}, study: str | None = None)
Sets the study conditions.

Sets the GLDiagnostics simulation task conditions for the specified study. If the GLDiagnostics simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the GLDiagnostics simulation task.

  • parameters (dict) – Required. The conditions for GLDiagnostics task to be set on the study.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created GLDiagnostics operation.

Return type:
GLDiagnostics operation

Examples

    >>> model.tasks.gldiagnosticssimulation.set_conditions("Well 1",
                parameters={Parameters.GLDiagnosticsSimulation.OUTLETPRESSURE:150,
                            Parameters.GLDiagnosticsSimulation.SURFACEINJECTIONPRESSURE:1750,
                            Parameters.GLDiagnosticsSimulation.TARGETINJECTIONRATE: 2.5})
    >>> model.tasks.gldiagnosticssimulation.set_conditions("Well 1",
                parameters={Parameters.GLDiagnosticsSimulation.OUTLETPRESSURE:150,
                            Parameters.GLDiagnosticsSimulation.SURFACEINJECTIONPRESSURE:1750,
                            Parameters.GLDiagnosticsSimulation.TARGETINJECTIONRATE: 2.5},
                study="Study 2")

reset_conditions(producer, study: str | None = None)
Resets the study conditions to be synchronized with the model.

Resets the study conditions to be synchronized with the model for the specified study.

Parameters:

  • producer (str) – Required. The name of the producer for the GLDiagnostics simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Whether the reset succeeded (True) or not (False).

Return type:
bool

Examples

    >>> model.tasks.gldiagnosticssimulation.reset_conditions("Well 1")
    >>> model.tasks.gldiagnosticssimulation.reset_conditions(
                                        "Well 1", study = "Study 1")

get_sensitivity_variables(producer, study: str | None = None) List[str]
Get the available sensitivity variable list.

Get the list of possible sensitivity variables for the GLDiagnostics simulation task. If the GLDiagnostics simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the GLDiagnostics simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
a list of sensitivity variables names that can be applied to this task.

Return type:
list

Examples

    >>> model.tasks.gldiagnosticssimulation.get_sensitivity_variables("Well 1")
    >>> model.tasks.gldiagnosticssimulation.get_sensitivity_variables("Well 1",
                      study="Study 2")

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the GLDiagnostics simulation task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.gldiagnosticssimulation.generate_engine_files(
                                producer="Well 1")
    >>> engine_files = model.tasks.gldiagnosticssimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp")
    >>> engine_files = model.tasks.gldiagnosticssimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp",
                                study="Study 1")

run(producer, parameters={}, boundaries: dict | None = {}, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Runs a GLDiagnostics simulation.

Runs a GLDiagnostics simulation. Optionally the parameters and variables may be set at the same time avoiding the need to use set_conditions(). If the GLDiagnostics simulation task does not exist in the study, a new one will be created. The method waits until the simulation has finished before returning, and then returns the results.

Parameters:

  • producer (str) – Required. The name of the producer for the GLDiagnostics simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation results.

Return type:
dict

Examples

    >>> sim_results = model.tasks.gldiagnosticssimulation.run( "Well 1",
            parameters={Parameters.GLDiagnosticsSimulation.OUTLETPRESSURE:200,
                        Parameters.GLDiagnosticsSimulation.SENSITIVITYVARIABLE:
                {Parameters.GLDiagnosticsSimulation.SensitivityVariable.COMPONENT:
                "VertComp",
                Parameters.GLDiagnosticsSimulation.SensitivityVariable.VARIABLE:
                "ReservoirPressure",
                Parameters.GLDiagnosticsSimulation.SensitivityVariable.VALUES:
                [2000,3000,4000]}
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

start(producer, parameters={}, boundaries: dict | None = {}, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Starts running a GLDiagnostics simulation, returning the simulation id immediately which can be used later to check the status and get the results If the GLDiagnostics simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the GLDiagnostics simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> sim_id = model.tasks.gldiagnosticssimulation.start( "Well 1",
            parameters={Parameters.GLDiagnosticsSimulation.OUTLETPRESSURE:200,
                        Parameters.GLDiagnosticsSimulation.SENSITIVITYVARIABLE:
                {Parameters.GLDiagnosticsSimulation.SensitivityVariable.COMPONENT:
                "VertComp",
                Parameters.GLDiagnosticsSimulation.SensitivityVariable.VARIABLE:
                "ReservoirPressure",
                Parameters.GLDiagnosticsSimulation.SensitivityVariable.VALUES:
                [2000,3000,4000]}
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

class sixgill.pipesim.SystemAnalysisSimulation(model, sim_type)
Bases: AbstractSingleBranchSimulation

get_conditions(producer, study: str | None = None)
Returns the study conditions.

Returns the System analysis simulation conditions for the specified study. If the System analysis task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The System analysis settings in a dictionary format.

Return type:
dictZ

Examples

    >>> studyptsim1 = model.tasks.systemanalysissimulation.get_conditions("Well 1")
    >>> studyptsim1 = model.tasks.systemanalysissimulation.get_conditions("Well 1",
                               "Study 2")

set_conditions(producer, parameters={}, study: str | None = None)
Sets the study conditions.

Sets the System analysis simulation task conditions for the specified study. If the System analysis simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task.

  • parameters (dict) – Required. The conditions for System analysis task to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created System analysis operation.

Return type:
System analysis operation

Examples

    >>> model.tasks.systemanalysissimulation.set_conditions("Well 1",
                parameters={Parameters.SystemAnalysisSimulation.INLETPRESSURE:3000,
                            Parameters.SystemAnalysisSimulation.OUTLETPRESSURE:150,
                            Parameters.SystemAnalysisSimulation.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                            Parameters.SystemAnalysisSimulation.LIQUIDFLOWRATE:5})
    >>> model.tasks.systemanalysissimulation.set_conditions("Well 1",
                parameters={Parameters.SystemAnalysisSimulation.INLETPRESSURE:3000,
                            Parameters.SystemAnalysisSimulation.OUTLETPRESSURE:150,
                            Parameters.SystemAnalysisSimulation.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
                            Parameters.SystemAnalysisSimulation.LIQUIDFLOWRATE:5},
                study="Study 2")

reset_conditions(producer, study: str | None = None)
Resets the study conditions to be synchronized with the model.

Resets the study conditions to be synchronized with the model for the specified study.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Whether the reset succeeded (True) or not (False).

Return type:
bool

Examples

    >>> model.tasks.systemanalysissimulation.reset_conditions("Well 1")
    >>> model.tasks.systemanalysissimulation.reset_conditions(
                                        "Well 1", study = "Study 1")

get_calculated_variables(producer, study: str | None = None) List[str]
get the possible calculated variable list.

Get the list of possible calculated variable for the System analysis simulation task. If the System analysis simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
a list of possible calculated variable names that can be applied to this task.

Return type:
list

Examples

    >>> model.tasks.systemanalysissimulation.get_calculated_variables("Well 1")
    >>> model.tasks.systemanalysissimulation.get_calculated_variables("Well 1",
                      study="Study 2")

get_sensitivity_variables(producer, study: str | None = None) List[str]
Get the available sensitivity variable list.

Get the list of possible sensitivity variables for the System analysis simulation task. If the System analysis simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
a list of sensitivity variables names that can be applied to this task.

Return type:
list

Examples

    >>> model.tasks.systemanalysissimulation.get_sensitivity_variables("Well 1")
    >>> model.tasks.systemanalysissimulation.get_sensitivity_variables("Well 1",
                      study="Study 2")

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.systemanalysissimulation.generate_engine_files(
                                producer="Well 1")
    >>> engine_files = model.tasks.systemanalysissimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp")
    >>> engine_files = model.tasks.systemanalysissimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp",
                                study="Study 1")

run(producer, parameters={}, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Runs a System analysis simulation.

Runs a System analysis simulation. Optionally the parameters and variables may be set at the same time avoiding the need to use set_conditions(). If the System analysis simulation task does not exist in the study, a new one will be created. The method waits until the simulation has finished before returning, and then returns the results.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation results.

Return type:
dict

Examples

    >>> sim_results = model.tasks.systemanalysissimulation.run( "Well 1",
            parameters={Parameters.SystemAnalysisSimulation.OUTLETPRESSURE:200,
                        Parameters.SystemAnalysisSimulation.SENSITIVITYVARIABLE:
                {Parameters.SystemAnalysisSimulation.SensitivityVariable.COMPONENT:
                "VertComp",
                Parameters.SystemAnalysisSimulation.SensitivityVariable.VARIABLE:
                "ReservoirPressure",
                Parameters.SystemAnalysisSimulation.SensitivityVariable.VALUES:
                [2000,3000,4000]}
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

start(producer, parameters={}, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Starts running a System analysis simulation, returning the simulation id immediately which can be used later to check the status and get the results If the System analysis simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the System analysis simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> sim_id = model.tasks.systemanalysissimulation.start( "Well 1",
            parameters={Parameters.SystemAnalysisSimulation.OUTLETPRESSURE:200,
                        Parameters.SystemAnalysisSimulation.SENSITIVITYVARIABLE:
                {Parameters.SystemAnalysisSimulation.SensitivityVariable.COMPONENT:
                "VertComp",
                Parameters.SystemAnalysisSimulation.SensitivityVariable.VARIABLE:
                "ReservoirPressure",
                Parameters.SystemAnalysisSimulation.SensitivityVariable.VALUES:
                [2000,3000,4000]}
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

class sixgill.pipesim.WellPerformanceCurvesSimulation(model, sim_type)
Bases: AbstractSingleBranchSimulation

get_conditions(producer, study: str | None = None)
Returns the study conditions.

Returns the Well performance curves simulation conditions for the specified study. If the Well performance curves simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the Well performance curves simulation task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The Well performance curves settings in a dictionary format.

Return type:
dict

Examples

    >>> studyptsim1 = model.tasks.wellperformancecurvessimulation.get_conditions("Well 1")
    >>> studyptsim1 = model.tasks.wellperformancecurvessimulation.get_conditions("Well 1",
                               "Study 2")

set_conditions(producer, parameters={}, study: str | None = None)
Sets the study conditions.

Sets the Well performance curves simulation task conditions for the specified study. If the Well performance curves simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the Well performance curves simulation task.

  • parameters (dict) – Required. The conditions for Well performance curves task to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created Well performance curves operation.

Return type:
Well performance curves operation

Examples

    >>> model.tasks.wellperformancecurvessimulation.set_conditions("Well 1", parameters=studyptsim1)
    >>> model.tasks.wellperformancecurvessimulation.set_conditions("Well 1", parameters=studyptsim1,
                               "Study 2")

get_sensitivity_variables(producer, study: str | None = None) List[str]
Get the available sensitivity variable list.

Get the list of possible sensitivity variables for the Well performance curves simulation task. If the Well performance curves simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the Well performance curves simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
a list of sensitivity variables names that can be applied to this task.

Return type:
list

Examples

    >>> model.tasks.wellperformancecurvessimulation.get_sensitivity_variables("Well 1")
    >>> model.tasks.wellperformancecurvessimulation.get_sensitivity_variables("Well 1",
                      study="Study 2")

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the Well performance curves simulation task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.wellperformancecurvessimulation.generate_engine_files(
                                producer="Well 1")
    >>> engine_files = model.tasks.wellperformancecurvessimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp")
    >>> engine_files = model.tasks.wellperformancecurvessimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp",
                                study="Study 1")

run(producer, parameters={}, system_variables: list | None = None, study: str | None = None)
Runs a Well performance curves simulation.

Runs a Well performance curves simulation. Optionally the parameters and variables may be set at the same time avoiding the need to use set_conditions(). If the Well performance curves simulation task does not exist in the study, a new one will be created. The method waits until the simulation has finished before returning, and then returns the results.

Parameters:

  • producer (str) – Required. The name of the producer for the Well performance curves simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation results.

Return type:
dict

Examples

    >>> sim_results = model.tasks.wellperformancecurvessimulation.run( "Well 1")

start(producer, parameters={}, system_variables: list | None = None, study: str | None = None)
Starts running a Well performance curves simulation, returning the simulation id immediately which can be used later to check the status and get the results If the Well performance curves simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the Well performance curves simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> sim_id = model.tasks.wellperformancecurvessimulation.start( "Well 1")

class sixgill.pipesim.NodalAnalysisSimulation(model, sim_type)
Bases: AbstractSingleBranchSimulation

get_conditions(producer, nodal_point_settings: dict | None = None, study: str | None = None)
Returns the nodal analysis general conditions in one dictionary and inlet condtions in anohter dictionary.

Returns the nodal analysis general conditions for the specified study. If the nodal analysis task does not exist in the study, a new one will be created. If the producer is a well and nodal point settings are not provided, a default nodal point at bottom hole will be created. If nodal point settings are provided, a new nodal point will be created and be applied to the existing or newly created nodal analysis task.

Parameters:

  • producer (str) – Required. The name of the producer for the nodal analysis simulation task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • nodal_point_settings (dict) – Optional. The settings for nodal point to be created. The new nodal point is applied to the existing or newly created nodal analysis task.

Returns:
Nodal analysis simulation settings in the first dictionary, and inlet conditions in the second dictionary

Return type:
dict

Examples

    >>> na_sim, inlet_cond = model.tasks.nodalanalysis.get_conditions("Well 1")
    >>> na_sim, inlet_cond = model.tasks.nodalanalysis.get_conditions(
        "Well 1",
        nodal_point_settings = {
        Parameters.NodalPoint.NODALTYPE: Constants.NodalPointType.SURFACE,
        Parameters.NodalPoint.EQUIPMENT: 'Choke',
        Parameters.NodalPoint.NAME: 'NA1'
        })
    >>> na_sim, inlet_cond = model.tasks.nodalanalysis.get_conditions(
        "Well 1", "Study 2",
        nodal_point_settings = {
        Parameters.NodalPoint.NODALTYPE: Constants.NodalPointType.DOWNHOLE,
        Parameters.NodalPoint.DEPTH: 1000,
        Parameters.NodalPoint.WELLSTRINGTYPE: Constants.TubingSectionType.TUBING,
        Parameters.NodalPoint.NAME: 'NA2'
        })

set_conditions(producer, parameters={}, inlet_conditions: dict | None = None, nodal_point_settings: dict | None = None, study: str | None = None)
Sets the study conditions.

Sets the nodal analysis profile simulation task conditions for the specified study. If the nodal analysis simulation task does not exist in the study, a new one will be created.If the producer is a well and nodal point settings are not provided, a default nodal point at bottom hole will be created. If nodal point settings are provided, a new nodal point will be created and be applied to the existing or newly created nodal analysis task.

Parameters:

  • producer (str) – Required. The name of the producer for the nodal analysis simulation task.

  • parameters (dict) – Required. The conditions for nodal analysis task to be set on the study.

  • inlet_conditions (dict) – Optional. The inlet conditions for nodal analysis task to be set on the study.

  • nodal_point_settings (dict) – Optional. The settings for nodal point to be created. The new nodal point is applied to the existing or newly created nodal analysis task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The exisitng or created nodal analysis operation

Return type:
Nodal analysis operation

Examples

    >>> model.tasks.nodalanalysis.set_conditions("Well 1",
            parameters={
            Parameters.NodalAnalysisSimulation.LIMITINFLOW: True,
            Parameters.NodalAnalysisSimulation.LIMITOUTFLOW: False,
            Parameters.NodalAnalysisSimulation.OUTFLOWPOINTS: 40,
            Parameters.NodalAnalysisSimulation.INFLOWPOINTS: 50,
            Parameters.NodalAnalysisSimulation.MAXFLOWRATETYPE:
                                    Constants.FlowRateType.GASFLOWRATE,
            Parameters.NodalAnalysisSimulation.OUTLETPRESSURE: 300,
            Parameters.NodalAnalysisSimulation.MAXGASRATE: 300,
            Parameters.NodalAnalysisSimulation.MAXOUTFLOWPRESSURE: 400,
            Parameters.NodalAnalysisSimulation.BRANCHTERMINATOR: "Choke"
            },
            inlet_conditions={
                "Well 1:Comp1":{Parameters.Boundary.PRESSURE:4000,
                                Parameters.Boundary.TEMPERATURE:200}
            },
            nodal_point_settings={
            Parameters.NodalPoint.NODALTYPE: Constants.NodalPointType.DOWNHOLE,
            Parameters.NodalPoint.DEPTH: 1000,
            Parameters.NodalPoint.WELLSTRINGTYPE: Constants.TubingSectionType.TUBING,
            Parameters.NodalPoint.NAME: 'NA2'
            }
        )
    >>> model.tasks.nodalanalysis.set_conditions(
            producer="Well 1", study="Study 2",
            parameters={
                Parameters.NodalAnalysisSimulation.OUTLETPRESSURE: 3000,
                Parameters.NodalAnalysisSimulation.BRANCHTERMINATOR: "Choke"
                Parameters.NodalAnalysisSimulation.NODALMEASUREMENTPOINT: "NA2"
            })
    >>> model.tasks.nodalanalysis.set_conditions(
            producer="Well 1", study="Study 2",
            nodal_point_settings = {
                Parameters.NodalPoint.NODALTYPE: Constants.NodalPointType.SURFACE,
                Parameters.NodalPoint.EQUIPMENT: 'Choke',
                Parameters.NodalPoint.NAME: 'NA4'
            })

reset_conditions(producer, study: str | None = None)
Resets the study conditions to be synchronized with the model.

Resets the study conditions to be synchronized with the model for the specified study.

Parameters:

  • producer (str) – Required. The name of the producer for the nodal analysis simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Whether the reset succeeded (True) or not (False).

Return type:
bool

Examples

    >>> model.tasks.nodalanalysis.reset_conditions("Well 1")
    >>> model.tasks.nodalanalysis.reset_conditions("Well 1",study = "Study 1")

run(producer, parameters={}, inlet_conditions: dict | None = None, nodal_point_settings: dict | None = None, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Runs a nodal analysis simulation.

Runs a nodal analysis simulation. Optionally the parameters, nodal point settings and variables may be set at the same time avoiding the need to use set_conditions(). If the nodal analysis task does not exist in the study, a new one will be created. The method waits until the simulation has finished before returning, and then returns the results.

Parameters:

  • producer (str) – Required. The name of the producer for the nodal analysis simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • nodal_point_settings (dict) – Optional. The settings for nodal point to be created. The new nodal point is applied to the existing or newly created nodal analysis task.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation results.

Return type:
dict

Examples

    >>> sim_results = model.tasks.nodalanalysis.run( "Well 1",
            parameters={
                Parameters.NodalAnalysisSimulation.OUTLETPRESSURE: 3000,
                Parameters.NodalAnalysisSimulation.BRANCHTERMINATOR: "Choke"
            },
            nodal_point_settings = {
                Parameters.NodalPoint.NODALTYPE: Constants.NodalPointType.SURFACE,
                Parameters.NodalPoint.EQUIPMENT: 'Choke',
                Parameters.NodalPoint.NAME: 'NA4'
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

start(producer, parameters={}, inlet_conditions: dict | None = None, nodal_point_settings: dict | None = None, profile_variables: list | None = None, system_variables: list | None = None, study: str | None = None)
Starts running a nodal analysis simulation, returning the simulation id immediately which can be used later to check the status and get the results If the nodal analysis simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the nodal analysis simulation task.

  • parameters (dict) – Optional. The parameters and respective values to set.

  • nodal_point_settings (dict) – Optional. The settings for nodal point to be created. The new nodal point is applied to the existing or newly created nodal analysis task.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> sim_id = model.tasks.nodalanalysis.start("Well 1",
            parameters={
                Parameters.NodalAnalysisSimulation.OUTLETPRESSURE: 3000,
                Parameters.NodalAnalysisSimulation.BRANCHTERMINATOR: "Choke"
            },
            nodal_point_settings = {
                Parameters.NodalPoint.NODALTYPE: Constants.NodalPointType.SURFACE,
                Parameters.NodalPoint.EQUIPMENT: 'Choke',
                Parameters.NodalPoint.NAME: 'NA4'
            },
            profile_variables=OutputVariables.Profile.GAS_FIELD,
            system_variables=OutputVariables.System.GAS_FIELD)

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the Nodal analysis simulation task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.nodalanalysis.generate_engine_files(
                                producer="Well 1")
    >>> engine_files = model.tasks.nodalanalysis.generate_engine_files(
                                producer="Well 1",
                                folder_path="D:/Temp")
    >>> engine_files = model.tasks.nodalanalysis.generate_engine_files(
                                producer="Well 1",
                                folder_path="D:/Temp",
                                study="Study 1")

class sixgill.pipesim.SystemPerformance(model, sim_type)
Bases: AbstractAdvancedWellSimulation

get_conditions(producer, study: str | None = None) Dict
Returns the study conditions.

Returns the system performance conditions for the specified study. If the system performance task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the Well for system performance task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The study conditions.

Return type:
dict

Examples

    >>> studynetsim1 = model.tasks.systemperformance.get_conditions("Well 1")
    >>> studynetsim1 = model.tasks.systemperformance.get_conditions("Well 1", study="Study 1")

set_conditions(producer, boundaries: dict | None = {}, study: str | None = None)
Sets the study conditions.

Sets the study conditions for the specified study. If the system performance simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the Well for system performance task.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created system performance operation.

Return type:
system performance operation

Examples

    >>> model.tasks.systemperformance.set_conditions("Well",
        boundaries={"Annulus":{
            Parameters.Boundary.PRESSURE:NAN,
            Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.GASFLOWRATE,
            Parameters.Boundary.GASFLOWRATE:5}})
    >>> model.tasks.systemperformance.set_conditions("Well",
        boundaries={"Well:Cpl A":{
            Parameters.Boundary.PRESSURE:3800,
            Parameters.Boundary.TEMPERATURE:150}},
            study="Study 1")

reset_conditions(producer, study: str | None = None)
Resets the study conditions to be synchronized with the model.

Resets the study conditions to be synchronized with the model for the specified study.

Parameters:

  • producer (str) – Required. The name of the producer for the Well for system performance task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Whether the reset succeeded (True) or not (False).

Return type:
bool

Examples

    >>> model.tasks.systemperformance.reset_conditions("Well 1")
    >>> model.tasks.systemperformance.reset_conditions("Well 1",study = "Study 1")

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the Well for system performance task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model file folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.systemperformance.generate_engine_files("Well 1")
    >>> engine_files = model.tasks.systemperformance.generate_engine_files("Well 1",
                               study='Study 1')
    >>> engine_files = model.tasks.systemperformance.generate_engine_files("Well 1",
                               folder_path="D:/Temp", study='Study 1')

run(producer, profile_variables: list | None = None, system_variables: list | None = None, boundaries: dict | None = {}, study: str | None = None, options: dict | None = {})
Runs a system performance operation.

Runs a system performance operation. Optionally the boundaries, constraints, and variables may be set at the same time avoiding the need to use set_conditions(). If the system performance task does not exist in the study, a new one will be created. The method waits until the operation has finished before returning, and then returns the results.

Parameters:

  • producer (str) – Required. The name of the producer for the Well for system performance task.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the simulation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the simulation system results. If omitted then all the possible system variables are returned.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • options (dict) – Optional. simulations options like generating ouput files and using Restart

Returns:
The operation results.

Return type:
dict

Examples

    >>> sysPerf_results = model.tasks.systemperformance.run(producer="Well",
        profile_variables=OutputVariables.Profile.GAS_FIELD,
        system_variables=OutputVariables.System.GAS_FIELD,
        boundaries={"Well:Cpl A":{
                            Parameters.Boundary.PRESSURE:3900
                    },
                    "Tubing":{
                            Parameters.Boundary.PRESSURE:NAN,
                            Parameters.Boundary.LIQUIDFLOWRATE:200,
                            Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.LIQUIDFLOWRATE
                    }},
        options={SimulationOptions.GENERATEOUTPUTFILE:True,
                SimulationOptions.RESTART:False,
                SimulationOptions.PARALLELISM:4}) #generate output file, do not use restart files, run with 4 cores

start(producer, profile_variables: list | None = None, system_variables: list | None = None, boundaries: dict | None = {}, options: dict | None = {}, study: str | None = None) str
Starts running a system performance of the specified type, returning the operation id immediately which can be used later to check the status and get the results. If the system performance task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the Well for system performance task.

  • profile_variables (list) – Optional. The list of profile variables to be returned with the operation profile results. If omitted then all the possible profile variables are returned.

  • system_variables (list) – Optional. The list of system variables to be returned with the operation system results. If omitted then all the possible system variables are returned.

  • boundaries (dict) – Optional. The boundary conditions to be set on the study.

  • options (dict) – Optional. operation options like generating ouput files and using Restart

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The operation id, which can be used to access operation status and get the results.

Return type:
str

Examples

    >>> sys_id = model.tasks.systemperformance.start("Well",
        profile_variables=OutputVariables.Profile.GAS_FIELD,
        system_variables=OutputVariables.System.GAS_FIELD,
        boundaries={"Well:Cpl A":{
                            Parameters.Boundary.PRESSURE:3900
                    },
                    "Tubing":{
                            Parameters.Boundary.PRESSURE:NAN,
                            Parameters.Boundary.LIQUIDFLOWRATE:200,
                            Parameters.Boundary.FLOWRATETYPE:Constants.FlowRateType.LIQUIDFLOWRATE
                    }},
        options={SimulationOptions.GENERATEOUTPUTFILE:True,
                SimulationOptions.RESTART:False,
                SimulationOptions.PARALLELISM:4}) #generate output file, do not use restart files, run with 4 cores

sixgill.simulation_result module

class sixgill.simulation_result.SimulationResult(units_mgr, web_api_result, simulation, state)
Bases: object

property system
System result of simulation.

Returns:
The system result is a nested dictionary. The key of outer dictionary is the name of system variable, and it’s value is a nested ordered dictionary, the first item in the dictionary is the unit of the result with ‘Unit’ as the key, and other items are system results with key of case name (for single branch operation) or branch name (for network simulation).

Return type:
defaultdict(OrderedDict)

Examples

    >>> \# PT simulation system result of bottom hole pressure with 3 cases
    >>> print(result.system)
    >>> {'BottomHolePressure':
                OrderedDict([
                    ('Unit', 'psia'),
                    ('PWSTATIC=2000 psia Flowrate=4035.663 sbbl/day',
                        1899.3466005297103),
                    ('PWSTATIC=3000 psia Flowrate=6423.735 sbbl/day',
                        2894.0057045084613),
                    ('PWSTATIC=4000 psia Flowrate=8874.929 sbbl/day',
                        3890.6145718622515)
                        ])
         }
    >>> \# get bottome hole pressure results for all cases
    >>> result.system[SystemVariables.BOTTOM_HOLE_PRESSURE]
    >>> \# get the unit for bottom hole pressure
    >>> result.system[SystemVariables.BOTTOM_HOLE_PRESSURE]['Unit']
    >>> \# get bottom hole pressure for the first case
    >>> result.system[SystemVariables.BOTTOM_HOLE_PRESSURE][result.cases[0]]
    >>> \# network simulation system result with bottom hole pressure
    >>> print(result.system)
    >>> {'BottomHolePressure':
            OrderedDict([
                    ('Unit', 'psia'),
                    ('Manifold_Separator', 675.439895675529),
                    ('Oil-Facility', 120.66209137371129),
                    ('Well', 2414.049343852503),
                    ('Gas-Sales', 670.1023674374065),
                    ('Source', 677.051334969821),
                    ('Separator_LL-1', 668.3923541261727),
                    ('Separator_GL-1', 668.3923541261727)
                ])
          }
    >>> \# get bottome hole pressure results for all branches
    >>> result.system[SystemVariables.BOTTOM_HOLE_PRESSURE]
    >>> \# get bottom hole pressure for branch 'Well'
    >>> result.system[SystemVariables.BOTTOM_HOLE_PRESSURE]['Well']
    >>> \# get the ESP performance curve results for the first case for an esp pump called 'B-ESP':
    >>> result.esp_curves[0]['B-ESP'][EspCurvesVariables.PERFORMANCE][0][EspCurvesVariables.VALUES]

property node
Node (equipment) result of simulation.

Returns:

  • defaultdict(OrderedDict) for network simulation – The node result for network simulation is a nested dictionary. The key of outer dictionary is the name of system variable and it’s value is a nested ordered dictionary, the first item in the dictionary is the unit of the result with ‘Unit’ as the key, and other items are system results with key of equipment name.

  • defaultdict(collections.OrderedDict)) for single branch simulation – The node result for single branch simulation is a dictionary of a collection of nested dictionaries. The key of outer dictionary is case name and it’s value is a collection of nested ordered dictionaries. Each single nested dictonary is defaultdict(OrderedDict), whihc has the same format as network simulation node result.

Examples

    >>> \# network simulation node result of SystemVariables.PRESSURE
    >>> print(result.node)
    >>> {'Pressure': OrderedDict([('Unit', 'psia'),
                                ('Separator', 668.3923541261727),
                                ('Oil-Facility', 299.99999981427857),
                                ('VertComp', 2414.049343852503),
                                ('Gas-Sales', 599.9999997922582),
                                ('Manifold', 675.439895675529),
                                ('Choke', 688.8950792066037),
                                ('Source', 677.051334969821),
                                ('Compressor', 1226.7486656475476),
                                ('Well', 971.9041960688403),
                                ('Pmp', 382.02050175837144)])
         }
    >>> \# get pressure results for all branches
    >>> result.node[SystemVariables.PRESSURE]
    >>> \# get pressure for branch 'Well'
    >>> result.node[SystemVariables.PRESSURE]['Well']
    >>> \# get the unit for pressure
    >>> result.node[SystemVariables.PRESSURE]['Unit']
    >>> \# PT simulation result of pressure with 3 cases
    >>> print(result.node)
    >>> {'PWSTATIC=2000 psia Flowrate=4035.663 sbbl/day':
                        {'Pressure': OrderedDict([
                            ('Unit', 'psia'),
                            ('Choke', 231.64419332730813),
                            ('VertComp', 1899.3466005297103)
                        ])}),
         'PWSTATIC=3000 psia Flowrate=6423.735 sbbl/day':
                        {'Pressure': OrderedDict([
                            ('Unit', 'psia'),
                            ('VertComp', 2894.0057045084613),
                            ('Choke', 272.70024724587813)
                        ])}),
         'PWSTATIC=4000 psia Flowrate=8874.929 sbbl/day':
                        {'Pressure': OrderedDict([
                            ('Unit', 'psia'),
                            ('VertComp', 3890.6145718622515),
                            ('Choke', 325.1985651291863)])})
        }
    >>> \# get pressure results for all the equipment in the first case
    >>> result.node[result.cases[0]][SystemVariables.PRESSURE]
    >>> \# get Choke pressure in the first case
    >>> result.node[result.cases[0]][SystemVariables.PRESSURE]['Choke']

property profile
Profile result of simulation.

Returns:
The node result for single branch simulation is a dictionary of a collection of nested dictionaries. The key of outer dictionary is case name for single branch simulation and branch name for network simulation. The value is a collection of nested ordered dictionaries. Each single nested dictonary is defaultdict(OrderedDict) with key of profile variable name and value of profile results.

Return type:
defaultdict(collections.OrderedDict))

Examples

    >>> \# network simulation profile result with ProfileVariables.ELEVATION
    >>> print(result.profile)
    >>> {'Gas-Sales':
            {'BranchEquipment': ['GL-1', None, None, 'Compressor', 'GL-2'],
            'Elevation': [-10.0, -5.0, 0.0, 0.0, 0.0]
            },
        'Manifold_Separator':
            {'BranchEquipment': ['GL-1', None, None, 'Compressor', 'GL-2'],
            'Elevation': [-10.0, -5.0, 0.0, 0.0, 0.0]
            }
        }
    >>> \# get elevation results for 'Gas-Sales' branch
    >>> result.profile['Gas-Sales'][ProfileVariables.ELEVATION]
    >>> \# PT simulation result of pressure with 3 cases
    >>> print(result.node)
    >>> {'PWSTATIC=2000 psia Flowrate=4035.663 sbbl/day':
                {'BranchEquipment': ['GL-1', None, None, 'Compressor', 'GL-2'],
                'Pressure': [2000, 1898.0, 1888.0, 1788.0, 1568.0]
                },
         'PWSTATIC=3000 psia Flowrate=6423.735 sbbl/day':
                {'BranchEquipment': ['GL-1', None, None, 'Compressor', 'GL-2'],
                'Pressure': [3000, 2798.0, 2678.0, 2354.0, 2312.0]
                },
         'PWSTATIC=4000 psia Flowrate=8874.929 sbbl/day':
                {'BranchEquipment': ['GL-1', None, None, 'Compressor', 'GL-2'],
                'Pressure': [4000, 4798.0, 4578.0, 4335.0, 4321.0]
                },
        }
    >>> \# get pressure results for the first case
    >>> result.profile[result.cases[0]][SystemVariables.PRESSURE]

property spot_reports

property esp_curves
Esp curve results of simulation.

Returns:
The result for single branch simulation is a dictionary of a collection of nested dictionaries. The key of outer dictionary is case name. The value is a collection of nested dictionaries. Each single nested dictonary is defaultdict with key of ESP pump name and value is a dictionary with two keys: ‘Speed’ and ‘Performance’ ‘Speed’ is a dictionary with two keys: ‘Frequncies’ and ‘Additional’. ‘Frequencies’ is a dictionay, the keys are frequncy values(‘Freq=45’, ‘Freq=40’,…) The values each contain two dictionaries. One for the flowrate and one for Head. Each of these curves is a dictionary with two keys: ‘Unit’ and Values’ Units is a string for the unit symbol. ‘Values’ is an array of doubles. ‘Performance’ is a dictionary with four keys. Each key is a name describing the curve: Flowrate, Head, Power and Efficiency. Each of these curves is a dictionary with two keys: ‘Unit’ and Values’ Units is a string for the unit symbol. ‘Values’ is an array of doubles.

Return type:
dictionary

Examples

    >>> esp_results = result.esp_curves[result.cases[0]]
    >>> \# get frequency curves
    >>> for freq_name, speed_curve_xy in esp_results['B-ESP'][EspCurvesVariables.SPEED][EspCurvesVariables.FREQUENCIES].items():
            for name,curve in speed_curve_xy.items():
                print(curve[EspCurvesVariables.UNIT])
                print(curve[EspCurvesVariables.VALUES])
                print(freq_name)

property profile_units
Units of simulation profile result.

Returns:
The key is the profile variable name and value is the corresponding unit.

Return type:
Dict

Examples

    >>> print(result.profile_units)
    >>> {'BranchEquipment': '',
         'Elevation': 'ft',
         'Pressure': 'psia',
         'Temperature': 'degF',
         'TotalDistance': 'ft'}

property cases
Case names for single branch simulation.

Returns:
The case names of single branch simulation. The order is the same as the sequence shown in Pipesim UI.

Return type:
List

Examples

    >>> print(result.cases)
    >>> ['PWSTATIC=2000 psia Flowrate=4035.663 sbbl/day',
         'PWSTATIC=3000 psia Flowrate=6423.735 sbbl/day',
         'PWSTATIC=4000 psia Flowrate=8874.929 sbbl/day']

property messages
Console messages from engine for the simulation. The messages are the same as those shown under Engine console tab when running simulation in Pipesim UI.

Returns:
A list of engine console messages

Return type:
List[str]

Examples

    >>> result.messages

property summary
Summary of simulation status. The summary contains general information as well as warnings and errors, which are the same messages shown in message center in Pipesim UI after running simulation.

Returns:
summary[‘Info’] is a list of information messages about simulation status. summary[‘Error’] is a list of error messages about simulation status. summary[‘Warning’] is a list of warning messages about simulation status.

Return type:
Dict

Examples

    >>> result.summary['Info']
    >>> result.summary['Error']
    >>> result.summary['Warning']

property state
Simulation state, which can be SimulationState.RUNNING, SimulationState.COMPLETED or SimulationState.FAILED.

Returns:
The state of simulation

Return type:
str

Examples

    >>> result.state

class sixgill.simulation_result.NodalAnalysisResult(units_mgr, web_api_result, simulation, state)
Bases: SimulationResult

property inflow_curves
Inflow curves of nodal analysis simulation.

Returns:
A list of curve objects. Each curve object contains case name, curve data and units. The curve data has the results for inflow gas flowrate, mass flowrate and liquid flowrate and nodal point pressure as well their units. Fluid base from results can be used to select which phase of inflow curve data is desired.

For simulation with multiple inflow curves, the order of the list is the same as the sequence shown in Pipesim UI.

Return type:
List(Curve)

Examples

    >>> \# the case name of first inflow curve data
    >>> result.inflow_curves[0].case
    >>> \# inflow curve data in the first case
    >>> curve = result.inflow_curves[0].curve_data
    >>> \# inflow curve data of liquid flowrate in the first case
    >>> curve[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_LIQUID_STOCKTANK]
    >>> \# inflow curve data of mass flowrate in the first case
    >>> curve[SystemVariables.NODAL_POINT_MASS_FLOWRATE_FLUID]
    >>> \# inflow curve data of gas flowrate in the first case
    >>> curve[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_GAS_STOCKTANK]
    >>> \# inflow curve data of pressure in the first case
    >>> curve[SystemVariables.NODAL_POINT_PRESSURE]
    >>> \# inflow curve units
    >>> units = result.inflow_curves[0].units
    >>> \# the unit of liquid flowrate
    >>> units[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_LIQUID_STOCKTANK]
    >>> \# the unit of mass flowrate
    >>> units[SystemVariables.NODAL_POINT_MASS_FLOWRATE_FLUID]
    >>> \# the unit of gas flowrate
    >>> units[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_GAS_STOCKTANK]
    >>> \# the unit of pressure
    >>> units[SystemVariables.NODAL_POINT_PRESSURE]

property outflow_curves
Outflow curves of nodal analysis simulation.

Returns:
A list of Curve objects. Each Curve object contains case name, curve data and units. The curve data has the results for outflow gas flowrate, mass flowrate and liquid flowrate and nodal point pressure as well their units. Fluid base from results can be used to select which phase of outflow curve data is desired.

For simulation with multiple outflow curves, the order of the list is the same as the sequence shown in Pipesim UI.

Return type:
List(Curve)

Examples

    >>> \# the case name of first outflow curve data
    >>> result.outflow_curves[0].case
    >>> \# outflow curve data in the first case
    >>> curve = result.outflow_curves[0].curve_data
    >>> \# outflow curve data of liquid flowrate in the first case
    >>> curve[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_LIQUID_STOCKTANK]
    >>> \# outflow curve data of mass flowrate in the first case
    >>> curve[SystemVariables.NODAL_POINT_MASS_FLOWRATE_FLUID]
    >>> \# outflow curve data of gas flowrate in the first case
    >>> curve[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_GAS_STOCKTANK]
    >>> \# outflow curve data of pressure in the first case
    >>> curve[SystemVariables.NODAL_POINT_PRESSURE]
    >>> \# outflow curve units
    >>> units = result.outflow_curves[0].units
    >>> \# the unit of liquid flowrate
    >>> units[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_LIQUID_STOCKTANK]
    >>> \# the unit of mass flowrate
    >>> units[SystemVariables.NODAL_POINT_MASS_FLOWRATE_FLUID]
    >>> \# the unit of gas flowrate
    >>> units[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_GAS_STOCKTANK]
    >>> \# the unit of pressure
    >>> units[SystemVariables.NODAL_POINT_PRESSURE]

property operating_envelope
Operating envelope of nodal analysis simulation. The envelope is only generated for simulation with a single case.

Returns:
OperatingEnvelope object has total of six lines for max drawdown, reservoir pressure, erosional velocity, aofp, inversion point and liquid loading, respectively. Each line has coordinates and units for each phase, including gas flowrate and corresponding pressure, liquid flowrate and corresponding pressure, mass flowrate and corresponding pressure. Fluid base from results can be used to select which phase of each envelope line is desired.

Return type:
OperatingEnvelope

Examples

    >>> \# max drawdown line for each phase and units.
    >>> max_drawdown = result.operating_envelope.max_drawdown
    >>> max_drawdown[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATE]
    >>> max_drawdown[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATEPRESSURE]
    >>> max_drawdown[Parameters.NodalOperatingEnvelopePlot.LIQUIDFLOWRATE]
    >>> max_drawdown[Parameters.NodalOperatingEnvelopePlot.LIQUIDFLOWRATEPRESSURE]
    >>> max_drawdown[Parameters.NodalOperatingEnvelopePlot.MASSFLOWRATE]
    >>> max_drawdown[Parameters.NodalOperatingEnvelopePlot.MASSFLOWRATEPRESSURE]
    >>> units = result.operating_envelope.max_drawdown_units
    >>> units[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATE]
    >>> units[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATEPRESSURE]
    >>> units[Parameters.NodalOperatingEnvelopePlot.LIQUIDFLOWRATE]
    >>> units[Parameters.NodalOperatingEnvelopePlot.LIQUIDFLOWRATEPRESSURE]
    >>> units[Parameters.NodalOperatingEnvelopePlot.MASSFLOWRATE]
    >>> units[Parameters.NodalOperatingEnvelopePlot.MASSFLOWRATEPRESSURE]
    >>> \# gas phase reservoir pressure line
    >>> res_pres = result.operating_envelope.reservoir_pressure
    >>> res_pres[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATE]
    >>> res_pres[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATEPRESSURE]
    >>> \# gas phase erosional velocity line
    >>> ero_velocity = result.operating_envelope.erosional_velocity
    >>> ero_velocity[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATE]
    >>> ero_velocity[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATEPRESSURE]
    >>> \# gas phase aofp line
    >>> aofp = result.operating_envelope.aofp
    >>> aofp[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATE]
    >>> aofp[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATEPRESSURE]
    >>> \# gas phase inversion point line
    >>> inversion_point = result.operating_envelope.inversion_point
    >>> inversion_point[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATE]
    >>> inversion_point[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATEPRESSURE]
    >>> \# gas phase liuquid loading line
    >>> liquid_loading = result.operating_envelope.liquid_loading
    >>> liquid_loading[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATE]
    >>> liquid_loading[Parameters.NodalOperatingEnvelopePlot.GASFLOWRATEPRESSURE]

property operating_points
Operating points of nodal analysis simulation.

Returns:
A list of OperationPoint objects. Each OperationPoint object contains case name, point data and units. The point data has the results for gas flowrate, mass flowrate, liquid flowrate, nodal point pressure as well as their units. Fluid base from results can be used to select which phase of operating point data is desired.

For simulation with multiple operating points, the order of the list is the same as the sequence shown in Pipesim UI.

Return type:
List(OperationPoint)

Examples

    >>> \# operating point data for each phase and units in the first case
    >>> point = result.operating_points[0].point_data
    >>> point[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_LIQUID_STOCKTANK]
    >>> point[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_GAS_STOCKTANK]
    >>> point[SystemVariables.NODAL_POINT_MASS_FLOWRATE_FLUID]
    >>> point[SystemVariables.NODAL_POINT_PRESSURE]
    >>> units = result.operating_points[0].units
    >>> units[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_LIQUID_STOCKTANK]
    >>> units[SystemVariables.NODAL_POINT_VOLUME_FLOWRATE_GAS_STOCKTANK]
    >>> units[SystemVariables.NODAL_POINT_MASS_FLOWRATE_FLUID]
    >>> units[SystemVariables.NODAL_POINT_PRESSURE]

property fluid_base
The fluid base of nodal simulation results. The fliud base can be gas, mass or liquid, which can be used to select which phase of flow curves, operating envelope and operating point data are desired.

Returns:

str
The fluid base of nodal simulation results.

Examples

    >>> result.fluid_base

property inflow_cases
Case names for inflow curves.

Returns:
The case names of inflow curves. The order is the same as the sequence shown in Pipesim UI.

Return type:
List

Examples

    >>> result.inflow_cases

property outflow_cases
Case names for outflow curves.

Returns:
The case names of outflow curves. The order is the same as the sequence shown in Pipesim UI.

Return type:
List

Examples

    >>> result.outflow_cases

sixgill.utilities module

The utilities submodule provides useful methods for working with Excel.

sixgill.utilities.active_sheet()
Return the currently active Excel worksheet

sixgill.utilities.range_to_dataframe(excel_range=[], entriesbyrow=False)
Convert an excel range which is a list of lists to a panda DataFrame

sixgill.utilities.range_to_dictionary(excel_range=[], entriesbyrow=False)
Convert an excel range which is a list of lists to a dictionary of dictionaries

sixgill.utilities.current_folder()
Return the folder (path) for the workbook

sixgill.utilities.worksheet_last_row(worksheet=None)
Return the last row with data given a specified column

sixgill.utilities.worksheet_last_column(worksheet=None)
Return the last row with data given a specified column

sixgill.utilities.get_refers_to_range(rangeName)
Return refers_to_range from specified range name

sixgill.utilities.clear_contents(collection)
Clean contents of specified collection(range or sheet)

sixgill.utilities.get_model_session(filename, units='PIPESIM_FIELD')
Return the active model session that the workbook is connected to

sixgill.utilities.convert_tubing_bmd(bmd: List)
Convert tubing BMD to TMD and length

sixgill.utilities.is_lessthan_or_equal(a, b)

sixgill.utilities.is_greaterthan_or_equal(a, b)

sixgill.utilities.is_Nan_or_None(a, b)

sixgill.vfp_tables_simulation module

The vfp_tables_simulation module maintains the high level VFP tables methods for the Pipesim Python Toolkit.

class sixgill.vfp_tables_simulation.VfpTablesOperationSimulation(model, sim_type)
Bases: AbstractSingleBranchSimulation

Various methods supporting the VFP tables

get_conditions(producer, study: str | None = None) Dict
Returns the VFP tables boundary conditions.

Returns the VFP tables boundary conditions for the specified study. If the VFP tables simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the VFP tables simulation task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The boundary condition for the study specified.

Return type:
dict

Examples

    >>> vfp_sim_conditions = model.tasks.vfptablessimulation.get_conditions("Well 1")
    >>> vfp_sim_conditions = model.tasks.vfptablessimulation.get_conditions("Well 1", "Study 1")
    >>> vfp_sim_conditions = model.tasks.vfptablessimulation.get_conditions("Well 1", study="Study 1")

set_conditions(producer, parameters={}, study: str | None = None)
Sets the VFP tables boundary conditions.

Sets the VFP tables boundary conditions for the study specified. If the VFP tables simulation task does not exist in the study, a new one will be created.

Parameters:

  • parameters (dict) – Required. The conditions for VFP tables task to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The existing or created VFP tables simulation operation.

Return type:
VFP tables simulation operation

Examples

    >>> model.tasks.vfptablessimulation.set_conditions("Well 1",
                parameters={
                    Parameters.VfpTablesSimulation.RESERVOIRSIMULATOR:Constants.VFPTablesOperationTable.ECLIPSE,
                    Parameters.VfpTablesSimulation.BOTTOMHOLEDATUMDEPTH:150.2,
                    Parameters.VfpTablesSimulation.TABLENUMBER:2,
                    Parameters.VfpTablesSimulation.INCLUDETEMPERATURE:True,
                    Parameters.VfpTablesSimulation.BRANCHTERMINATOR:"J-1",
                            })
    >>> model.tasks.vfptablessimulation.set_conditions("Source 1",
                parameters={
                    Parameters.VfpTablesSimulation.RESERVOIRSIMULATOR:Constants.VFPTablesOperationTable.ECLIPSE,
                    Parameters.VfpTablesSimulation.BOTTOMHOLEDATUMDEPTH:150.2,
                    Parameters.VfpTablesSimulation.TABLENUMBER:2,
                    Parameters.VfpTablesSimulation.INCLUDETEMPERATURE:True,
                    Parameters.VfpTablesSimulation.VFPTABLETYPE:Constants.VfpTablesType.PRODUCTION,
                            }, study = "Study 1")

run(producer, parameters: dict | None = None, study: str | None = None)
Runs a VFP tables task

Runs a VFP tables task for the specified study. If the VFP tables simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the VFP tables simulation task.

  • parameters (dict) – Optional. The parameters and respective values on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

  • Returns (dict) – Results of a VFP tables simulation run.

Examples

    >>> model.tasks.vfptablessimulation.run("Well 1",
                parameters={
                    Parameters.VfpTablesSimulation.RESERVOIRSIMULATOR:Constants.VFPTablesOperationTable.ECLIPSE,
                    Parameters.VfpTablesSimulation.BOTTOMHOLEDATUMDEPTH:150.2,
                    Parameters.VfpTablesSimulation.TABLENUMBER:2,
                    Parameters.VfpTablesSimulation.INCLUDETEMPERATURE:True,
                    Parameters.VfpTablesSimulation.VFPTABLETYPE:Constants.VfpTablesType.PRODUCTION,
                            })
    >>> model.tasks.vfptablessimulation.run("Well 1",
                parameters={
                    Parameters.VfpTablesSimulation.RESERVOIRSIMULATOR:Constants.VFPTablesOperationTable.ECLIPSE,
                    Parameters.VfpTablesSimulation.BOTTOMHOLEDATUMDEPTH:150.2,
                    Parameters.VfpTablesSimulation.TABLENUMBER:2,
                    Parameters.VfpTablesSimulation.INCLUDETEMPERATURE:True,
                    Parameters.VfpTablesSimulation.VFPTABLETYPE:Constants.VfpTablesType.PRODUCTION,
                            }, study = "Study 1")

start(producer, parameters: dict | None = None, study: str | None = None)
Starts running a simulation of the specified type, returning the simulation id immediately which can be used later to check the status and get the results. If the VFP tables simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the VFP tables simulation task.

  • parameters (dict) – Optional. The boundary conditions to be set on the study.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The simulation id, which can be used to access simulation status and get the results.

Return type:
str

Examples

    >>> model.tasks.vfptablessimulation.start("Source 1",
                parameters={
                    Parameters.VfpTablesSimulation.RESERVOIRSIMULATOR:Constants.VFPTablesOperationTable.ECLIPSE,
                    Parameters.VfpTablesSimulation.BOTTOMHOLEDATUMDEPTH:150.2,
                    Parameters.VfpTablesSimulation.TABLENUMBER:2,
                    Parameters.VfpTablesSimulation.INCLUDETEMPERATURE:True,
                    Parameters.VfpTablesSimulation.VFPTABLETYPE:Constants.VfpTablesType.PRODUCTION,
                            })
    >>> model.tasks.vfptablessimulation.start("Source 1",
                parameters={
                    Parameters.VfpTablesSimulation.RESERVOIRSIMULATOR:Constants.VFPTablesOperationTable.ECLIPSE,
                    Parameters.VfpTablesSimulation.BOTTOMHOLEDATUMDEPTH:150.2,
                    Parameters.VfpTablesSimulation.TABLENUMBER:2,
                    Parameters.VfpTablesSimulation.INCLUDETEMPERATURE:True,
                    Parameters.VfpTablesSimulation.VFPTABLETYPE:Constants.VfpTablesType.PRODUCTION,
                            }, study = "Study 1")

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the specified study.

Generate the engine file(s) for the requested study. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the VFP tables simulation task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.vfptablessimulation.generate_engine_files(
                                producer="Well 1")
    >>> engine_files = model.tasks.vfptablessimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp")
    >>> engine_files = model.tasks.vfptablessimulation.generate_engine_files(
                                producer="Well 1", folder_path="D:/Temp",
                                study="Study 1")

get_artificial_lift_variables(producer, study: str | None = None) List[str]
Get the available artificial lift sensitivity variable list.

If the VFP tables simulation task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the VFP tables simulation task.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
a list of sensitivity variables names that can be applied to this task.

Return type:
list

Examples

    >>> model.tasks.vfptablessimulation.get_artificial_lift_variables("Well 1")
    >>> model.tasks.vfptablessimulation.get_artificial_lift_variables("Well 1",
                      study="Study 2")

sixgill.validation module

Definition of the ValidationIssue class

class sixgill.validation.ValidationIssue(issue, model)
Bases: object

A class to describe a validation issue

property path
The path to the issue

property message
The error message

property property_name
The name of the property causing the error

sixgill.wellcalibration_simulation_result module

Well Calibration Simulation Result class.

class sixgill.wellcalibration_simulation_result.WellCalibrationResult(units_mgr, web_api_result, simulation, state)
Bases: SimulationResult

Result class for Well Calibration simulations.

Extends SimulationResult with calibration-specific properties:

  • cases: List of test case names

  • converged_cases: List of converged test case names (excludes Normalized and unconverged)

  • matching_quality: Matching quality data for each case

  • tuning_parameters: Tuning parameter data for each case

property cases
List of test case names from the calibration results.

Returns:
A list of case names from the calibration results.

Return type:
list

Examples

    >>> results = model.tasks.wellcalibration.run(producer="Well 1", study="Study 1")
    >>> print(results.cases)
    ['Test 21Feb25', 'Test 01Jan20-1', 'Test 01Jan20-2', 'Normalized']

property matching_quality
Matching quality results for each test case.

Returns a dictionary keyed by case name, where each value contains the matching quality data (measured vs calibrated values) for that case.

Returns:
Dictionary keyed by case name with matching quality data. Each case contains a list of parameter results with:

  • ParameterName: Name of the test parameter

  • Unit: Unit of measurement

  • Measured: Measured value

  • OriginalModel: Original model value before calibration

  • OriginalModelDiff: Absolute difference between original model and measured (in session units)

  • Calibrated: Calibrated value

  • CalibratedDiff: Absolute difference between calibrated and measured (in session units)

  • Normalized: Normalized value (weighted across tests)

  • NormalizedDiff: Absolute difference between normalized and measured (in session units)

Return type:
dict

Examples

    >>> results = model.tasks.wellcalibration.run(producer="Well 1", study="Study 1")
    >>> \# Get matching quality for first case
    >>> case_mq = results.matching_quality[results.cases[0]]
    >>> for row in case_mq:
    ...     print(f"{row['ParameterName']}: Measured={row['Measured']}, Calibrated={row['Calibrated']}")

property tuning_parameters
Tuning parameter results for each test case.

Returns a dictionary keyed by case name, where each value contains the tuning parameter data (initial vs optimized values) for that case.

Returns:
Dictionary keyed by case name with tuning parameter data. Each case contains a list of parameter results with:

  • ParameterName: Name of the calibration parameter

  • Unit: Unit of measurement

  • Initial: Initial value before calibration

  • Optimized: Optimized value after calibration

  • OptimizedDiff: Absolute difference between initial and optimized (in session units)

  • Normalized: Normalized value (weighted across tests)

  • NormalizedDiff: Absolute difference between initial and normalized (in session units)

Return type:
dict

Examples

    >>> results = model.tasks.wellcalibration.run(producer="Well 1", study="Study 1")
    >>> \# Get tuning parameters for first case
    >>> case_tp = results.tuning_parameters[results.cases[0]]
    >>> for row in case_tp:
    ...     print(f"{row['ParameterName']}: Initial={row['Initial']}, Optimized={row['Optimized']}")

property profile
Well calibration profile results organized by case, profile type, and parameter.

Returns:
Nested dict: case_name, profile_type, parameter, values.

Profile types:

  • Original

  • Calibrated

  • Normalized

Parameters:

  • Pressure

  • Temperature

  • Elevation

  • MeasuredDepth

Return type:
dict

Examples

    >>> results = model.tasks.wellcalibration.run(producer="Well 1", study="Study 1")
    >>> results.profile["Test 21Feb25"][Constants.WellCalibration.Profile.CALIBRATED]["Pressure"]
    [4000, 4000, 3972.476, ...]

property converged_cases
List of converged test case names from the calibration results.

Filters out the ‘Normalized’ case and any unconverged cases (names ending with ‘[UNCV.]’).

Returns:
A list of converged case names.

Return type:
list

Examples

    >>> results = model.tasks.wellcalibration.run(producer="Well 1", study="Study 1")
    >>> print(results.converged_cases)
    ['Test 21Feb25', 'Test 01Jan20-1']

sixgill.Tasks.well_calibration_task module

The well_calibration_task module maintains the high level well calibration methods for the Pipesim Python Toolkit.

class sixgill.Tasks.well_calibration_task.WellCalibrationTask(model, sim_type)
Bases: AbstractSingleBranchSimulation

Well Calibration simulation task.

get_conditions(producer, study: str | None = None)
Returns the well calibration conditions.

Returns the well calibration test data for the specified study. If the well calibration task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the well calibration task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
Dictionary containing ‘TestData’ for the well calibration.

Return type:
dict

Examples

    >>> wc_conditions = model.tasks.wellcalibration.get_conditions("Well 1")
    >>> wc_conditions = model.tasks.wellcalibration.get_conditions("Well 1", "Study 2")

set_conditions(producer, conditions, study: str | None = None)
Sets the well calibration conditions.

Updates the well calibration test data for the specified study. If the well calibration task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the well calibration task

  • conditions (dict) – Required. Dictionary with ‘TestData’ key containing a list of test data dictionaries. Should match the structure returned by get_conditions.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Return type:
None

Examples

    >>> conditions = model.tasks.wellcalibration.get_conditions("Well 1")
    >>> \# Modify conditions as needed
    >>> conditions['TestData'][0]['IsActive'] = False
    >>> model.tasks.wellcalibration.set_conditions("Well 1", conditions)

generate_engine_files(producer, folder_path: str | None = None, study: str | None = None) List[str]
Create engine files for the well calibration task.

Generate the engine file(s) for the requested study. One PST file is generated per active test data entry. The files are written to the specified folder, or to the current model folder if one is not given.

Parameters:

  • producer (str) – Required. The name of the producer for the well calibration task.

  • folder_path (str) – Optional. The folder location where the generated files are written to. If not specified, the files will be written to current Pipesim model file folder.

  • study (str) – Optional. The study name.

Returns:
The list of engine files generated.

Return type:
List[str]

Examples

    >>> engine_files = model.tasks.wellcalibration.generate_engine_files(
    ...                     producer="Well 1")
    >>> engine_files = model.tasks.wellcalibration.generate_engine_files(
    ...                     producer="Well 1", folder_path="D:/Temp")
    >>> engine_files = model.tasks.wellcalibration.generate_engine_files(
    ...                     producer="Well 1", folder_path="D:/Temp",
    ...                     study="Study 1")

run(producer, profile_variables=None, system_variables=None, study: str | None = None)
Runs the well calibration simulation.

Runs the well calibration simulation for the specified producer and study. If the well calibration task does not exist in the study, a new one will be created.

Parameters:

  • producer (str) – Required. The name of the producer for the well calibration simulation task

  • profile_variables (list) – Optional. List of profile variables to output

  • system_variables (list) – Optional. List of system variables to output

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
A simulation result object containing the results, including:

  • cases: List of test case names (e.g., [‘Test 21Feb25’, ‘Test 01Jan20’, ‘Normalized’])

  • matching_quality: Dict keyed by case name with matching quality data

  • tuning_parameters: Dict keyed by case name with tuning parameter data

  • system: Standard system results

  • profile: Standard profile results

  • messages: Engine console messages

Return type:
WellCalibrationResult

Examples

    >>> results = model.tasks.wellcalibration.run(producer="Well 1", study="Study 1")
    >>> print(results.cases)
    ['Test 21Feb25', 'Test 01Jan20', 'Normalized']
    >>> \# Access matching quality for first case
    >>> for row in results.matching_quality[results.cases[0]]:
    ...     print(f"{row['ParameterName']}: Measured={row['Measured']}, Calibrated={row['Calibrated']}")
    >>> \# Access tuning parameters for first case
    >>> for row in results.tuning_parameters[results.cases[0]]:
    ...     print(f"{row['ParameterName']}: Initial={row['Initial']}, Optimized={row['Optimized']}")

start(producer, profile_variables=None, system_variables=None, study: str | None = None)
Starts the well calibration simulation asynchronously.

Parameters:

  • producer (str) – Required. The name of the producer for the well calibration simulation task

  • profile_variables (list) – Optional. List of profile variables to output

  • system_variables (list) – Optional. List of system variables to output

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The operation id, which can be used to access operation status and get the results.

Return type:
str

Examples

    >>> op_id = model.tasks.wellcalibration.start(producer="Well 1")

get_test_parameters(producer, study: str | None = None)
Gets the applicable test parameters for the well calibration operation.

Returns a list of parameter names that can be used for well calibration. The applicable parameters depend on the well configuration (e.g., equipment types, fluid type, completion setup).

Parameters:

  • producer (str) – Required. The name of the producer (well) for the well calibration task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
A list of test parameter name strings.

Example: ["Weight", "Wellhead pressure", ...]

Return type:
list

Examples

    >>> params = model.tasks.wellcalibration.get_test_parameters(producer="Well 1")
    >>> print(params)
    ['Weight', 'Wellhead pressure', 'Wellhead temperature', ...]

get_calibration_parameters(producer, study: str | None = None)
Gets the applicable calibration parameters for the well calibration operation.

Returns a list of calibration parameters with their names and calibrate flags. The applicable parameters depend on the well configuration. Each parameter has a ‘calibrate’ flag indicating whether it’s enabled for calibration by default.

Parameters:

  • producer (str) – Required. The name of the producer (well) for the well calibration task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
A list of dictionaries containing calibration parameter info with ParameterName and Calibrate keys.

Example: [{'ParameterName': 'Vertical friction factor', 'Calibrate': True}, ...]

Return type:
list

Examples

    >>> params = model.tasks.wellcalibration.get_calibration_parameters(producer="Well 1")
    >>> print(params)
    [{'ParameterName': 'Vertical friction factor', 'Calibrate': True}, ...]
    >>> \# Access using constants
    >>> param_name = params[0][Constants.WellCalibration.PARAMETERNAME]
    >>> calibrate_flag = params[0][Constants.WellCalibration.CALIBRATE]

set_calibration_parameters(producer, calibration_parameters, study: str | None = None)
Sets the calibrate flag for calibration parameters in the well calibration operation.

Updates which calibration parameters should be included in the calibration process. Only the parameters specified in the input will be modified; others remain unchanged.

Parameters:

  • producer (str) – Required. The name of the producer (well) for the well calibration task

  • calibration_parameters (list or dict) –

    Required. Calibration parameters to update. Can be:

    • List of dicts: [{PARAMETERNAME: ‘param_name’, CALIBRATE: True/False}, …]

    • Dict: {‘param_name’: True/False, …}

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Return type:
None

Examples

    >>> \# Using list of dicts (recommended - uses constants)
    >>> params = [
    ...     {Constants.WellCalibration.PARAMETERNAME: 'Vertical friction factor',
    ...      Constants.WellCalibration.CALIBRATE: True},
    ...     {Constants.WellCalibration.PARAMETERNAME: 'GOR',
    ...      Constants.WellCalibration.CALIBRATE: False}
    ... ]
    >>> model.tasks.wellcalibration.set_calibration_parameters("Well 1", params)
    >>> \# Using dict (parameter name to boolean mapping)
    >>> params = {
    ...     'Vertical friction factor': True,
    ...     'GOR': False
    ... }
    >>> model.tasks.wellcalibration.set_calibration_parameters("Well 1", params)

add_test_data(producer, test_data, study: str | None = None)
Adds a new test data entry to the well calibration operation.

Creates a new test data entry with the specified properties. The test data will be added to the well calibration operation for the specified producer and study. The test name is automatically generated from the date.

IMPORTANT: Maximum of 30 test data entries allowed per well calibration operation. If the limit is reached, a ValueError will be raised. Delete existing test data before adding new ones.

Parameters:

  • producer (str) – Required. The name of the producer (well) for the well calibration task

  • test_data (dict) –

    Required. Dictionary containing the test data properties:

    • ’Date’: str - Test date in ‘dd-MMM-yyyy’ format (e.g., ‘15-Jan-2024’). If not specified, current date/time will be used.

    • ’IsActive’: bool - Whether the test is active (default: True)

    • ’Comments’: str - Optional comments

    • ’TestValues’: list - Optional list of test data point dictionaries. Each entry should have ‘ParameterName’ and ‘Value’ keys.

    • ’ParameterFactors’: list - Optional list of parameter factor dictionaries. Each entry should have ‘ParameterName’, ‘MinValue’, ‘MaxValue’ keys.

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
The newly created WellCalibrationTestData domain object. Use the returned object’s ‘id’ property to uniquely identify the test data.

Return type:
object

Raises:
ValueError – If the maximum limit of 30 test data entries is reached

Examples

    >>> \# Add test with specific date
    >>> test_data = {
    ...     'Date': '15-Jan-2024',
    ...     'IsActive': True,
    ...     'Comments': 'New test data',
    ...     'TestValues': [
    ...         {'ParameterName': 'Wellhead pressure', 'Value': 1500.0},
    ...         {'ParameterName': 'Wellhead temperature', 'Value': 80.0}
    ...     ]
    ... }
    >>> new_test = model.tasks.wellcalibration.add_test_data("Well 1", test_data)
    >>> print(f"Created test with ID: {new_test.id}")
    >>> \# Add test with current date/time (Date not specified)
    >>> test_data = {
    ...     'IsActive': True,
    ...     'Comments': 'Test added with current date/time'
    ... }
    >>> new_test = model.tasks.wellcalibration.add_test_data("Well 1", test_data)
    >>> print(f"Created test with ID: {new_test.id}")

delete_test_data(producer, test_name, study: str | None = None)
Deletes a test data entry from the well calibration operation.

Removes the specified test data from the well calibration operation. The test data is identified by its name.

IMPORTANT: At least 1 test data entry must remain. Attempting to delete the last test data will raise a ValueError.

Parameters:

  • producer (str) – Required. The name of the producer (well) for the well calibration task

  • test_name (str) – Required. The name of the test data to delete

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
True if the test data was successfully deleted, False otherwise

Return type:
bool

Raises:
ValueError – If the test data with the specified name is not found, or if attempting to delete the last remaining test data (minimum 1 test data required)

Examples

    >>> \# Delete a test by name
    >>> success = model.tasks.wellcalibration.delete_test_data("Well 1", "Test 01-Jan-2024")
    >>> print(f"Deletion successful: {success}")
    >>> \# Delete within a specific study
    >>> success = model.tasks.wellcalibration.delete_test_data("Well 1", "Test 01-Jan-2024", study="Study 2")

reset_well_test_data(producer, test_name, study: str | None = None)
Resets boundary conditions for a specific test data entry.

Resets the TestDataPoints and ParameterFactors to their default values for the specified test data. TestWeight and Inlet/Outlet Pressure/Temperature are excluded from the reset.

Parameters:

  • producer (str) – Required. The name of the producer (well) for the well calibration task

  • test_name (str) – Required. The name of the test data to reset

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
True if the reset was successful

Return type:
bool

Raises:
RuntimeError – If the reset operation fails on the server

Examples

    >>> success = model.tasks.wellcalibration.reset_well_test_data("Well 1", "Test 15-Jan-2024")
    >>> print(f"Reset successful: {success}")
    >>> \# Reset within a specific study
    >>> success = model.tasks.wellcalibration.reset_well_test_data("Well 1", "Test 15-Jan-2024", study="Study 2")

get_terminators(producer, study: str | None = None)
Gets the list of valid branch end components for the well calibration operation.

Returns the names of all valid branch terminator equipment (wells, flowlines and risers) that can be used as the downstream endpoint for the calibration branch.

Parameters:

  • producer (str) – Required. The name of the producer (well) for the well calibration task

  • study (str) – Optional. The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
A list of valid terminator equipment name strings

Return type:
list

Examples

    >>> terminators = model.tasks.wellcalibration.get_terminators("Well 1")
    >>> print(terminators)
    ['Well 1', 'Flowline 1']

publish_calibration(producer: str, case_name: str, study: str | None = None)
Publishes calibration results to the model.

Applies the calibrated parameters (friction factors, holdup factors, PI, pressure, etc.) from the well calibration results back to the well equipment. Flow correlations are also published to wells, flowlines and risers.

This method requires that a well calibration simulation has been run first and the specified test case has converged results.

Parameters:

  • producer (str) – Required. The name of the producer (well)

  • case_name (str) – Required. The name of the test case to publish, or use Constants.WellCalibration.NORMALIZED to publish the normalized (weighted average) results across all test cases

  • study (str, optional) – The name of the study. If no name is specified and there is one default study, the default study will be used. If there are multiple studies in the model, study name is required.

Returns:
True if publish was successful

Return type:
bool

Raises:

  • RuntimeError – If the simulation has not been run or results are not available

  • ValueError – If the specified test case is not found or has not converged

Examples

    >>> \# Publish results for a specific test case
    >>> model.tasks.wellcalibration.publish_calibration(producer="Well 1", case_name="Test 08Jul25", study="Study 1")
    >>> \# Publish normalized results (weighted average across all tests)
    >>> model.tasks.wellcalibration.publish_calibration(producer="Well 1", case_name=Constants.WellCalibration.NORMALIZED, study="Study 1")