def attach_storageunits(n, costs): elec_opts = snakemake.config["electricity"] carriers = elec_opts["extendable_carriers"]["StorageUnit"] max_hours = elec_opts["max_hours"] _add_missing_carriers_from_costs(n, costs, carriers) buses_i = n.buses.index lookup_store = {"H2": "electrolysis", "battery": "battery inverter"} lookup_dispatch = {"H2": "fuel cell", "battery": "battery inverter"} for carrier in carriers: n.madd( "StorageUnit", buses_i, " " + carrier, bus=buses_i, carrier=carrier, p_nom_extendable=True, capital_cost=costs.at[carrier, "capital_cost"], marginal_cost=costs.at[carrier, "marginal_cost"], efficiency_store=costs.at[lookup_store[carrier], "efficiency"], efficiency_dispatch=costs.at[lookup_dispatch[carrier], "efficiency"], max_hours=max_hours[carrier], cyclic_state_of_charge=True, )
def attach_storageunits(n, costs, elec_opts): carriers = elec_opts['extendable_carriers']['StorageUnit'] max_hours = elec_opts['max_hours'] _add_missing_carriers_from_costs(n, costs, carriers) buses_i = n.buses.index lookup_store = {"H2": "electrolysis", "battery": "battery inverter"} lookup_dispatch = {"H2": "fuel cell", "battery": "battery inverter"} for carrier in carriers: n.madd("StorageUnit", buses_i, ' ' + carrier, bus=buses_i, carrier=carrier, p_nom_extendable=True, capital_cost=costs.at[carrier, 'capital_cost'], marginal_cost=costs.at[carrier, 'marginal_cost'], efficiency_store=costs.at[lookup_store[carrier], 'efficiency'], efficiency_dispatch=costs.at[lookup_dispatch[carrier], 'efficiency'], max_hours=max_hours[carrier], cyclic_state_of_charge=True)
def attach_storageunits(n, costs): elec_opts = snakemake.config['electricity'] carriers = elec_opts['extendable_carriers']['StorageUnit'] max_hours = elec_opts['max_hours'] _add_missing_carriers_from_costs(n, costs, carriers) buses_i = n.buses.index for carrier in carriers: n.madd("StorageUnit", buses_i, ' ' + carrier, bus=buses_i, carrier=carrier, p_nom_extendable=True, capital_cost=costs.at[carrier, 'capital_cost'], marginal_cost=costs.at[carrier, 'marginal_cost'], efficiency_store=costs.at[carrier, 'efficiency'], efficiency_dispatch=costs.at[carrier, 'efficiency'], max_hours=max_hours[carrier], cyclic_state_of_charge=True)
def attach_stores(n, costs, elec_opts): carriers = elec_opts['extendable_carriers']['Store'] _add_missing_carriers_from_costs(n, costs, carriers) buses_i = n.buses.index bus_sub_dict = {k: n.buses[k].values for k in ['x', 'y', 'country']} if 'H2' in carriers: h2_buses_i = n.madd("Bus", buses_i + " H2", carrier="H2", **bus_sub_dict) n.madd("Store", h2_buses_i, bus=h2_buses_i, carrier='H2', e_nom_extendable=True, e_cyclic=True, capital_cost=costs.at["hydrogen storage", "capital_cost"]) n.madd("Link", h2_buses_i + " Electrolysis", bus0=buses_i, bus1=h2_buses_i, carrier='H2 electrolysis', p_nom_extendable=True, efficiency=costs.at["electrolysis", "efficiency"], capital_cost=costs.at["electrolysis", "capital_cost"], marginal_cost=costs.at["electrolysis", "marginal_cost"]) n.madd( "Link", h2_buses_i + " Fuel Cell", bus0=h2_buses_i, bus1=buses_i, carrier='H2 fuel cell', p_nom_extendable=True, efficiency=costs.at["fuel cell", "efficiency"], #NB: fixed cost is per MWel capital_cost=costs.at["fuel cell", "capital_cost"] * costs.at["fuel cell", "efficiency"], marginal_cost=costs.at["fuel cell", "marginal_cost"]) if 'battery' in carriers: b_buses_i = n.madd("Bus", buses_i + " battery", carrier="battery", **bus_sub_dict) n.madd("Store", b_buses_i, bus=b_buses_i, carrier='battery', e_cyclic=True, e_nom_extendable=True, capital_cost=costs.at['battery storage', 'capital_cost'], marginal_cost=costs.at["battery", "marginal_cost"]) n.madd("Link", b_buses_i + " charger", bus0=buses_i, bus1=b_buses_i, carrier='battery charger', efficiency=costs.at['battery inverter', 'efficiency'], capital_cost=costs.at['battery inverter', 'capital_cost'], p_nom_extendable=True, marginal_cost=costs.at["battery inverter", "marginal_cost"]) n.madd("Link", b_buses_i + " discharger", bus0=b_buses_i, bus1=buses_i, carrier='battery discharger', efficiency=costs.at['battery inverter', 'efficiency'], p_nom_extendable=True, marginal_cost=costs.at["battery inverter", "marginal_cost"])