Emissions inventories of mobile sources and inputs for air quality models using VEIN
Sergio Ibarra-Espinosa, Postdoc.
Department of Atmospheric Sciences, Instituto de Astronomia, Geofísica e Ciências Atmosféricas, University of São Paulo, Brazil.
Research Group of Regional Atmospheric Environment, Northeast Institute of Geography and Agroecology, Chinese Academy of Sciences, P. R. China
print("你好")
Introduction
Pollution caused 9 million premature deaths in 2015, 16% of all deaths worldwide (LANDRIGAN et al, 2017).
Air pollution also affects ecosystemic services.
There is consensus that climate change is due to human activity (COOK et al., 2016).
It is crucial to understand the physical and chemical mechanism of generation of the air pollutants,the emissions.



Santiago, Chile; São Paulo, Brazil; and Changchun, China.




Meteorology
Emissions
Air quality modeling
Comparison
The emission inventories are easily seen as the scapegoat if a mismatch is found between modelled and observed concentrations of air pollutants (Pulles and Helsinga, 2003).
Emissions inventories
It is an important tool for air quality managment.
It is a compilation of the mass of pollutants released by the sources in a territory and period of time.
Usually in urban centers, vehicles are the most important source of air pollution (MOLINA; MOLINA, 2004b).
Sources



Area
Mobile
Point
Biogenic
Approaches
When you develop an emissions inventory, you can follow
several approaches which varies along with the level of
detail that you want to achieve.
In general, if you dealt with a KEY source, you
will try to make the estimation more representative.
A KEY source is the source which is responsabile for most
of the pollution in a specific region.
We can classify the approaches as top-down or bottom-up

