Domain
- class trident.domain.Area
Bases:
pybind11_objectA market area. Logical price and power transfer node.
- property depletion_season_end
End of the depletion season relative to january 1st each year. Must be smaller than depletion_season_start.
- Type:
- property depletion_season_start
Start of the depletion season relative to january 1st each year. Must be larger than depletion_season_end.
- Type:
- property id
Unique object identifier
- Type:
str
- property inflows
Inflow series with watermark id and average_inflow for a given area.
- Type:
trident.domain._trident_domain.ListInflow
- property load_parts
Load parts in the area
- Type:
trident.domain._trident_domain.ListLoadPart
- property market_steps
Market steps in the area
- Type:
trident.domain._trident_domain.ListMarketStep
- property name
Unique name
- Type:
str
- property price_area_id
Price area identifier
- Type:
str
- class trident.domain.Battery
Bases:
pybind11_objectPower storage devices
- property area_id
Identifier of the associated area
- Type:
str
- property end_value_type
Sets how the end value should be set for the battery. Could be from the dual value of the state of energy the previous decision problem, or given as a time series.
- Type:
- property id
Unique object identifier
- Type:
str
- property initial_end_value
The end value [mu/GWh] for the initial decision problem, given that end_value_type is “endogenous”
- Type:
float
- property initial_state_of_energy
GWh
- Type:
float
- property name
Unique name
- Type:
str
- class trident.domain.BatteryEndValueType
Bases:
pybind11_objectThe type of end value used in a battery.
Members:
ENDOGENOUS : A single end value is set based on the dual value of the battery state of energy at the beginning of the previous decision problem.
EXOGENOUS : An NDArray time series must provide the endvalues. If it contains multiple values the battery energy will be divided into layers corresponding to the end values.
- ENDOGENOUS = <BatteryEndValueType.ENDOGENOUS: 0>
- EXOGENOUS = <BatteryEndValueType.EXOGENOUS: 1>
- __init__(self: BatteryEndValueType, value: int) None
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.ChpThermalPlant
Bases:
pybind11_objectCombined heat and power plants, where some of the production is heat. Temperature dependent.
- __init__(self: ChpThermalPlant) None
- property area_id
Numeric ID of associated area
- Type:
str
- property id
Numeric ID
- Type:
str
- property name
Unique name
- Type:
str
- property temperature_function_reference_id
Reference to temperature function for the combined heat and production thermal unit.
- Type:
str
- property temperature_reference_id
Reference to temperature series for the combined heat and production thermal unit.
- Type:
str
- class trident.domain.DataSet
Bases:
pybind11_objectData class for time dependent data stored as time series. The time series, xy_time_series and xy_curves are placed in a dict, with the key being the URL.
- __init__(*args, **kwargs)
Overloaded function.
__init__(self: trident.domain._trident_domain.DataSet) -> None
__init__(self: trident.domain._trident_domain.DataSet, id: str) -> None
- property id
- Type:
str
- property ndarrayts
- Type:
trident.domain._trident_domain.ResourceWrapperNDArrayTS
- property scenario_bound_rids
- Type:
list[str]
- property signature
- Type:
trident.domain._trident_domain.SourceSignature
- property time_series
Dictionary of
trident.domain.TimeSeries- Type:
trident.domain._trident_domain.StringTimeSeriesMap
- property xy_curves
Dictionary of
trident.domain.XYCurve- Type:
trident.domain._trident_domain.StringXYCurveMap
- property xy_time_series
Dictionary of
trident.domain.XYTimeSeries- Type:
trident.domain._trident_domain.StringXYTSMap
- class trident.domain.DynamicResponseType
Bases:
pybind11_objectThe response dynamic of a market step, price elastic load or thermal plant. Available types are ‘momentary’, ‘asymptotic’ and ‘linear’. Linear or asymptotic means there is some delay in the change of demand.
Members:
MOMENTARY : TODO: Add docstring for enum value DynamicResponseType::MOMENTARY
ASYMPTOTIC : TODO: Add docstring for enum value DynamicResponseType::ASYMPTOTIC
LINEAR : TODO: Add docstring for enum value DynamicResponseType::LINEAR
- ASYMPTOTIC = <DynamicResponseType.ASYMPTOTIC: 1>
- LINEAR = <DynamicResponseType.LINEAR: 2>
- MOMENTARY = <DynamicResponseType.MOMENTARY: 0>
- __init__(self: DynamicResponseType, value: int) None
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.ExponentialPriceElasticity
Bases:
pybind11_objectTODO: Add docstring for class ExponentialPriceElasticity
- __init__(self: ExponentialPriceElasticity) None
- property exponent
TODO: Add docstring for class field ExponentialPriceElasticity::exponent
- Type:
float
- property lower_price_limit
TODO: Add docstring for class field ExponentialPriceElasticity::lower_price_limit
- Type:
float
- property normal_price
TODO: Add docstring for class field ExponentialPriceElasticity::normal_price
- Type:
float
- property response_dynamic
TODO: Add docstring for class field ExponentialPriceElasticity::response_dynamic
- Type:
- property upper_price_limit
TODO: Add docstring for class field ExponentialPriceElasticity::upper_price_limit
- Type:
float
- class trident.domain.FuelType
Bases:
pybind11_objectFuel types are decriptions of different fuels used in thermal plants for calculating prices
- property co2_equivalent
CO2 equivalence of fuel. TODO: Unit
- Type:
float
- property energy_coefficient
Energy coefficient GWh/fuel
- Type:
float
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
- class trident.domain.HydraulicJunction
Bases:
pybind11_objectNode points that connect waterways
- __init__(self: HydraulicJunction) None
- property area_id
Identifier of the associated area
- Type:
str
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
- class trident.domain.HydroPlant
Bases:
pybind11_objectHydro power plant using water as a source of power.
- __init__(self: HydroPlant) None
- property area_id
Identifier of the associated area
- Type:
str
- property discharge_path_id
Identifier of the associated waterway
- Type:
str
- property efficiency
Power production efficiency (GWh/Mm3)
- Type:
float
- property has_startup_costs
Flag if this power plant has startup costs or not.
- Type:
bool
- property id
Unique object identifier
- Type:
str
- property max_production_capacity
Maximum production capacity (MW)
- Type:
float
- property min_production_capacity
Minimum production capacity (MW)
- Type:
float
- property name
Unique name
- Type:
str
Owner share (percentage)
- Type:
float
- property pressure_tunnel
The pressure tunnel of the hydro plant
- Type:
- property unregulated_inflow_rate
Average unregulated inflow (Mm^3/year)
- Type:
float
- property unregulated_inflow_source
A string id which identifies a unregulated inflow data source.
- Type:
str
- property volume_dependent_discharge_reservoir_id
Id of reservoir whose volume affect maximum discharge for this plant.
- Type:
Optional[str]
- class trident.domain.InterpolationType
Bases:
pybind11_objectMembers:
instant
linear
- __init__(self: InterpolationType, value: int) None
- instant = <InterpolationType.instant: 0>
- linear = <InterpolationType.linear: 1>
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.LoadPart
Bases:
pybind11_objectA component in the power load scheme of a market area.
- property exponential_price_elasticity
TODO: Add docstring for class field LoadPart::exponential_price_elasticity
- Type:
Optional[ExponentialPriceElasticity]
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
- property piecewise_linear_price_elasticity
TODO: Add docstring for class field LoadPart::piecewise_linear_price_elasticity
- Type:
Optional[PiecewiseLinearPriceElasticity]
- property temperature_corrections
Temperature corrections that apply to this load part
- Type:
trident.domain._trident_domain.ListTemperatureCorrection
- class trident.domain.LogLevel
Bases:
pybind11_objectLogging level
Members:
SILENT : No log messages
CRITICAL : Critical errors
ERROR : Errors
WARNING : Warnings
NORMAL : Normal log messages
VERBOSE : Debug log messages
- CRITICAL = <LogLevel.CRITICAL: 1>
- ERROR = <LogLevel.ERROR: 2>
- NORMAL = <LogLevel.NORMAL: 4>
- SILENT = <LogLevel.SILENT: 0>
- VERBOSE = <LogLevel.VERBOSE: 5>
- WARNING = <LogLevel.WARNING: 3>
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.LogicalModel
Bases:
pybind11_objectLogical model for energy domain
- __init__(self: LogicalModel) None
- property areas
All areas
- Type:
trident.domain._trident_domain.ListArea
- as_json(self: LogicalModel) str
- property batteries
All batteries in the model
- Type:
trident.domain._trident_domain.ListBattery
- property chp_thermal_plants
All combined heat and power plants in the power system
- Type:
trident.domain._trident_domain.ListChpThermalPlant
- static from_json(json: str) LogicalModel
- property fuel_types
All fuel types
- Type:
trident.domain._trident_domain.ListFuelType
- property hydraulic_junctions
All hydraulic junctions in hydrological system
- Type:
trident.domain._trident_domain.ListHydraulicJunction
- property hydro_plants
All hydro plants in hydrological system
- Type:
trident.domain._trident_domain.ListHydroPlant
- property id
ID for this Logical Model
- Type:
str
- property power_connections
All power connections
- Type:
trident.domain._trident_domain.ListPowerConnection
- property pumps
All pumps in hydrological system
- Type:
trident.domain._trident_domain.ListPump
- property reservoirs
All reservoirs in hydrological system
- Type:
trident.domain._trident_domain.ListReservoir
- property sea
Hydraulic node representing a global water drain
- Type:
trident.domain._trident_domain.Sea
- property signature
Source signature of this model
- Type:
trident.domain._trident_domain.SourceSignature
- property solar_parks
All photovoltaic parks in the power system
- Type:
trident.domain._trident_domain.ListSolarPark
- property thermal_plants
All thermal plants in the power system
- Type:
trident.domain._trident_domain.ListThermalPlant
- property unit_of_input_prices
The unit of input prices. All input prices are assumed to use same unit. This can be used to discern the money unit (mu). E.g. if the input price unit is øre/kWh, and the output timeseries are mu/GWh, then mu = 1e6 øre.
- Type:
- property waterways
All waterways in hydrological system
- Type:
trident.domain._trident_domain.ListWaterway
- property wind_parks
All wind parks in the power system
- Type:
trident.domain._trident_domain.ListWindPark
- class trident.domain.LogicalModelView
Bases:
pybind11_object- __init__(self: LogicalModelView, model: LogicalModel) None
- area_by_id(self: LogicalModelView, arg0: str) Area
Returns an area by id.
- create_area(self: LogicalModelView, area_id: str, area_name: str) Area
Create a new area.
- create_battery(self: LogicalModelView, battery_id: str, battery_name: str, area_id: str) Battery
Create a new battery.
- create_bypass_path(self: LogicalModelView, waterway_id: str, waterway_name: str, upstream_reservoir_id: str, downstream_reservoir_id: str) Waterway
Creates a new bypass path between the specified reservoirs.
The bypass path’s waterway_id must be unique among all waterways.
- create_chp_thermal_plant(self: LogicalModelView, chp_thermal_plant_id: str, chp_thermal_plant_name: str, area_id: str, temperature_reference_id: str, temperature_function_reference_id: str) ChpThermalPlant
Creates a new chp thermal plant.
- create_discharge_path(self: LogicalModelView, waterway_id: str, waterway_name: str, upstream_reservoir_id: str, downstream_reservoir_id: str) Waterway
Creates a new discharge path between the specified reservoirs.
The discharge path’s waterway_id must be unique among all waterways.
- create_fuel_type(self: LogicalModelView, arg0: str, arg1: str, arg2: float, arg3: float) FuelType
Creates a new fuel type.
- create_hydraulic_junction(self: LogicalModelView, hydraulic_junction_id: str, hydraulic_junction_name: str, area_id: str) HydraulicJunction
Creates a hydraulic junction at the specified reservoir.
- create_hydro_plant(self: LogicalModelView, hydro_plant_id: str, hydro_plant_name: str, area_id: str, waterway_id: str) HydroPlant
Creates a new hydro plant.
- create_inflow(self: LogicalModelView, area_id: str, watermark_id: str, average_inflow: float) trident.domain._trident_domain.Inflow
Create a new inflow object.
- create_load_part(self: LogicalModelView, load_type_id: str, load_type_name: str, area_id: str) LoadPart
Create a new load type.
- create_market_step(self: trident.domain._trident_domain.LogicalModelView, market_step_id: str, market_step_name: str, area_id: str, response_dynamic: trident.domain._trident_domain.DynamicResponseType = <DynamicResponseType.MOMENTARY: 0>) MarketStep
Creates a new market step.
- create_power_connection(self: LogicalModelView, power_connection_id: str, power_connection_name: str, from_area_id: str, to_area_id: str) PowerConnection
Create a new power connection between two areas.
- create_pump(self: LogicalModelView, pump_id: str, pump_name: str, waterway_id: str, connected_reservoir_id: str) Pump
Creates a new pump which pumps from and to the reservoirs of the specified waterway. The waterway must be a pump tunnel.
- create_pump_tunnel(self: LogicalModelView, waterway_id: str, waterway_name: str, upstream_reservoir_id: str, downstream_reservoir_id: str) Waterway
Creates a pump tunnel between the specified reservoirs.
The pump tunnel’s waterway_id must be unique among all waterways.
- create_reservoir(self: LogicalModelView, reservoir_id: str, reservoir_name: str, area_id: str) trident.domain._trident_domain.ReservoirView
Create a new reservoir.
- create_sea(self: LogicalModelView) None
Create a sea entity which can be connected with waterways.
- create_solar_park(self: LogicalModelView, solar_park_id: str, solar_park_name: str, area_id: str) SolarPark
Create a new solar park.
- create_spillage_path(self: LogicalModelView, waterway_id: str, waterway_name: str, upstream_reservoir_id: str, downstream_reservoir_id: str) Waterway
Creates a new spillage path between the specified reservoirs.
The spillage path’s waterway_id must be unique among all waterways.
- create_temperature_correction(self: LogicalModelView, load_part: LoadPart, temp_series_ref: str, correction_series_ref: str, weight: float) TemperatureCorrection
Creates a new temperature correction for a load part
- create_thermal_plant(self: trident.domain._trident_domain.LogicalModelView, thermal_plant_id: str, thermal_plant_name: str, area_id: str, fuel_type_id: Optional[str], response_dynamic: trident.domain._trident_domain.DynamicResponseType = <DynamicResponseType.MOMENTARY: 0>) ThermalPlant
Creates a new thermal plant.
- create_tunnel(self: LogicalModelView, waterway_id: str, waterway_name: str, upstream_reservoir_id: str, downstream_reservoir_id: str) Waterway
Creates a tunnel between the specified reservoirs.
The tunnel’s waterway_id must be unique among all waterways.
- create_waterway(self: LogicalModelView, waterway_id: str, waterway_name: str, waterway_type: WaterwayType, upstream_reservoir_id: str, downstream_reservoir_id: str) Waterway
Creates a new waterway between the specified reservoirs.
The waterway_id must be unique among all waterways.
- create_wind_park(self: LogicalModelView, wind_park_id: str, wind_park_name: str, area_id: str) WindPark
Create a new wind park.
- property data
- Type:
- fuel_type_by_id(self: LogicalModelView, arg0: str) FuelType
Returns fuel type by id.
- hydro_plant_by_id(self: LogicalModelView, arg0: str) HydroPlant
Returns an hydro plant by id.
- hydro_plants_in_area(self: LogicalModelView, arg0: str) list[HydroPlant]
Returns all hydro plant in the specified area.
- property id
- Type:
str
- load_type_by_id_and_area(self: LogicalModelView, arg0: str, arg1: str) LoadPart
Return a load type by load type id and area id
- pumps_in_area(self: LogicalModelView, arg0: str) list[Pump]
Returns an pump by id.
- reservoir_by_id(self: LogicalModelView, arg0: str) trident.domain._trident_domain.ReservoirView
Returns an reservoir by id.
- reservoirs_in_area(self: LogicalModelView, arg0: str) list[trident.domain._trident_domain.ReservoirView]
Returns all reservoirs in the specified area.
- property sea_reservoir_id
Get the reservoir id of the sea.
- Type:
str
- set_exponential_price_elasticity(self: trident.domain._trident_domain.LogicalModelView, load_part: trident.domain._trident_domain.LoadPart, normal_price: float, upper_price_limit: float, lower_price_limit: float, exponent: float, response_dynamic: trident.domain._trident_domain.DynamicResponseType = <DynamicResponseType.MOMENTARY: 0>) None
Sets exponential price elasticity in a load part.
- set_piecewise_linear_price_elasticity(self: trident.domain._trident_domain.LogicalModelView, load_part: trident.domain._trident_domain.LoadPart, pieces: list[Annotated[list[float], FixedSize(2)]], response_dynamic: trident.domain._trident_domain.DynamicResponseType = <DynamicResponseType.MOMENTARY: 0>) None
Sets a piecewise linear price elasticity for a load part.
- waterway_by_id(self: LogicalModelView, arg0: str) Waterway
Returns an waterway by id.
- waterways_by_type(self: LogicalModelView, waterway_type: WaterwayType) list[Waterway]
Returns all waterways of the given type.
- class trident.domain.MarketStep
Bases:
pybind11_objectA price dependent contract, a generic way to simulate buying or selling power.
- __init__(self: MarketStep) None
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
- property response_dynamic
Response type of the market step. Momentary, or a form of price adaptivity
- Type:
- class trident.domain.ModuleSelector
Bases:
pybind11_objectSpecifies the UUID and/or name of a module to select
- __init__(self: ModuleSelector) None
- property enabled
Enable this module
- Type:
bool
- property name
The name of a module
- Type:
str
- property uuid
The UUID of a module
- Type:
str
- class trident.domain.NDArray
Bases:
pybind11_objectA N-dimensional array type that is compatible with numpy.ndarray
- __init__(*args, **kwargs)
Overloaded function.
__init__(self: trident.domain._trident_domain.NDArray, data: Buffer) -> None
__init__(self: trident.domain._trident_domain.NDArray, data: Iterable) -> None
- property ndims
- Type:
int
- property shape
- Type:
object
- property strides
- Type:
object
- class trident.domain.NDArrayTS
Bases:
pybind11_objectA time series containing NDArrayTS elements
- __init__(*args, **kwargs)
Overloaded function.
__init__(self: trident.domain._trident_domain.NDArrayTS) -> None
__init__(self: trident.domain._trident_domain.NDArrayTS, times: list[int], values: list[trident.domain._trident_domain.NDArray]) -> None
__init__(self: trident.domain._trident_domain.NDArrayTS, times: list[int], values: list[Buffer]) -> None
__init__(self: trident.domain._trident_domain.NDArrayTS, times: Iterable, values: Iterable) -> None
- iter(self: NDArrayTS, start: int, end: int, delta: int) trident.domain._trident_domain.NDArrayTSIterable
Create an iterable context that yields elements at specified time intervals
- property t
- Type:
list
- property v
- Type:
list
- class trident.domain.PiecewiseLinearPriceElasticity
Bases:
pybind11_objectTODO: Add docstring for class PiecewiseLinearPriceElasticity
- __init__(self: PiecewiseLinearPriceElasticity) None
- property pieces
TODO: Add docstring for class field PiecewiseLinearPriceElasticity::pieces
- Type:
list[Annotated[list[float], FixedSize(2)]]
- property response_dynamic
TODO: Add docstring for class field PiecewiseLinearPriceElasticity::response_dynamic
- Type:
- class trident.domain.PowerConnection
Bases:
pybind11_objectA power line connection between two areas.
- __init__(self: PowerConnection) None
- property flow
Start net power flow for the connection (MW)
- Type:
float
- property from_area_id
Identifier of the area connected from
- Type:
str
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
- property to_area_id
Identifier of the area connected to
- Type:
str
- class trident.domain.PressureTunnel
Bases:
pybind11_objectA tunnel with water under pressure in a hydro plant or a pump.
- __init__(self: PressureTunnel) None
- property nominal_hydraulic_head
Nominal hydraulic head (m)
- Type:
float
- property tailrace_elevation
Elevation of the tailrace (masl)
- Type:
float
- class trident.domain.PriceUnit
Bases:
pybind11_objectThe unit of prices
Members:
UNKNOWN : TODO: Add docstring for enum value PriceUnit::UNKNOWN
NOK_ORE_PER_KWH : TODO: Add docstring for enum value PriceUnit::NOK_ORE_PER_KWH
EUR_CENT_PER_MWH : TODO: Add docstring for enum value PriceUnit::EUR_CENT_PER_MWH
- EUR_CENT_PER_MWH = <PriceUnit.EUR_CENT_PER_MWH: 3>
- NOK_ORE_PER_KWH = <PriceUnit.NOK_ORE_PER_KWH: 2>
- UNKNOWN = <PriceUnit.UNKNOWN: 1>
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.Pump
Bases:
pybind11_objectA water pumping station, capable of moving water between two reservoirs.
- property average_energy_equivalent
The average energy equivalent set by the user.
- Type:
float
- property average_pump_power
Power consumed when pumping (MW)
- Type:
float
- property connected_reservoir_id
Identifier of the connected reservoir
- Type:
str
- property id
Unique object identifier
- Type:
str
- property max_pump_capacity
Maximum flow the pump is capable of (m3/s)
- Type:
float
- property name
Unique name
- Type:
str
- property nominal_lift_height
The nominal head between the lower and upper reservoir (m)
- Type:
float
Share of ownership of the pump
- Type:
float
- property pump_capacities
Pump capacities for the pumps’ pumping capacity versus lift height curve (m3/s)
- Type:
list[float]
- property pump_capacity_slope
Slope of the function between lift height and pump capacity
- Type:
float
- property validation_heights
Height points for validation. Lower and upper head limits (m)
- Type:
list[float]
- property waterway_id
Identifier of the associated waterway
- Type:
str
- class trident.domain.Reservoir
Bases:
pybind11_objectA water reservoir in a watercourse.
- property area_id
Identifier of the associated area
- Type:
str
- property average_energy_equivalent
Average energy equivalent for the water in the reservoir.
- Type:
float
- property id
Unique object identifier
- Type:
str
- property initial_volume
Initial reservoir volume. (Mm^3)
- Type:
float
- property is_regulated
Flag indicating whether the reservoir is a regulation reservoir (true) or buffer reservoir (false). Defaults to true.
- Type:
bool
- property max_volume
Maximum physical reservoir volume. (Mm^3)
- Type:
float
- property max_volume_restriction_type
Reservoir maximum volume restriction type. Soft limits introduces penalty for max volume use, absolute demands use of spillage path.
- property min_volume_restriction_type
Reservoir minimum volume restriction type.
- property name
Unique name
- Type:
str
- property regulated_inflow_rate
Average regulated inflow (Mm^3/year)
- Type:
float
- property regulated_inflow_source
A string id which identifies a regulated inflow data source.
- Type:
str
- property regulation_degree
Degree of regulation. Used to disaggregate water values using the target reservoir method.
- Type:
Optional[float]
- property target_type
Target type of the reservoir. None means that the reservoir is not a target reservoir.
- Type:
- class trident.domain.ReservoirTargetType
Bases:
pybind11_objectThe type of reservoir target model for a reservoir.
Members:
NONE : TODO: Add docstring for enum value ReservoirTargetType::NONE
END_OF_PERIOD : TODO: Add docstring for enum value ReservoirTargetType::END_OF_PERIOD
- END_OF_PERIOD = <ReservoirTargetType.END_OF_PERIOD: 1>
- NONE = <ReservoirTargetType.NONE: 0>
- __init__(self: ReservoirTargetType, value: int) None
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.ReservoirVolumeRestrictionType
Bases:
pybind11_objectThe type of volume restriction for a reservoir.
Members:
NONE : TODO: Add docstring for enum value ReservoirVolumeRestrictionType::NONE
SOFT : Discharge from a reservoir is restricted when its volume is below the limit. This is modeled by creating a preprocessed hard volume restriction with a limit that is the minimum of the input limit and the achievable minimum volume based on a safe inflow computation.
HARD : Reservoir volume below the limit is punished. This is modeled as an insentive to use a minimum volume layer.
SOFT_NO_DISCHARGE : Deprecated. Discharge from a reservoir is restricted when its volume is below the limit. This is modeled by setting the discharge variables to 0 for entire master problem if the volume is below the limit at the beginning of the problem.
- HARD = <ReservoirVolumeRestrictionType.HARD: 2>
- NONE = <ReservoirVolumeRestrictionType.NONE: 0>
- SOFT = <ReservoirVolumeRestrictionType.SOFT: 1>
- SOFT_NO_DISCHARGE = <ReservoirVolumeRestrictionType.SOFT_NO_DISCHARGE: 3>
- __init__(self: ReservoirVolumeRestrictionType, value: int) None
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.RunConfig
Bases:
pybind11_objectRun config, containing all the info for a run
- property data_set_id
Unique ID of the data set to use
- Type:
str
- property gen_master_lp_files
Specifies of which iterations to generate LP files
- Type:
list[int]
- property gen_master_mps_files
Specifies of which iterations to generate MPS files
- Type:
list[int]
- property gen_master_solution_files
Specifies of which iterations to generate solution files for the master LP problems
- Type:
list[int]
- property gen_reports
Specifies which reports to generate. See Engine.get_report for more info.
- Type:
set[str]
- property id
Unique string ID for this run config
- Type:
str
- property logical_model_id
Unique ID of the logical model to use
- Type:
str
- property modules
Modules
- Type:
list[ModuleSelector]
- property scenarios
All scenarios to run (Note: Currently must be exactly 1)
- Type:
list[ScenarioSpec]
- property simulation_config
Simulation parameters
- Type:
- property solver
TODO: Add docstring for class field RunConfig::solver
- Type:
- property use_data_memcache
Memcache policy; data (e.g. time series) in memory
- Type:
bool
- class trident.domain.ScenarioSpec
Bases:
pybind11_objectSpecification for the scenario bound resources and configured scenario year
- __init__(self: ScenarioSpec) None
- property scenario_id
ID of the scenario.
- Type:
str
- property scenario_year
Start year of the historical period for the scenario.
- Type:
int
- class trident.domain.SimulationConfig
Bases:
pybind11_objectSimulation parameters for a run
- __init__(self: SimulationConfig) None
- property decision_problem_overlap
How long the overlap between decision problems should be. The default is zero. The overlap adds to the total length of the decision problem, but result data is only exported for the main interval, and not the overlap.
- Type:
- property decision_problem_time_lengths
The time interval between each decision problem by index in microseconds. Default is 1 week. Each element is used once, and if the simulation runs longer than the total of the decision problem time lengths, then the final time length is repeated until the end.
- Type:
list[TimeDelta]
- property simulation_end_time
End time for simulation. The last decision problem may overlap with this point, but it may never start at or after it.
- Type:
- property target_decision_problem_index
The decision problem index to stop the run at, if simulation_end_time hasn’t been reached. If set to 0, the value is ignored.
- Type:
int
- class trident.domain.SolverAlgorithm
Bases:
pybind11_objectLP solver algorithm
Members:
DUAL_SIMPLEX : Dual simplex
BARRIER : Barrier
PRIMAL_SIMPLEX : Primal simplex
CUOPT_PDLP : Primal-Dual Hybrid Gradient for Linear Program
- BARRIER = <SolverAlgorithm.BARRIER: 2>
- CUOPT_PDLP = <SolverAlgorithm.CUOPT_PDLP: 4>
- DUAL_SIMPLEX = <SolverAlgorithm.DUAL_SIMPLEX: 1>
- PRIMAL_SIMPLEX = <SolverAlgorithm.PRIMAL_SIMPLEX: 3>
- __init__(self: SolverAlgorithm, value: int) None
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.SolarPark
Bases:
pybind11_objectA solar energy park.
- property area_id
Identifier of the associated area
- Type:
str
- property has_cost
Set to true if the pv park has a cost associated with it. Plant will be handled like market steps with capacity and cost if true.
- Type:
bool
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
Owner share (percentage)
- Type:
float
- property production_weight_id
Identifier for resource (time series) with production weight
- Type:
str
- class trident.domain.SolverConfig
Bases:
pybind11_objectSpecifies a solver library to use
- __init__(self: SolverConfig) None
- property algorithm
LP solver algorithm
- Type:
- property deterministic_mode
Set solver configurations which increases the likelihood of the result being the same across different platforms. But might increase solve time.
- Type:
bool
- property name
Name of the solver, e.g. “coin-clp”, “cplex”, etc.
- Type:
str
- property version
Version string, or “default”.
- Type:
str
- class trident.domain.TemperatureCorrection
Bases:
pybind11_objectA temperature correction.
- __init__(self: TemperatureCorrection) None
- property correction_series_ref
Reference to temperature correction function
- Type:
str
- property temp_series_ref
Reference to temperature time series
- Type:
str
- property weight
Factor of the corresponding correction
- Type:
float
- class trident.domain.ThermalPlant
Bases:
pybind11_objectThermal plants are producers of power. Behaves as market steps, with certain extended features such as production ramping
- __init__(self: ThermalPlant) None
- property area_id
Identifier of the associated area
- Type:
str
- property fuel_type_id
Identifier of fuel type
- Type:
Optional[str]
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
- property ramping_limit
Ramping limit (GW/h)
- Type:
Optional[float]
- property response_dynamic
Price responce type. Momentary or dynamic
- Type:
- class trident.domain.TimeDelta
Bases:
pybind11_object- __init__(*args, **kwargs)
Overloaded function.
__init__(self: trident.domain._trident_domain.TimeDelta) -> None
__init__(self: trident.domain._trident_domain.TimeDelta, arg0: str) -> None
__init__(self: trident.domain._trident_domain.TimeDelta, arg0: int) -> None
- property value
- Type:
int
- class trident.domain.TimePoint
Bases:
pybind11_object- __init__(*args, **kwargs)
Overloaded function.
__init__(self: trident.domain._trident_domain.TimePoint) -> None
__init__(self: trident.domain._trident_domain.TimePoint, arg0: str) -> None
__init__(self: trident.domain._trident_domain.TimePoint, arg0: int) -> None
- property value
- Type:
int
- class trident.domain.TimeSeries
Bases:
pybind11_object- __init__(self: trident.domain._trident_domain.TimeSeries, t: list[int], v: list[float], interpolation: trident.domain._trident_domain.InterpolationType = <InterpolationType.instant: 0>) None
Create a new time series.
- aggregate(self: TimeSeries, unit_time: int = 1000000, start_value: float = 0.0, scaling_factor: float = 1.0) TimeSeries
- at(*args, **kwargs)
Overloaded function.
at(self: trident.domain._trident_domain.TimeSeries, time: int) -> float
Get value of time series at a time. Value is either interpolated or the value of the closest previous.
at(self: trident.domain._trident_domain.TimeSeries, arg0: list[int]) -> list[float]
- property interpolation
Interpolation type of the time series. Either linear, or instant. Instant will interpet the graph as star steps.
- Type:
- iter_aggr_averages(**kwargs)
- iter_aggr_sums(**kwargs)
- iter_aggr_times(**kwargs)
- iter_aggr_values(**kwargs)
- iter_times(**kwargs)
- iter_values(**kwargs)
- max(self: TimeSeries) float
- min(self: TimeSeries) float
- shift(self: TimeSeries, time_delta: int) TimeSeries
Return a new time series with the time axis shifted. The time axis will be allocated in a new std::vector, with ownership held by the time series.
- property t
Time vector of the time series.
- Type:
memoryview
- t_to_numpy(self: TimeSeries) numpy.ndarray[numpy.int64]
Get a numpy array of the times of the time series.
- property v
Value vector of the time series.
- Type:
memoryview
- v_to_numpy(self: TimeSeries) numpy.ndarray[numpy.float64]
Get a numpy array of the values of the time series.
- class trident.domain.Waterway
Bases:
pybind11_objectA waterway that connects reservoirs, hydraulic junctions, and the sea.
- property downstream_reservoir_id
Identifier of downstream entity
- Type:
str
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
- property upstream_reservoir_id
Identifier of upstream entity
- Type:
str
- property waterway_type
Type of waterway. Type controls model behaviour
- Type:
- class trident.domain.WaterwayType
Bases:
pybind11_objectThe type of a waterway.
Members:
NONE : Undefined waterway type
DISCHARGE : A waterway used for water discharged from a HydroPlant
BYPASS : A waterway used for release bypassing a HydroPlant discharge path
SPILLAGE : A path taken by water when a Reservoir is full
PUMP_TUNNEL : A path taken by water when pumped to an upstream Reservoir
TUNNEL : Open tunnel between reservoirs. This should be connected to an equalizing junction. This represents a generic connection between nodes. This is one-way as with all other pathways, although not neccesarily in a “downward” direction. See “AN Filstruktur_V10.pdf” section 15.9.2 page 134
- BYPASS = <WaterwayType.BYPASS: 2>
- DISCHARGE = <WaterwayType.DISCHARGE: 1>
- NONE = <WaterwayType.NONE: 0>
- PUMP_TUNNEL = <WaterwayType.PUMP_TUNNEL: 4>
- SPILLAGE = <WaterwayType.SPILLAGE: 3>
- TUNNEL = <WaterwayType.TUNNEL: 5>
- __init__(self: WaterwayType, value: int) None
- property name
- Type:
str
- property value
- Type:
int
- class trident.domain.WindPark
Bases:
pybind11_objectA wind power park.
- property area_id
Identifier of the associated area
- Type:
str
- property has_cost
Set to true if the wind park has a cost associated with it. Plant will be handled like market steps with capacity and cost if true.
- Type:
bool
- property id
Unique object identifier
- Type:
str
- property name
Unique name
- Type:
str
Owner share (percentage)
- Type:
float
- property production_weight_id
Identifier for resource (time series) with production weight
- Type:
str
- class trident.domain.XYCurve
Bases:
pybind11_objectThe XYCurve class stores two vectors, one with the X-values, and one with the corresponding Y-values. The class supports compression, such that if two subsequent values have the save value, only the first element is stored. Thus to retrieve all values, the XYCurveIter class should be applied.
- __init__(*args, **kwargs)
Overloaded function.
__init__(self: trident.domain._trident_domain.XYCurve) -> None
__init__(self: trident.domain._trident_domain.XYCurve, x: list[float], y: list[float]) -> None
__init__(self: trident.domain._trident_domain.XYCurve, x: list[float], y: list[float], interpolation: trident.domain._trident_domain.Interpolation) -> None
- iter_x(start, stop, delta)
- iter_y(start, stop, delta)
- property x
- Type:
list[float]
- property y
- Type:
list[float]