MHK Wave Plant
MHK Wave Generator class
- class hopp.simulation.technologies.wave.mhk_wave_plant.MHKWavePlant(site: SiteInfo, config: MHKConfig, cost_model_inputs: MHKCostModelInputs | None = None, config_name: str = 'MhkWave')
Bases:
PowerSourceMarine Hydrokinetic (MHK) Wave Plant.
- Parameters:
site – Site information
config – MHK system configuration parameters
cost_model_inputs – An optional dictionary containing input parameters for cost modeling.
- cost_model_inputs: MHKCostModelInputs | None
- config_name: str
- create_mhk_cost_calculator(cost_model_inputs: dict | MHKCostModelInputs)
Instantiates MHKCosts, cost calculator for MHKWavePlant.
- Parameters:
cost_model_inputs – Input parameters for cost modeling.
- calculate_total_installed_cost() float
- system_capacity_by_num_devices(wave_size_kw: float)
Sets the system capacity by adjusting the number of devices
- simulate(interconnect_kw: float, project_life: int = 25, lifetime_sim=False)
Run the system and financial model
- Parameters:
interconnect_kw – grid interconnect
project_life – Number of years in the analysis period (expected project lifetime)
lifetime_sim –
- 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
- property device_rated_power: float
- property number_devices: int
- property wave_power_matrix: List[List[float]]
- __init__(site: SiteInfo, config: MHKConfig, cost_model_inputs: MHKCostModelInputs | None = None, config_name: str = 'MhkWave') None
Method generated by attrs for class MHKWavePlant.
- _get_model_dict() dict
Convenience method that wraps the attrs.asdict method. Returns the object’s parameters as a dictionary.
- Returns:
The provided or default, if no input provided, model settings as a dictionary.
- Return type:
dict
- as_dict() 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:
All key, vaue pais required for class recreation.
- Return type:
dict
- assign(input_dict: dict)
Sets input variables in the PowerSource class or any of its subclasses (system or financial models)
- 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
- calc_capacity_credit_percent(interconnect_kw: float) float
Calculates the capacity credit (value) using the last simulated year’s max feasible generation profile.
- Parameters:
interconnect_kw – Interconnection limit [kW]
- Returns:
capacity value [%]
- calc_gen_max_feasible_kwh(interconnect_kw: float) list
Calculates the maximum feasible generation profile that could have occurred (year 1)
- Parameters:
interconnect_kw – Interconnection limit [kW]
- Returns:
maximum feasible generation [kWh]
- calc_nominal_capacity(interconnect_kw: float)
Calculates the nominal AC net system capacity based on specific technology.
- Parameters:
interconnect_kw – Interconnection limit [kW]
- Returns:
system’s nominal AC net capacity [kW]
- property capacity_credit_percent: float
Capacity credit (eligible portion of nameplate) [%]
- property capacity_payment: list
Capacity payment revenue [$]
- property capacity_price: list
Capacity payment price [$/MW]
- property construction_financing_cost: float
- copy()
- Returns:
new instance
- property cost_installed: float
Net capital cost [$]
- property debt_payment: tuple
Debt total payment [$]
- property degradation: tuple
Annual energy degradation [%/year]
- property dispatch
Dispatch object
- property dispatch_factors: tuple
Time-series dispatch factors normalized by PPA price [-]
- property energy_purchases: tuple
Energy purchases from grid [$]
- property energy_sales: tuple
PPA revenue gross [$]
- property energy_value: tuple
PPA revenue net [$]
- export()
- Returns:
dictionary of variables for system and financial
- property federal_depreciation_total: tuple
Total federal tax depreciation [$]
- property federal_taxes: tuple
Federal tax benefit (liability) [$]
- classmethod from_dict(data: dict)
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 The data dictionary to be mapped.
- Returns:
- cls
The attr-defined class.
- property gen_max_feasible: list
Maximum feasible generation profile that could have occurred (year 1)
- property generation_profile: list
System power generated [kW]
- classmethod get_model_defaults() Dict[str, Any]
Produces a dictionary of the keyword arguments and their defaults.
- Returns:
Dictionary of keyword argument: default.
- Return type:
Dict[str, Any]
- 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
- property insurance_expense: tuple
Insurance expense [$]
- property internal_rate_of_return: float
Internal rate of return (after-tax) [%]
- property levelized_cost_of_energy_nominal: float
Levelized cost (nominal) [cents/kWh]
- property levelized_cost_of_energy_real: float
Levelized cost (real) [cents/kWh]
- property logger
- property net_present_value: float
After-tax cumulative NPV [$]
- property om_capacity
Capacity-based O&M amount [$/kWcap]
- property om_capacity_expense
O&M capacity-based expense [$]
- property om_fixed
Fixed O&M annual amount [$/year]
- property om_fixed_expense
O&M fixed expense [$]
- property om_production
Production-based O&M amount [$/Mwh]
- property om_total_expense
Total operating expenses [$]
- property om_variable
Production-based O&M amount [$/kWh] For battery: production-based System Costs amount [$/kWh-discharged]
- Type:
For non-battery technologies
- property om_variable_expense
O&M production-based expense [$]
- plot(figure=None, axes=None, color='b', site_border_color='k', site_alpha=0.95, linewidth=4.0)
- property ppa_price: tuple
PPA price [$/kWh]
- set_overnight_capital_cost(overnight_capital_cost)
Set overnight capital costs [$/kW].
- setup_performance_model()
Sets up performance model to before simulating power production. Required by specific technologies
- simulate_financials(interconnect_kw: float, project_life: int)
Runs the finanical model for individual sub-systems
- Parameters:
interconnect_kw –
float, Hybrid interconnect limit [kW]project_life –
int, Number of year in the analysis period (execepted project lifetime) [years]
- Returns:
- 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:
- property system_capacity_kw: float
System’s nameplate capacity [kW]
- property system_nameplate_mw: float
System nameplate [MW]
- property tax_incentives: list
The sum of Federal and State PTC and ITC tax incentives [$]
- property total_installed_cost: float
Installed cost [$]
- property total_revenue: list
Total revenue [$]
- value(var_name: str, 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 – PySAM variable name
var_value – (optional) PySAM variable value
- Returns:
Variable value (when getter)
- property annual_energy_kwh: float
Annual energy [kWh]
- property capacity_factor: float
System capacity factor [%]
- property numberHours: float
- class hopp.simulation.technologies.wave.mhk_wave_plant.MHKConfig(device_rating_kw: float, num_devices: int, wave_power_matrix: List[List[float]], fin_model: dict | CustomFinancialModel, loss_array_spacing: float = 0.0, loss_resource_overprediction: float = 0.0, loss_transmission: float = 0.0, loss_downtime: float = 0.0, loss_additional: float = 0.0)
Bases:
BaseClassConfiguration class for MHKWavePlant.
- Parameters:
device_rating_kw – Rated power of the MHK device in kilowatts
num_devices – Number of MHK devices in the system
wave_power_matrix – Wave power matrix
fin_model –
Optional financial model. Can be any of the following:
a dict representing a CustomFinancialModel
an object representing a CustomFinancialModel instance
layout_mode – TODO
loss_array_spacing – Array spacing loss in % (default: 0)
loss_resource_overprediction – Resource overprediction loss in % (default: 0)
loss_transmission – Transmission loss in % (default: 0)
loss_downtime – Array/WEC downtime loss in % (default: 0)
loss_additional – Additional losses in % (default: 0)
- device_rating_kw: float
- num_devices: int
- wave_power_matrix: List[List[float]]
- fin_model: dict | CustomFinancialModel
- loss_array_spacing: float
- loss_resource_overprediction: float
- loss_transmission: float
- loss_downtime: float
- loss_additional: float
- __init__(device_rating_kw: float, num_devices: int, wave_power_matrix: List[List[float]], fin_model: dict | CustomFinancialModel, loss_array_spacing: float = 0.0, loss_resource_overprediction: float = 0.0, loss_transmission: float = 0.0, loss_downtime: float = 0.0, loss_additional: float = 0.0) None
Method generated by attrs for class MHKConfig.
- _get_model_dict() dict
Convenience method that wraps the attrs.asdict method. Returns the object’s parameters as a dictionary.
- Returns:
The provided or default, if no input provided, model settings as a dictionary.
- Return type:
dict
- as_dict() 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:
All key, vaue pais required for class recreation.
- Return type:
dict
- classmethod from_dict(data: dict)
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 The data dictionary to be mapped.
- Returns:
- cls
The attr-defined class.
- classmethod get_model_defaults() Dict[str, Any]
Produces a dictionary of the keyword arguments and their defaults.
- Returns:
Dictionary of keyword argument: default.
- Return type:
Dict[str, Any]
- property logger
- class hopp.simulation.technologies.financial.mhk_cost_model.MHKCosts(mhk_config: MHKConfig, cost_model_inputs: MHKCostModelInputs)
Bases:
BaseClassA class for calculating the costs associated with Marine Hydrokinetic (MHK) energy systems.
This class initializes and configures cost calculations for MHK systems based on provided input parameters. It uses the PySAM library for cost modeling which is based on the [Sandia Reference Model Project](https://energy.sandia.gov/programs/renewable-energy/water-power/projects/reference-model-project-rmp/).
- Args:
mhk_config: MHK system configuration parameters. cost_model_inputs: Input parameters for cost modeling.
- Raises:
- ValueError: If any of the required keys in mhk_config or
cost_model_inputs are missing.
- cost_model_inputs: MHKCostModelInputs
- _device_rated_power: float
- _number_devices: int
- _water_depth: float
- _distance_to_shore: float
- _number_rows: int
- _ref_model_num: str
- _device_spacing: float
- _row_spacing: float
- _cable_sys_overbuild: float
- initialize()
- system_capacity_by_num_devices(wave_size_kw)
Sets the system capacity by adjusting the number of devices.
- simulate_costs()
- property device_rated_power
- property number_devices
- property system_capacity_kw
- __init__(mhk_config: MHKConfig, cost_model_inputs: MHKCostModelInputs) None
Method generated by attrs for class MHKCosts.
- _get_model_dict() dict
Convenience method that wraps the attrs.asdict method. Returns the object’s parameters as a dictionary.
- Returns:
The provided or default, if no input provided, model settings as a dictionary.
- Return type:
dict
- as_dict() 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:
All key, vaue pais required for class recreation.
- Return type:
dict
- classmethod from_dict(data: dict)
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 The data dictionary to be mapped.
- Returns:
- cls
The attr-defined class.
- classmethod get_model_defaults() Dict[str, Any]
Produces a dictionary of the keyword arguments and their defaults.
- Returns:
Dictionary of keyword argument: default.
- Return type:
Dict[str, Any]
- property logger
- property ref_model_num
- property library_or_input_wec
- property cost_outputs: dict
- class hopp.simulation.technologies.financial.mhk_cost_model.MHKCostModelInputs(reference_model_num: int, water_depth: float, distance_to_shore: float, number_rows: int, device_spacing: float, row_spacing: float | None = None, cable_system_overbuild: float = 10.0)
Bases:
BaseClassConfiguration class for MHK Cost Model.
- Parameters:
reference_model_num – Reference model number from Sandia Project (3, 5, or 6).
water_depth – Water depth in meters
distance_to_shore – Distance to shore in meters
number_rows – Number of rows in the device layout
row_spacing – Spacing between rows in meters (default ‘device_spacing’)
cable_system_overbuild – Cable system overbuild percentage (default 10%)
- reference_model_num: int
- water_depth: float
- distance_to_shore: float
- number_rows: int
- device_spacing: float
- row_spacing: float | None
- cable_system_overbuild: float
- __init__(reference_model_num: int, water_depth: float, distance_to_shore: float, number_rows: int, device_spacing: float, row_spacing: float | None = None, cable_system_overbuild: float = 10.0) None
Method generated by attrs for class MHKCostModelInputs.
- _get_model_dict() dict
Convenience method that wraps the attrs.asdict method. Returns the object’s parameters as a dictionary.
- Returns:
The provided or default, if no input provided, model settings as a dictionary.
- Return type:
dict
- as_dict() 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:
All key, vaue pais required for class recreation.
- Return type:
dict
- classmethod from_dict(data: dict)
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 The data dictionary to be mapped.
- Returns:
- cls
The attr-defined class.
- classmethod get_model_defaults() Dict[str, Any]
Produces a dictionary of the keyword arguments and their defaults.
- Returns:
Dictionary of keyword argument: default.
- Return type:
Dict[str, Any]
- property logger