Power Sources and Storage Technologies#
These are the primary technologies that may be configured for a standard HOPP simulation.
Power Source Base Class#
Base class for power generation technologies.
- class hopp.simulation.technologies.power_source.PowerSource(name, site, system_model, financial_model)#
Bases:
BaseClassAbstract class for a renewable energy power plant simulation.
- Parameters:
site (SiteInfo)
- name#
Name used to identify technology
- Type:
string
- site#
Power source site information
- Type:
hybrid.sites.SiteInfo
- __init__(name, site, system_model, financial_model)#
Abstract class for a renewable energy power plant simulation.
Financial model parameters are linked to the technology model when either: the model is native to PySAM and linked using from_existing, a set_financial_inputs method is defined in a user-defined financial model, or the financial and technology parameters are named the same when the model is native to PySAM but not linked using from_existing.
- Parameters:
name – Name used to identify technology
site (SiteInfo) – Power source site information (SiteInfo object)
system_model – Technology performance model
financial_model – Financial model for the specific technology
- static import_financial_model(financial_model, system_model, config_name)#
- initialize_financial_values()#
These values are provided as default values from PySAM but should be customized by user
Debt, Reserve Account and Construction Financing Costs are initialized to 0 Federal Bonus Depreciation also initialized to 0
- value(var_name, var_value=None)#
Gets or Sets a variable value within either the system or financial PySAM models. Method looks in system model first. If unsuccessful, then it looks in the financial model.
Note
If system and financial models contain a variable with the same name, only the system model variable will be set.
value(var_name)Gets variable valuevalue(var_name, var_value)Sets variable value- Parameters:
var_name (str) – PySAM variable name
var_value – (optional) PySAM variable value
- Returns:
Variable value (when getter)
- assign(input_dict)#
Sets input variables in the PowerSource class or any of its subclasses (system or financial models)
- Parameters:
input_dict (dict)
- calc_nominal_capacity(interconnect_kw)#
Calculates the nominal AC net system capacity based on specific technology.
- Parameters:
interconnect_kw (float) – Interconnection limit [kW]
- Returns:
system’s nominal AC net capacity [kW]
- calc_gen_max_feasible_kwh(interconnect_kw)#
Calculates the maximum feasible generation profile that could have occurred (year 1)
- Parameters:
interconnect_kw (float) – Interconnection limit [kW]
- Returns:
maximum feasible generation [kWh]
- Return type:
list
- calc_capacity_credit_percent(interconnect_kw)#
Calculates the capacity credit (value) using the last simulated year’s max feasible generation profile.
- Parameters:
interconnect_kw (float) – Interconnection limit [kW]
- Returns:
capacity value [%]
- Return type:
float
- setup_performance_model()#
Sets up performance model to before simulating power production. Required by specific technologies
- simulate_power(project_life, lifetime_sim=False)#
Runs the system models for individual sub-systems
- Parameters:
project_life –
int, Number of year in the analysis period (execepted project lifetime) [years]lifetime_sim –
bool, For simulation modules which support simulating each year of the project_life, whether or not to do so; otherwise the first year data is repeated
- Returns:
- simulate_financials(interconnect_kw, project_life)#
Runs the finanical model for individual sub-systems
- Parameters:
interconnect_kw (float) –
float, Hybrid interconnect limit [kW]project_life (int) –
int, Number of year in the analysis period (execepted project lifetime) [years]
- Returns:
- simulate(interconnect_kw, project_life=25, lifetime_sim=False)#
Run the system and financial model
- Parameters:
project_life (int) –
int, Number of year in the analysis period (execepted project lifetime) [years]lifetime_sim –
bool, For simulation modules which support simulating each year of the project_life, whether or not to do so; otherwise the first year data is repeatedinterconnect_kw (float)
- set_overnight_capital_cost(overnight_capital_cost)#
Set overnight capital costs [$/kW].
- calculate_total_installed_cost(cost)#
- Parameters:
cost (float)
- Return type:
float
- property system_capacity_kw: float#
System’s nameplate capacity [kW]
- property degradation: tuple#
Annual energy degradation [%/year]
- property ppa_price: tuple#
PPA price [$/kWh]
- property system_nameplate_mw: float#
System nameplate [MW]
- property capacity_credit_percent: float#
Capacity credit (eligible portion of nameplate) [%]
- property capacity_price: list#
Capacity payment price [$/MW]
- property dispatch_factors: tuple#
Time-series dispatch factors normalized by PPA price [-]
- property total_installed_cost: float#
Installed cost [$]
- property om_capacity#
Capacity-based O&M amount [$/kWcap]
- property om_production#
Production-based O&M amount [$/Mwh]
- property om_fixed#
Fixed O&M annual amount [$/year]
- property om_variable#
Production-based O&M amount [$/kWh] For battery: production-based System Costs amount [$/kWh-discharged]
- Type:
For non-battery technologies
- property construction_financing_cost: float#
- property dispatch#
Dispatch object
- property annual_energy_kwh: float#
Annual energy [kWh]
- property generation_profile: list#
System power generated [kW]
- property capacity_factor: float#
System capacity factor [%]
- property net_present_value: float#
After-tax cumulative NPV [$]
- property cost_installed: float#
Net capital cost [$]
- property internal_rate_of_return: float#
Internal rate of return (after-tax) [%]
- property energy_sales: tuple#
PPA revenue gross [$]
- property energy_purchases: tuple#
Energy purchases from grid [$]
- property energy_value: tuple#
PPA revenue net [$]
- property federal_depreciation_total: tuple#
Total federal tax depreciation [$]
- property federal_taxes: tuple#
Federal tax benefit (liability) [$]
- property debt_payment: tuple#
Debt total payment [$]
- property insurance_expense: tuple#
Insurance expense [$]
- property tax_incentives: list#
The sum of Federal and State PTC and ITC tax incentives [$]
- _get_model_dict()#
Convenience method that wraps the attrs.asdict method. Returns the object’s parameters as a dictionary.
- Returns:
dict – The provided or default, if no input provided, model settings as a dictionary.
- Return type:
dict
- as_dict()#
Creates a JSON and YAML friendly dictionary that can be save for future reloading. This dictionary will contain only Python types that can later be converted to their proper Turbine formats.
- Returns:
dict – All key, vaue pais required for class recreation.
- Return type:
dict
- classmethod from_dict(data)#
Maps a data dictionary to an attr-defined class.
TODO: Add an error to ensure that either none or all the parameters are passed in
- Parameters:
data (dict) – dict The data dictionary to be mapped.
- Returns:
- cls
The attr-defined class.
- classmethod get_model_defaults()#
Produces a dictionary of the keyword arguments and their defaults.
- Returns:
Dict[str, Any] – Dictionary of keyword argument: default.
- Return type:
Dict[str, Any]
- property logger#
- property om_capacity_expense#
O&M capacity-based expense [$]
- property om_fixed_expense#
O&M fixed expense [$]
- property om_variable_expense#
O&M production-based expense [$]
- property om_total_expense#
Total operating expenses [$]
- property levelized_cost_of_energy_real: float#
Levelized cost (real) [cents/kWh]
- property levelized_cost_of_energy_nominal: float#
Levelized cost (nominal) [cents/kWh]
- property total_revenue: list#
Total revenue [$]
- property capacity_payment: list#
Capacity payment revenue [$]
- property benefit_cost_ratio: float#
Benefit cost ratio [-] = Benefits / Costs
Benefits include (using present values):
PPA, capacity payment, and curtailment revenues
Federal, state, utility, and other production-based incentive income
Salvage value
Costs: uses the present value of annual costs
- property gen_max_feasible: list#
Maximum feasible generation profile that could have occurred (year 1)
- export()#
- Returns:
dictionary of variables for system and financial