Full API Reference#

This page is a detailed reference guide to ALFAsim-SDK API. It includes a catalog of all supported CaseDescription and ALFAcase capabilities.

Case#

class CaseDescription#

Definitions

class CaseDescription
    name: Optional[str] = None
    physics: PhysicsDescription = PhysicsDescription()
    time_options: TimeOptionsDescription = TimeOptionsDescription()
    numerical_options: NumericalOptionsDescription = NumericalOptionsDescription()
    plugins: List[PluginDescription] = []
    ipr_models: IPRModelsDescription = IPRModelsDescription()
    pvt_models: PvtModelsDescription = PvtModelsDescription()
    tracers: TracersDescription = TracersDescription()
    outputs: CaseOutputDescription = CaseOutputDescription()
    pipes: List[PipeDescription] = []
    nodes: List[NodeDescription] = []
    wells: List[WellDescription] = []
    materials: List[MaterialDescription] = []
    walls: List[WallDescription] = []
name: string  # optional
physics: physics_description_schema # optional
time_options: time_options_description_schema # optional
numerical_options: numerical_options_description_schema # optional
plugins:  # optional
    - plugin_description_schema
ipr_models: ipr_models_description_schema # optional
pvt_models: pvt_models_description_schema # optional
tracers: tracers_description_schema # optional
outputs: case_output_description_schema # optional
pipes:  # optional
    - pipe_description_schema
nodes:  # optional
    - node_description_schema
wells:  # optional
    - well_description_schema
materials:  # optional
    - material_description_schema
walls:  # optional
    - wall_description_schema

Options#

class PhysicsDescription#

Definitions

class PhysicsDescription
    hydrodynamic_model: HydrodynamicModelType = HydrodynamicModelType.FourFields
    simulation_regime: SimulationRegimeType = SimulationRegimeType.Transient
    energy_model: EnergyModel = EnergyModel.NoModel
    solids_model: SolidsModelType = SolidsModelType.NoModel
    solids_model_plugin_id: str = ''
    initial_condition_strategy: InitialConditionStrategyType = InitialConditionStrategyType.Constant
    restart_filepath: Optional[Path] = None
    keep_former_results: bool = False
    emulsion_model_enabled: bool = True
    emulsion_relative_viscosity_model: EmulsionRelativeViscosityModelType = EmulsionRelativeViscosityModelType.ModelDefault
    emulsion_pal_rhodes_phi_rel_100: Scalar = Scalar(0.765, '-', 'dimensionless')
    emulsion_woelflin_a: Scalar = Scalar(4.2, '-', 'dimensionless')
    emulsion_woelflin_b: Scalar = Scalar(2.5, '-', 'dimensionless')
    emulsion_table_based_rel_visc_curve: Curve = Curve(-, m3/m3)[(1.0, 0.0)]
    emulsion_relative_viscosity_tuning_factor: Curve = Curve(-, m3/m3)[(1.0, 0.0)]
    emulsion_droplet_size_model: EmulsionDropletSizeModelType = EmulsionDropletSizeModelType.ModelDefault
    emulsion_inversion_point_model: EmulsionInversionPointModelType = EmulsionInversionPointModelType.ModelDefault
    emulsion_inversion_water_cut: Scalar = Scalar(0.4, 'm3/m3', 'volume per volume')
    flash_model: FlashModel = FlashModel.HydrocarbonAndWater
    correlations_package: CorrelationPackageType = CorrelationPackageType.Classical
hydrodynamic_model: HydrodynamicModelType # optional
simulation_regime: SimulationRegimeType # optional
energy_model: EnergyModel # optional
solids_model: SolidsModelType # optional
solids_model_plugin_id: string  # optional
initial_condition_strategy: InitialConditionStrategyType # optional
restart_filepath: string  # optional
keep_former_results: boolean  # optional
emulsion_model_enabled: boolean  # optional
emulsion_relative_viscosity_model: EmulsionRelativeViscosityModelType # optional
emulsion_pal_rhodes_phi_rel_100:  # optional
    value: number
    unit: string
emulsion_woelflin_a:  # optional
    value: number
    unit: string
emulsion_woelflin_b:  # optional
    value: number
    unit: string
emulsion_table_based_rel_visc_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
emulsion_relative_viscosity_tuning_factor:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
emulsion_droplet_size_model: EmulsionDropletSizeModelType # optional
emulsion_inversion_point_model: EmulsionInversionPointModelType # optional
emulsion_inversion_water_cut:  # optional
    value: number
    unit: string
flash_model: FlashModel # optional
correlations_package: CorrelationPackageType # optional
class TimeOptionsDescription#

Definitions

class TimeOptionsDescription
    stop_on_steady_state: bool = False
    automatic_restart_autosave_frequency: bool = True
    initial_time: Scalar = Scalar(0.0, 's', 'time')
    final_time: Scalar = Scalar(10.0, 's', 'time')
    initial_timestep: Scalar = Scalar(0.0001, 's', 'time')
    minimum_timestep: Scalar = Scalar(1e-12, 's', 'time')
    maximum_timestep: Scalar = Scalar(0.1, 's', 'time')
    restart_autosave_frequency: Scalar = Scalar(1.0, 'h', 'time')
    minimum_time_for_steady_state_stop: Scalar = Scalar(0.0, 's', 'time')
stop_on_steady_state: boolean  # optional
automatic_restart_autosave_frequency: boolean  # optional
initial_time:  # optional
    value: number
    unit: string
final_time:  # optional
    value: number
    unit: string
initial_timestep:  # optional
    value: number
    unit: string
minimum_timestep:  # optional
    value: number
    unit: string
maximum_timestep:  # optional
    value: number
    unit: string
restart_autosave_frequency:  # optional
    value: number
    unit: string
minimum_time_for_steady_state_stop:  # optional
    value: number
    unit: string
class NumericalOptionsDescription#

Definitions

class NumericalOptionsDescription
    nonlinear_solver_type: NonlinearSolverType = NonlinearSolverType.AlfasimQuasiNewton
    tolerance: float = 0.0001
    maximum_iterations: int = 5
    maximum_timestep_change_factor: float = 2
    maximum_cfl_value: float = 1.0
    relaxed_tolerance: float = 0.0
    divergence_tolerance: float = -1.0
    friction_factor_evaluation_strategy: EvaluationStrategyType = EvaluationStrategyType.TimeExplicit
    simulation_mode: SimulationModeType = SimulationModeType.Default
    enable_solver_caching: bool = True
    caching_rtol: float = 0.01
    caching_atol: float = 0.0001
    always_repeat_timestep: bool = False
    enable_fast_compositional: bool = True
nonlinear_solver_type: NonlinearSolverType # optional
tolerance: number  # optional
maximum_iterations: number  # optional
maximum_timestep_change_factor: number  # optional
maximum_cfl_value: number  # optional
relaxed_tolerance: number  # optional
divergence_tolerance: number  # optional
friction_factor_evaluation_strategy: EvaluationStrategyType # optional
simulation_mode: SimulationModeType # optional
enable_solver_caching: boolean  # optional
caching_rtol: number  # optional
caching_atol: number  # optional
always_repeat_timestep: boolean  # optional
enable_fast_compositional: boolean  # optional

Outputs#

class CaseOutputDescription#

Definitions

class CaseOutputDescription
    automatic_trend_frequency: bool = True
    trends: TrendsOutputDescription = TrendsOutputDescription()
    trend_frequency: Scalar = Scalar(0.1, 's', 'time')
    automatic_profile_frequency: bool = True
    profiles: List[ProfileOutputDescription] = []
    profile_frequency: Scalar = Scalar(0.1, 's', 'time')
automatic_trend_frequency: boolean  # optional
trends: trends_output_description_schema # optional
trend_frequency:  # optional
    value: number
    unit: string
automatic_profile_frequency: boolean  # optional
profiles:  # optional
    - profile_output_description_schema
profile_frequency:  # optional
    value: number
    unit: string
class ProfileOutputDescription#

Definitions

class ProfileOutputDescription
    curve_names: List[str]
    location: OutputAttachmentLocation
    element_name: str
curve_names:
    - str
location: OutputAttachmentLocation
element_name: string
class TrendsOutputDescription#

Definitions

class TrendsOutputDescription
    positional_pipe_trends: List[PositionalPipeTrendDescription] = []
    overall_pipe_trends: List[OverallPipeTrendDescription] = []
    global_trends: List[GlobalTrendDescription] = []
    equipment_trends: List[EquipmentTrendDescription] = []
    separator_trends: List[SeparatorTrendDescription] = []
    controller_trends: List[ControllerTrendDescription] = []
positional_pipe_trends:  # optional
    - positional_pipe_trend_description_schema
overall_pipe_trends:  # optional
    - overall_pipe_trend_description_schema
global_trends:  # optional
    - global_trend_description_schema
equipment_trends:  # optional
    - equipment_trend_description_schema
separator_trends:  # optional
    - separator_trend_description_schema
controller_trends:  # optional
    - controller_trend_description_schema
class SurgeVolumeOptionsDescription#

Definitions

class SurgeVolumeOptionsDescription
    time_mode: SurgeVolumeTimeMode = SurgeVolumeTimeMode.AllSimulation
    drainage_mode: DrainageRateMode = DrainageRateMode.Automatic
    start_time: Optional[Scalar] = None
    end_time: Optional[Scalar] = None
    maximum_drainage_rate: Optional[Scalar] = None
time_mode: SurgeVolumeTimeMode # optional
drainage_mode: DrainageRateMode # optional
start_time:  # optional
    value: number
    unit: string
end_time:  # optional
    value: number
    unit: string
maximum_drainage_rate:  # optional
    value: number
    unit: string
class PositionalPipeTrendDescription#

Definitions

class PositionalPipeTrendDescription
    name: Optional[str] = None
    curve_names: List[str]
    location: OutputAttachmentLocation
    position: Scalar
    element_name: str
    surge_volume_options: SurgeVolumeOptionsDescription = SurgeVolumeOptionsDescription()
name: string  # optional
curve_names:
    - str
location: OutputAttachmentLocation
position:
    value: number
    unit: string
element_name: string
surge_volume_options: surge_volume_options_description_schema # optional
class EquipmentTrendDescription#

