Trough Dispatch
- class hopp.simulation.technologies.dispatch.power_sources.trough_dispatch.TroughDispatch(pyomo_model: ConcreteModel, indexed_set: Set, system_model: None, financial_model: Singleowner | CustomFinancialModel, block_set_name: str = 'trough')
Bases:
CspDispatch- trough_obj: Expression | float
- _system_model: None
- _financial_model: Singleowner | CustomFinancialModel
Dispatch optimization model for CSP trough systems.
- __init__(pyomo_model: ConcreteModel, indexed_set: Set, system_model: None, financial_model: Singleowner | CustomFinancialModel, block_set_name: str = 'trough')
Initialize TroughDispatch.
- Parameters:
pyomo_model (ConcreteModel) – Pyomo concrete model.
indexed_set (Set) – Indexed set.
system_model (None) – System model.
financial_model (FinancialModelType) – Financial model.
block_set_name (str) – Name of the block set.
- update_initial_conditions()
Update initial conditions method.
- max_gross_profit_objective(hybrid_blocks)
Trough CSP instance of maximum gross profit objective.
- Parameters:
hybrid_blocks (Pyomo.block) – A generalized container for defining hierarchical models by adding modeling components as attributes.
- min_operating_cost_objective(hybrid_blocks)
Trough CSP instance of minimum operating cost objective.
- Parameters:
hybrid_blocks (Pyomo.block) – A generalized container for defining hierarchical models by adding modeling components as attributes.
- _create_variables(hybrid)
Create Trough CSP variables to add to hybrid plant instance.
- Parameters:
hybrid – Hybrid plant instance.
- Returns:
- Tuple containing created variables.
generation: Generation from given technology.
load: Load from given technology.
- Return type:
tuple
- static _check_efficiency_value(efficiency)
Checks efficiency is between 0 and 1 or 0 and 100. Returns fractional value
- static _create_csp_port(csp)
Create pyomo ports related to CSP instance.
- Parameters:
csp – CSP instance.
- static _create_cycle_constraints(csp)
Create constraints related to the power cycle.
- Parameters:
csp – CSP instance.
- _create_cycle_linking_constraints()
Create constraints for linking cycle.
- static _create_cycle_parameters(csp)
Create parameters related to the power cycle.
- Parameters:
csp – CSP instance.
- static _create_cycle_variables(csp)
Create variables related to the power cycle.
- Parameters:
csp – CSP instance.
- _create_linking_constraints()
Create linking constraints for storage, receiver and cycle.
- _create_port(hybrid)
Create CSP trough port to add to hybrid plant instance.
- Parameters:
hybrid – Hybrid plant instance.
- Returns:
CSP Trough Port object.
- Return type:
Port
- static _create_receiver_constraints(csp)
Create constraints related to the receiver.
- Parameters:
csp – CSP instance.
- _create_receiver_linking_constraints()
Create constraints for linking receiver.
- static _create_receiver_parameters(csp)
Create parameters related to CSP receiver.
- Parameters:
csp – CSP instance.
- static _create_receiver_variables(csp)
Create variables related to the receiver.
- Parameters:
csp – CSP instance.
- static _create_storage_constraints(csp)
Create constraints related to thermal energy storage.
- Parameters:
csp – CSP instance.
- _create_storage_linking_constraints()
Create constraints for linking storage.
- static _create_storage_parameters(csp)
Create parameters related to thermal energy storage.
- Parameters:
csp – CSP instance.
- static _create_storage_variables(csp)
Create variables related to thermal energy storage.
- Parameters:
csp – CSP instance.
- property allowable_cycle_startup_power: float
Allowable power per period for cycle start-up [MWt]
- property allowable_receiver_startup_power: float
Allowable power per period for receiver start-up [MWt]
- property available_thermal_generation: list
Available solar thermal generation from the csp field [MWt]
- property blocks: Block
- property condenser_losses: list
Normalized condenser parasitic losses [-]
- property cost_per_change_thermal_input: float
Penalty for change in power cycle thermal input [$/MWt]
- property cost_per_cycle_generation: float
Generation cost for power cycle [$/MWhe]
- property cost_per_cycle_start: float
Penalty for power cycle start [$/start]
- property cost_per_field_generation: float
Generation cost for the csp field [$/MWht]
- property cost_per_field_start: float
Penalty for field start-up [$/start]
- property cycle_ambient_efficiency_correction: list
Cycle efficiency ambient temperature adjustment factor [-]
- property cycle_generation: list
Power cycle electricity generation [MWe]
- property cycle_nominal_efficiency: float
Power cycle nominal efficiency [-]
- property cycle_performance_slope: float
Slope of linear approximation of power cycle performance curve [MWe/MWt]
- property cycle_pumping_losses: float
Cycle heat transfer fluid pumping power per unit energy expended [MWe/MWt]
- property cycle_required_startup_energy: float
Required energy expended to start cycle [MWht]
- property cycle_startup_inventory: list
Cycle start-up energy inventory [MWht]
- property cycle_thermal_power: list
Cycle thermal power utilization [MWt]
- property cycle_thermal_ramp: list
Power cycle positive change in thermal energy input [MWt]
- dispatch_block_rule(csp)
Called during Dispatch’s __init__. Define dispatch block rules.
- Parameters:
csp – CSP instance.
- property field_startup_losses: float
Solar field startup or shutdown parasitic loss [MWhe]
- property field_track_losses: float
Solar field tracking parasitic loss [MWe]
- static get_start_datetime_by_hour(start_time: int)
Get the datetime object corresponding to the start time of year in hours.
- Parameters:
start_time (int) – Start time of the simulation in hours.
- Returns:
Datetime object corresponding to the start time.
- Return type:
datetime.datetime
Notes
This method calculates the datetime object corresponding to the start time in hours relative to the beginning of the year.
- static get_start_end_datetime(start_time: int, n_horizon: int)
Get start and end datetimes based on simulation start time and horizon length.
- Parameters:
start_time (int) – Start time of the simulation in hours.
n_horizon (int) – Length of the simulation horizon in hours.
- Returns:
A tuple containing the start and end datetime objects.
- Return type:
tuple
Notes
This method calculates the start and end datetimes based on the provided start time and horizon length, assuming hourly data.
- property incur_cycle_start: list
1 if cycle start-up penalty is incurred; 0 Otherwise [-]
- property incur_field_start: list
1 if solar field start-up penalty is incurred; 0 Otherwise [-]
- property initial_cycle_startup_inventory: float
Initial cycle start-up energy inventory at beginning of the horizon [MWht]
- property initial_cycle_thermal_power: float
Initial cycle thermal power at beginning of the horizon [MWt]
- property initial_receiver_startup_inventory: float
Initial receiver start-up energy inventory at beginning of the horizon [MWht]
- property initial_thermal_energy_storage: float
Initial thermal energy storage reserve quantity at beginning of the horizon [MWht]
- initialize_parameters()
Initialize parameters for the CSP model.
- static interpret_user_defined_cycle_data(ud_ind_od)
Interpret user-defined cycle data.
- Parameters:
ud_ind_od (list) – User-defined cycle data.
- Returns:
- Dictionary containing interpreted data with keys:
’nT’: Number of temperature points
’Tpts’: Ambient temperature points
’Tlevels’: Levels of temperature
’nm’: Number of mass flow rate points
’mpts’: Mass flow rate points
’mlevels’: Levels of mass flow rate
’nTamb’: Number of ambient temperature points
’Tambpts’: Ambient temperature points
’Tamblevels’: Levels of ambient temperature
- Return type:
dict
Notes
This method interprets user-defined cycle data and organizes it into a dictionary containing relevant information about temperature points, mass flow rate points, and ambient temperature points.
- property is_cycle_generating: list
1 if cycle is generating electric power; 0 Otherwise [-]
- property is_cycle_generating_initial: bool
True (1) if cycle is generating electric power at beginning of the horizon; False (0) Otherwise [-]
- property is_cycle_starting: list
1 if cycle is starting up; 0 Otherwise [-]
- property is_cycle_starting_initial: bool
True (1) if cycle is starting up at beginning of the horizon; False (0) Otherwise [-]
- property is_field_generating: list
1 if solar field is generating ‘usable’ thermal power; 0 Otherwise [-]
- property is_field_generating_initial: bool
True (1) if solar field is generating ‘usable’ thermal power at beginning of the horizon; False (0) Otherwise [-]
- property is_field_starting: list
1 if solar field is starting up; 0 Otherwise [-]
- property is_field_starting_initial: bool
True (1) if solar field is starting up at beginning of the horizon; False (0) Otherwise [-]
- property maximum_cycle_power: float
Maximum cycle electric power output [MWe]
- property maximum_cycle_thermal_power: float
Maximum operational thermal power delivered to the power cycle [MWt]
- property min_receiver_start_time: float
Minimum time to start the receiver [hr]
- property minimum_cycle_thermal_power: float
Minimum operational thermal power delivered to the power cycle [MWt]
- property minimum_receiver_power: float
Minimum operational thermal power delivered by receiver [MWht]
- property model: ConcreteModel
- property receiver_pumping_losses: float
Solar field and/or receiver pumping power per unit power produced [MWe/MWt]
- property receiver_required_startup_energy: float
Required energy expended to start receiver [MWht]
- property receiver_startup_consumption: list
Receiver start-up power consumption [MWt]
- property receiver_startup_fraction: list
Estimated fraction of time period required for receiver start-up [-]
- property receiver_startup_inventory: list
Receiver start-up energy inventory [MWht]
- property receiver_thermal_power: list
Thermal power delivered by the receiver [MWt]
- static seconds_since_newyear(dt)
Get the number of seconds elapsed since the beginning of the year.
- Parameters:
dt (datetime.datetime) – Datetime object.
- Returns:
Number of seconds elapsed since the beginning of the year.
- Return type:
int
Notes
This method calculates the number of seconds elapsed since the beginning of the year, using a non-leap year (2009) for consistency with a multiple of 8760 hours assumption.
- set_ambient_temperature_cycle_parameters(dry_bulb_temperature)
Set ambient temperature dependent cycle performance parameters.
- Parameters:
dry_bulb_temperature (float or list) – Ambient dry bulb temperature(s) [°C].
- Returns:
None
Notes
This method sets up ambient temperature dependent cycle performance parameters such as cycle efficiency corrections and condenser losses based on the provided dry bulb temperature(s).
- set_cycle_ambient_corrections(Tdb, Tpts, etapts, wcondfpts)
Set cycle ambient corrections based on ambient temperature.
- Parameters:
Tdb (float or list) – Ambient temperature(s) for each dispatch time step [°C].
Tpts (list) – Ambient temperature points with tabulated values [°C].
etapts (list) – Efficiency values corresponding to each Tpts.
wcondfpts (list) – Fraction of cycle design gross output consumed by cooling corresponding to each Tpts.
- Returns:
None
Notes
This method calculates cycle ambient efficiency correction and condenser losses based on the provided ambient temperature(s) and tabulated values. The corrections are set for each dispatch time step.
- set_linearized_cycle_part_load_params(norm_heat_pts, efficiency_pts)
Set linearized part-load parameters for the power cycle.
- Parameters:
norm_heat_pts (list) – Normalized heat points for the power cycle.
efficiency_pts (list) – Efficiency points for the power cycle.
- set_part_load_cycle_parameters()
Set parameters in dispatch model for off-design cycle performance.
- set_receiver_require_startup_time_fraction(field_gen: list)
Estimates the fraction of time period required for receiver start-up.
- Parameters:
field_gen (list) – Field generation profile.
Notes
This method estimates the fraction of time period required for the receiver start-up based on the field generation profile.
- property storage_capacity: float
Thermal energy storage capacity [MWht]
- property system_load: list
Net generation of csp system [MWe]
- property thermal_energy_storage: list
Thermal energy storage reserve quantity [MWht]
- property time_duration: list
Dispatch horizon time steps [hour]
- update_time_series_parameters(start_time: int)
Sets up SSC simulation to get time series performance parameters after simulation.
- Parameters:
start_time (int) – Hour of the year starting dispatch horizon.