ricnogfer / pypsa-eur-sec_land_transport

0 stars 3 forks source link

General implementation endogenous land transport #9

Open martavp opened 1 year ago

martavp commented 1 year ago

I suggest we follow the current PyPSA-Eur-Sec implementation including an EV battery bus (this allows us to distinguish between the link for charging the EVs - which ultimately is determined by the charging capacity of the battery- and the link for using the electricity in the EV to supply the transport demand).

See a scheme below:

endogenous_transport

So, the next steps are needed:

[ ] Rename “battery bus” as “EV battery” such as in https://github.com/PyPSA/pypsa-eur-sec/blob/e3ffb66267c324b259b4a3db2cf03a3a642044c6/scripts/prepare_sector_network.py#L1449

[ ] Make the “EV use” link connects the "EV battery" bus to the “land transport demand” bus The efficiency of that link should be 1 (this is because the land transport demand has already been transformed to be expressed in “MWh of electricity”. This happens here: https://github.com/PyPSA/pypsa-eur-sec/blob/e3ffb66267c324b259b4a3db2cf03a3a642044c6/scripts/build_transport_demand.py#L40
The link p_nom_opt should be subjected to optimization The resulting p_nom_opt divided by EV_consumption_1car (see variable definition below) is the number_EVs (number of electric cars)

[ ] There is a link connecting the electricity bus to the EV battery bus (named “battery charger”) In this case, the link p_nom_opt should be subjected to optimization The resulting p_nom_opt divided by EV_charge_rate (see variables definition below) is the number_EVs (number of electric cars)

[ ] Add a constraint so that the number_EVs calculated in the last two points are the same. It is easier to add a constraint that relates the two p_nom_opt p_nom_opt(of link “EV use”)=p_nom_opt(of link “battery charger”)*EV_consumption_1car/EV_charge_rate

[ ] There is an “ICE use” multilink connecting the oil bus to the “land transport demand” bus The efficiency of the link should be 0.3 https://github.com/PyPSA/pypsa-eur/blob/1fbe971ab8dab60d972d3a7b905b9cec7171c0ad/config/config.default.yaml#L404 (this is because the land transport demand is expressed in “MWh of electricity”) The resulting p_nom_opt divided by ICE_consumption_1car (see variables definition below) is the number_ICE_cars (number of internal combustion engine cars) The second bus that this link is connected to is “CO2 atmosphere”, the efficiency there should be CO2 emissions oil

[ ] We can use this point to also add a “H2 use” link connecting the H2 bus to the “land transport demand” bus to represent potential H2 vehicles The efficiency of the link should be 0.5 https://github.com/PyPSA/pypsa-eur/blob/1fbe971ab8dab60d972d3a7b905b9cec7171c0ad/config/config.default.yaml#L403 (this is because the land transport demand is expressed in “MWh of electricity”) The resulting p_nom_opt divided by H2_consumption_1car (see variables definition below) is the number_H2_cars (number of H2 cars)

Definitions of variables (these should be included in the config file and read from there)

EV_charge_rate = 0.011 MWh/h

EV_ consumption_1car = 0.01 MWh_elec/hour (assuming 0.2 kWh/km https://github.com/PyPSA/pypsa-eur/blob/1fbe971ab8dab60d972d3a7b905b9cec7171c0ad/config/config.default.yaml#L382 and velocity of 50km/h -let’s add this velocity assumption to the config file-)

ICE_consumption_1car = 0.033 MWh_oil/hour (assuming 0.66 kWh_oil/km and 50 km/h (with the link efficiency 0.3, they are equivalent to 0.01 MWh_elec/hour)

H2_consumption_1car = 0.02 MWh_H2/hour (assuming 0.4 kWh_H2/km and 50km/h) (with efficiency 0.5, they are equivalent to 0.01 MWh_elec/hour)