Definitions

class EquipmentTrendDescription
    name: Optional[str] = None
    curve_names: List[str]
    element_name: str
name: string  # optional
curve_names:
    - str
element_name: string
class SeparatorTrendDescription#

Definitions

class SeparatorTrendDescription
    name: Optional[str] = None
    curve_names: List[str]
    element_name: str
name: string  # optional
curve_names:
    - str
element_name: string
class GlobalTrendDescription#

Definitions

class GlobalTrendDescription
    name: Optional[str] = None
    curve_names: List[str]
name: string  # optional
curve_names:
    - str
class OverallPipeTrendDescription#

Definitions

class OverallPipeTrendDescription
    name: Optional[str] = None
    curve_names: List[str]
    location: OutputAttachmentLocation
    element_name: str
name: string  # optional
curve_names:
    - str
location: OutputAttachmentLocation
element_name: string
class ControllerTrendDescription#

Definitions

class ControllerTrendDescription
    name: Optional[str] = None
    curve_names: List[str]
    element_name: str
name: string  # optional
curve_names:
    - str
element_name: string

PVTs#

class PvtModelsDescription#

Holds a PVT which is used by the simulator to obtain fluid characteristics, such as density and viscosity, given a certain pressure and temperature.

This class is a holder for the different ways the user can enter PVT information in the application.

Variables:
  • correlations – Standard black-oil correlations found in the literature. The user can tune the parameters used by the correlations.

  • compositions – Molar fluid compositions with molecular weights and densities for each component. It be light components and/or heavy fractions to be lumped into pseudo-components.

  • tables

    Load a complete PVT table obtained (usually) from lab results and generated by various software. Currently the user can import the table directly from a .tab file or a .alfatable file.

    The table parameter must be filled with a dictionary where the keys informs the name of the PVT and the values informs Path to a file with the Pvt model.

    • The value which holds the Path can be either relative or absolute.

    • The name of the pvt model from the Path can contains a ‘pipe’ character in order to select one of the multiples PVT tables in the same .tab file.

    Example

    Absolute Path, using MyPvtModel

    >>> Path("/home/user/my_file.tab|MyPvtModel")
    

    Relative Path, using MyPvtModel

    >>> Path("./my_file.tab|MyPvtModel")
    

  • pt_table_parameters

    INTERNAL USE ONLY

    This attribute is populated when exporting a Study to a CaseDescription, and it holds a model representation of a PVT originated from a (.tab / .alfatable) file.

    Their usage is directly related to the export of a CaseDescription to a .alfacase/.alfatable file, where the original PVT file cannot be guaranteed to exist therefore the only reproducible way to recreate the PVT is trough the PvtModelPtTableParametersDescription.

  • ph_table_parameters

    INTERNAL USE ONLY

    This attribute is populated when exporting a Study to a CaseDescription, and it holds a model representation of a PVT originating from a (.tab / .alfatable) file. Also, it holds values from a Pressure-Enthalpy PVT table, in which temperature is one of the output/state variables.

    Their usage is directly related to the export of a CaseDescription to a .alfacase/.alfatable file, where the original PVT file cannot be guaranteed to exist therefore the only reproducible way to recreate the PVT is trough the PvtModelPhTableParametersDescription.

Definitions

class PvtModelsDescription
    default_model: Optional[str] = None
    tables: Dict[str, Union[str, pathlib.Path]] = {}
    correlations: Dict[str, PvtModelCorrelationDescription] = {}
    compositional: Dict[str, PvtModelCompositionalDescription] = {}
    combined: Dict[str, PvtModelCombinedDescription] = {}
default_model: string  # optional
tables:  # optional
    string: string | Path
correlations:  # optional
    string: pvt_model_correlation_description_schema
compositional:  # optional
    string: pvt_model_compositional_description_schema
combined:  # optional
    string: pvt_model_combined_description_schema

Examples

PvtModelsDescription(
    default_model="PVT1",
    tables={
        'PVT1': Path('./my_tab_file.tab')
    },
)
pvt_models:
    default_model: PVT1
    tables:
        PVT1: ./my_tab_file.tab
class PvtModelCorrelationDescription#
Variables:
  • oil_density_std – default: Scalar(850.0, “kg/m3”)

  • gas_density_std – default: Scalar(0.9, “kg/m3”)

  • rs_sat – default: Scalar(150.0, “sm3/sm3”)

  • pvt_correlation_package – default: CorrelationPackage.Standing

  • h2s_mol_frac – default: Scalar(0.000001, “-“)

  • co2_mol_frac – default: Scalar(0.999999, “-“)

  • oil_viscosity – default: CorrelationsOilViscosity.Egbogah

  • gas_viscosity – default: CorrelationsGasViscosity.LeeGonzalezEakin

  • surface_tension – default: CorrelationsSurfaceTension.BakerSwerdloff

Definitions

class PvtModelCorrelationDescription
    oil_density_std: Scalar = Scalar(850.0, 'kg/m3', 'density')
    gas_density_std: Scalar = Scalar(0.9, 'kg/m3', 'density')
    rs_sat: Scalar = Scalar(150.0, 'sm3/sm3', 'standard volume per standard volume')
    pvt_correlation_package: CorrelationPackage = CorrelationPackage.Standing
    h2s_mol_frac: Scalar = Scalar(0.0, '-', 'dimensionless')
    co2_mol_frac: Scalar = Scalar(0.0, '-', 'dimensionless')
    oil_viscosity: CorrelationsOilViscosity = CorrelationsOilViscosity.Egbogah
    gas_viscosity: CorrelationsGasViscosity = CorrelationsGasViscosity.LeeGonzalezEakin
    surface_tension: CorrelationsSurfaceTension = CorrelationsSurfaceTension.BakerSwerdloff
oil_density_std:  # optional
    value: number
    unit: string
gas_density_std:  # optional
    value: number
    unit: string
rs_sat:  # optional
    value: number
    unit: string
pvt_correlation_package: CorrelationPackage # optional
h2s_mol_frac:  # optional
    value: number
    unit: string
co2_mol_frac:  # optional
    value: number
    unit: string
oil_viscosity: CorrelationsOilViscosity # optional
gas_viscosity: CorrelationsGasViscosity # optional
surface_tension: CorrelationsSurfaceTension # optional

Examples

PvtModelCorrelationDescription(
    default_model="PVT1",
)
some_value:
    some_other_value: fooo
class PvtModelPtTableParametersDescription#
Variables:
  • pressure_values – Array like of sorted pressure values (m number of entries). [Pa]

  • temperature_values – Array like of sorted temperature values (n number of entries). [K]

  • table_variables – List of array like values for each property such as densities, specific heats, enthalpies, etc.

  • variable_names – List of property names

class PvtModelPhTableParametersDescription#
Variables:
  • pressure_values – Array like of sorted pressure values (m number of entries). [Pa]

  • enthalpy_values – Array like of sorted enthalpy values (n number of entries). [J/Kg]

  • table_variables – List of array like values for each property such as densities, specific heats, enthalpies, etc.

  • variable_names – List of property names

PVT Combined#

class PvtModelCombinedDescription#
Variables:
  • reference_pvt_model – PVT model that will be used to calculate reference values such as properties at standard conditions.

  • fluids – default: {}

Definitions

class PvtModelCombinedDescription
    reference_pvt_model: Optional[str] = None
    fluids: Dict[str, CombinedFluidDescription] = {}
reference_pvt_model: string  # optional
fluids:  # optional
    string: combined_fluid_description_schema
class CombinedFluidDescription#

Definitions

class CombinedFluidDescription
    pvt_model: Optional[str] = None
pvt_model: string  # optional

PVT Compositional#

class PvtModelCompositionalDescription#
Variables:
  • equation_of_state_type – default: EquationOfStateType.PengRobinson

  • surface_tension_model_type – default: SurfaceTensionType.Weinaugkatz

  • viscosity_model – default: PVTCompositionalViscosityModel.CorrespondingStatesPrinciple

  • heavy_components – default: []

  • light_components – default: []

  • fluids – default: {}

Definitions

class PvtModelCompositionalDescription
    equation_of_state_type: EquationOfStateType = EquationOfStateType.PengRobinson
    surface_tension_model_type: SurfaceTensionType = SurfaceTensionType.Weinaugkatz
    viscosity_model: PVTCompositionalViscosityModel = PVTCompositionalViscosityModel.CorrespondingStatesPrinciple
    heavy_components: List[HeavyComponentDescription] = []
    light_components: List[LightComponentDescription] = []
    fluids: Dict[str, CompositionalFluidDescription] = {}
equation_of_state_type: EquationOfStateType # optional
surface_tension_model_type: SurfaceTensionType # optional
viscosity_model: PVTCompositionalViscosityModel # optional
heavy_components:  # optional
    - heavy_component_description_schema
light_components:  # optional
    - light_component_description_schema
fluids:  # optional
    string: compositional_fluid_description_schema
class HeavyComponentDescription#

Definitions

class HeavyComponentDescription
    name: str
    scn: int
    MW: Scalar = Scalar(0.0, 'kg/mol', 'mass per mol')
    rho: Scalar = Scalar(0.0, 'kg/m3', 'density')
name: string
scn: number
MW:  # optional
    value: number
    unit: string
rho:  # optional
    value: number
    unit: string
class LightComponentDescription#

Definitions

class LightComponentDescription
    name: str
    Pc: Scalar = Scalar(0.0, 'Pa', 'pressure')
    Tc: Scalar = Scalar(0.0, 'K', 'temperature')
    Vc: Scalar = Scalar(0.0, 'm3/mol', 'molar volume')
    omega: Scalar = Scalar(0.0, '-', 'dimensionless')
    MW: Scalar = Scalar(0.0, 'kg/mol', 'mass per mol')
    Tb: Scalar = Scalar(0.0, 'K', 'temperature')
    Parachor: Scalar = Scalar(0.0, '-', 'dimensionless')
    Cp_0: Scalar = Scalar(0.0, '-', 'dimensionless')
    Cp_1: Scalar = Scalar(0.0, '-', 'dimensionless')
    Cp_2: Scalar = Scalar(0.0, '-', 'dimensionless')
    Cp_3: Scalar = Scalar(0.0, '-', 'dimensionless')
    Cp_4: Scalar = Scalar(0.0, '-', 'dimensionless')
