Source code for reV.hybrids.hybrid_methods

# -*- coding: utf-8 -*-
"""Collection of functions used to hybridize columns in rep profiles meta.

@author: ppinchuk
"""


[docs]def aggregate_solar_capacity(h): """Compute the total solar capcity allowed in hybridization. Note ---- No limiting is done on the ratio of wind to solar. This method checks for an existing 'hybrid_solar_capacity'. If one does not exist, it is assumed that there is no limit on the solar to wind capacity ratio and the solar capacity is copied into this new column. Parameters ---------- h : `reV.hybrids.Hybridization` Instance of `reV.hybrids.Hybridization` class containing the attribute `hybrid_meta`, which is a DataFrame containing hybridized meta data. Returns ------- data : Series | None A series of data containing the capacity allowed in the hybrid capacity sum, or `None` if 'hybrid_solar_capacity' already exists. Notes ----- """ if 'hybrid_solar_capacity' in h.hybrid_meta: return None return h.hybrid_meta['solar_capacity']
[docs]def aggregate_wind_capacity(h): """Compute the total wind capcity allowed in hybridization. Note ---- No limiting is done on the ratio of wind to solar. This method checks for an existing 'hybrid_wind_capacity'. If one does not exist, it is assumed that there is no limit on the solar to wind capacity ratio and the wind capacity is copied into this new column. Parameters ---------- h : `reV.hybrids.Hybridization` Instance of `reV.hybrids.Hybridization` class containing the attribute `hybrid_meta`, which is a DataFrame containing hybridized meta data. Returns ------- data : Series | None A series of data containing the capacity allowed in the hybrid capacity sum, or `None` if 'hybrid_solar_capacity' already exists. Notes ----- """ if 'hybrid_wind_capacity' in h.hybrid_meta: return None return h.hybrid_meta['wind_capacity']
[docs]def aggregate_capacity(h): """Compute the total capcity by summing the individual capacities. Parameters ---------- h : `reV.hybrids.Hybridization` Instance of `reV.hybrids.Hybridization` class containing the attribute `hybrid_meta`, which is a DataFrame containing hybridized meta data. Returns ------- data : Series | None A series of data containing the aggregated capacity, or `None` if the capacity columns are missing. """ sc, wc = 'hybrid_solar_capacity', 'hybrid_wind_capacity' missing_solar_cap = sc not in h.hybrid_meta.columns missing_wind_cap = wc not in h.hybrid_meta.columns if missing_solar_cap or missing_wind_cap: return None total_cap = h.hybrid_meta[sc] + h.hybrid_meta[wc] return total_cap
[docs]def aggregate_capacity_factor(h): """Compute the capacity-weighted mean capcity factor. Parameters ---------- h : `reV.hybrids.Hybridization` Instance of `reV.hybrids.Hybridization` class containing the attribute `hybrid_meta`, which is a DataFrame containing hybridized meta data. Returns ------- data : Series | None A series of data containing the aggregated capacity, or `None` if the capacity and/or mean_cf columns are missing. """ sc, wc = 'hybrid_solar_capacity', 'hybrid_wind_capacity' scf, wcf = 'solar_mean_cf', 'wind_mean_cf' missing_solar_cap = sc not in h.hybrid_meta.columns missing_wind_cap = wc not in h.hybrid_meta.columns missing_solar_mean_cf = scf not in h.hybrid_meta.columns missing_wind_mean_cf = wcf not in h.hybrid_meta.columns missing_any = (missing_solar_cap or missing_wind_cap or missing_solar_mean_cf or missing_wind_mean_cf) if missing_any: return None solar_cf_weighted = h.hybrid_meta[sc] * h.hybrid_meta[scf] wind_cf_weighted = h.hybrid_meta[wc] * h.hybrid_meta[wcf] total_capacity = aggregate_capacity(h) hybrid_cf = (solar_cf_weighted + wind_cf_weighted) / total_capacity return hybrid_cf
HYBRID_METHODS = { 'hybrid_solar_capacity': aggregate_solar_capacity, 'hybrid_wind_capacity': aggregate_wind_capacity, 'hybrid_capacity': aggregate_capacity, 'hybrid_mean_cf': aggregate_capacity_factor }