Ntziachristos, L, and Z Samaras. 2016. “EMEP/EEA Emission Inventory Guidebook; Road Transport: Passenger Cars, Light Commercial Trucks, Heavy-Duty Vehicles Including Buses and Motorcycles.” European Environment Agency, Copenhagen.
You need regional fuel sales.
Let's talk about VEIN
The VEhicular Emissions INventory model
It is an R package to estimate vehicular emissions
Download it on CRAN
Clone it on GitHub
Paper on GMD
PDF Manual
Online Manual
Kindle Bookon Amazon
Paperback Book on Amazon
Online Book FREE!
It creates NetCDF inputs for air quality models
Pollutants:
European emission factors
Criteria (g/km): “CO”, “NOx”, “HC”, “PM”, “CH4”, “NMHC”, “CO2”, “SO2”, “Pb”, “FC” (Fuel Consumption),“NO”, “NO2”. PAH and POP: “indeno(1,2,3-cd)pyrene”, “benzo(k)fluoranthene”, “benzo(b)fluoranthene”, “benzo(ghi)perylene”, “fluoranthene”, “benzo(a)pyrene”, “pyrene”, “perylene”, “anthanthrene”, “benzo(b)fluorene”, “benzo(e)pyrene”, “triphenylene”, “benzo(j)fluoranthene”, “dibenzo(a,j)anthacene”, “dibenzo(a,l)pyrene”, “3,6-dimethyl-phenanthrene”, “benzo(a)anthracene”, “acenaphthylene”, “acenapthene”, “fluorene”, “chrysene”, “phenanthrene”, “napthalene”, “anthracene”, “coronene”, “dibenzo(ah)anthracene” Dioxins and Furans (g/km): “PCDD”, “PCDF”, “PCB”. Metals (g/km): “As”, “Cd”, “Cr”, “Cu”, “Hg”, “Ni”, “Pb”, “Se”, “Zn”. NMHC (g/km): ALKANES: “ethane”, “propane”, “butane”, “isobutane”, “pentane”, “isopentane”, “hexane”, “heptane”, “octane”, “TWO_methylhexane”, “nonane”, “TWO_methylheptane”, “THREE_methylhexane”, “decane”, “THREE_methylheptane”, “alcanes_C10_C12”, “alkanes_C13”. CYCLOALKANES: “cycloalcanes”. ALKENES: “ethylene”, “propylene”, “propadiene”, “ONE_butene”, “isobutene”, “TWO_butene”, “ONE_3_butadiene”, “ONE_pentene”, “TWO_pentene”, “ONE_hexene”, “dimethylhexene”. ALKYNES:“ONE_butine”, “propine”, “acetylene”. ALDEHYDES: “formaldehyde”, “acetaldehyde”, “acrolein”, “benzaldehyde”, “crotonaldehyde”, “methacrolein”, “butyraldehyde”, “isobutanaldehyde”, “propionaldehyde”, “hexanal”, “i_valeraldehyde”, “valeraldehyde”, “o_tolualdehyde”, “m_tolualdehyde”, “p_tolualdehyde”. KETONES: “acetone”, “methylethlketone”. AROMATICS: “toluene”, “ethylbenzene”, “m_p_xylene”, “o_xylene”, “ONE_2_3_trimethylbenzene”, “ONE_2_4_trimethylbenzene”, “ONE_3_5_trimethylbenzene”, “styrene”, “benzene”, “C9”, “C10”, “C13”. Active Surface (cm2/km) “AS_urban”, “AS_rural”, “AS_highway”. Total Number of particles (N/km) “N_urban”, “N_rural”, “N_highway”, “N_50nm_urban”, “N_50_100nm_rural”, “N_100_1000nm_highway”.Brazilian emission factors
“COd”, “HCd”, “NMHCd”, “CH4”, “NOxd”, “CO2” “PM”, “N2O”, “KML”, “FC”, “NO2d”, “NOd”, “gCO2/KWH”, “RCHOd”, “CO”, “HC”, “NMHC”, “NOx”, “NO2” ,“NO”, “RCHO” “e_eth”, “e_hc3”, “e_hc5”, “e_hc8”, “e_ol2”, “e_olt”, “e_oli”, “e_iso”, “e_tol”, “e_xyl”, “e_c2h5oh”, “e_ald”, “e_hcho”, “e_ch3oh”, “e_ket”, “E_SO4i”, “E_SO4j”, “E_NO3i”, “E_NO3j”, “E_MP2.5i”, “E_MP2.5j”, “E_ORGi”, “E_ORGj”, “E_ECi”, “E_ECj”IVE model emission factors (base)
“VOC_gkm”, “CO_gkm”, “NOx_gkm”, “PM_gkm”, “Pb_gkm”, “SO2_gkm”, “NH3_gkm”, “ONE_3_butadiene_gkm”, “formaldehyde_gkm”, “acetaldehyde_gkm”, “benzene_gkm”, “EVAP_gkm”, “CO2_gkm”, “N20_gkm”, “CH4_gkm”, “VOC_gstart”, “CO_gstart”, “NOx_gstart”, “PM_gstart”, “Pb_gstart”, “SO2_gstart”, “NH3_gstart”, “ONE_3butadiene_gstart”, “formaldehyde_gstart”,“acetaldehyde_gstart”, “benzene_gstart”, “EVAP_gstart”, “CO2_gstart”, “N20_gstart”, “CH4_gstart”Emissions
Hot Exhaust, Cold Exhaust, Evaporative, Wear, resuspession, high emitters.Installation
You need these libraries on your system
- GEOS, GDAL, UDUNITS, PROJ, NetCDF
For instance, in Ubuntu:
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev libnetcdf-dev
On Windows, you need RTools. Check here
Then, You need to install the dependencies
sf (Pebesma 2017)
lwgeom (Pebesma 2018)
data.table (Dowle and Srinivasan 2017)
sp (Pebesma and Bivand 2005)
units (Pebesma, Mailund, and Hiebert 2016)
eixport (Ibarra-Espinosa, Schuch, and Dias de Freitas 2018)
Then, on R type
install.packages("vein")
devtools::install.github("atmoschem/vein")
If you need help with a function, type:
?function
and the manual will open for thatfunction
And for the version on GitHub
Before running VEIN, it is important to know the Vehicular Composition
Passenger Cars (PC) |
Fuel/Size/types |
Age distribution |
Technology |
|
---|---|---|---|---|
Light Commercial Vehicles (LCV) |
Fuel/Size/types |
Age distribution |
Technology |
|
Heavy Good Vehicles (HGV) |
Fuel/Size/types |
Age distribution |
Technology |
|
Bus |
Fuel/Size/types |
Age distribution |
Technology |
|
Motorcycles (MC) |
Fuel/Size/types |
Age distribution |
Technology |
1. The function inventory
Produces an structure of directories and scripts in order to run vein. It is required to know the vehicular composition of the fleet
Arguments:
inventory(name,
vehcomp = c(PC = 1, LCV = 1, HGV = 1, BUS = 1, MC = 1),
show.main = T, scripts = T,
show.dir = T, show.scripts = F,
clear = T, rush.hour = F)
library(vein)
inventory
(name = file.path(tempdir(),
"YourCity"
),
show.dir = T,
show.scripts = T)
## files at /tmp/RtmpNb0Y7T/YourCity
## Directories:
## [1] "/tmp/RtmpNb0Y7T/YourCity"
## [2] "/tmp/RtmpNb0Y7T/YourCity/ef"
## [3] "/tmp/RtmpNb0Y7T/YourCity/emi"
## [4] "/tmp/RtmpNb0Y7T/YourCity/emi/BUS_01"
## [5] "/tmp/RtmpNb0Y7T/YourCity/emi/HGV_01"
## [6] "/tmp/RtmpNb0Y7T/YourCity/emi/LCV_01"
## [7] "/tmp/RtmpNb0Y7T/YourCity/emi/MC_01"
## [8] "/tmp/RtmpNb0Y7T/YourCity/emi/PC_01"
## [9] "/tmp/RtmpNb0Y7T/YourCity/est"
## [10] "/tmp/RtmpNb0Y7T/YourCity/images"
## [11] "/tmp/RtmpNb0Y7T/YourCity/network"
## [12] "/tmp/RtmpNb0Y7T/YourCity/post"
## [13] "/tmp/RtmpNb0Y7T/YourCity/post/df"
## [14] "/tmp/RtmpNb0Y7T/YourCity/post/grids"
## [15] "/tmp/RtmpNb0Y7T/YourCity/post/streets"
## [16] "/tmp/RtmpNb0Y7T/YourCity/profiles"
## [17] "/tmp/RtmpNb0Y7T/YourCity/veh"
## Scripts:
## [1] "est/BUS_01_input.R" "est/HGV_01_input.R" "est/LCV_01_input.R"
## [4] "est/MC_01_input.R" "est/PC_01_input.R" "main.R"
## [7] "post.R" "traffic.R"
2. Network and Regions
-
If you have traffic flow at street level, you may use all the functions dedicated to process traffic and speed at street level.
-
When I say traffic simulation, I mean output of a 4-stage travel demand model.
-
If you have traffic fleet per region as spatial polygons, you may skip this section.
data("net")
provides an example with traffic simulationtemp_fact
projects rush hour traffic to other hours based on an available normalized hourly profile.netspeed
read the kinematic parameters of a rush hour trffic simulation and projects and speeds at all hours.
data("net")
PC_E25_1400 <- age_ldv(x = net$ldv, name = "PC_E25_1400")
plot(PC_E25_1400, xlab = "age of use")