name: string
Pc:  # optional
    value: number
    unit: string
Tc:  # optional
    value: number
    unit: string
Vc:  # optional
    value: number
    unit: string
omega:  # optional
    value: number
    unit: string
MW:  # optional
    value: number
    unit: string
Tb:  # optional
    value: number
    unit: string
Parachor:  # optional
    value: number
    unit: string
Cp_0:  # optional
    value: number
    unit: string
Cp_1:  # optional
    value: number
    unit: string
Cp_2:  # optional
    value: number
    unit: string
Cp_3:  # optional
    value: number
    unit: string
Cp_4:  # optional
    value: number
    unit: string
class CompositionalFluidDescription#

Definitions

class CompositionalFluidDescription
    composition: List[CompositionDescription] = []
    fraction_pairs: List[BipDescription] = []
composition:  # optional
    - composition_description_schema
fraction_pairs:  # optional
    - bip_description_schema
class CompositionDescription#
Variables:

component

Name of the component available created on:

PvtModelCompositionalDescription.light_components PvtModelCompositionalDescription.heavy_components

Note

CompositionDescription can only refer to components created from the same PvtModelCompositionalDescription

Definitions

class CompositionDescription
    component: str
    molar_fraction: Scalar = Scalar(0.0, 'mol/mol', 'mole per mole')
    reference_enthalpy: Scalar = Scalar(0.0, 'J/mol', 'molar thermodynamic energy')
component: string
molar_fraction:  # optional
    value: number
    unit: string
reference_enthalpy:  # optional
    value: number
    unit: string
class BipDescription#

Definitions

class BipDescription
    component_1: str
    component_2: str
    value: float
component_1: string
component_2: string
value: number

IPR#

class IPRModelsDescription#
Variables:
  • linear_models – A dictionary with the name of the IPR and the instance of the IPR Model.

  • vogel_models – A dictionary with the name of the IPR and the instance of the IPR Model.

  • fetkovich_models – A dictionary with the name of the IPR and the instance of the IPR Model.

  • forchheimer_models – A dictionary with the name of the IPR and the instance of the IPR Model.

  • table_models

Definitions

class IPRModelsDescription
    linear_models: Dict[str, LinearIPRDescription] = {}
    vogel_models: Dict[str, VogelIPRDescription] = {}
    fetkovich_models: Dict[str, FetkovichIPRDescription] = {}
    forchheimer_models: Dict[str, ForchheimerIPRDescription] = {}
    table_models: Dict[str, TableIPRDescription] = {}
linear_models:  # optional
    string: linear_ipr_description_schema
vogel_models:  # optional
    string: vogel_ipr_description_schema
fetkovich_models:  # optional
    string: fetkovich_ipr_description_schema
forchheimer_models:  # optional
    string: forchheimer_ipr_description_schema
table_models:  # optional
    string: table_ipr_description_schema
class LinearIPRDescription#

Definitions

class LinearIPRDescription
    well_index_phase: WellIndexPhaseType = WellIndexPhaseType.Oil
    min_pressure_difference: Scalar = Scalar(0.0, 'Pa', 'pressure')
    well_index_input_type: MultiInputType = MultiInputType.Constant
    well_index: Scalar = Scalar(24.0, 'm3/bar.d', 'productivity index')
    well_index_curve: Curve = Curve(m3/bar.d, s)[]
well_index_phase: WellIndexPhaseType # optional
min_pressure_difference:  # optional
    value: number
    unit: string
well_index_input_type: MultiInputType # optional
well_index:  # optional
    value: number
    unit: string
well_index_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
class VogelIPRDescription#

Definitions

class VogelIPRDescription
    well_index_phase: WellIndexPhaseType = WellIndexPhaseType.Oil
    min_pressure_difference: Scalar = Scalar(0.0, 'Pa', 'pressure')
    well_max_flow_rate_input_type: MultiInputType = MultiInputType.Constant
    well_max_flow_rate: Scalar = Scalar(1.0, 'sm3/d', 'standard volume per time')
    well_max_flow_rate_curve: Curve = Curve(sm3/d, s)[]
well_index_phase: WellIndexPhaseType # optional
min_pressure_difference:  # optional
    value: number
    unit: string
well_max_flow_rate_input_type: MultiInputType # optional
well_max_flow_rate:  # optional
    value: number
    unit: string
well_max_flow_rate_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
class FetkovichIPRDescription#

Definitions

class FetkovichIPRDescription
    well_index_phase: WellIndexPhaseType = WellIndexPhaseType.Oil
    min_pressure_difference: Scalar = Scalar(0.0, 'Pa', 'pressure')
    bubble_point_pressure: Scalar = Scalar(0.0, 'Pa', 'pressure')
    well_index_input_type: MultiInputType = MultiInputType.Constant
    well_index: Scalar = Scalar(24.0, 'm3/bar.d', 'productivity index')
    well_index_curve: Curve = Curve(m3/bar.d, s)[]
well_index_phase: WellIndexPhaseType # optional
min_pressure_difference:  # optional
    value: number
    unit: string
bubble_point_pressure:  # optional
    value: number
    unit: string
well_index_input_type: MultiInputType # optional
well_index:  # optional
    value: number
    unit: string
well_index_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
class ForchheimerIPRDescription#

Definitions

class ForchheimerIPRDescription
    calculate_coeff_option: ForchheimerCoefficientsOption = ForchheimerCoefficientsOption.ReservoirParameters
    well_index_phase: WellIndexPhaseType = WellIndexPhaseType.Gas
    min_pressure_difference: Scalar = Scalar(0.0, 'Pa', 'pressure')
    gas_viscosity: Scalar = Scalar(0.0, 'Pa.s', 'dynamic viscosity')
    gas_z_factor: Scalar = Scalar(0.0, '-', 'dimensionless')
    reservoir_permeability: Scalar = Scalar(0.0, 'm2', 'permeability rock')
    drainage_radius: Scalar = Scalar(0.0, 'm', 'length')
    well_radius: Scalar = Scalar(0.0, 'm', 'length')
    well_skin_factor: Scalar = Scalar(0.0, '-', 'dimensionless')
    non_darcy_parameter: Scalar = Scalar(0.0, 'Pa.s/m6', 'nonDarcy flow coefficient')
    B_coeff: Scalar = Scalar(0.0, 'Pa2.s/scm', 'forchheimer linear productivity index')
    C_coeff: Scalar = Scalar(0.0, 'Pa2.s2/scm2', 'forchheimer quadratic productivity index')
calculate_coeff_option: ForchheimerCoefficientsOption # optional
well_index_phase: WellIndexPhaseType # optional
min_pressure_difference:  # optional
    value: number
    unit: string
gas_viscosity:  # optional
    value: number
    unit: string
gas_z_factor:  # optional
    value: number
    unit: string
reservoir_permeability:  # optional
    value: number
    unit: string
drainage_radius:  # optional
    value: number
    unit: string
well_radius:  # optional
    value: number
    unit: string
well_skin_factor:  # optional
    value: number
    unit: string
non_darcy_parameter:  # optional
    value: number
    unit: string
B_coeff:  # optional
    value: number
    unit: string
C_coeff:  # optional
    value: number
    unit: string
class TableIPRDescription#

Definitions

class TableIPRDescription
    well_index_phase: WellIndexPhaseType = WellIndexPhaseType.Oil
    table: IPRCurveDescription = IPRCurveDescription()
well_index_phase: WellIndexPhaseType # optional
table: ipr_curve_description_schema # optional
class IPRCurveDescription#

Definitions

class IPRCurveDescription
    pressure_difference: Array = Array(pressure, [0.0], Pa)
    flow_rate: Array = Array(standard volume per time, [0.0], sm3/d)
pressure_difference:  # optional
    values: [number]
    unit: string
flow_rate:  # optional
    values: [number]
    unit: string

Tracer#

class TracersDescription#

Definitions

class TracersDescription
    constant_coefficients: Dict[str, TracerModelConstantCoefficientsDescription] = {}
constant_coefficients:  # optional
    string: tracer_model_constant_coefficients_description_schema
class TracerModelConstantCoefficientsDescription#

Definitions

class TracerModelConstantCoefficientsDescription
    partition_coefficients: Dict[str, Scalar] = {}
partition_coefficients:  # optional
    string:
        value: number
        unit: string

Initial Conditions#

class InitialConditionsDescription#

Definitions

class InitialConditionsDescription
    pressures: InitialPressuresDescription = InitialPressuresDescription()
    volume_fractions: InitialVolumeFractionsDescription = InitialVolumeFractionsDescription()
    tracers_mass_fractions: InitialTracersMassFractionsDescription = InitialTracersMassFractionsDescription()
    velocities: InitialVelocitiesDescription = InitialVelocitiesDescription()
    temperatures: InitialTemperaturesDescription = InitialTemperaturesDescription()
    fluid: Optional[str] = None
pressures: initial_pressures_description_schema # optional
volume_fractions: initial_volume_fractions_description_schema # optional
tracers_mass_fractions: initial_tracers_mass_fractions_description_schema # optional
velocities: initial_velocities_description_schema # optional
temperatures: initial_temperatures_description_schema # optional
fluid: string  # optional
class InitialPressuresDescription#

Definitions

class InitialPressuresDescription
    position_input_type: TableInputType = TableInputType.length
    table_x: ReferencedPressureContainerDescription = ReferencedPressureContainerDescription()
    table_y: ReferencedPressureContainerDescription = ReferencedPressureContainerDescription()
    table_length: PressureContainerDescription = PressureContainerDescription()
position_input_type: TableInputType # optional
table_x: referenced_pressure_container_description_schema # optional
table_y: referenced_pressure_container_description_schema # optional
table_length: pressure_container_description_schema # optional
class ReferencedPressureContainerDescription#

Definitions

class ReferencedPressureContainerDescription
    reference_coordinate: Scalar = Scalar(0.0, 'm', 'length')
    positions: Array = Array(length, [0.0], m)
    pressures: Array = Array(pressure, [100000.0], Pa)
reference_coordinate:  # optional
    value: number
    unit: string
positions:  # optional
    values: [number]
    unit: string
