CSP Dispatch#
- class hopp.simulation.technologies.dispatch.power_sources.csp_dispatch.CspDispatch(pyomo_model, index_set, system_model, financial_model, block_set_name='csp')#
Bases:
DispatchDispatch model for Concentrating Solar Power (CSP) with thermal energy storage.
- Parameters:
pyomo_model (ConcreteModel)
index_set (Set)
block_set_name (str)
- __init__(pyomo_model, index_set, system_model, financial_model, block_set_name='csp')#
Initialize a CSP dispatch model.
- Parameters:
pyomo_model (pyomo.ConcreteModel) – Pyomo model instance.
index_set (pyomo.Set) – Index set for the model.
system_model – System model.
financial_model – Financial model.
block_set_name (str, optional) – Name of the block. Defaults to ‘csp’.
- dispatch_block_rule(csp)#
Called during Dispatch’s __init__. Define dispatch block rules.
- Parameters:
csp – CSP instance.
- static _create_storage_parameters(csp)#
Create parameters related to thermal energy storage.
- Parameters:
csp – CSP instance.
- static _create_receiver_parameters(csp)#
Create parameters related to CSP receiver.
- Parameters:
csp – CSP instance.
- static _create_cycle_parameters(csp)#
Create parameters related to the power cycle.
- Parameters:
csp – CSP instance.
- static _create_storage_variables(csp)#
Create variables related to thermal energy storage.
- Parameters:
csp – CSP instance.
- static _create_receiver_variables(csp)#
Create variables related to the receiver.
- Parameters:
csp – CSP instance.
- static _create_cycle_variables(csp)#
Create variables related to the power cycle.
- Parameters:
csp – CSP instance.
- static _create_storage_constraints(csp)#
Create constraints related to thermal energy storage.
- Parameters:
csp – CSP instance.
- static _create_receiver_constraints(csp)#
Create constraints related to the receiver.
- Parameters:
csp – CSP instance.
- static _create_cycle_constraints(csp)#
Create constraints related to the power cycle.
- Parameters:
csp – CSP instance.
- static _create_csp_port(csp)#
Create pyomo ports related to CSP instance.
- Parameters:
csp – CSP instance.
- _create_linking_constraints()#
Create linking constraints for storage, receiver and cycle.
- _create_storage_linking_constraints()#
Create constraints for linking storage.
- _create_receiver_linking_constraints()#
Create constraints for linking receiver.
- _create_cycle_linking_constraints()#
Create constraints for linking cycle.
- initialize_parameters()#
Initialize parameters for the CSP model.
- update_time_series_parameters(start_time)#
Sets up SSC simulation to get time series performance parameters after simulation.
- Parameters:
start_time (int) – Hour of the year starting dispatch horizon.
- set_part_load_cycle_parameters()#
Set parameters in dispatch model for off-design cycle performance.
- 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_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.
- static interpret_user_defined_cycle_data(ud_ind_od)#
Interpret user-defined cycle data.
- Parameters:
ud_ind_od (list) – User-defined cycle data.
- Returns:
dict –
- 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
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.
- set_receiver_require_startup_time_fraction(field_gen)#
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.
- update_initial_conditions()#
This method updates the initial conditions for the dispatch optimization, including the initial thermal energy storage, initial cycle startup inventory, and initial cycle thermal power.
- static get_start_end_datetime(start_time, n_horizon)#
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:
tuple – A tuple containing the start and end datetime objects.
Notes
This method calculates the start and end datetimes based on the provided start time and horizon length, assuming hourly data.
- static get_start_datetime_by_hour(start_time)#
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.datetime – Datetime object corresponding to the start time.
Notes
This method calculates the datetime object corresponding to the start time in hours relative to the beginning of the year.
- static seconds_since_newyear(dt)#
Get the number of seconds elapsed since the beginning of the year.
- Parameters:
dt (datetime.datetime) – Datetime object.
- Returns:
int – Number of seconds elapsed since the beginning of the year.
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.
- property time_duration: list#
Dispatch horizon time steps [hour]
- property available_thermal_generation: list#
Available solar thermal generation from the csp field [MWt]
- property cycle_ambient_efficiency_correction: list#
Cycle efficiency ambient temperature adjustment factor [-]
- property condenser_losses: list#
Normalized condenser parasitic losses [-]
- property receiver_startup_fraction: list#
Estimated fraction of time period required for receiver start-up [-]
- property min_receiver_start_time: float#
Minimum time to start the receiver [hr]
- 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 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_change_thermal_input: float#
Penalty for change in power cycle thermal input [$/MWt]
- property field_startup_losses: float#
Solar field startup or shutdown parasitic loss [MWhe]
- property receiver_required_startup_energy: float#
Required energy expended to start receiver [MWht]
- property storage_capacity: float#
Thermal energy storage capacity [MWht]
- property receiver_pumping_losses: float#
Solar field and/or receiver pumping power per unit power produced [MWe/MWt]
- property minimum_receiver_power: float#
Minimum operational thermal power delivered by receiver [MWht]
- property allowable_receiver_startup_power: float#
Allowable power per period for receiver start-up [MWt]
- property field_track_losses: float#
Solar field tracking parasitic loss [MWe]
- property cycle_required_startup_energy: float#
Required energy expended to start cycle [MWht]
- 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 allowable_cycle_startup_power: float#
Allowable power per period for cycle start-up [MWt]
- property minimum_cycle_thermal_power: float#
Minimum operational thermal power delivered to the power cycle [MWt]
- static _check_efficiency_value(efficiency)#
Checks efficiency is between 0 and 1 or 0 and 100. Returns fractional value
- property blocks: Block#
- property maximum_cycle_thermal_power: float#
Maximum operational thermal power delivered to the power cycle [MWt]
- property model: ConcreteModel#
- property maximum_cycle_power: float#
Maximum cycle electric power output [MWe]
- property initial_thermal_energy_storage: float#
Initial thermal energy storage reserve quantity at beginning of the horizon [MWht]
- property initial_receiver_startup_inventory: float#
Initial receiver start-up energy inventory at beginning of the horizon [MWht]
- 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_initial: bool#
True (1) if solar field is starting up at beginning of the horizon; False (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 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_initial: bool#
True (1) if cycle is starting up at beginning of the horizon; False (0) Otherwise [-]
- property thermal_energy_storage: list#
Thermal energy storage reserve quantity [MWht]
- property receiver_startup_inventory: list#
Receiver start-up energy inventory [MWht]
- property receiver_thermal_power: list#
Thermal power delivered by the receiver [MWt]
- property receiver_startup_consumption: list#
Receiver start-up power consumption [MWt]
- property is_field_generating: list#
1 if solar field is generating ‘usable’ thermal power; 0 Otherwise [-]
- property is_field_starting: list#
1 if solar field is starting up; 0 Otherwise [-]
- property incur_field_start: list#
1 if solar field start-up penalty is incurred; 0 Otherwise [-]
- property cycle_startup_inventory: list#
Cycle start-up energy inventory [MWht]
- property system_load: list#
Net generation of csp system [MWe]
- property cycle_generation: list#
Power cycle electricity generation [MWe]
- property cycle_thermal_ramp: list#
Power cycle positive change in thermal energy input [MWt]
- property cycle_thermal_power: list#
Cycle thermal power utilization [MWt]
- property is_cycle_generating: list#
1 if cycle is generating electric power; 0 Otherwise [-]
- property is_cycle_starting: list#
1 if cycle is starting up; 0 Otherwise [-]
- property incur_cycle_start: list#
1 if cycle start-up penalty is incurred; 0 Otherwise [-]
Molten Salt Tower CSP Dispatch#
- class hopp.simulation.technologies.dispatch.power_sources.tower_dispatch.TowerDispatch(pyomo_model, indexed_set, system_model, financial_model, block_set_name='tower')#
Bases:
CspDispatch- Parameters:
pyomo_model (ConcreteModel)
indexed_set (Set)
system_model (None)
financial_model (Singleowner | CustomFinancialModel)
block_set_name (str)
- tower_obj: Expression | float#
- _system_model: None#
- _financial_model: Singleowner | CustomFinancialModel#
Dispatch optimization model for CSP tower systems.
- __init__(pyomo_model, indexed_set, system_model, financial_model, block_set_name='tower')#
Initialize TowerDispatch.
- 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.
- max_gross_profit_objective(hybrid_blocks)#
Tower 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)#
Tower 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 Tower CSP variables to add to hybrid plant instance.
- Parameters:
hybrid – Hybrid plant instance.
- Returns:
tuple –
- Tuple containing created variables.
generation: Generation from given technology.
load: Load from given technology.
- 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 tower port to add to hybrid plant instance.
- Parameters:
hybrid – Hybrid plant instance.
- Returns:
Port – CSP Tower Port object.
- 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)#
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.datetime – Datetime object corresponding to the start time.
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, n_horizon)#
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:
tuple – A tuple containing the start and end datetime objects.
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:
dict –
- 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
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:
int – Number of seconds elapsed since the beginning of the year.
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)#
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)#
Sets up SSC simulation to get time series performance parameters after simulation.
- Parameters:
start_time (int) – Hour of the year starting dispatch horizon.
Parabolic Trough CSP Dispatch#
- class hopp.simulation.technologies.dispatch.power_sources.trough_dispatch.TroughDispatch(pyomo_model, indexed_set, system_model, financial_model, block_set_name='trough')#
Bases:
CspDispatch- Parameters:
pyomo_model (ConcreteModel)
indexed_set (Set)
system_model (None)
financial_model (Singleowner | CustomFinancialModel)
block_set_name (str)
- trough_obj: Expression | float#
- _system_model: None#
- _financial_model: Singleowner | CustomFinancialModel#
Dispatch optimization model for CSP trough systems.
- __init__(pyomo_model, indexed_set, system_model, financial_model, block_set_name='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 –
- Tuple containing created variables.
generation: Generation from given technology.
load: Load from given technology.
- 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:
Port – CSP Trough Port object.
- 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)#
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.datetime – Datetime object corresponding to the start time.
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, n_horizon)#
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:
tuple – A tuple containing the start and end datetime objects.
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:
dict –
- 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
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:
int – Number of seconds elapsed since the beginning of the year.
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)#
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)#
Sets up SSC simulation to get time series performance parameters after simulation.
- Parameters:
start_time (int) – Hour of the year starting dispatch horizon.