def calculate_dc_inv_costs(scenario, sum_results=True): """Given a Scenario object, calculate the total cost of that grid's dc line investment. Currently ignores financials, but all values are in 2015 $-year. :param powersimdata.scenario.scenario.Scenario scenario: scenario instance. :param boolean sum_results: if True, sum Series to return float. :return: (*pandas.Series/float*) -- [Summed] dc line costs. """ base_grid = Grid(scenario.info["interconnect"].split("_")) grid = scenario.state.get_grid() grid_new = cp.deepcopy(grid) # Reindex so that we don't get NaN when calculating upgrades for new DC lines base_grid.dcline = base_grid.dcline.reindex( grid_new.dcline.index).fillna(0) # find upgraded DC lines grid_new.dcline.Pmax = grid.dcline.Pmax - base_grid.dcline.Pmax grid_new.dcline = grid_new.dcline[grid_new.dcline.Pmax != 0.0] costs = _calculate_dc_inv_costs(grid_new, sum_results) return costs
def calculate_dc_inv_costs(scenario, sum_results=True): """Calculate cost of upgrading HVDC lines in a scenario. :param powersimdata.scenario.scenario.Scenario scenario: scenario instance. :param bool sum_results: whether to sum series to return total cost. Defaults to True. :return: (*pandas.Series/float*) -- cost of upgrading HVDC lines, in $USD, inflation-adjusted to today. If ``sum_results``, a float is returned, otherwise a Series. """ base_grid = Grid(scenario.info["interconnect"].split("_")) grid = scenario.state.get_grid() grid_new = cp.deepcopy(grid) # Reindex so that we don't get NaN when calculating upgrades for new DC lines base_grid.dcline = base_grid.dcline.reindex(grid_new.dcline.index).fillna(0) # find upgraded DC lines grid_new.dcline.Pmax = grid.dcline.Pmax - base_grid.dcline.Pmax grid_new.dcline = grid_new.dcline[grid_new.dcline.Pmax != 0.0] costs = _calculate_dc_inv_costs(grid_new, sum_results) return costs