pressures:  # optional
    values: [number]
    unit: string
class PressureContainerDescription#

Definitions

class PressureContainerDescription
    positions: Array = Array(length, [0.0], m)
    pressures: Array = Array(pressure, [100000.0], Pa)
positions:  # optional
    values: [number]
    unit: string
pressures:  # optional
    values: [number]
    unit: string
class InitialVolumeFractionsDescription#

Definitions

class InitialVolumeFractionsDescription
    position_input_type: TableInputType = TableInputType.length
    table_x: ReferencedVolumeFractionsContainerDescription = ReferencedVolumeFractionsContainerDescription()
    table_y: ReferencedVolumeFractionsContainerDescription = ReferencedVolumeFractionsContainerDescription()
    table_length: VolumeFractionsContainerDescription = VolumeFractionsContainerDescription()
class ReferencedVolumeFractionsContainerDescription#

Definitions

class ReferencedVolumeFractionsContainerDescription
    reference_coordinate: Scalar = Scalar(0.0, 'm', 'length')
    positions: Array = Array(length, [], m)
    fractions: Dict[str, Array] = {}
reference_coordinate:  # optional
    value: number
    unit: string
positions:  # optional
    values: [number]
    unit: string
fractions:  # optional
    string:
        values: [number]
        unit: string
class VolumeFractionsContainerDescription#

Definitions

class VolumeFractionsContainerDescription
    positions: Array = Array(length, [0.0], m)
    fractions: Dict[str, Array] = {'gas': Array(dimensionless, [0.1], -), 'oil': Array(dimensionless, [0.9], -)}
positions:  # optional
    values: [number]
    unit: string
fractions:  # optional
    string:
        values: [number]
        unit: string
class InitialTracersMassFractionsDescription#

Definitions

class InitialTracersMassFractionsDescription
    position_input_type: TableInputType = TableInputType.length
    table_x: ReferencedTracersMassFractionsContainerDescription = ReferencedTracersMassFractionsContainerDescription()
    table_y: ReferencedTracersMassFractionsContainerDescription = ReferencedTracersMassFractionsContainerDescription()
    table_length: TracersMassFractionsContainerDescription = TracersMassFractionsContainerDescription()
class ReferencedTracersMassFractionsContainerDescription#

Definitions

class ReferencedTracersMassFractionsContainerDescription
    reference_coordinate: Scalar = Scalar(0.0, 'm', 'length')
    positions: Array = Array(length, [], m)
    tracers_mass_fractions: List[Array] = []
reference_coordinate:  # optional
    value: number
    unit: string
positions:  # optional
    values: [number]
    unit: string
tracers_mass_fractions:  # optional
    - Array
class TracersMassFractionsContainerDescription#

Definitions

class TracersMassFractionsContainerDescription
    positions: Array = Array(length, [], m)
    tracers_mass_fractions: List[Array] = []
positions:  # optional
    values: [number]
    unit: string
tracers_mass_fractions:  # optional
    - Array
class InitialVelocitiesDescription#

Definitions

class InitialVelocitiesDescription
    position_input_type: TableInputType = TableInputType.length
    table_x: ReferencedVelocitiesContainerDescription = ReferencedVelocitiesContainerDescription()
    table_y: ReferencedVelocitiesContainerDescription = ReferencedVelocitiesContainerDescription()
    table_length: VelocitiesContainerDescription = VelocitiesContainerDescription()
position_input_type: TableInputType # optional
table_x: referenced_velocities_container_description_schema # optional
table_y: referenced_velocities_container_description_schema # optional
table_length: velocities_container_description_schema # optional
class ReferencedVelocitiesContainerDescription#

Definitions

class ReferencedVelocitiesContainerDescription
    reference_coordinate: Scalar = Scalar(0.0, 'm', 'length')
    positions: Array = Array(length, [], m)
    velocities: Dict[str, Array] = {}
reference_coordinate:  # optional
    value: number
    unit: string
positions:  # optional
    values: [number]
    unit: string
velocities:  # optional
    string:
        values: [number]
        unit: string
class VelocitiesContainerDescription#

Definitions

class VelocitiesContainerDescription
    positions: Array = Array(length, [0.0], m)
    velocities: Dict[str, Array] = {'gas': Array(velocity, [1e-08], m/s), 'oil': Array(velocity, [1e-08], m/s)}
positions:  # optional
    values: [number]
    unit: string
velocities:  # optional
    string:
        values: [number]
        unit: string
class InitialTemperaturesDescription#

Definitions

class InitialTemperaturesDescription
    position_input_type: TableInputType = TableInputType.length
    table_x: ReferencedTemperaturesContainerDescription = ReferencedTemperaturesContainerDescription()
    table_y: ReferencedTemperaturesContainerDescription = ReferencedTemperaturesContainerDescription()
    table_length: TemperaturesContainerDescription = TemperaturesContainerDescription()
class ReferencedTemperaturesContainerDescription#

Definitions

class ReferencedTemperaturesContainerDescription
    reference_coordinate: Scalar = Scalar(0.0, 'm', 'length')
    positions: Array = Array(length, [], m)
    temperatures: Array = Array(temperature, [], K)
reference_coordinate:  # optional
    value: number
    unit: string
positions:  # optional
    values: [number]
    unit: string
temperatures:  # optional
    values: [number]
    unit: string
class TemperaturesContainerDescription#

Definitions

class TemperaturesContainerDescription
    positions: Array = Array(length, [0.0], m)
    temperatures: Array = Array(temperature, [288.6], K)
positions:  # optional
    values: [number]
    unit: string
temperatures:  # optional
    values: [number]
    unit: string

Pipe#

class PipeDescription#

Definitions

class PipeDescription
    name: str
    source: str
    target: str
    source_port: Optional[WellConnectionPort] = None
    target_port: Optional[WellConnectionPort] = None
    pvt_model: Optional[str] = None
    profile: ProfileDescription = ProfileDescription()
    equipment: EquipmentDescription = EquipmentDescription()
    environment: EnvironmentDescription = EnvironmentDescription()
    segments: PipeSegmentsDescription = PipeSegmentsDescription()
    initial_conditions: InitialConditionsDescription = InitialConditionsDescription()
    flow_pattern_model: FlowPatternModel = FlowPatternModel.UnitCell
    regime_capturing_mesh_threshold: Scalar = Scalar(0.0, '-', 'dimensionless')
name: string
source: string
target: string
source_port: well_connection_port_schema # optional
target_port: well_connection_port_schema # optional
pvt_model: string  # optional
profile: profile_description_schema # optional
equipment: equipment_description_schema # optional
environment: environment_description_schema # optional
segments: pipe_segments_description_schema # optional
initial_conditions: initial_conditions_description_schema # optional
flow_pattern_model: FlowPatternModel # optional
regime_capturing_mesh_threshold:  # optional
    value: number
    unit: string
class PipeSegmentsDescription#

Definitions

class PipeSegmentsDescription
    start_positions: Array
    diameters: Array
    roughnesses: Array
    wall_names: Optional[List[str]] = None
start_positions:
    values: [number]
    unit: string
diameters:
    values: [number]
    unit: string
roughnesses:
    values: [number]
    unit: string
wall_names:  # optional
    - str

Node#

class NodeDescription#

Definitions

class NodeDescription
    name: str
    node_type: NodeCellType
    pvt_model: Optional[str] = None
    pressure_properties: PressureNodePropertiesDescription = PressureNodePropertiesDescription()
    mass_source_properties: MassSourceNodePropertiesDescription = MassSourceNodePropertiesDescription()
    internal_properties: InternalNodePropertiesDescription = InternalNodePropertiesDescription()
    separator_properties: SeparatorNodePropertiesDescription = SeparatorNodePropertiesDescription()
    controller_properties: ControllerNodePropertiesDescription = ControllerNodePropertiesDescription()
name: string
node_type: NodeCellType
pvt_model: string  # optional
pressure_properties: pressure_node_properties_description_schema # optional
mass_source_properties: mass_source_node_properties_description_schema # optional
internal_properties: internal_node_properties_description_schema # optional
separator_properties: separator_node_properties_description_schema # optional
controller_properties: controller_node_properties_description_schema # optional
class PressureNodePropertiesDescription#

Definitions

class PressureNodePropertiesDescription
    pressure_input_type: MultiInputType = MultiInputType.Constant
    pressure: Scalar = Scalar(100000.0, 'Pa', 'pressure')
    pressure_curve: Curve = Curve(Pa, s)[]
    temperature_input_type: MultiInputType = MultiInputType.Constant
    temperature: Scalar = Scalar(288.6, 'K', 'temperature')
    temperature_curve: Curve = Curve(K, s)[]
    fluid: Optional[str] = None
    tracer_mass_fraction: Array = Array(dimensionless, [], -)
    split_type: MassInflowSplitType = MassInflowSplitType.ConstantVolumeFraction
    mass_fractions_input_type: MultiInputType = MultiInputType.Constant
    mass_fractions: Dict[str, Scalar] = {}
    mass_fractions_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    volume_fractions_input_type: MultiInputType = MultiInputType.Constant
    volume_fractions: Dict[str, Scalar] = {}
    volume_fractions_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    gas_liquid_ratio_input_type: MultiInputType = MultiInputType.Constant
    gas_liquid_ratio: Scalar = Scalar(0.0, 'sm3/sm3', 'standard volume per standard volume')
    gas_liquid_ratio_curve: Curve = Curve(sm3/sm3, s)[]
    gas_oil_ratio_input_type: MultiInputType = MultiInputType.Constant
    gas_oil_ratio: Scalar = Scalar(0.0, 'sm3/sm3', 'standard volume per standard volume')
    gas_oil_ratio_curve: Curve = Curve(sm3/sm3, s)[]
    water_cut_input_type: MultiInputType = MultiInputType.Constant
    water_cut: Scalar = Scalar(0.0, '-', 'volume fraction')
    water_cut_curve: Curve = Curve(-, s)[]
pressure_input_type: MultiInputType # optional
pressure:  # optional
    value: number
    unit: string
pressure_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
temperature_input_type: MultiInputType # optional
temperature:  # optional
    value: number
    unit: string
temperature_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
fluid: string  # optional
tracer_mass_fraction:  # optional
    values: [number]
    unit: string