data("pc_profile")
pc_week <- temp_fact(net$ldv+net$hdv, pc_profile)
dfspeed <- netspeed(pc_week, net$ps, net$ffs, net$capacity, net$lkm, alpha = 1.5)
plot(dfspeed, xlab = "Hours", ylab = "Speed [km/h]")

dfspeednet <- netspeed(pc_week, net$ps, net$ffs, net$capacity, net$lkm,
alpha = 1.5, net = net))
spplot(as(dfspeednet, "Spatial"), c("S1", "S9"), col.regions = cptcity::cpt(), scales = list(Draw = T))
3. Emission factors. Speed functions
V <- 0:150
ef1 <- ef_ldv_speed(v = "PC",
t = "4S",
cc = "<=1400",
f = "G",
eu = "PRE",
p = "CO")
plot(Speed(1:150),
ef1(1:150),
xlab = "speed[km/h]")
ef1 <- ef_ldv_speed(v = "PC",
t = "4S",
cc = "<=1400",
f = "G",
eu = "PRE",
p = "CO")
plot(Speed(1:150),
ef1(1:150),
xlab = "speed[km/h]")

3. Emission factors. Constant by age of use

3. Emission factors. Scaled Speed functions

4. Emission estimation
euro <- c(rep("V", 5), rep("IV", 5),
rep("III", 5), rep("II", 5),
rep("I", 5), rep("PRE", 15))
lef <- lapply(1:40, function(i) {
ef_ldv_speed(v = "PC", t = "4S",
cc = "<=1400", f = "G",
eu = euro[i], p = "CO") })
E_CO <- emis(veh = PC_E25_1400,
lkm = net$lkm, ef = lef,
speed = dfspeed,
profile = pc_profile)
plot(E_CO, xlab = "Hours", ylab = "[g/h]")
rep("III", 5), rep("II", 5),
rep("I", 5), rep("PRE", 15))
lef <- lapply(1:40, function(i) {
ef_ldv_speed(v = "PC", t = "4S",
cc = "<=1400", f = "G",
eu = euro[i], p = "CO") })
E_CO <- emis(veh = PC_E25_1400, lkm = net$lkm, ef = lef, speed = dfspeed,
profile = pc_profile)
plot(E_CO, xlab = "Hours", ylab = "[g/h]")

E_CO
This EmissionsArray has
1505 streets
50 vehicle categories
24 hours
7 days
[1] 0,986270352 0,341801941 0,050115563 0,132141033 0,005108484 0,567239797
This EmissionsArray has
1505 streets
50 vehicle categories
24 hours
7 days
[1] 0,986270352 0,341801941 0,050115563 0,132141033 0,005108484 0,567239797




Hourly
By Age
Street Gridded
Edgar Transport
WRF-Chem!
It create NetCDF files using eixport with ANY resolution




