Skip to content

Commit

Permalink
Adds re-suspended road dust emissions
Browse files Browse the repository at this point in the history
  • Loading branch information
romainsacchi committed Nov 17, 2021
1 parent 2c709ac commit 362097c
Show file tree
Hide file tree
Showing 9 changed files with 334 additions and 249 deletions.
2 changes: 1 addition & 1 deletion carculator_truck/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
)

# library version
__version__ = (0, 2, 6)
__version__ = (0, 2, 7)

from pathlib import Path

Expand Down
5 changes: 3 additions & 2 deletions carculator_truck/data/A_matrix.csv
Original file line number Diff line number Diff line change
Expand Up @@ -1743,7 +1743,7 @@
534;939;6.89E-07
535;535;1
536;536;1
536;915;4
536;915;3.57
537;537;1
538;39;-42840
538;347;-0.225
Expand Down Expand Up @@ -2534,7 +2534,7 @@
772;819;-1
772;850;-0.059579832
772;886;-0.01304
772;915;-3
772;915;-0.8
772;922;-0.1571
772;957;-0.15
773;80;-0.00030042
Expand Down Expand Up @@ -3246,3 +3246,4 @@
985;985;1
986;408;-0.6
986;986;1
536;915;-1.77
5 changes: 4 additions & 1 deletion carculator_truck/data/extra_parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -259,5 +259,8 @@
"Mercury direct emissions, rural",
"Cadmium direct emissions, rural",
"battery lifetime kilometers",
"capacity utilization"
"capacity utilization",
"share recuperated energy",
"road dust emissions",
"transmission efficiency"
]
5 changes: 3 additions & 2 deletions carculator_truck/energy_consumption.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,13 +155,14 @@ def motive_energy_per_km(
gradient_resistance = (driving_mass * 9.81).T.values * np.sin(self.gradient)
# Inertia: driving mass * acceleration
inertia = self.acceleration * driving_mass.values.T
# Braking loss: when inertia is negative
braking_loss = np.where(inertia < 0, inertia * -1, 0)

total_resistance = (
rolling_resistance + air_resistance + gradient_resistance + inertia
)

# Braking loss: when inertia is negative
braking_loss = np.where(total_resistance < 0, total_resistance * -1, 0)

if not debug_mode:

# Power required: total resistance * velocity
Expand Down
81 changes: 10 additions & 71 deletions carculator_truck/inventory.py
Original file line number Diff line number Diff line change
Expand Up @@ -1670,19 +1670,12 @@ def add_additional_activities(self):

if pt == "BEV":

name = (
"transport, freight, lorry, "
+ pt
+ ", "
+ self.background_configuration["energy storage"][
chemistry = self.background_configuration["energy storage"][
"electric"
]["BEV"]
+ " battery, "
+ s
+ " gross weight, "
+ str(y)
+ ", "
+ self.cycle.lower()

name = (
f"transport, freight, lorry, {pt}, {chemistry} battery, {s} gross weight, {y}, {self.cycle.lower()}"
)

if self.scope["fu"]["unit"] == "tkm":
Expand All @@ -1701,6 +1694,10 @@ def add_additional_activities(self):

elif pt == "FCEV":

name = (
f"transport, freight, lorry, {pt}, {s} gross weight, {y}, {self.cycle.lower()}"
)

name = (
"transport, freight, lorry, "
+ pt
Expand Down Expand Up @@ -1729,16 +1726,7 @@ def add_additional_activities(self):
else:

name = (
"transport, freight, lorry, "
+ pt
+ ", "
+ s
+ " gross weight, "
+ str(y)
+ ", "
+ euro_class
+ ", "
+ self.cycle.lower()
f"transport, freight, lorry, {pt}, {s} gross weight, {y}, {euro_class}, {self.cycle.lower()}"
)

if self.scope["fu"]["unit"] == "tkm":
Expand All @@ -1751,7 +1739,7 @@ def add_additional_activities(self):
name,
self.country,
unit,
"transport, freight, lorry, " + euro_class,
f"transport, freight, lorry, {euro_class}",
)
] = maximum

Expand Down Expand Up @@ -5088,9 +5076,6 @@ def set_inputs_in_A_matrix(self, array):
)

# Brake wear emissions
# BEVs only emit 20% of what a combustion engine vehicle emit according to
# https://link.springer.com/article/10.1007/s11367-014-0792-4

self.A[
:,
self.inputs[
Expand All @@ -5106,27 +5091,6 @@ def set_inputs_in_A_matrix(self, array):
array[self.array_inputs["total cargo mass"], :] / 1000
)

ind_A = [
i
for i in self.car_indices
if any(
x in self.rev_inputs[i][0] for x in ["BEV", "FCEV", "HEV-d", "PHEV-d"]
)
]

self.A[
:,
self.inputs[
(
"treatment of brake wear emissions, lorry",
"RER",
"kilogram",
"brake wear emissions, lorry",
)
],
ind_A,
] *= 0.2

# Infrastructure: 5.37e-4 per gross tkm
self.A[
:,
Expand Down Expand Up @@ -6657,10 +6621,6 @@ def set_inputs_in_A_matrix_for_export(self, array):
)

# Brake wear emissions
# BEVs and other hybrid vehicles only emit 20%
# of what a combustion engine vehicle emit according to
# https://link.springer.com/article/10.1007/s11367-014-0792-4

self.A[
:,
self.inputs[
Expand All @@ -6676,27 +6636,6 @@ def set_inputs_in_A_matrix_for_export(self, array):
array[self.array_inputs["total cargo mass"], :] / 1000
)

ind_A = [
i
for i in self.car_indices
if any(
x in self.rev_inputs[i][0] for x in ["BEV", "FCEV", "HEV-d", "PHEV-d"]
)
]

self.A[
:,
self.inputs[
(
"treatment of brake wear emissions, lorry",
"RER",
"kilogram",
"brake wear emissions, lorry",
)
],
ind_A,
] *= 0.2

# Infrastructure: 5.37e-4 per gross tkm
self.A[
:,
Expand Down
Loading

0 comments on commit 362097c

Please sign in to comment.