split_type: MassInflowSplitType # optional
mass_fractions_input_type: MultiInputType # optional
mass_fractions:  # optional
    string:
        value: number
        unit: string
mass_fractions_curve:  # optional
    string: Curve
volume_fractions_input_type: MultiInputType # optional
volume_fractions:  # optional
    string:
        value: number
        unit: string
volume_fractions_curve:  # optional
    string: Curve
gas_liquid_ratio_input_type: MultiInputType # optional
gas_liquid_ratio:  # optional
    value: number
    unit: string
gas_liquid_ratio_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
gas_oil_ratio_input_type: MultiInputType # optional
gas_oil_ratio:  # optional
    value: number
    unit: string
gas_oil_ratio_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
water_cut_input_type: MultiInputType # optional
water_cut:  # optional
    value: number
    unit: string
water_cut_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
class MassSourceNodePropertiesDescription#

Definitions

class MassSourceNodePropertiesDescription
    fluid: Optional[str] = None
    tracer_mass_fraction: Array = Array(dimensionless, [], -)
    temperature_input_type: MultiInputType = MultiInputType.Constant
    temperature: Scalar = Scalar(288.6, 'K', 'temperature')
    temperature_curve: Curve = Curve(K, s)[]
    source_type: MassSourceType = MassSourceType.MassFlowRates
    volumetric_flow_rates_std_input_type: MultiInputType = MultiInputType.Constant
    volumetric_flow_rates_std: Dict[str, Scalar] = {}
    volumetric_flow_rates_std_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    mass_flow_rates_input_type: MultiInputType = MultiInputType.Constant
    mass_flow_rates: Dict[str, Scalar] = {}
    mass_flow_rates_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    total_mass_flow_rate_input_type: MultiInputType = MultiInputType.Constant
    total_mass_flow_rate: Scalar = Scalar(1.0, 'kg/s', 'mass flow rate')
    total_mass_flow_rate_curve: Curve = Curve(kg/s, s)[]
    water_cut_input_type: MultiInputType = MultiInputType.Constant
    water_cut: Scalar = Scalar(0.0, '-', 'volume fraction')
    water_cut_curve: Curve = Curve(-, s)[]
    gas_oil_ratio_input_type: MultiInputType = MultiInputType.Constant
    gas_oil_ratio: Scalar = Scalar(0.0, 'sm3/sm3', 'standard volume per standard volume')
    gas_oil_ratio_curve: Curve = Curve(sm3/sm3, s)[]
fluid: string  # optional
tracer_mass_fraction:  # optional
    values: [number]
    unit: string
temperature_input_type: MultiInputType # optional
temperature:  # optional
    value: number
    unit: string
temperature_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
source_type: MassSourceType # optional
volumetric_flow_rates_std_input_type: MultiInputType # optional
volumetric_flow_rates_std:  # optional
    string:
        value: number
        unit: string
volumetric_flow_rates_std_curve:  # optional
    string: Curve
mass_flow_rates_input_type: MultiInputType # optional
mass_flow_rates:  # optional
    string:
        value: number
        unit: string
mass_flow_rates_curve:  # optional
    string: Curve
total_mass_flow_rate_input_type: MultiInputType # optional
total_mass_flow_rate:  # optional
    value: number
    unit: string
total_mass_flow_rate_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
water_cut_input_type: MultiInputType # optional
water_cut:  # optional
    value: number
    unit: string
water_cut_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
gas_oil_ratio_input_type: MultiInputType # optional
gas_oil_ratio:  # optional
    value: number
    unit: string
gas_oil_ratio_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
class InternalNodePropertiesDescription#

Definitions

class InternalNodePropertiesDescription
    fluid: Optional[str] = None
fluid: string  # optional
class SeparatorNodePropertiesDescription#
Variables:

overall_heat_transfer_coefficient

η such that the overall heat transferred to the separator is

Q = η A (T_amb - T_sep)

Definitions

class SeparatorNodePropertiesDescription
    environment_temperature: Scalar = Scalar(25.0, 'degC', 'temperature')
    geometry: SeparatorGeometryType = SeparatorGeometryType.VerticalCylinder
    length: Scalar = Scalar(1.0, 'm', 'length')
    overall_heat_transfer_coefficient: Scalar = Scalar(0.0, 'W/m2.K', 'heat transfer coefficient')
    diameter: Scalar = Scalar(1.0, 'm', 'diameter')
    nozzles: Dict[str, Scalar] = {}
    initial_phase_volume_fractions: Dict[str, Scalar] = {'gas': Scalar(0.5, '-', 'volume fraction'), 'oil': Scalar(0.5, '-', 'volume fraction')}
    gas_separation_efficiency: Scalar = Scalar(1.0, '-', 'dimensionless')
    liquid_separation_efficiency: Scalar = Scalar(1.0, '-', 'dimensionless')
environment_temperature:  # optional
    value: number
    unit: string
geometry: SeparatorGeometryType # optional
length:  # optional
    value: number
    unit: string
overall_heat_transfer_coefficient:  # optional
    value: number
    unit: string
diameter:  # optional
    value: number
    unit: string
nozzles:  # optional
    string:
        value: number
        unit: string
initial_phase_volume_fractions:  # optional
    string:
        value: number
        unit: string
gas_separation_efficiency:  # optional
    value: number
    unit: string
liquid_separation_efficiency:  # optional
    value: number
    unit: string
class ControllerInputSignalPropertiesDescription#
Variables:
  • target_variable – Measured variable target of controller setpoint

  • unit – Measuring unit of target variable

  • input_trend_name – Name of input trend where target variable is measured

Definitions

class ControllerInputSignalPropertiesDescription
    target_variable: Optional[str] = None
    input_trend_name: Optional[str] = None
    unit: Optional[str] = None
target_variable: string  # optional
input_trend_name: string  # optional
unit: string  # optional
class ControllerOutputSignalPropertiesDescription#
Variables:
  • controlled_property – Property under control to make target variable reach setpoint

  • unit – Measuring unit of controlled property

  • network_element_name – Name of network element that has controlled property

  • min_value – Minimum value of output signal

  • max_value – Maximum value of output signal

  • max_rate_of_change – Maximum rate of change of output signal

Definitions

class ControllerOutputSignalPropertiesDescription
    controlled_property: Optional[str] = None
    unit: Optional[str] = None
    network_element_name: Optional[str] = None
    min_value: float = -1e+50
    max_value: float = 1e+50
    max_rate_of_change: float = 1e+50
controlled_property: string  # optional
unit: string  # optional
network_element_name: string  # optional
min_value: number  # optional
max_value: number  # optional
max_rate_of_change: number  # optional
class ControllerNodePropertiesDescription#
Variables:
  • type – Type of controlling model

  • gain – Proportional constant of PID controller

  • setpoint – Target value for input signal

  • integral_time – Integral constant of PID controller

  • derivative_time – Derivative constant of PID controller

  • input_signal_properties – Properties of input signal

  • output_signal_properties – Properties of output signal

Definitions

class ControllerNodePropertiesDescription
    type: ControllerType = ControllerType.PID
    gain: float = 0.0001
    setpoint: float = 0.0
    integral_time: Scalar = Scalar(10.0, 's', 'time')
    derivative_time: Scalar = Scalar(1.0, 's', 'time')
    input_signal_properties: ControllerInputSignalPropertiesDescription = ControllerInputSignalPropertiesDescription()
    output_signal_properties: ControllerOutputSignalPropertiesDescription = ControllerOutputSignalPropertiesDescription()
type: ControllerType # optional
gain: number  # optional
setpoint: number  # optional
integral_time:  # optional
    value: number
    unit: string
derivative_time:  # optional
    value: number
    unit: string
input_signal_properties: controller_input_signal_properties_description_schema # optional
output_signal_properties: controller_output_signal_properties_description_schema # optional

Well#

class WellDescription#

Definitions

class WellDescription
    name: str
    pvt_model: Optional[str] = None
    stagnant_fluid: Optional[str] = None
    profile: ProfileDescription = ProfileDescription()
    casing: CasingDescription = CasingDescription()
    annulus: AnnulusDescription = AnnulusDescription()
    formation: FormationDescription = FormationDescription()
    top_node: str
    bottom_node: str
    environment: EnvironmentDescription = EnvironmentDescription()
    initial_conditions: InitialConditionsDescription = InitialConditionsDescription()
    equipment: EquipmentDescription = EquipmentDescription()
name: string
pvt_model: string  # optional
stagnant_fluid: string  # optional
profile: profile_description_schema # optional
casing: casing_description_schema # optional
annulus: annulus_description_schema # optional
formation: formation_description_schema # optional
top_node: string
bottom_node: string
environment: environment_description_schema # optional
initial_conditions: initial_conditions_description_schema # optional
equipment: equipment_description_schema # optional
class CasingDescription#

Definitions

class CasingDescription
    casing_sections: List[CasingSectionDescription] = []
    tubings: List[TubingDescription] = []
    packers: List[PackerDescription] = []
    open_holes: List[OpenHoleDescription] = []
casing_sections:  # optional
    - casing_section_description_schema
tubings:  # optional
    - tubing_description_schema
packers:  # optional
    - packer_description_schema
open_holes:  # optional
    - open_hole_description_schema
class CasingSectionDescription#

Definitions

class CasingSectionDescription
    name: str
    hanger_depth: Scalar
    settings_depth: Scalar
    hole_diameter: Scalar
    outer_diameter: Scalar
    inner_diameter: Scalar
    inner_roughness: Scalar
    material: Optional[str] = None
    top_of_filler: Scalar
    filler_material: Optional[str] = None
    material_above_filler: Optional[str] = None
name: string
hanger_depth:
    value: number
    unit: string
settings_depth:
    value: number
    unit: string
hole_diameter:
    value: number
    unit: string
outer_diameter:
    value: number
    unit: string
inner_diameter:
    value: number
    unit: string
inner_roughness:
    value: number
    unit: string
material: string  # optional
top_of_filler:
    value: number
    unit: string
filler_material: string  # optional
material_above_filler: string  # optional
class TubingDescription#

Definitions

