This page is a detailed reference guide to ALFAsim-SDK API. It includes a catalog of all supported CaseDescription and ALFAcase capabilities.
CaseDescription
Definitions
class CaseDescription name: Optional[str] physics: PhysicsDescription⠀ time_options: TimeOptionsDescription⠀ numerical_options: NumericalOptionsDescription⠀ ipr_models: IPRModelsDescription⠀ pvt_models: PvtModelsDescription⠀ tracers: TracersDescription⠀ outputs: CaseOutputDescription⠀ pipes: List[PipeDescription] nodes: List[NodeDescription] wells: List[WellDescription] materials: List[MaterialDescription] walls: List[WallDescription]
Optional
PhysicsDescription
TimeOptionsDescription
NumericalOptionsDescription
IPRModelsDescription
PvtModelsDescription
TracersDescription
CaseOutputDescription
List
PipeDescription
NodeDescription
WellDescription
MaterialDescription
WallDescription
name: string # optional physics: physics_description_schema⠀ time_options: time_options_description_schema⠀ numerical_options: numerical_options_description_schema⠀ ipr_models: ipr_models_description_schema⠀ pvt_models: pvt_models_description_schema⠀ tracers: tracers_description_schema⠀ outputs: case_output_description_schema⠀ pipes: - pipe_description_schema⠀ nodes: - node_description_schema⠀ wells: - well_description_schema⠀ materials: - material_description_schema⠀ walls: - wall_description_schema⠀
physics_description_schema
time_options_description_schema
numerical_options_description_schema
ipr_models_description_schema
pvt_models_description_schema
tracers_description_schema
case_output_description_schema
pipe_description_schema
node_description_schema
well_description_schema
material_description_schema
wall_description_schema
class PhysicsDescription hydrodynamic_model: HydrodynamicModelType⠀ simulation_regime: SimulationRegimeType⠀ energy_model: EnergyModel⠀ solids_model: SolidsModelType⠀ initial_condition_strategy: InitialConditionStrategyType⠀ restart_filepath: Optional[Path] keep_former_results: bool keep_former_results: bool emulsion_model: EmulsionModelType⠀ flash_model: FlashModel⠀ correlations_package: CorrelationPackageType⠀
HydrodynamicModelType
SimulationRegimeType
EnergyModel
SolidsModelType
InitialConditionStrategyType
EmulsionModelType
FlashModel
CorrelationPackageType
hydrodynamic_model: HydrodynamicModelType⠀ simulation_regime: SimulationRegimeType⠀ energy_model: EnergyModel⠀ solids_model: SolidsModelType⠀ initial_condition_strategy: InitialConditionStrategyType⠀ restart_filepath: string # optional keep_former_results: boolean keep_former_results: number emulsion_model: EmulsionModelType⠀ flash_model: FlashModel⠀ correlations_package: CorrelationPackageType⠀
class TimeOptionsDescription stop_on_steady_state: bool stop_on_steady_state: bool initial_time: Scalar⠀ final_time: Scalar⠀ initial_timestep: Scalar⠀ minimum_timestep: Scalar⠀ maximum_timestep: Scalar⠀ restart_autosave_frequency: Scalar⠀ minimum_time_for_steady_state_stop: Scalar⠀
Scalar
stop_on_steady_state: boolean stop_on_steady_state: number initial_time: value: number unit: string final_time: value: number unit: string initial_timestep: value: number unit: string minimum_timestep: value: number unit: string maximum_timestep: value: number unit: string restart_autosave_frequency: value: number unit: string minimum_time_for_steady_state_stop: value: number unit: string
class NumericalOptionsDescription nonlinear_solver_type: NonlinearSolverType⠀ tolerance: float maximum_iterations: int maximum_timestep_change_factor: float maximum_cfl_value: float relaxed_tolerance: float divergence_tolerance: float friction_factor_evaluation_strategy: EvaluationStrategyType⠀ simulation_mode: SimulationModeType⠀ enable_solver_caching: bool enable_solver_caching: bool caching_rtol: float caching_atol: float always_repeat_timestep: bool always_repeat_timestep: bool
NonlinearSolverType
EvaluationStrategyType
SimulationModeType
nonlinear_solver_type: NonlinearSolverType⠀ tolerance: number maximum_iterations: number maximum_timestep_change_factor: number maximum_cfl_value: number relaxed_tolerance: number divergence_tolerance: number friction_factor_evaluation_strategy: EvaluationStrategyType⠀ simulation_mode: SimulationModeType⠀ enable_solver_caching: boolean enable_solver_caching: number caching_rtol: number caching_atol: number always_repeat_timestep: boolean always_repeat_timestep: number
class CaseOutputDescription trends: List[TrendOutputDescription] trend_frequency: Scalar⠀ profiles: List[ProfileOutputDescription] profile_frequency: Scalar⠀
TrendOutputDescription
ProfileOutputDescription
trends: - trend_output_description_schema⠀ trend_frequency: value: number unit: string profiles: - profile_output_description_schema⠀ profile_frequency: value: number unit: string
trend_output_description_schema
profile_output_description_schema
class ProfileOutputDescription curve_names: List[str] element_name: str location: OutputAttachmentLocation⠀
OutputAttachmentLocation
curve_names: - str element_name: string location: OutputAttachmentLocation⠀
class TrendOutputDescription curve_names: List[str] element_name: str position: Scalar⠀ location: OutputAttachmentLocation⠀
curve_names: - str element_name: string position: value: number unit: string location: OutputAttachmentLocation⠀
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.
PvtModelCorrelationDescription] correlations (Dict[str,) – Standard black-oil correlations found in the literature. The user can tune the parameters used by the correlations.
compositions (Dict[str, PvtModelCompositionalDescription]) – 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 (Dict[str, Union[str, Path]]) –
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")
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")
table_parameters (Dict[str, PvtModelTableParametersDescription]) –
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 PvtModelTableParametersDescription.
class PvtModelsDescription default_model: Optional[str] tables: Dict[str, Union[str, pathlib.Path]] correlations: Dict[str, PvtModelCorrelationDescription] compositions: Dict[str, PvtModelCompositionalDescription]
Dict
PvtModelCorrelationDescription
PvtModelCompositionalDescription
default_model: string # optional tables: string: string | Path correlations: string: pvt_model_correlation_description_schema⠀ compositions: string: pvt_model_compositional_description_schema⠀
pvt_model_correlation_description_schema
pvt_model_compositional_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
default: Scalar(850.0, “kg/m3”)
default: Scalar(0.9, “kg/m3”)
default: Scalar(150.0, “sm3/sm3”)
default: CorrelationPackage.Standing
class PvtModelCorrelationDescription oil_density_std: Scalar⠀ gas_density_std: Scalar⠀ rs_sat: Scalar⠀ pvt_correlation_package: CorrelationPackage⠀
CorrelationPackage
oil_density_std: value: number unit: string gas_density_std: value: number unit: string rs_sat: value: number unit: string pvt_correlation_package: CorrelationPackage⠀
PvtModelCorrelationDescription( default_model="PVT1", )
some_value: some_other_value: fooo
PvtModelTableParametersDescription
pressure_values (ndarray(shape=(M,1))) – Array like of sorted pressure values (m number of entries). [Pa]
temperature_values (ndarray(shape=(N,1))) – Array like of sorted temperature values (n number of entries). [K]
table_variables (List[ndarray(shape=(MxN,1))]) – List of array like values for each property such as densities, specific heats, enthalpies, etc.
variable_names (List[str]) – List of property names
equation_of_state_type (Scalar) – default: Scalar(850.0, “kg/m3”)
surface_tension_model_type (Scalar) – default: Scalar(0.9, “kg/m3”)
viscosity_model (Scalar) – default: Scalar(150.0, “sm3/sm3”)
heavy_components (List[HeavyComponentDescription]) – default: []
light_components (List[LightComponentDescription]) – default: []
FluidDescription] fluids (Dict[str,) – default: {}
class PvtModelCompositionalDescription equation_of_state_type: EquationOfStateType⠀ surface_tension_model_type: SurfaceTensionType⠀ viscosity_model: PVTCompositionalViscosityModel⠀ heavy_components: List[HeavyComponentDescription] light_components: List[LightComponentDescription] fluids: Dict[str, FluidDescription]
EquationOfStateType
SurfaceTensionType
PVTCompositionalViscosityModel
HeavyComponentDescription
LightComponentDescription
FluidDescription
equation_of_state_type: EquationOfStateType⠀ surface_tension_model_type: SurfaceTensionType⠀ viscosity_model: PVTCompositionalViscosityModel⠀ heavy_components: - heavy_component_description_schema⠀ light_components: - light_component_description_schema⠀ fluids: string: fluid_description_schema⠀
heavy_component_description_schema
light_component_description_schema
fluid_description_schema
class HeavyComponentDescription name: str scn: int MW: Scalar⠀ rho: Scalar⠀
name: string scn: number MW: value: number unit: string rho: value: number unit: string
class LightComponentDescription name: str Pc: Scalar⠀ Tc: Scalar⠀ Vc: Scalar⠀ omega: Scalar⠀ MW: Scalar⠀ Tb: Scalar⠀ Parachor: Scalar⠀ B_parameter: Scalar⠀ Cp_0: Scalar⠀ Cp_1: Scalar⠀ Cp_2: Scalar⠀ Cp_3: Scalar⠀ Cp_4: Scalar⠀
name: string Pc: value: number unit: string Tc: value: number unit: string Vc: value: number unit: string omega: value: number unit: string MW: value: number unit: string Tb: value: number unit: string Parachor: value: number unit: string B_parameter: value: number unit: string Cp_0: value: number unit: string Cp_1: value: number unit: string Cp_2: value: number unit: string Cp_3: value: number unit: string Cp_4: value: number unit: string
class FluidDescription composition: List[CompositionDescription] fraction_pairs: List[BipDescription]
CompositionDescription
BipDescription
composition: - composition_description_schema⠀ fraction_pairs: - bip_description_schema⠀
composition_description_schema
bip_description_schema
Component (str) –
PvtModelCompositionalDescription.light_components PvtModelCompositionalDescription.heavy_components
..note:: CompositionDescription can only refer to components created from the same PvtModelCompositionalDescription
class CompositionDescription component: str molar_fraction: Scalar⠀ reference_enthalpy: Scalar⠀
component: string molar_fraction: value: number unit: string reference_enthalpy: value: number unit: string
class BipDescription component_1: str component_2: str value: float
component_1: string component_2: string value: number
Union[str, IPRDescription]] tables (Dict[str,) – A dictionary with the name of the IPR and the instance of the IPR Model.
class IPRModelsDescription linear_models: Dict[str, LinearIPRDescription] table_models: Dict[str, TableIPRDescription]
LinearIPRDescription
TableIPRDescription
linear_models: string: linear_ipr_description_schema⠀ table_models: string: table_ipr_description_schema⠀
linear_ipr_description_schema
table_ipr_description_schema
class LinearIPRDescription well_index_phase: WellIndexPhaseType⠀ min_pressure_difference: Scalar⠀ well_index: Scalar⠀
WellIndexPhaseType
well_index_phase: WellIndexPhaseType⠀ min_pressure_difference: value: number unit: string well_index: value: number unit: string
class TableIPRDescription well_index_phase: WellIndexPhaseType⠀ table: IPRCurveDescription⠀
IPRCurveDescription
well_index_phase: WellIndexPhaseType⠀ table: ipr_curve_description_schema⠀
ipr_curve_description_schema
class IPRCurveDescription pressure_difference: Array⠀ flow_rate: Array⠀
Array
pressure_difference: values: [number] unit: string flow_rate: values: [number] unit: string
class TracersDescription constant_coefficients: Dict[str, TracerModelConstantCoefficientsDescription]
TracerModelConstantCoefficientsDescription
constant_coefficients: string: tracer_model_constant_coefficients_description_schema⠀
tracer_model_constant_coefficients_description_schema
class TracerModelConstantCoefficientsDescription partition_coefficients: Dict[str, Scalar]
partition_coefficients: string: value: number unit: string
InitialConditionsDescription
class InitialConditionsDescription pressures: InitialPressuresDescription⠀ volume_fractions: InitialVolumeFractionsDescription⠀ tracers_mass_fractions: InitialTracersMassFractionsDescription⠀ velocities: InitialVelocitiesDescription⠀ temperatures: InitialTemperaturesDescription⠀ fluid: Optional[str]
InitialPressuresDescription
InitialVolumeFractionsDescription
InitialTracersMassFractionsDescription
InitialVelocitiesDescription
InitialTemperaturesDescription
pressures: initial_pressures_description_schema⠀ volume_fractions: initial_volume_fractions_description_schema⠀ tracers_mass_fractions: initial_tracers_mass_fractions_description_schema⠀ velocities: initial_velocities_description_schema⠀ temperatures: initial_temperatures_description_schema⠀ fluid: string # optional
initial_pressures_description_schema
initial_volume_fractions_description_schema
initial_tracers_mass_fractions_description_schema
initial_velocities_description_schema
initial_temperatures_description_schema
class InitialPressuresDescription position_input_type: TableInputType⠀ table_x: ReferencedPressureContainerDescription⠀ table_y: ReferencedPressureContainerDescription⠀ table_length: PressureContainerDescription⠀
TableInputType
ReferencedPressureContainerDescription
PressureContainerDescription
position_input_type: TableInputType⠀ table_x: referenced_pressure_container_description_schema⠀ table_y: referenced_pressure_container_description_schema⠀ table_length: pressure_container_description_schema⠀
referenced_pressure_container_description_schema
pressure_container_description_schema
class ReferencedPressureContainerDescription reference_coordinate: Scalar⠀ positions: Array⠀ pressures: Array⠀
reference_coordinate: value: number unit: string positions: values: [number] unit: string pressures: values: [number] unit: string
class PressureContainerDescription positions: Array⠀ pressures: Array⠀
positions: values: [number] unit: string pressures: values: [number] unit: string
class InitialVolumeFractionsDescription position_input_type: TableInputType⠀ table_x: ReferencedVolumeFractionsContainerDescription⠀ table_y: ReferencedVolumeFractionsContainerDescription⠀ table_length: VolumeFractionsContainerDescription⠀
ReferencedVolumeFractionsContainerDescription
VolumeFractionsContainerDescription
position_input_type: TableInputType⠀ table_x: referenced_volume_fractions_container_description_schema⠀ table_y: referenced_volume_fractions_container_description_schema⠀ table_length: volume_fractions_container_description_schema⠀
referenced_volume_fractions_container_description_schema
volume_fractions_container_description_schema
class ReferencedVolumeFractionsContainerDescription reference_coordinate: Scalar⠀ positions: Array⠀ fractions: Dict[str, Array]
reference_coordinate: value: number unit: string positions: values: [number] unit: string fractions: string: values: [number] unit: string
class VolumeFractionsContainerDescription positions: Array⠀ fractions: Dict[str, Array]
positions: values: [number] unit: string fractions: string: values: [number] unit: string
class InitialTracersMassFractionsDescription position_input_type: TableInputType⠀ table_x: ReferencedTracersMassFractionsContainerDescription⠀ table_y: ReferencedTracersMassFractionsContainerDescription⠀ table_length: TracersMassFractionsContainerDescription⠀
ReferencedTracersMassFractionsContainerDescription
TracersMassFractionsContainerDescription
position_input_type: TableInputType⠀ table_x: referenced_tracers_mass_fractions_container_description_schema⠀ table_y: referenced_tracers_mass_fractions_container_description_schema⠀ table_length: tracers_mass_fractions_container_description_schema⠀
referenced_tracers_mass_fractions_container_description_schema
tracers_mass_fractions_container_description_schema
class ReferencedTracersMassFractionsContainerDescription reference_coordinate: Scalar⠀ positions: Array⠀ tracers_mass_fractions: List[Array]
reference_coordinate: value: number unit: string positions: values: [number] unit: string tracers_mass_fractions: - Array
class TracersMassFractionsContainerDescription positions: Array⠀ tracers_mass_fractions: List[Array]
positions: values: [number] unit: string tracers_mass_fractions: - Array
class InitialVelocitiesDescription position_input_type: TableInputType⠀ table_x: ReferencedVelocitiesContainerDescription⠀ table_y: ReferencedVelocitiesContainerDescription⠀ table_length: VelocitiesContainerDescription⠀
ReferencedVelocitiesContainerDescription
VelocitiesContainerDescription
position_input_type: TableInputType⠀ table_x: referenced_velocities_container_description_schema⠀ table_y: referenced_velocities_container_description_schema⠀ table_length: velocities_container_description_schema⠀
referenced_velocities_container_description_schema
velocities_container_description_schema
class ReferencedVelocitiesContainerDescription reference_coordinate: Scalar⠀ positions: Array⠀ velocities: Dict[str, Array]
reference_coordinate: value: number unit: string positions: values: [number] unit: string velocities: string: values: [number] unit: string
class VelocitiesContainerDescription positions: Array⠀ velocities: Dict[str, Array]
positions: values: [number] unit: string velocities: string: values: [number] unit: string
class InitialTemperaturesDescription position_input_type: TableInputType⠀ table_x: ReferencedTemperaturesContainerDescription⠀ table_y: ReferencedTemperaturesContainerDescription⠀ table_length: TemperaturesContainerDescription⠀
ReferencedTemperaturesContainerDescription
TemperaturesContainerDescription
position_input_type: TableInputType⠀ table_x: referenced_temperatures_container_description_schema⠀ table_y: referenced_temperatures_container_description_schema⠀ table_length: temperatures_container_description_schema⠀
referenced_temperatures_container_description_schema
temperatures_container_description_schema
class ReferencedTemperaturesContainerDescription reference_coordinate: Scalar⠀ positions: Array⠀ temperatures: Array⠀
reference_coordinate: value: number unit: string positions: values: [number] unit: string temperatures: values: [number] unit: string
class TemperaturesContainerDescription positions: Array⠀ temperatures: Array⠀
positions: values: [number] unit: string temperatures: values: [number] unit: string
class PipeDescription name: str source: str target: str source_port: Optional[WellConnectionPort⠀] target_port: Optional[WellConnectionPort⠀] pvt_model: Optional[str] profile: ProfileDescription⠀ equipment: EquipmentDescription⠀ environment: EnvironmentDescription⠀ segments: PipeSegmentsDescription⠀ initial_conditions: InitialConditionsDescription⠀
WellConnectionPort
ProfileDescription
EquipmentDescription
EnvironmentDescription
PipeSegmentsDescription
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⠀ equipment: equipment_description_schema⠀ environment: environment_description_schema⠀ segments: pipe_segments_description_schema⠀ initial_conditions: initial_conditions_description_schema⠀
well_connection_port_schema
profile_description_schema
equipment_description_schema
environment_description_schema
pipe_segments_description_schema
initial_conditions_description_schema
class PipeSegmentsDescription start_positions: Array⠀ diameters: Array⠀ roughnesses: Array⠀ wall_names: Optional[List[str]]
start_positions: values: [number] unit: string diameters: values: [number] unit: string roughnesses: values: [number] unit: string wall_names: # optional - str
class NodeDescription name: str node_type: NodeCellType⠀ pvt_model: Optional[str] pressure_properties: PressureNodePropertiesDescription⠀ mass_source_properties: MassSourceNodePropertiesDescription⠀ internal_properties: InternalNodePropertiesDescription⠀ separator_properties: SeparatorNodePropertiesDescription⠀
NodeCellType
PressureNodePropertiesDescription
MassSourceNodePropertiesDescription
InternalNodePropertiesDescription
SeparatorNodePropertiesDescription
name: string node_type: NodeCellType⠀ pvt_model: string # optional pressure_properties: pressure_node_properties_description_schema⠀ mass_source_properties: mass_source_node_properties_description_schema⠀ internal_properties: internal_node_properties_description_schema⠀ separator_properties: separator_node_properties_description_schema⠀
pressure_node_properties_description_schema
mass_source_node_properties_description_schema
internal_node_properties_description_schema
separator_node_properties_description_schema
class PressureNodePropertiesDescription pressure: Scalar⠀ temperature: Scalar⠀ fluid: Optional[str] tracer_mass_fraction: Array⠀ split_type: MassInflowSplitType⠀ mass_fractions: Dict[str, Scalar] volume_fractions: Dict[str, Scalar] gas_liquid_ratio: Scalar⠀ gas_oil_ratio: Scalar⠀ water_cut: Scalar⠀
MassInflowSplitType
pressure: value: number unit: string temperature: value: number unit: string fluid: string # optional tracer_mass_fraction: values: [number] unit: string split_type: MassInflowSplitType⠀ mass_fractions: string: value: number unit: string volume_fractions: string: value: number unit: string gas_liquid_ratio: value: number unit: string gas_oil_ratio: value: number unit: string water_cut: value: number unit: string
class MassSourceNodePropertiesDescription fluid: Optional[str] tracer_mass_fraction: Array⠀ temperature: Scalar⠀ source_type: MassSourceType⠀ volumetric_flow_rates_std: Dict[str, Scalar] mass_flow_rates: Dict[str, Scalar] total_mass_flow_rate: Scalar⠀ water_cut: Scalar⠀ gas_oil_ratio: Scalar⠀
MassSourceType
fluid: string # optional tracer_mass_fraction: values: [number] unit: string temperature: value: number unit: string source_type: MassSourceType⠀ volumetric_flow_rates_std: string: value: number unit: string mass_flow_rates: string: value: number unit: string total_mass_flow_rate: value: number unit: string water_cut: value: number unit: string gas_oil_ratio: value: number unit: string
class InternalNodePropertiesDescription fluid: Optional[str]
fluid: string # optional
overall_heat_transfer_coefficient –
Q = η A (T_amb - T_sep)
class SeparatorNodePropertiesDescription environment_temperature: Scalar⠀ geometry: SeparatorGeometryType⠀ length: Scalar⠀ overall_heat_transfer_coefficient: Scalar⠀ radius: Scalar⠀ nozzles: Dict[str, Scalar] initial_phase_volume_fractions: Dict[str, Scalar]
SeparatorGeometryType
environment_temperature: value: number unit: string geometry: SeparatorGeometryType⠀ length: value: number unit: string overall_heat_transfer_coefficient: value: number unit: string radius: value: number unit: string nozzles: string: value: number unit: string initial_phase_volume_fractions: string: value: number unit: string
class WellDescription name: str pvt_model: Optional[str] stagnant_fluid: Optional[str] profile: ProfileDescription⠀ casing: CasingDescription⠀ annulus: AnnulusDescription⠀ formation: FormationDescription⠀ top_node: str bottom_node: str environment: EnvironmentDescription⠀ initial_conditions: InitialConditionsDescription⠀ equipment: EquipmentDescription⠀
CasingDescription
AnnulusDescription
FormationDescription
name: string pvt_model: string # optional stagnant_fluid: string # optional profile: profile_description_schema⠀ casing: casing_description_schema⠀ annulus: annulus_description_schema⠀ formation: formation_description_schema⠀ top_node: string bottom_node: string environment: environment_description_schema⠀ initial_conditions: initial_conditions_description_schema⠀ equipment: equipment_description_schema⠀
casing_description_schema
annulus_description_schema
formation_description_schema
class CasingDescription casing_sections: List[CasingSectionDescription] tubings: List[TubingDescription] packers: List[PackerDescription] open_holes: List[OpenHoleDescription]
CasingSectionDescription
TubingDescription
PackerDescription
OpenHoleDescription
casing_sections: - casing_section_description_schema⠀ tubings: - tubing_description_schema⠀ packers: - packer_description_schema⠀ open_holes: - open_hole_description_schema⠀
casing_section_description_schema
tubing_description_schema
packer_description_schema
open_hole_description_schema
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] top_of_filler: Scalar⠀ filler_material: Optional[str] material_above_filler: Optional[str]
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 name: str length: Scalar⠀ outer_diameter: Scalar⠀ inner_diameter: Scalar⠀ inner_roughness: Scalar⠀ material: Optional[str]
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 name: str position: Scalar⠀ material_above: Optional[str]
name: string position: value: number unit: string material_above: string # optional
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 has_annulus_flow: bool has_annulus_flow: bool pvt_model: Optional[str] initial_conditions: InitialConditionsDescription⠀ gas_lift_valve_equipment: Dict[str, GasLiftValveEquipmentDescription] top_node: str
GasLiftValveEquipmentDescription
has_annulus_flow: boolean has_annulus_flow: number pvt_model: string # optional initial_conditions: initial_conditions_description_schema⠀ gas_lift_valve_equipment: string: gas_lift_valve_equipment_description_schema⠀ top_node: string
gas_lift_valve_equipment_description_schema
class GasLiftValveEquipmentDescription position: Scalar⠀ diameter: Scalar⠀ valve_type: ValveType⠀ delta_p_min: Scalar⠀ discharge_coeff: Scalar⠀
ValveType
position: value: number unit: string diameter: value: number unit: string valve_type: ValveType⠀ delta_p_min: value: number unit: string discharge_coeff: value: number unit: string
class FormationDescription reference_y_coordinate: Scalar⠀ layers: List[FormationLayerDescription]
FormationLayerDescription
reference_y_coordinate: value: number unit: string layers: - formation_layer_description_schema⠀
formation_layer_description_schema
class FormationLayerDescription name: str start: Scalar⠀ material: Optional[str]
name: string start: value: number unit: string material: string # optional
class MaterialDescription name: str material_type: MaterialType⠀ density: Scalar⠀ thermal_conductivity: Scalar⠀ heat_capacity: Scalar⠀ inner_emissivity: Scalar⠀ outer_emissivity: Scalar⠀ expansion: Scalar⠀ viscosity: Scalar⠀
MaterialType
name: string material_type: MaterialType⠀ density: value: number unit: string thermal_conductivity: value: number unit: string heat_capacity: value: number unit: string inner_emissivity: value: number unit: string outer_emissivity: value: number unit: string expansion: value: number unit: string viscosity: value: number unit: string
class WallDescription name: str inner_roughness: Scalar⠀ wall_layer_container: List[WallLayerDescription]
WallLayerDescription
name: string inner_roughness: value: number unit: string wall_layer_container: - wall_layer_description_schema⠀
wall_layer_description_schema
Used for defining the default walls.
thickness (Scalar) –
material_name (str) –
has_annulus_flow (bool) –
class WallLayerDescription thickness: Scalar⠀ material_name: str has_annulus_flow: bool has_annulus_flow: bool
thickness: value: number unit: string material_name: string has_annulus_flow: boolean has_annulus_flow: number
Describe a pipe by either length and inclination or by X and Y coordinates.
LengthAndElevation (Optional[XAndYDescription]) – A list of points with the length and elevation. The first item MUST always be (0, 0), otherwise a ValueError is raised.
XAndY (Optional[LengthAndElevationDescription]) – A list of points (X, Y), describing the coordinates.
Note
x_and_y and length_and_elevation are mutually exclusive.
class ProfileDescription x_and_y: Optional[XAndYDescription] length_and_elevation: Optional[LengthAndElevationDescription]
x_and_y: x_and_y_description_schema⠀ # optional length_and_elevation: length_and_elevation_description_schema⠀ # optional
x_and_y_description_schema
length_and_elevation_description_schema
XAndYDescription
Describe a pipe with a sequence of coordinates.
class XAndYDescription x: Optional[Array] y: Optional[Array]
x: # optional values: [number] unit: string y: # optional values: [number] unit: string
LengthAndElevationDescription
Describe a pipe with length and elevation.
class LengthAndElevationDescription length: Optional[Array] elevation: Optional[Array]
length: # optional values: [number] unit: string elevation: # optional values: [number] unit: string
class EnvironmentDescription thermal_model: PipeThermalModelType⠀ position_input_mode: PipeThermalPositionInput⠀ reference_y_coordinate: Scalar⠀ md_properties_table: List[EnvironmentPropertyDescription] tvd_properties_table: List[EnvironmentPropertyDescription]
PipeThermalModelType
PipeThermalPositionInput
EnvironmentPropertyDescription
thermal_model: PipeThermalModelType⠀ position_input_mode: PipeThermalPositionInput⠀ reference_y_coordinate: value: number unit: string md_properties_table: - environment_property_description_schema⠀ tvd_properties_table: - environment_property_description_schema⠀
environment_property_description_schema
class EnvironmentPropertyDescription position: Scalar⠀ temperature: Scalar⠀ type: PipeEnvironmentHeatTransferCoefficientModelType⠀ heat_transfer_coefficient: Scalar⠀ overall_heat_transfer_coefficient: Scalar⠀ fluid_velocity: Scalar⠀
PipeEnvironmentHeatTransferCoefficientModelType
position: value: number unit: string temperature: value: number unit: string type: PipeEnvironmentHeatTransferCoefficientModelType⠀ heat_transfer_coefficient: value: number unit: string overall_heat_transfer_coefficient: value: number unit: string fluid_velocity: value: number unit: string
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]
MassSourceEquipmentDescription
PumpEquipmentDescription
ValveEquipmentDescription
ReservoirInflowEquipmentDescription
HeatSourceEquipmentDescription
CompressorEquipmentDescription
mass_sources: string: mass_source_equipment_description_schema⠀ pumps: string: pump_equipment_description_schema⠀ valves: string: valve_equipment_description_schema⠀ reservoir_inflows: string: reservoir_inflow_equipment_description_schema⠀ heat_sources: string: heat_source_equipment_description_schema⠀ compressors: string: compressor_equipment_description_schema⠀
mass_source_equipment_description_schema
pump_equipment_description_schema
valve_equipment_description_schema
reservoir_inflow_equipment_description_schema
heat_source_equipment_description_schema
compressor_equipment_description_schema
class MassSourceEquipmentDescription fluid: Optional[str] tracer_mass_fraction: Array⠀ temperature: Scalar⠀ source_type: MassSourceType⠀ volumetric_flow_rates_std: Dict[str, Scalar] mass_flow_rates: Dict[str, Scalar] total_mass_flow_rate: Scalar⠀ water_cut: Scalar⠀ gas_oil_ratio: Scalar⠀ position: Scalar⠀
fluid: string # optional tracer_mass_fraction: values: [number] unit: string temperature: value: number unit: string source_type: MassSourceType⠀ volumetric_flow_rates_std: string: value: number unit: string mass_flow_rates: string: value: number unit: string total_mass_flow_rate: value: number unit: string water_cut: value: number unit: string gas_oil_ratio: value: number unit: string position: value: number unit: string
class PumpEquipmentDescription position: Scalar⠀ type: PumpType⠀ pressure_boost: Scalar⠀ thermal_efficiency: Scalar⠀ table: TablePumpDescription⠀ speed_curve: SpeedCurveDescription⠀ speed_curve_interpolation_type: InterpolationType⠀ flow_direction: FlowDirection⠀
PumpType
TablePumpDescription
SpeedCurveDescription
InterpolationType
FlowDirection
position: value: number unit: string type: PumpType⠀ pressure_boost: value: number unit: string thermal_efficiency: value: number unit: string table: table_pump_description_schema⠀ speed_curve: speed_curve_description_schema⠀ speed_curve_interpolation_type: InterpolationType⠀ flow_direction: FlowDirection⠀
table_pump_description_schema
speed_curve_description_schema
class ValveEquipmentDescription position: Scalar⠀ type: ValveType⠀ diameter: Scalar⠀ flow_direction: FlowDirection⠀ opening_type: ValveOpeningType⠀ opening: Scalar⠀ opening_curve_interpolation_type: InterpolationType⠀ opening_curve: OpeningCurveDescription⠀ cv_table: CvTableDescription⠀
ValveOpeningType
OpeningCurveDescription
CvTableDescription
position: value: number unit: string type: ValveType⠀ diameter: value: number unit: string flow_direction: FlowDirection⠀ opening_type: ValveOpeningType⠀ opening: value: number unit: string opening_curve_interpolation_type: InterpolationType⠀ opening_curve: opening_curve_description_schema⠀ cv_table: cv_table_description_schema⠀
opening_curve_description_schema
cv_table_description_schema
class ReservoirInflowEquipmentDescription pressure: Scalar⠀ temperature: Scalar⠀ fluid: Optional[str] tracer_mass_fraction: Array⠀ split_type: MassInflowSplitType⠀ mass_fractions: Dict[str, Scalar] volume_fractions: Dict[str, Scalar] gas_liquid_ratio: Scalar⠀ gas_oil_ratio: Scalar⠀ water_cut: Scalar⠀ start: Scalar⠀ length: Scalar⠀ productivity_ipr: Optional[str] injectivity_ipr: Optional[str]
pressure: value: number unit: string temperature: value: number unit: string fluid: string # optional tracer_mass_fraction: values: [number] unit: string split_type: MassInflowSplitType⠀ mass_fractions: string: value: number unit: string volume_fractions: string: value: number unit: string gas_liquid_ratio: value: number unit: string gas_oil_ratio: value: number unit: string water_cut: value: number unit: string start: value: number unit: string length: value: number unit: string productivity_ipr: string # optional injectivity_ipr: string # optional
class HeatSourceEquipmentDescription start: Scalar⠀ length: Scalar⠀ power: Scalar⠀
start: value: number unit: string length: value: number unit: string power: value: number unit: string
class CompressorEquipmentDescription position: Scalar⠀ speed_curve: SpeedCurveDescription⠀ reference_pressure: Scalar⠀ reference_temperature: Scalar⠀ constant_speed: Scalar⠀ compressor_type: CompressorSpeedType⠀ speed_curve_interpolation_type: InterpolationType⠀ flow_direction: FlowDirection⠀ table: CompressorPressureTableDescription⠀
CompressorSpeedType
CompressorPressureTableDescription
position: value: number unit: string speed_curve: speed_curve_description_schema⠀ reference_pressure: value: number unit: string reference_temperature: value: number unit: string constant_speed: value: number unit: string compressor_type: CompressorSpeedType⠀ speed_curve_interpolation_type: InterpolationType⠀ flow_direction: FlowDirection⠀ table: compressor_pressure_table_description_schema⠀
compressor_pressure_table_description_schema
class SpeedCurveDescription time: Array⠀ speed: Array⠀
time: values: [number] unit: string speed: values: [number] unit: string
corrected_mass_flow_rate_entries – Equivalent to m * (T/T_ref)**0.5 / (P/P_ref)
class CompressorPressureTableDescription speed_entries: Array⠀ corrected_mass_flow_rate_entries: Array⠀ pressure_ratio_table: Array⠀ isentropic_efficiency_table: Array⠀
speed_entries: values: [number] unit: string corrected_mass_flow_rate_entries: values: [number] unit: string pressure_ratio_table: values: [number] unit: string isentropic_efficiency_table: values: [number] unit: string
class TablePumpDescription speeds: Array⠀ void_fractions: Array⠀ flow_rates: Array⠀ pressure_boosts: Array⠀
speeds: values: [number] unit: string void_fractions: values: [number] unit: string flow_rates: values: [number] unit: string pressure_boosts: values: [number] unit: string
class CvTableDescription opening: Array⠀ flow_coefficient: Array⠀
opening: values: [number] unit: string flow_coefficient: values: [number] unit: string
class OpeningCurveDescription time: Array⠀ opening: Array⠀
time: values: [number] unit: string opening: values: [number] unit: string