class TubingDescription
    name: str
    length: Scalar
    outer_diameter: Scalar
    inner_diameter: Scalar
    inner_roughness: Scalar
    material: Optional[str] = None
name: string
length:
    value: number
    unit: string
outer_diameter:
    value: number
    unit: string
inner_diameter:
    value: number
    unit: string
inner_roughness:
    value: number
    unit: string
material: string  # optional
class PackerDescription#

Definitions

class PackerDescription
    name: str
    position: Scalar
    material_above: Optional[str] = None
name: string
position:
    value: number
    unit: string
material_above: string  # optional
class OpenHoleDescription#

Definitions

class OpenHoleDescription
    name: str
    length: Scalar
    diameter: Scalar
    inner_roughness: Scalar
name: string
length:
    value: number
    unit: string
diameter:
    value: number
    unit: string
inner_roughness:
    value: number
    unit: string
class AnnulusDescription#

Definitions

class AnnulusDescription
    has_annulus_flow: bool
    pvt_model: Optional[str] = None
    initial_conditions: InitialConditionsDescription = InitialConditionsDescription()
    equipment: AnnulusEquipmentDescription = AnnulusEquipmentDescription()
    top_node: str
has_annulus_flow: boolean
pvt_model: string  # optional
initial_conditions: initial_conditions_description_schema # optional
equipment: annulus_equipment_description_schema # optional
top_node: string
class GasLiftValveEquipmentDescription#

Definitions

class GasLiftValveEquipmentDescription
    position: Scalar
    diameter: Scalar
    valve_type: ValveType
    delta_p_min: Scalar
    discharge_coefficient: Scalar
position:
    value: number
    unit: string
diameter:
    value: number
    unit: string
valve_type: ValveType
delta_p_min:
    value: number
    unit: string
discharge_coefficient:
    value: number
    unit: string
class FormationDescription#

Definitions

class FormationDescription
    reference_y_coordinate: Scalar
    layers: List[FormationLayerDescription] = []
reference_y_coordinate:
    value: number
    unit: string
layers:  # optional
    - formation_layer_description_schema
class FormationLayerDescription#

Definitions

class FormationLayerDescription
    name: str
    start: Scalar
    material: Optional[str] = None
name: string
start:
    value: number
    unit: string
material: string  # optional

Material#

class MaterialDescription#

Definitions

class MaterialDescription
    name: str
    material_type: MaterialType = MaterialType.Solid
    density: Scalar = Scalar(1.0, 'kg/m3', 'density')
    thermal_conductivity: Scalar = Scalar(0.0, 'W/m.degC', 'thermal conductivity')
    heat_capacity: Scalar = Scalar(0.0, 'J/kg.degC', 'specific heat capacity')
    inner_emissivity: Scalar = Scalar(0.0, '-', 'emissivity')
    outer_emissivity: Scalar = Scalar(0.0, '-', 'emissivity')
    expansion: Scalar = Scalar(0.0, '1/K', 'volumetric thermal expansion')
    viscosity: Scalar = Scalar(0.0, 'cP', 'dynamic viscosity')
name: string
material_type: MaterialType # optional
density:  # optional
    value: number
    unit: string
thermal_conductivity:  # optional
    value: number
    unit: string
heat_capacity:  # optional
    value: number
    unit: string
inner_emissivity:  # optional
    value: number
    unit: string
outer_emissivity:  # optional
    value: number
    unit: string
expansion:  # optional
    value: number
    unit: string
viscosity:  # optional
    value: number
    unit: string

Wall#

class WallDescription#

Definitions

class WallDescription
    name: str
    inner_roughness: Scalar = Scalar(0.0, 'm', 'length')
    wall_layer_container: List[WallLayerDescription] = []
name: string
inner_roughness:  # optional
    value: number
    unit: string
wall_layer_container:  # optional
    - wall_layer_description_schema
class WallLayerDescription#

Used for defining the default walls.

Variables:
  • thickness

  • material_name

  • has_annulus_flow

Definitions

class WallLayerDescription
    thickness: Scalar
    material_name: str
    has_annulus_flow: bool = False
thickness:
    value: number
    unit: string
material_name: string
has_annulus_flow: boolean  # optional

Profile#

class ProfileDescription#

Describe a pipe by either length and inclination or by X and Y coordinates.

Variables:
  • length_and_elevation – A list of points with the length and elevation. The first item MUST always be (0, 0), otherwise a ValueError is raised.

  • x_and_y – A list of points (X, Y), describing the coordinates.

Note

x_and_y and length_and_elevation are mutually exclusive.

Definitions

class ProfileDescription
    x_and_y: Optional[XAndYDescription] = None
    length_and_elevation: Optional[LengthAndElevationDescription] = None
x_and_y: x_and_y_description_schema # optional
length_and_elevation: length_and_elevation_description_schema # optional
class XAndYDescription#

Describe a pipe with a sequence of coordinates.

Definitions

class XAndYDescription
    x: Optional[Array] = None
    y: Optional[Array] = None
x:  # optional
    values: [number]
    unit: string
y:  # optional
    values: [number]
    unit: string
class LengthAndElevationDescription#

Describe a pipe with length and elevation.

Definitions

class LengthAndElevationDescription
    length: Optional[Array] = None
    elevation: Optional[Array] = None
length:  # optional
    values: [number]
    unit: string
elevation:  # optional
    values: [number]
    unit: string

Environment#

class EnvironmentDescription#

Definitions

class EnvironmentDescription
    thermal_model: PipeThermalModelType = PipeThermalModelType.SteadyState
    position_input_mode: PipeThermalPositionInput = PipeThermalPositionInput.Md
    reference_y_coordinate: Scalar = Scalar(0.0, 'm', 'length')
    md_properties_table: List[EnvironmentPropertyDescription] = []
    tvd_properties_table: List[EnvironmentPropertyDescription] = []
thermal_model: PipeThermalModelType # optional
position_input_mode: PipeThermalPositionInput # optional
reference_y_coordinate:  # optional
    value: number
    unit: string
md_properties_table:  # optional
    - environment_property_description_schema
tvd_properties_table:  # optional
    - environment_property_description_schema
class EnvironmentPropertyDescription#

Definitions

class EnvironmentPropertyDescription
    position: Scalar
    temperature: Scalar
    type: PipeEnvironmentHeatTransferCoefficientModelType
    heat_transfer_coefficient: Scalar = Scalar(0.0, 'W/m2.K', 'heat transfer coefficient')
    overall_heat_transfer_coefficient: Scalar = Scalar(0.0, 'W/m2.K', 'heat transfer coefficient')
    fluid_velocity: Scalar = Scalar(0.0, 'm/s', 'velocity')
position:
    value: number
    unit: string
temperature:
    value: number
    unit: string
type: PipeEnvironmentHeatTransferCoefficientModelType
heat_transfer_coefficient:  # optional
    value: number
    unit: string
overall_heat_transfer_coefficient:  # optional
    value: number
    unit: string
fluid_velocity:  # optional
    value: number
    unit: string

Equipment#

class EquipmentDescription#

Definitions

class EquipmentDescription
    mass_sources: Dict[str, MassSourceEquipmentDescription] = {}
    pumps: Dict[str, PumpEquipmentDescription] = {}
    valves: Dict[str, ValveEquipmentDescription] = {}
    reservoir_inflows: Dict[str, ReservoirInflowEquipmentDescription] = {}
    heat_sources: Dict[str, HeatSourceEquipmentDescription] = {}
    compressors: Dict[str, CompressorEquipmentDescription] = {}
    leaks: Dict[str, LeakEquipmentDescription] = {}
    pigs: Dict[str, PigEquipmentDescription] = {}
mass_sources:  # optional
    string: mass_source_equipment_description_schema
pumps:  # optional
    string: pump_equipment_description_schema
valves:  # optional
    string: valve_equipment_description_schema
reservoir_inflows:  # optional
    string: reservoir_inflow_equipment_description_schema
heat_sources:  # optional
    string: heat_source_equipment_description_schema
compressors:  # optional
    string: compressor_equipment_description_schema
leaks:  # optional
    string: leak_equipment_description_schema
pigs:  # optional
    string: pig_equipment_description_schema
class AnnulusEquipmentDescription#

Definitions

class AnnulusEquipmentDescription
    leaks: Dict[str, LeakEquipmentDescription] = {}
    gas_lift_valves: Dict[str, GasLiftValveEquipmentDescription] = {}
leaks:  # optional
    string: leak_equipment_description_schema
gas_lift_valves:  # optional
    string: gas_lift_valve_equipment_description_schema
class MassSourceEquipmentDescription#

Definitions

class MassSourceEquipmentDescription
    fluid: Optional[str] = None
    tracer_mass_fraction: Array = Array(dimensionless, [], -)
    temperature_input_type: MultiInputType = MultiInputType.Constant
    temperature: Scalar = Scalar(288.6, 'K', 'temperature')
    temperature_curve: Curve = Curve(K, s)[]
    source_type: MassSourceType = MassSourceType.MassFlowRates
    volumetric_flow_rates_std_input_type: MultiInputType = MultiInputType.Constant
    volumetric_flow_rates_std: Dict[str, Scalar] = {}
    volumetric_flow_rates_std_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    mass_flow_rates_input_type: MultiInputType = MultiInputType.Constant
    mass_flow_rates: Dict[str, Scalar] = {}
    mass_flow_rates_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    total_mass_flow_rate_input_type: MultiInputType = MultiInputType.Constant
    total_mass_flow_rate: Scalar = Scalar(1.0, 'kg/s', 'mass flow rate')
    total_mass_flow_rate_curve: Curve = Curve(kg/s, s)[]
    water_cut_input_type: MultiInputType = MultiInputType.Constant
    water_cut: Scalar = Scalar(0.0, '-', 'volume fraction')
    water_cut_curve: Curve = Curve(-, s)[]
    gas_oil_ratio_input_type: MultiInputType = MultiInputType.Constant
    gas_oil_ratio: Scalar = Scalar(0.0, 'sm3/sm3', 'standard volume per standard volume')
    gas_oil_ratio_curve: Curve = Curve(sm3/sm3, s)[]
    position: Scalar
fluid: string  # optional
tracer_mass_fraction:  # optional
    values: [number]
    unit: string
temperature_input_type: MultiInputType # optional
temperature:  # optional
    value: number
    unit: string
temperature_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
source_type: MassSourceType # optional
volumetric_flow_rates_std_input_type: MultiInputType # optional
volumetric_flow_rates_std:  # optional
    string:
        value: number
        unit: string
volumetric_flow_rates_std_curve:  # optional
    string: Curve
mass_flow_rates_input_type: MultiInputType # optional
mass_flow_rates:  # optional
    string:
        value: number
        unit: string
mass_flow_rates_curve:  # optional
    string: Curve
total_mass_flow_rate_input_type: MultiInputType # optional
total_mass_flow_rate:  # optional
    value: number
    unit: string
total_mass_flow_rate_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
water_cut_input_type: MultiInputType # optional
water_cut:  # optional
    value: number
    unit: string
water_cut_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
gas_oil_ratio_input_type: MultiInputType # optional
gas_oil_ratio:  # optional
    value: number
    unit: string
gas_oil_ratio_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
position:
    value: number
    unit: string
class PumpEquipmentDescription#

Definitions

class PumpEquipmentDescription
    position: Scalar
    flow_direction: FlowDirection = FlowDirection.Forward
    thermal_efficiency: Scalar = Scalar(100.0, '%', 'dimensionless')
    thermal_efficiency_model: PumpThermalEfficiencyModel = PumpThermalEfficiencyModel.Constant
    type: PumpType = PumpType.ConstantPressure
    pressure_boost: Scalar = Scalar(100000.0, 'Pa', 'pressure')
    table: TablePumpDescription = TablePumpDescription()
    speed_curve: SpeedCurveDescription = SpeedCurveDescription()
    speed_curve_interpolation_type: InterpolationType = InterpolationType.Constant
    esp_table: TablePumpDescription = TablePumpDescription()
    esp_speed_input_type: MultiInputType = MultiInputType.Constant
    esp_speed: Scalar = Scalar(0.0, 'Hz', 'angle per time')
    esp_speed_curve: Curve = Curve(Hz, s)[]
    esp_number_of_stages: int = 1
    esp_reference_density: Scalar = Scalar(0.0, 'kg/m3', 'density')
    esp_manufacturer: str = ''
    esp_model: str = ''
    esp_viscosity_model: PumpViscosityModel = PumpViscosityModel.NoModel
    density_correction_enabled: bool = False
position:
    value: number
    unit: string
flow_direction: FlowDirection # optional
thermal_efficiency:  # optional
    value: number
    unit: string
thermal_efficiency_model: PumpThermalEfficiencyModel # optional
type: PumpType # optional
pressure_boost:  # optional
    value: number
    unit: string
table: table_pump_description_schema # optional
speed_curve: speed_curve_description_schema # optional
speed_curve_interpolation_type: InterpolationType # optional
esp_table: table_pump_description_schema # optional
esp_speed_input_type: MultiInputType # optional
esp_speed:  # optional
    value: number
    unit: string
esp_speed_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
esp_number_of_stages: number  # optional
esp_reference_density:  # optional
    value: number
    unit: string
esp_manufacturer: string  # optional
esp_model: string  # optional
esp_viscosity_model: PumpViscosityModel # optional
density_correction_enabled: boolean  # optional
class ValveEquipmentDescription#

Definitions

class ValveEquipmentDescription
    position: Scalar
    type: ValveType = ValveType.PerkinsValve
    diameter: Scalar = Scalar(0.01, 'm', 'diameter')
    flow_direction: FlowDirection = FlowDirection.Forward
    opening_type: ValveOpeningType = ValveOpeningType.ConstantOpening
    opening: Scalar = Scalar(100.0, '%', 'dimensionless')
    opening_curve_interpolation_type: InterpolationType = InterpolationType.Constant
    opening_curve: Curve = Curve(-, s)[]
    cv_table: CvTableDescription = CvTableDescription()
position:
    value: number
    unit: string
type: ValveType # optional
diameter:  # optional
    value: number
    unit: string
flow_direction: FlowDirection # optional
opening_type: ValveOpeningType # optional
opening:  # optional
    value: number
    unit: string
opening_curve_interpolation_type: InterpolationType # optional
opening_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
cv_table: cv_table_description_schema # optional
class ReservoirInflowEquipmentDescription#

Definitions

class ReservoirInflowEquipmentDescription
    pressure_input_type: MultiInputType = MultiInputType.Constant
    pressure: Scalar = Scalar(100000.0, 'Pa', 'pressure')
    pressure_curve: Curve = Curve(Pa, s)[]
    temperature_input_type: MultiInputType = MultiInputType.Constant
    temperature: Scalar = Scalar(288.6, 'K', 'temperature')
    temperature_curve: Curve = Curve(K, s)[]
    fluid: Optional[str] = None
    tracer_mass_fraction: Array = Array(dimensionless, [], -)
    split_type: MassInflowSplitType = MassInflowSplitType.ConstantVolumeFraction
    mass_fractions_input_type: MultiInputType = MultiInputType.Constant
    mass_fractions: Dict[str, Scalar] = {}
    mass_fractions_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    volume_fractions_input_type: MultiInputType = MultiInputType.Constant
    volume_fractions: Dict[str, Scalar] = {}
    volume_fractions_curve: Dict[str, <class 'barril.curve.curve.Curve'>] = {}
    gas_liquid_ratio_input_type: MultiInputType = MultiInputType.Constant
    gas_liquid_ratio: Scalar = Scalar(0.0, 'sm3/sm3', 'standard volume per standard volume')
    gas_liquid_ratio_curve: Curve = Curve(sm3/sm3, s)[]
    gas_oil_ratio_input_type: MultiInputType = MultiInputType.Constant
    gas_oil_ratio: Scalar = Scalar(0.0, 'sm3/sm3', 'standard volume per standard volume')
    gas_oil_ratio_curve: Curve = Curve(sm3/sm3, s)[]
    water_cut_input_type: MultiInputType = MultiInputType.Constant
    water_cut: Scalar = Scalar(0.0, '-', 'volume fraction')
    water_cut_curve: Curve = Curve(-, s)[]
    start: Scalar
    length: Scalar
    productivity_ipr: Optional[str] = None
    injectivity_ipr: Optional[str] = None
pressure_input_type: MultiInputType # optional
pressure:  # optional
    value: number
    unit: string
pressure_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
temperature_input_type: MultiInputType # optional
temperature:  # optional
    value: number
    unit: string
temperature_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
fluid: string  # optional
tracer_mass_fraction:  # optional
    values: [number]
    unit: string
split_type: MassInflowSplitType # optional
mass_fractions_input_type: MultiInputType # optional
mass_fractions:  # optional
    string:
        value: number
        unit: string
mass_fractions_curve:  # optional
    string: Curve
volume_fractions_input_type: MultiInputType # optional
volume_fractions:  # optional
    string:
        value: number
        unit: string
volume_fractions_curve:  # optional
    string: Curve
gas_liquid_ratio_input_type: MultiInputType # optional
gas_liquid_ratio:  # optional
    value: number
    unit: string
gas_liquid_ratio_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
gas_oil_ratio_input_type: MultiInputType # optional
gas_oil_ratio:  # optional
    value: number
    unit: string
gas_oil_ratio_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
water_cut_input_type: MultiInputType # optional
water_cut:  # optional
    value: number
    unit: string
water_cut_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
start:
    value: number
    unit: string
length:
    value: number
    unit: string
productivity_ipr: string  # optional
injectivity_ipr: string  # optional
class HeatSourceEquipmentDescription#

Definitions

class HeatSourceEquipmentDescription
    start: Scalar
    length: Scalar
    power_input_type: MultiInputType = MultiInputType.Constant
    power: Scalar = Scalar(0.0, 'W', 'power')
    power_curve: Curve = Curve(W, s)[]
start:
    value: number
    unit: string
length:
    value: number
    unit: string
power_input_type: MultiInputType # optional
power:  # optional
    value: number
    unit: string
power_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
class CompressorEquipmentDescription#

Definitions

class CompressorEquipmentDescription
    position: Scalar
    speed_curve: SpeedCurveDescription = SpeedCurveDescription()
    reference_pressure: Scalar = Scalar(1.0, 'bar', 'pressure')
    reference_temperature: Scalar = Scalar(25.0, 'degC', 'temperature')
    constant_speed: Scalar = Scalar(500.0, 'rpm', 'angle per time')
    compressor_type: CompressorSpeedType = CompressorSpeedType.SpeedCurve
    speed_curve_interpolation_type: InterpolationType = InterpolationType.Constant
    flow_direction: FlowDirection = FlowDirection.Forward
    table: CompressorPressureTableDescription = CompressorPressureTableDescription()
position:
    value: number
    unit: string
speed_curve: speed_curve_description_schema # optional
reference_pressure:  # optional
    value: number
    unit: string
reference_temperature:  # optional
    value: number
    unit: string
constant_speed:  # optional
    value: number
    unit: string
compressor_type: CompressorSpeedType # optional
speed_curve_interpolation_type: InterpolationType # optional
flow_direction: FlowDirection # optional
table: compressor_pressure_table_description_schema # optional
class SpeedCurveDescription#

Definitions

class SpeedCurveDescription
    time: Array = Array(time, [0], s)
    speed: Array = Array(frequency, [500], rpm)
time:  # optional
    values: [number]
    unit: string
speed:  # optional
    values: [number]
    unit: string
class CompressorPressureTableDescription#
Variables:

corrected_mass_flow_rate_entries – Equivalent to m * (T/T_ref)**0.5 / (P/P_ref)

Definitions

class CompressorPressureTableDescription
    speed_entries: Array = Array(frequency, [0], rpm)
    corrected_mass_flow_rate_entries: Array = Array(mass flow rate, [0], kg/s)
    pressure_ratio_table: Array = Array(dimensionless, [1.0], -)
    isentropic_efficiency_table: Array = Array(dimensionless, [1.0], -)
speed_entries:  # optional
    values: [number]
    unit: string
corrected_mass_flow_rate_entries:  # optional
    values: [number]
    unit: string
pressure_ratio_table:  # optional
    values: [number]
    unit: string
isentropic_efficiency_table:  # optional
    values: [number]
    unit: string
class LeakEquipmentDescription#

Definitions

class LeakEquipmentDescription
    position: Scalar
    location: OutputAttachmentLocation = OutputAttachmentLocation.Main
    model: LeakModel = LeakModel.Orifice
    type: LeakType = LeakType.Internal
    diameter: Scalar = Scalar(0.05, 'm', 'diameter')
    discharge_coefficient: Scalar = Scalar(0.85, '-', 'dimensionless')
    cv_table: CvTableDescription = CvTableDescription()
    gas_lift_valve_opening_type: GasLiftValveOpeningType = GasLiftValveOpeningType.MinimumPressureDifference
    minimum_pressure_difference: Scalar = Scalar(0.0, 'Pa', 'pressure')
    bellows_reference_pressure: Scalar = Scalar(10.0, 'bar', 'pressure')
    bellows_reference_temperature: Scalar = Scalar(15.0, 'degC', 'temperature')
    port_to_bellows_area_ratio: Scalar = Scalar(0.1, '-', 'dimensionless')
    opening_input_type: MultiInputType = MultiInputType.Constant
    opening: Scalar = Scalar(1.0, '-', 'dimensionless')
    opening_curve: Curve = Curve(-, s)[]
    target_pipe_name: Optional[str] = None
    target_position: Scalar = Scalar(0.0, 'm', 'length')
    target_location: OutputAttachmentLocation = OutputAttachmentLocation.Main
    backflow: bool = False
    backpressure: Scalar = Scalar(1.0, 'bar', 'pressure')
position:
    value: number
    unit: string
location: OutputAttachmentLocation # optional
model: LeakModel # optional
type: LeakType # optional
diameter:  # optional
    value: number
    unit: string
discharge_coefficient:  # optional
    value: number
    unit: string
cv_table: cv_table_description_schema # optional
gas_lift_valve_opening_type: GasLiftValveOpeningType # optional
minimum_pressure_difference:  # optional
    value: number
    unit: string
bellows_reference_pressure:  # optional
    value: number
    unit: string
bellows_reference_temperature:  # optional
    value: number
    unit: string
port_to_bellows_area_ratio:  # optional
    value: number
    unit: string
opening_input_type: MultiInputType # optional
opening:  # optional
    value: number
    unit: string
opening_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
target_pipe_name: string  # optional
target_position:  # optional
    value: number
    unit: string
target_location: OutputAttachmentLocation # optional
backflow: boolean  # optional
backpressure:  # optional
    value: number
    unit: string
class PigEquipmentDescription#

Definitions

class PigEquipmentDescription
    diameter: Scalar
    position: Scalar
    launch_times: Array = Array(time, [0.0], s)
    mass_input_type: MultiInputType = MultiInputType.Constant
    mass: Scalar = Scalar(140.0, 'kg', 'mass')
    mass_curve: Curve = Curve(kg, s)[]
    static_force_input_type: MultiInputType = MultiInputType.Constant
    static_force: Scalar = Scalar(1000.0, 'N', 'force')
    static_force_curve: Curve = Curve(N, s)[]
    wall_friction_input_type: MultiInputType = MultiInputType.Constant
    wall_friction: Scalar = Scalar(1000.0, 'N.s/m', 'force per velocity')
    wall_friction_curve: Curve = Curve(N.s/m, s)[]
    linear_friction_input_type: MultiInputType = MultiInputType.Constant
    linear_friction: Scalar = Scalar(10.0, 'N.s/m', 'force per velocity')
    linear_friction_curve: Curve = Curve(N.s/m, s)[]
    quadratic_friction_input_type: MultiInputType = MultiInputType.Constant
    quadratic_friction: Scalar = Scalar(0.0, 'N.s2/m2', 'force per velocity squared')
    quadratic_friction_curve: Curve = Curve(N.s2/m2, s)[]
    trap_mode: PigTrappingMode = PigTrappingMode.Automatic
    trap_position: Scalar = Scalar(0.0, 'm', 'length')
    trap_pipe_name: Optional[str] = None
    route_mode: PigRoutingMode = PigRoutingMode.Automatic
    pipe_route_names: Optional[List[str]] = None
diameter:
    value: number
    unit: string
position:
    value: number
    unit: string
launch_times:  # optional
    values: [number]
    unit: string
mass_input_type: MultiInputType # optional
mass:  # optional
    value: number
    unit: string
mass_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
static_force_input_type: MultiInputType # optional
static_force:  # optional
    value: number
    unit: string
static_force_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
wall_friction_input_type: MultiInputType # optional
wall_friction:  # optional
    value: number
    unit: string
wall_friction_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
linear_friction_input_type: MultiInputType # optional
linear_friction:  # optional
    value: number
    unit: string
linear_friction_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
quadratic_friction_input_type: MultiInputType # optional
quadratic_friction:  # optional
    value: number
    unit: string
quadratic_friction_curve:  # optional
    image:
        values: [number]
        unit: string
    domain:
        values: [number]
        unit: string
trap_mode: PigTrappingMode # optional
trap_position:  # optional
    value: number
    unit: string
trap_pipe_name: string  # optional
route_mode: PigRoutingMode # optional
pipe_route_names:  # optional
    - str

Tables#

class TablePumpDescription#
Variables:
  • speeds – Pump rotational speed values

  • void_fractions – Pump void fraction values

  • flow_rates – Pump flow rate values

  • pressure_boosts – Pump pressure boost values

  • heads – Pump head values. Using SI units, H [m] = P [Pa] * Q [m^3/s] / rho_ref [kg/m^3] / g [m/s^2] rho_ref = 1000.0 [kg/m^3] g = 9.81 [m/s^2]

  • efficiencies – Pump efficiency values

  • powers – Pump power values. There a relation between other pump variables and power. In SI units: BHP [W] = P [Pa] * Q [m^3/s] / eff [%]

Definitions

class TablePumpDescription
    speeds: Array = Array(frequency, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 400.0, 400.0, 400.0, 400.0, 400.0, 400.0, 400.0, 400.0, 400.0, 400.0, 400.0, 400.0, 600.0, 600.0, 600.0, 600.0, 600.0, 600.0, 600.0, 600.0, 600.0, 600.0, 600.0, 600.0], rpm)
    void_fractions: Array = Array(dimensionless, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], -)
    flow_rates: Array = Array(volume flow rate, [0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3], m3/s)
    pressure_boosts: Array = Array(pressure, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 10.0, 9.0, 7.5, 5.0, 0.0, 10.0, 9.0, 8.0, 6.0, 3.5, 0.0, 14.0, 12.0, 10.0, 8.0, 5.5, 0.0, 13.5, 11.2, 9.5, 7.6, 5.2, 0.0], bar)
    heads: Array = Array(length, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 122.32415902140673, 101.9367991845056, 91.74311926605505, 76.4525993883792, 50.9683995922528, 0.0, 101.9367991845056, 91.74311926605505, 81.54943934760449, 61.162079510703364, 35.67787971457696, 0.0, 142.71151885830784, 122.32415902140673, 101.9367991845056, 81.54943934760449, 56.065239551478086, 0.0, 137.61467889908258, 114.16921508664628, 96.83995922528032, 77.47196738022426, 53.00713557594292, 0.0], m)
    efficiencies: Array = Array(dimensionless, [0.0, 0.311, 0.511, 0.6, 0.578, 0.2, 0.0, 0.28, 0.46, 0.54, 0.52, 0.18, 0.0, 0.311, 0.511, 0.6, 0.578, 0.2, 0.0, 0.28, 0.46, 0.54, 0.52, 0.18, 0.0, 0.311, 0.511, 0.6, 0.578, 0.2, 0.0, 0.28, 0.46, 0.54, 0.52, 0.18], %)
    powers: Array = Array(power, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 160714.29, 160714.29, 176086.96, 187500.0, 173076.92, 0.0, 160714.29, 160714.29, 173913.04, 166666.67, 134615.38, 0.0, 192857.14, 192857.14, 195652.17, 200000.0, 190384.62, 0.0, 200000.0, 200000.0, 206521.74, 211111.11, 200000.0, 0.0], W)
speeds:  # optional
    values: [number]
    unit: string
void_fractions:  # optional
    values: [number]
    unit: string
flow_rates:  # optional
    values: [number]
    unit: string
pressure_boosts:  # optional
    values: [number]
    unit: string
heads:  # optional
    values: [number]
    unit: string
efficiencies:  # optional
    values: [number]
    unit: string
powers:  # optional
    values: [number]
    unit: string
class CvTableDescription#

Definitions

class CvTableDescription
    opening: Array = Array(dimensionless, [], -)
    flow_coefficient: Array = Array(flow coefficient, [], (galUS/min)/(psi^0.5))
opening:  # optional
    values: [number]
    unit: string
flow_coefficient:  # optional
    values: [number]
    unit: string

Plugins#

Plugin support in ALFAcase is experimental and subject to change.

class PluginDescription#
Variables:
  • name – The plugin id.

  • gui_models – The plugin input format depends on the specific plugin implementation.

  • is_enabled – A flag indicating if this plugin is enabled.

Definitions

class PluginDescription
    name: Optional[str] = None
    gui_models: Dict[str, Any] = {}
    is_enabled: bool = True
name: string  # optional
gui_models:  # optional
    string: Any
is_enabled: boolean  # optional

Results#

class Results(alfacase_data_folder)#

Allows reading trend and profile curves from alfasim simulation results using network element names instead internal alfasim ids.

class ALFASimResultMetadata(profiles, trends, time_sets, time_sets_unit, time_steps_boundaries, time_set_info, result_directory, app_version_info)#
Variables:
  • profiles – Map output keys (profile id and property id) to metadata entries.

  • trends – Map output keys (trend id and property id) to metadata entries.

  • time_sets – Map sourced time set keys (tuples of relevant base time sets) to a list of list of the time step values.

  • time_sets_unit – The unit used by all time sets.

  • time_steps_boundaries – The time step boundaries index where this metadata object is relevant. The first item is the starting time step index (including) and the second is the ending time step index (excluding).

  • time_set_info – Map output type to maps of base time steps to TimeSetInfoItem.

  • result_directory – The path where this data has been read.

  • app_version_info – Map “base time steps” to the application version used in the simulation.