From 18d05fe3fc3a046d69aa8d2bde294bc594a1d446 Mon Sep 17 00:00:00 2001 From: mguevara Date: Tue, 24 Mar 2020 19:58:05 +0100 Subject: [PATCH 1/7] added profiles missins in AERO5 CB05 for CAMS emissions --- .../speciation/Speciation_profile_cb05_aero5_CMAQ.csv | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/data/profiles/speciation/Speciation_profile_cb05_aero5_CMAQ.csv b/data/profiles/speciation/Speciation_profile_cb05_aero5_CMAQ.csv index a124558..d8be892 100755 --- a/data/profiles/speciation/Speciation_profile_cb05_aero5_CMAQ.csv +++ b/data/profiles/speciation/Speciation_profile_cb05_aero5_CMAQ.csv @@ -120,4 +120,12 @@ E119;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*v E120;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0 E121;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;oc;bc;0;0;0;0 E122;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;oc;bc;0;0;3.4*(oc+bc)-oc-bc;0 -E123;0.7*nox_no;0.283*nox_no;0.017*nox_no;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;oc;bc;0;0;1.2*(oc+bc)-oc-bc;0 \ No newline at end of file +E123;0.7*nox_no;0.283*nox_no;0.017*nox_no;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;oc;bc;0;0;1.2*(oc+bc)-oc-bc;0 +E902;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E903;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E906;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;oc;0;0;0;pm25-oc;pm10-pm25 +E907;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;oc;ec;0;0;pm25-oc-ec;pm10-pm25 +E927;nox_no2;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E928;0;0;0;co;0;0;0.001591*nmvoc;0.000103*nmvoc;0.000038*nmvoc;0;0;0.000022*nmvoc;0;0;0;0;0.000023*nmvoc;0.03941*nmvoc;0;0.000007*nmvoc;0.000237*nmvoc;0;0;0;0;0.318*pm25;0.0516*pm25;0;0.0446*pm25;pm25*0.5858;pm10-pm25 +E929;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E930;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0.002093*nmvoc;0.000525*nmvoc;0.000105*nmvoc;0.002929*nmvoc;0.001894*nmvoc;0.000023*nmvoc;0.002826*nmvoc;0.000116*nmvoc;0.000043*nmvoc;0.003664*nmvoc;0.003078*nmvoc;0.010261*nmvoc;0;0.000006*nmvoc;0.00013*nmvoc;0.000006*nmvoc;0;0;0;0.48*pm25;0.15*pm25;0;0;pm25*0.37;pm10-pm25 \ No newline at end of file -- GitLab From 059ca0a6584558f8dcb3cb9ce675c9e9cd2de383 Mon Sep 17 00:00:00 2001 From: mguevara Date: Wed, 29 Apr 2020 12:43:03 +0200 Subject: [PATCH 2/7] Added Tagging speciation profiles (EC_ff, EC_wb and all GFAS species, including TPM_GFAS for GFASv1.3) --- ...le_cb05_aero5_MONARCH_fullchem_tagging.csv | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 data/profiles/speciation/Speciation_profile_cb05_aero5_MONARCH_fullchem_tagging.csv diff --git a/data/profiles/speciation/Speciation_profile_cb05_aero5_MONARCH_fullchem_tagging.csv b/data/profiles/speciation/Speciation_profile_cb05_aero5_MONARCH_fullchem_tagging.csv new file mode 100644 index 0000000..a9720f4 --- /dev/null +++ b/data/profiles/speciation/Speciation_profile_cb05_aero5_MONARCH_fullchem_tagging.csv @@ -0,0 +1,154 @@ +ID;NO;NO2;HONO;CO;SO2;NH3;ALD2;ALDX;BENZENE;ETH;ETHA;ETOH;FORM;IOLE;ISOP;MEOH;OLE;PAR;SESQ;TERP;TOL;XYL;DMS;HCL;POA;EC_ff;PNO3;PSO4;PMFINE;PMC;EC_wb;PEC;SO2_GFAS;DMS_GFAS;POA_GFAS;PEC_GFAS;PNO3_GFAS;PSO4_GFAS;PMFINE_GFAS;TPM_GFAS +units;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;mol.s-1.m-2;mol.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2;kg.s-1.m-2 +short_description;nitrogen_monoxide;nitrogen_dioxide;nitrous_acid;carbon_monoxide;sulfur_dioxide;ammonia;acetaldehyde;higher_aldehydes;benzene;ethene;ethane;ethanol;formaldehyde;internal_olefin_carbon_bond;isoprene;methanol;terminal_olefin_carbon_bond;paraffin_carbon_bond;sesquiterpenes;terpene;toluene;xylene;dimethyl_sulfide;hydrogen_chloride;primary_organic_carbon;primary_elemental_carbon_fossil_fuel;primary_nitrate_fine;primary_sulfate_fine;primary_others_fine;pm_coarse;primary_elemental_carbon_wood_burning;primary_elemental_carbon;sulfur_dioxide_gfas;dimethyl_sulfide_gfas;primary_organic_carbon_gfas;primary_elemental_carbon_gfas;primary_nitrate_fine_gfas;primary_sulfate_fine_gfas;primary_others_fine_gfas;totalparticles_gfas +E001;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;so2;c2h6s;3*oc;5.9*bc;0;0;3.3*pm25-3*oc-5.9*bc;0 +E002;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.155;(pm25-oc-bc)*0.845;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E003;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.089;(pm25-oc-bc)*0.911;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E004;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.8*oc;bc;0;(pm25-oc-bc)*0.047;(pm25-oc-bc)*0.953;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E005;0.823*nox_no2;0.16*nox_no2;0.017*nox_no2;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.059;(pm25-oc-bc)*0.941;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E006;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E007;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+5*voc05+7.5*voc06+voc08+voc09+voc13+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc17;0;0;1.3*oc;bc;0;0;pm25-oc-bc;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E008;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.537;(pm25-oc-bc)*0.463;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E009;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0;0;c6h6;c2h4;0;0;0;0;0;ch3oh;c3h6;c2h2+c3h6+ch3cooh;0;0;ch2o;0;0;hcl;1.44*oc;bc;0;0;pm25-oc-bc;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E010;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0.02*1.3*pm25;0.01*pm25;0;0.15*pm25;0.82*pm25;pm10-pm25;0;0.01*pm25;0;0;0;0;0;0;0;0 +E011;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0.35*1.8*pm25;0.18*pm25;0;0.02*pm25;0.45*pm25;pm10-pm25;0;0.18*pm25;0;0;0;0;0;0;0;0 +E012;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0.03*1.3*pm25;0.01*pm25;0;0.1*pm25;0.86*pm25;pm10-pm25;0;0.01*pm25;0;0;0;0;0;0;0;0 +E013;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;voc13;0;voc02;0;0;0.666*voc12;0;0;0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc13;0;0;voc14;voc15;0;0;0;0;0;0;1*pm25;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E014;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0.01*voc18+0.3*voc19;0;0;0;0.5*voc01;0;0;0;0.5*voc01;0;7.5*voc06+2.2*voc17+4.11*voc18+4*voc19+4*voc23;0;0;voc14+0.2*voc17;voc15+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E015;0.95*nox_no2;0.042*nox_no2;0.008*nox_no2;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0.58*1.3*pm25;0.21*pm25;0;0.01*pm25;0.21*pm25;pm10-pm25;0;0.21*pm25;0;0;0;0;0;0;0;0 +E016;0.7*nox_no2;0.283*nox_no2;0.017*nox_no2;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc17;0;0;0.288*1.3*pm25;0.675*pm25;0;0.01*pm25;0.037*pm25;pm10-pm25;0;0.675*pm25;0;0;0;0;0;0;0;0 +E017;0.95*nox_no2;0.042*nox_no2;0.008*nox_no2;co;so2;nh3;0.625*voc22;0.375*voc22;0;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+voc08+2.2*voc17+1.875*voc22;0;0;0.2*voc17;voc17;0;0;0.58*1.3*pm25;0.21*pm25;0;0.01*pm25;0.21*pm25;pm10-pm25;0;0.21*pm25;0;0;0;0;0;0;0;0 +E018;0;0;0;0;0;0;0;0;voc13;0;0;0;0;0.666*voc12;0;0;0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc13;0;0;voc14;voc15;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E019;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0.2*1.3*pm25;0.06*pm25;0;0;0.74*pm25;pm10-pm25;0;0.06*pm25;0;0;0;0;0;0;0;0 +E020;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0.31*1.3*pm25;0.41*pm25;0;0.03*pm25;0.25*pm25;pm10-pm25;0;0.41*pm25;0;0;0;0;0;0;0;0 +E021;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0.31*1.3*pm25;0.2*pm25;0;0;0.49*pm25;pm10-pm25;0;0.2*pm25;0;0;0;0;0;0;0;0 +E022;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0.48*1.8*pm25;0.15*pm25;0;0;0.37*pm25;pm10-pm25;0;0.15*pm25;0;0;0;0;0;0;0;0 +E023;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;pm25;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E024;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25-oc-bc;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E025;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000008*nmvoc;0;0;0.000858*nmvoc;0.004177*nmvoc;0;0.018548*nmvoc;0;0;0;0.00104*nmvoc;0.011594*nmvoc;0;0;0;0.000893*nmvoc;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.155;(pm25-oc-bc)*0.845;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E026;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000013*nmvoc;0;0;0.003224*nmvoc;0.001662*nmvoc;0.000659*nmvoc;0.008038*nmvoc;0;0;0.000175*nmvoc;0.000496*nmvoc;0.025751*nmvoc;0;0;0;0.001726*nmvoc;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.089;(pm25-oc-bc)*0.911;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E027;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000592*nmvoc;0;0;0.002423*nmvoc;0.001607*nmvoc;0;0.000899*nmvoc;0;0;0;0.002589*nmvoc;0.028079*nmvoc;0;0;0;0.003302*nmvoc;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.059;(pm25-oc-bc)*0.941;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E028;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000047*nmvoc;0;0;0.002914*nmvoc;0.004187*nmvoc;0.000849*nmvoc;0.00186*nmvoc;0;0;0;0.002559*nmvoc;0.029992*nmvoc;0;0;0;0.001755*nmvoc;0;0;1.8*oc;bc;0;(pm25-oc-bc)*0.047;(pm25-oc-bc)*0.953;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E029;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0.001867*nmvoc;0.008553*nmvoc;0.000529*nmvoc;0.005349*nmvoc;0;0.000169*nmvoc;0.000133*nmvoc;0.000435*nmvoc;0.025797*nmvoc;0;0;0;0.000742*nmvoc;0;0;1.3*oc;bc;0;0;pm25-oc-bc;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E030;0;0;0;0;0;0;0;0;0;0.000087*nmvoc;0.000148*nmvoc;0.003563*nmvoc;0.000004*nmvoc;0;0.000001*nmvoc;0.001904*nmvoc;0.000161*nmvoc;0.036006*nmvoc;0;0;0;0.001686*nmvoc;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E031;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.002093*nmvoc;0.000525*nmvoc;0.000105*nmvoc;0.002929*nmvoc;0.001894*nmvoc;0.000023*nmvoc;0.002826*nmvoc;0.000116*nmvoc;0.000043*nmvoc;0.003664*nmvoc;0.003078*nmvoc;0.010261*nmvoc;0;0.000006*nmvoc;0.00013*nmvoc;0.000006*nmvoc;0;0;1.3*oc;bc;0;0;pm25-oc-bc;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E032;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0.002496*nmvoc;0.004456*nmvoc;0;0;0.001693*nmvoc;0;0;0;0.001111*nmvoc;0.030672*nmvoc;0;0;0.001132*nmvoc;0.000762*nmvoc;0;0;1.3*oc;bc;0;(pm25-oc-bc)*0.537;(pm25-oc-bc)*0.463;pm10-pm25;0;bc;0;0;0;0;0;0;0;0 +E033;nox_no2;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;pm25_fossil;pm10-pm25_fossil;0;0;0;0;0;0;0;0;0;0 +E034;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25_bio;pm10-pm25_bio;0;bc;0;0;0;0;0;0;0;0 +E035;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;bc;0;0;pm25_fossil-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E036;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;(pm25_fossil+pm25_bio-oc-bc)*0.155;(pm25_fossil+pm25_bio-oc-bc)*0.845;pm10-pm25_fossil-pm25_bio;0;bc;0;0;0;0;0;0;0;0 +E037;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;bc;0;0;pm25_fossil-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E038;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25_fossil;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E039;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;(pm25_fossil+pm25_bio-oc-bc)*0.089;(pm25_fossil+pm25_bio-oc-bc)*0.911;pm10-pm25_fossil-pm25_bio;0;bc;0;0;0;0;0;0;0;0 +E040;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;bc;0;0;pm25_fossil-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E041;0.9*nox_no2;0.1*nox_no2;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;pm25_fossil;pm10-pm25_fossil;0;0;0;0;0;0;0;0;0;0 +E042;0.9*nox_no2;0.1*nox_no2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;pm10;0;0;0;0;0;0;0;0;0;0 +E043;0;0;0;0;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;bc;0;0;pm25_fossil-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E044;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;bc;0;0;pm25_fossil-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E045;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25_fossil-oc-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E046;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;pm25_fossil;pm10-pm25_fossil;0;0;0;0;0;0;0;0;0;0 +E047;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.8*oc;bc;0;(pm25_bio+pm25_fossil-oc-bc)*0.047;(pm25_bio+pm25_fossil-oc-bc)*0.953;pm10-pm25_fossil-pm25_bio;0;bc;0;0;0;0;0;0;0;0 +E048;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;(pm25_bio+pm25_fossil-oc-bc)*0.155;(pm25_bio+pm25_fossil-oc-bc)*0.845;pm10-pm25_fossil-pm25_bio;0;bc;0;0;0;0;0;0;0;0 +E049;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25_fossil+pm25_bio;pm10-pm25_fossil-pm25_bio;0;bc;0;0;0;0;0;0;0;0 +E050;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;pm25_fossil;pm10-pm25_fossil;0;0;0;0;0;0;0;0;0;0 +E051;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25_fossil-oc-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E052;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25_fossil-oc-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E053;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;pm25_fossil-oc-bc;pm10-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E054;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;(pm25_bio+pm25_fossil-oc-bc)*0.059;(pm25_bio+pm25_fossil-oc-bc)*0.941;pm10-pm25_bio-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E055;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;(pm25_bio+pm25_fossil-oc-bc)*0.537;(pm25_bio+pm25_fossil-oc-bc)*0.463;pm10-pm25_bio-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E056;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;(pm25_bio+pm25_fossil-oc-bc)*0.059;(pm25_bio+pm25_fossil-oc-bc)*0.941;pm10-pm25_bio-pm25_fossil;0;bc;0;0;0;0;0;0;0;0 +E057;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E058;0;0;0;0;0;0;0.625*voc22;0.3*voc19+0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;voc10;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4*voc19+1.875*voc22+4*voc23;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E059;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E060;0;0;0;0;0;0;0;0.01*voc18+0.3*voc19;voc13;voc07;voc02;0;0;0.666*voc12;voc10;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc13+2.2*voc17+4.11*voc18+4*voc19;0;0;voc14+0.2*voc17;voc15+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E061;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E062;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E063;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;voc10;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E064;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E065;0;0;0;0;0;0;0;0;voc13;voc07;voc02;0.5*voc01;0;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E066;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E067;0;0;0;0;0;0;0.625*voc22;0.666*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E068;0;0;0;0;0;0;0.625*voc22;0.666*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E069;0;0;0;0;0;0;0.625*voc22;0.666*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E070;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E071;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E072;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E073;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;voc11;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E074;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000008*nmvoc;0;0;0.000858*nmvoc;0.004177*nmvoc;0;0.018548*nmvoc;0;0;0;0.00104*nmvoc;0.011594*nmvoc;0;0;0;0.000893*nmvoc;0;0;0.02*1.3*pm25;0.01*pm25;0;0.15*pm25;0.82*pm25;pm10-pm25;0;0.01*pm25;0;0;0;0;0;0;0;0 +E075;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000013*nmvoc;0;0;0.003224*nmvoc;0.001662*nmvoc;0.000659*nmvoc;0.008038*nmvoc;0;0;0.000175*nmvoc;0.000496*nmvoc;0.025751*nmvoc;0;0;0;0.001726*nmvoc;0;0;0.03*1.3*pm25;0.01*pm25;0;0.1*pm25;0.86*pm25;pm10-pm25;0;0.01*pm25;0;0;0;0;0;0;0;0 +E076;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000047*nmvoc;0;0;0.002914*nmvoc;0.004187*nmvoc;0.000849*nmvoc;0.00186*nmvoc;0;0;0;0.002559*nmvoc;0.029992*nmvoc;0;0;0;0.001755*nmvoc;0;0;0.35*1.8*pm25;0.18*pm25;0;0.02*pm25;0.45*pm25;pm10-pm25;0;0.18*pm25;0;0;0;0;0;0;0;0 +E077;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0.000006*nmvoc;0.005934*nmvoc;0;0.000026*nmvoc;0;0.000001*nmvoc;0;0.000373*nmvoc;0.055357*nmvoc;0;0;0;0.000048*nmvoc;0;0;0;0;0;0;1*pm25;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E078;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0.000087*nmvoc;0.000148*nmvoc;0.003563*nmvoc;0.000004*nmvoc;0;0.000001*nmvoc;0.001904*nmvoc;0.000161*nmvoc;0.036006*nmvoc;0;0;0;0.001686*nmvoc;0;0;0;0;0;0;1*pm25;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E079;0.7*nox_no2;0.283*nox_no2;0.017*nox_no2;co;so2;nh3;0.000592*nmvoc;0;0;0.002423*nmvoc;0.001607*nmvoc;0;0.000899*nmvoc;0;0;0;0.002589*nmvoc;0.028079*nmvoc;0;0;0;0.003302*nmvoc;0;0;0.32*1.3*pm25;0.49*pm25;0;0.01*pm25;0.18*pm25;pm10-pm25;0;0.49*pm25;0;0;0;0;0;0;0;0 +E080;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0.002496*nmvoc;0.004456*nmvoc;0;0;0.001693*nmvoc;0;0;0;0.001111*nmvoc;0.030672*nmvoc;0;0;0.001132*nmvoc;0.000762*nmvoc;0;0;0.12*1.3*pm25;0.005*pm25;0;0.40*pm25;0.475*pm25;pm10-pm25;0;0.005*pm25;0;0;0;0;0;0;0;0 +E081;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.001084*nmvoc;0.000756*nmvoc;0.000248*nmvoc;0.00622*nmvoc;0.000293*nmvoc;0;0.005437*nmvoc;0.000086*nmvoc;0;0;0.003296*nmvoc;0.011816*nmvoc;0;0;0.000192*nmvoc;0.000124*nmvoc;0;0;0.62*1.3*pm25;0.16*pm25;0;0.15*pm25;0.07*pm25;pm10-pm25;0;0.16*pm25;0;0;0;0;0;0;0;0 +E082;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.000227*nmvoc;0.000311*nmvoc;0.000333*nmvoc;0.003921*nmvoc;0.000166*nmvoc;0;0.00206*nmvoc;0.00079*nmvoc;0;0;0.00111*nmvoc;0.039123*nmvoc;0;0;0.000245*nmvoc;0.000476*nmvoc;0;0;0.31*1.3*pm25;0.41*pm25;0;0.03*pm25;0.25*pm25;pm10-pm25;0;0.41*pm25;0;0;0;0;0;0;0;0 +E083;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0;0;0.001867*nmvoc;0.008553*nmvoc;0.000529*nmvoc;0.005349*nmvoc;0;0.000169*nmvoc;0.000133*nmvoc;0.000435*nmvoc;0.025797*nmvoc;0;0;0;0.000742*nmvoc;0;0;0.31*1.3*pm25;0.2*pm25;0;0;0.49*pm25;pm10-pm25;0;0.2*pm25;0;0;0;0;0;0;0;0 +E084;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.001591*nmvoc;0.000103*nmvoc;0.000038*nmvoc;0;0;0.000022*nmvoc;0;0;0;0;0.000023*nmvoc;0.03941*nmvoc;0;0.000007*nmvoc;0.000237*nmvoc;0;0;0;0.318*1.3*pm25;0.0516*pm25;0;0.0446*pm25;0.5858*pm25;pm10-pm25;0;0.0516*pm25;0;0;0;0;0;0;0;0 +E085;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.002093*nmvoc;0.000525*nmvoc;0.000105*nmvoc;0.002929*nmvoc;0.001894*nmvoc;0.000023*nmvoc;0.002826*nmvoc;0.000116*nmvoc;0.000043*nmvoc;0.003664*nmvoc;0.003078*nmvoc;0.010261*nmvoc;0;0.000006*nmvoc;0.00013*nmvoc;0.000006*nmvoc;0;0;0.48*1.8*pm25;0.15*pm25;0;0;0.37*pm25;pm10-pm25;0;0.15*pm25;0;0;0;0;0;0;0;0 +E086;0;0;0;0;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E087;nox_no2;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E088;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E089;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E090;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E091;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.8*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E092;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E093;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E094;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;voc10;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E095;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.001084*nmvoc;0.000756*nmvoc;0.000248*nmvoc;0.00622*nmvoc;0.000293*nmvoc;0;0.005437*nmvoc;0.000086*nmvoc;0;0;0.003296*nmvoc;0.011816*nmvoc;0;0;0.000192*nmvoc;0.000124*nmvoc;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E096;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E097;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E098;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.8*oc;ec_ff;0;so4;pm25-oc-ec_ff-ec_wb-so4;pm10-pm25;ec_wb;ec_ff+ec_wb;0;0;0;0;0;0;0;0 +E099;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E100;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0;0.01*voc18+0.3*voc19;0;0;0;0.5*voc01;0;0;0;0.5*voc01;0;7.5*voc06+2.2*voc17+4.11*voc18+4*voc19+4*voc23;0;0;voc14+0.2*voc17;voc15+voc17;0;0;0;0;0;0;pm25;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E101;0.95*nox_no2;0.042*nox_no2;0.008*nox_no2;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E102;0.7*nox_no2;0.283*nox_no2;0.017*nox_no2;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E103;0.95*nox_no2;0.042*nox_no2;0.008*nox_no2;co;so2;nh3;0.625*voc22;0.375*voc22;0;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+voc08+2.2*voc17+1.875*voc22;0;0;0.2*voc17;voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E104;0;0;0;0;0;0;0;0;voc13;0;0;0;0;0.666*voc12;0;0;0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc13;0;0;voc14;voc15;0;0;1.3*oc;ec;0;0;pm25-oc-ec;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E105;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E106;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+5*voc05+7.5*voc06+voc08+voc09+voc13+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc17;0;0;1.3*oc;0;0;so4;pm25-oc-so4;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E107;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E108;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;0;pm25-oc-ec;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E109;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;0;0;0;pm25-oc;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E110;0.9*nox_no2;0.1*nox_no2;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;0;pm25-oc-ec;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E111;0.9*nox_no;0.1*nox_no;0;co;so2;0;0;0;0.002496*nmvoc;0.004456*nmvoc;0;0;0.001693*nmvoc;0;0;0;0.001111*nmvoc;0.030672*nmvoc;0;0;0.001132*nmvoc;0.000762*nmvoc;0;0;1.3*oc;ec;0;so4;ash;0;0;ec;0;0;0;0;0;0;0;0 +E112;nox_no;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E113;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;c2h6s;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E114;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E115;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;5.6*(oc+bc)-oc-bc;3.4*(oc+bc);0;bc;0;0;0;0;0;0;0;0 +E116;0.9*nox_no;0.1*nox_no;0;co;so2;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E117;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;3.1*(oc+bc)-oc-bc;0.6*(oc+bc);0;bc;0;0;0;0;0;0;0;0 +E118;nox_no;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E119;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.8*oc;bc_ff;0;0;1.7*(oc+bc_ff+bc_wb)-oc-(bc_ff+bc_wb);1.5*(oc+bc_ff+bc_wb);bc_wb;bc_ff+bc_wb;0;0;0;0;0;0;0;0 +E120;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E121;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E122;0.9*nox_no;0.1*nox_no;0;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;3.4*(oc+bc)-oc-bc;0;0;bc;0;0;0;0;0;0;0;0 +E123;0.7*nox_no;0.283*nox_no;0.017*nox_no;co;so2;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;1.2*(oc+bc)-oc-bc;0;0;bc;0;0;0;0;0;0;0;0 +E900;0.9*nox_no2;0.1*nox_no2;0;0;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E901;0;0;0;co;0;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.8*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E902;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E903;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E904;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;ec;0;0;pm25-oc-ec;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E905;0;0;0;0;0;0;0;0;voc13;0;0;0;0;0.666*voc12;0;0;0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc13;0;0;voc14;voc15;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E906;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;0;0;0;pm25-oc;pm10-pm25;0;0;0;0;0;0;0;0;0;0 +E907;0.9*nox_no2;0.1*nox_no2;0;co;so2;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;ec;0;0;pm25-oc-ec;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E908;0;0;0;co;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E909;0;0;0;0;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E910;0.9*nox_no2;0.1*nox_no2;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E911;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E912;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E913;0;0;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E914;0.9*nox_no;0.1*nox_no;0;co;so2;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.3*oc;bc;0;0;0;0;0;bc;0;0;0;0;0;0;0;0 +E915;0;0;0;co;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E916;0;0;0;0;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E917;0.9*nox_no;0.1*nox_no;0;0;0;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E918;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;bc;0;0;5.6*(oc+bc)-oc-bc;3.4*(oc+bc);0;bc;0;0;0;0;0;0;0;0 +E919;0;0;0;0;0;0;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E920;0.9*nox_no;0.1*nox_no;0;0;so2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E921;0;0;0;co;0;nh3;0.625*voc22;0.01*voc18+0.3*voc19+0.375*voc22;voc13;voc07;voc02;0.5*voc01;voc21;0.666*voc12;0;0.5*voc01;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+4.11*voc18+4*voc19+1.875*voc22+4*voc23+voc24;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;1.8*oc;bc;0;0;1.7*(oc+bc)-oc-bc;1.5*(oc+bc);0;bc;0;0;0;0;0;0;0;0 +E922;0;0;0;co;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E923;0;0;0;0;0;0;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+voc16+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc16+voc17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E924;0.95*nox_no2;0.042*nox_no2;0.008*nox_no2;0;so2;nh3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E925;0.7*nox_no2;0.283*nox_no2;0.017*nox_no2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +E926;0;0;0;co;so2;nh3;0.625*voc22;0.375*voc22;voc13;voc07;voc02;0;voc21;0.666*voc12;0;0;voc08+0.333*voc12;1.5*voc03+4*voc04+5*voc05+7.5*voc06+voc08+voc09+voc13+2.2*voc17+1.875*voc22+4*voc23;0;0;voc14+0.2*voc17;voc15+voc17;0;0;1.3*oc;ec;0;so4;pm25-oc-ec-so4;pm10-pm25;0;ec;0;0;0;0;0;0;0;0 +E990;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;so2;c2h6s;3*oc;5.9*bc;0;0;3.3*pm25-3*oc-5.9*bc;tpm \ No newline at end of file -- GitLab From e9b235c92522bae02a648e9a8a885e9c09c569e0 Mon Sep 17 00:00:00 2001 From: Carles Tena Date: Tue, 9 Jun 2020 09:27:02 +0200 Subject: [PATCH 3/7] Dropped projection on the NetCDF --- hermesv3_gr/modules/writing/writer_monarch.py | 104 +++++++++--------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/hermesv3_gr/modules/writing/writer_monarch.py b/hermesv3_gr/modules/writing/writer_monarch.py index 6a087f4..8598d1a 100755 --- a/hermesv3_gr/modules/writing/writer_monarch.py +++ b/hermesv3_gr/modules/writing/writer_monarch.py @@ -349,36 +349,36 @@ class WriterMonarch(Writer): var.coordinates = "lat lon" if self.grid.cell_area is not None: var.cell_measures = 'area: cell_area' - if RegularLatLon: - var.grid_mapping = 'crs' - elif Rotated: - var.grid_mapping = 'rotated_pole' - elif LambertConformalConic: - var.grid_mapping = 'Lambert_conformal' + # if RegularLatLon: + # var.grid_mapping = 'crs' + # elif Rotated: + # var.grid_mapping = 'rotated_pole' + # elif LambertConformalConic: + # var.grid_mapping = 'Lambert_conformal' settings.write_log("\t\t\t'{0}' variable created with size: {1}".format(var_name, var[:].shape) + "\n\t\t\t\t'{0}' variable will be filled later.".format(var_name), level=3) settings.write_log("\t\tCreating NetCDF metadata.", level=2) # Grid mapping - if RegularLatLon: - # CRS - mapping = netcdf.createVariable('crs', 'i') - mapping.grid_mapping_name = "latitude_longitude" - mapping.semi_major_axis = 6371000.0 - mapping.inverse_flattening = 0 - elif Rotated: - # Rotated pole - mapping = netcdf.createVariable('rotated_pole', 'c') - mapping.grid_mapping_name = 'rotated_latitude_longitude' - mapping.grid_north_pole_latitude = 90 - self.grid.new_pole_latitude_degrees - mapping.grid_north_pole_longitude = self.grid.new_pole_longitude_degrees - elif LambertConformalConic: - # CRS - mapping = netcdf.createVariable('Lambert_conformal', 'i') - mapping.grid_mapping_name = "lambert_conformal_conic" - mapping.standard_parallel = "{0}, {1}".format(self.grid.lat_1, self.grid.lat_2) - mapping.longitude_of_central_meridian = self.grid.lon_0 - mapping.latitude_of_projection_origin = self.grid.lat_0 + # if RegularLatLon: + # # CRS + # mapping = netcdf.createVariable('crs', 'i') + # mapping.grid_mapping_name = "latitude_longitude" + # mapping.semi_major_axis = 6371000.0 + # mapping.inverse_flattening = 0 + # elif Rotated: + # # Rotated pole + # mapping = netcdf.createVariable('rotated_pole', 'c') + # mapping.grid_mapping_name = 'rotated_latitude_longitude' + # mapping.grid_north_pole_latitude = 90 - self.grid.new_pole_latitude_degrees + # mapping.grid_north_pole_longitude = self.grid.new_pole_longitude_degrees + # elif LambertConformalConic: + # # CRS + # mapping = netcdf.createVariable('Lambert_conformal', 'i') + # mapping.grid_mapping_name = "lambert_conformal_conic" + # mapping.standard_parallel = "{0}, {1}".format(self.grid.lat_1, self.grid.lat_2) + # mapping.longitude_of_central_meridian = self.grid.lon_0 + # mapping.latitude_of_projection_origin = self.grid.lat_0 # Cell area if self.grid.cell_area is not None: @@ -715,12 +715,12 @@ class WriterMonarch(Writer): if self.grid.cell_area is not None: var.cell_measures = 'area: cell_area' - if regular_latlon: - var.grid_mapping = 'crs' - elif rotated: - var.grid_mapping = 'rotated_pole' - elif lcc: - var.grid_mapping = 'Lambert_conformal' + # if regular_latlon: + # var.grid_mapping = 'crs' + # elif rotated: + # var.grid_mapping = 'rotated_pole' + # elif lcc: + # var.grid_mapping = 'Lambert_conformal' if mpi_numpy: data = np.ones(var[:].shape, dtype=settings.precision) * 100 @@ -761,27 +761,27 @@ class WriterMonarch(Writer): settings.write_log("\t\t\t'{0}' variable created with size: {1}".format(var_name, var[:].shape), level=3) settings.write_log("\t\tCreating NetCDF metadata.", level=2) - if settings.rank == 0: - # Grid mapping - if regular_latlon: - # CRS - mapping = netcdf.createVariable('crs', 'i') - mapping.grid_mapping_name = "latitude_longitude" - mapping.semi_major_axis = 6371000.0 - mapping.inverse_flattening = 0 - elif rotated: - # rotated pole - mapping = netcdf.createVariable('rotated_pole', 'c') - mapping.grid_mapping_name = 'rotated_latitude_longitude' - mapping.grid_north_pole_latitude = 90 - self.grid.new_pole_latitude_degrees - mapping.grid_north_pole_longitude = self.grid.new_pole_longitude_degrees - elif lcc: - # CRS - mapping = netcdf.createVariable('Lambert_conformal', 'i') - mapping.grid_mapping_name = "lambert_conformal_conic" - mapping.standard_parallel = "{0}, {1}".format(self.grid.lat_1, self.grid.lat_2) - mapping.longitude_of_central_meridian = self.grid.lon_0 - mapping.latitude_of_projection_origin = self.grid.lat_0 + # if settings.rank == 0: + # # Grid mapping + # if regular_latlon: + # # CRS + # mapping = netcdf.createVariable('crs', 'i') + # mapping.grid_mapping_name = "latitude_longitude" + # mapping.semi_major_axis = 6371000.0 + # mapping.inverse_flattening = 0 + # elif rotated: + # # rotated pole + # mapping = netcdf.createVariable('rotated_pole', 'c') + # mapping.grid_mapping_name = 'rotated_latitude_longitude' + # mapping.grid_north_pole_latitude = 90 - self.grid.new_pole_latitude_degrees + # mapping.grid_north_pole_longitude = self.grid.new_pole_longitude_degrees + # elif lcc: + # # CRS + # mapping = netcdf.createVariable('Lambert_conformal', 'i') + # mapping.grid_mapping_name = "lambert_conformal_conic" + # mapping.standard_parallel = "{0}, {1}".format(self.grid.lat_1, self.grid.lat_2) + # mapping.longitude_of_central_meridian = self.grid.lon_0 + # mapping.latitude_of_projection_origin = self.grid.lat_0 if self.grid.cell_area is not None: cell_area = settings.comm.gather(self.grid.cell_area, root=0) -- GitLab From ee621836bd60fe5116e8e0c2e59bfd8e75529e07 Mon Sep 17 00:00:00 2001 From: Carles Tena Date: Thu, 11 Jun 2020 09:48:50 +0200 Subject: [PATCH 4/7] Modified version --- hermesv3_gr/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hermesv3_gr/__init__.py b/hermesv3_gr/__init__.py index 0309ae2..9aa3f90 100755 --- a/hermesv3_gr/__init__.py +++ b/hermesv3_gr/__init__.py @@ -1 +1 @@ -__version__ = "2.0.2" +__version__ = "2.1.0" -- GitLab From 59655bf995d666c5ffde3eaf9ac7ed6242054f22 Mon Sep 17 00:00:00 2001 From: Carles Tena Date: Thu, 11 Jun 2020 10:12:09 +0200 Subject: [PATCH 5/7] GFAS from 'GFASv12' to any version that starts from 'GFAS' --- hermesv3_gr/modules/emision_inventories/emission_inventory.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hermesv3_gr/modules/emision_inventories/emission_inventory.py b/hermesv3_gr/modules/emision_inventories/emission_inventory.py index 6519782..6a97eff 100755 --- a/hermesv3_gr/modules/emision_inventories/emission_inventory.py +++ b/hermesv3_gr/modules/emision_inventories/emission_inventory.py @@ -352,7 +352,7 @@ class EmissionInventory(object): emission_inventory_path = emission_inventory_path.replace('', options.input_dir) if emission_inventory.source_type == 'area': - if emission_inventory.ei == 'GFASv12': + if emission_inventory.ei[:4] == 'GFAS': emission_inventory_list.append( GfasEmissionInventory( comm, options, grid, date, emission_inventory.ei, emission_inventory.source_type, @@ -379,7 +379,7 @@ class EmissionInventory(object): p_hour=p_hour, p_speciation=emission_inventory.p_speciation, countries_shapefile=countries_shapefile)) elif emission_inventory.source_type == 'point': - if emission_inventory.ei == 'GFASv12': + if emission_inventory.ei[:4] == 'GFAS': if emission_inventory.frequency == 'daily': emission_inventory_list.append( PointGfasEmissionInventory( -- GitLab From bc4d2b7284dcfdbcc1c024c2c84d73ce9b43e4c8 Mon Sep 17 00:00:00 2001 From: Carles Tena Date: Thu, 11 Jun 2020 10:38:13 +0200 Subject: [PATCH 6/7] GFAS from 'GFASv12' to any version that starts from 'GFAS' --- conf/hermes.conf | 2 +- hermesv3_gr/modules/emision_inventories/emission_inventory.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/hermes.conf b/conf/hermes.conf index 7b64440..e7fde33 100755 --- a/conf/hermes.conf +++ b/conf/hermes.conf @@ -65,7 +65,7 @@ auxiliary_files_path = /data/auxiliar_files/_ Date: Fri, 12 Jun 2020 13:51:38 +0200 Subject: [PATCH 7/7] Fixed bug for GFAS hourly in parallel --- .../point_gfas_hourly_emission_inventory.py | 101 ++++++++++-------- hermesv3_gr/modules/grids/grid.py | 99 +++++++++++++++++ 2 files changed, 153 insertions(+), 47 deletions(-) diff --git a/hermesv3_gr/modules/emision_inventories/point_gfas_hourly_emission_inventory.py b/hermesv3_gr/modules/emision_inventories/point_gfas_hourly_emission_inventory.py index a6b53cf..124d1c7 100755 --- a/hermesv3_gr/modules/emision_inventories/point_gfas_hourly_emission_inventory.py +++ b/hermesv3_gr/modules/emision_inventories/point_gfas_hourly_emission_inventory.py @@ -145,11 +145,13 @@ class PointGfasHourlyEmissionInventory(EmissionInventory): if not os.path.exists(os.path.dirname(coordinates_path)): os.makedirs(os.path.dirname(coordinates_path)) - coordinates_shapefile = os.path.join( - self.auxiliary_files_path, 'gfas', 'coordinates.shp'.format(settings.size, settings.rank)) - if not os.path.exists(coordinates_shapefile): + coordinates_full = os.path.join( + self.auxiliary_files_path, 'gfas', 'coordinates_full.csv'.format(settings.size, settings.rank)) + if not os.path.exists(coordinates_full): + settings.write_log('\t\tCreating GFAS coordinates shapefile. It may take a few minutes.', level=3) src_area = get_grid_area(self.get_input_path(date=self.date_array[0])) netcdf = Dataset(self.get_input_path(date=self.date_array[0]), mode='r') + lats = netcdf.variables['latitude'][:] lons = netcdf.variables['longitude'][:] netcdf.close() @@ -172,35 +174,54 @@ class PointGfasHourlyEmissionInventory(EmissionInventory): coordinates['src_area'] = src_area.flatten() coordinates['geometry'] = coordinates['geometry'].apply(wkt.loads) coordinates.reset_index(inplace=True) - coordinates.to_file(coordinates_shapefile) - else: - coordinates = gpd.read_file(coordinates_shapefile) - coordinates = gpd.sjoin(coordinates, - self.grid.to_shapefile(full_grid=True).to_crs(coordinates.crs), - how='inner', op='within') + # Too time consumer + #coordinates.to_file(coordinates_shapefile) + settings.write_log('\t\t\tDone!', level=3) - coordinates.rename(columns={'FID_left': 'FID'}, inplace=True) - coordinates = coordinates[['FID', 'src_area', 'Cell_ID']] - for proc in range(settings.size): - if proc > 0: - settings.comm.send(coordinates[coordinates['Cell_ID'].isin(self.cell_id_by_proc[proc])], - dest=proc) - coordinates = coordinates[coordinates['Cell_ID'].isin(self.cell_id_by_proc[0])] + grid = self.grid.to_shapefile(full_grid=True).to_crs(coordinates.crs) - else: - coordinates = settings.comm.recv(source=0) + temp_coords = Dataset(os.path.join(self.grid.temporal_path, 'temporal_coords.nc'), mode='r') + + grid['dst_area'] = temp_coords.variables['cell_area'][:].flatten() + temp_coords.close() - # coordinates = coordinates[['FID', 'Cell_ID']] - temp_coords = Dataset(os.path.join(self.grid.temporal_path, 'temporal_coords.nc'), mode='r') + settings.write_log('\t\tAllocating GFAS coordinates into the Grid cells. It may take a few minutes.', + level=3) + + coordinates = gpd.sjoin(coordinates, grid, how='inner', op='within') + settings.write_log('\t\t\tDone!', level=3) + coordinates.rename(columns={'FID_left': 'FID'}, inplace=True) + + coordinates = coordinates[['FID', 'src_area', 'Cell_ID', 'dst_area']] + coordinates.to_csv(coordinates_full) + else: + coordinates = pd.read_csv(coordinates_full) - cell_area = pd.DataFrame(temp_coords.variables['cell_area'][:].flatten(), columns=['dst_area']) - temp_coords.close() - cell_area['Cell_ID'] = cell_area.index + # for proc in range(settings.size): + # if proc > 0: + # settings.comm.send(coordinates[coordinates['Cell_ID'].isin(self.cell_id_by_proc[proc])], + # dest=proc) + # coordinates = coordinates[coordinates['Cell_ID'].isin(self.cell_id_by_proc[0])] - coordinates = pd.merge(coordinates, cell_area, on='Cell_ID') - # print(coordinates) - # exit() + else: + settings.write_log('\t\tWaiting to GFAS coordinates shapefile (rank 0). It may take a few minutes.', + level=3) + # coordinates = settings.comm.recv(source=0) + coordinates = None + coordinates = settings.comm.bcast(coordinates, root=0) + settings.write_log('\t\tGFAS coordinates received.', level=3) + + coordinates = coordinates[coordinates['Cell_ID'].isin(self.cell_id_by_proc[settings.rank])] + # # coordinates = coordinates[['FID', 'Cell_ID']] + # temp_coords = Dataset(os.path.join(self.grid.temporal_path, 'temporal_coords.nc'), mode='r') + # + # cell_area = pd.DataFrame(temp_coords.variables['cell_area'][:].flatten(), columns=['dst_area']) + # temp_coords.close() + # cell_area['Cell_ID'] = cell_area.index + # + # coordinates = pd.merge(coordinates, cell_area, on='Cell_ID') + sys.stdout.flush() coordinates.to_csv(coordinates_path) else: coordinates = pd.read_csv(coordinates_path) @@ -325,7 +346,6 @@ class PointGfasHourlyEmissionInventory(EmissionInventory): # One NetCDF for time step (hour) for tstep, date in enumerate(self.date_array): - # print(date, self.get_input_path(date=date)) shapefile_list_hour = [] netcdf = Dataset(self.get_input_path(date=date), mode='r') for pollutant in self.input_pollutants: @@ -359,29 +379,17 @@ class PointGfasHourlyEmissionInventory(EmissionInventory): shapefile = balance_dataframe(settings.comm, shapefile) shapefile.fillna(0.0, inplace=True) - # print(timeit.default_timer() - st_time) - # shapefile = shapefile.reset_index().set_index(['FID', 'tstep']) - self.emissions = shapefile return True def distribute(self, emissions): - emissions_list = [] - # print('distributing') - for proc in range(settings.size): - partial_emis = emissions[emissions['FID'].isin(sorted(np.unique(self.fid_distribution[proc])))].copy() - if settings.rank < proc: - settings.comm.send(partial_emis, dest=proc) - recv_partial_emis = settings.comm.recv(source=proc) - elif settings.rank > proc: - recv_partial_emis = settings.comm.recv(source=proc) - settings.comm.send(partial_emis, dest=proc) - else: - recv_partial_emis = partial_emis - emissions_list.append(recv_partial_emis) - - emissions = pd.concat(emissions_list) + settings.write_log("\t\tCalculating distribution.", level=3) + total_emis = settings.comm.gather(emissions, root=0) + if settings.rank == 0: + total_emis = pd.concat(total_emis) + total_emis = settings.comm.bcast(total_emis, root=0) + emissions = total_emis[total_emis['FID'].isin(sorted(np.unique(self.fid_distribution[settings.rank])))] emissions = pd.merge(emissions, self.coordinates.reset_index(), on='FID') @@ -428,14 +436,13 @@ class PointGfasHourlyEmissionInventory(EmissionInventory): warnings.warn('WARNING: One or more fires have an altitude of fire emission injection higher than the top' + ' layer of the model defined in the {0} file'.format(vertical_description_path)) - # print(self.emissions.loc[~self.emissions['altitude'].isna()]) del self.emissions['altitude'] self.emissions = self.emissions.groupby(['FID', 'tstep', 'layer']).sum() self.emissions.reset_index(inplace=True) self.emissions = self.vertical.distribute_vertically(self.emissions, self.input_pollutants) - + settings.write_log("\t\t\tVertical allocation done!", level=3) settings.write_time('PointGfasHourlyEmissionInventory', 'calculate_altitudes', timeit.default_timer() - st_time, level=2) return True diff --git a/hermesv3_gr/modules/grids/grid.py b/hermesv3_gr/modules/grids/grid.py index a4784dd..c43d290 100755 --- a/hermesv3_gr/modules/grids/grid.py +++ b/hermesv3_gr/modules/grids/grid.py @@ -21,6 +21,7 @@ import os import sys import timeit +import time import numpy as np import ESMF import hermesv3_gr.config.settings as settings @@ -352,6 +353,104 @@ class Grid(object): import pandas as pd from shapely.geometry import Polygon + st_time = timeit.default_timer() + settings.write_log('\t\tGetting grid shapefile', level=3) + + if full_grid: + self.shapefile_path = os.path.join(self.temporal_path, 'shapefile') + else: + self.shapefile_path = os.path.join(self.temporal_path, 'shapefiles_n{0}'.format(settings.size)) + + if not os.path.exists(self.shapefile_path): + if settings.rank == 0: + os.makedirs(self.shapefile_path) + else: + time.sleep(15) + if full_grid: + self.shapefile_path = os.path.join(self.shapefile_path, 'grid_shapefile.shp') + else: + self.shapefile_path = os.path.join(self.shapefile_path, 'grid_shapefile_{0}.shp'.format(settings.rank)) + + done = self.is_shapefile() + # print('Rank {0}: {1} {2}'.format(self.comm.Get_rank(), done, self.shapefile_path)) + sys.stdout.flush() + if not done: + settings.write_log('\t\t\tGrid shapefile not done. Lets try to create it.', level=3) + # Create Shapefile + + y = self.boundary_latitudes + x = self.boundary_longitudes + + if self.grid_type in ['global', 'regular']: + x = x.reshape((x.shape[1], x.shape[2])) + y = y.reshape((y.shape[1], y.shape[2])) + + aux_shape = (y.shape[0], x.shape[0], 4) + x_aux = np.empty(aux_shape) + x_aux[:, :, 0] = x[np.newaxis, :, 0] + x_aux[:, :, 1] = x[np.newaxis, :, 1] + x_aux[:, :, 2] = x[np.newaxis, :, 1] + x_aux[:, :, 3] = x[np.newaxis, :, 0] + + x = x_aux + del x_aux + + y_aux = np.empty(aux_shape) + y_aux[:, :, 0] = y[:, np.newaxis, 0] + y_aux[:, :, 1] = y[:, np.newaxis, 0] + y_aux[:, :, 2] = y[:, np.newaxis, 1] + y_aux[:, :, 3] = y[:, np.newaxis, 1] + + y = y_aux + del y_aux + + if not full_grid: + y = y[self.x_lower_bound:self.x_upper_bound, self.y_lower_bound:self.y_upper_bound, :] + x = x[self.x_lower_bound:self.x_upper_bound, self.y_lower_bound:self.y_upper_bound, :] + + aux_b_lats = y.reshape((y.shape[0] * y.shape[1], y.shape[2])) + aux_b_lons = x.reshape((x.shape[0] * x.shape[1], x.shape[2])) + + gdf = gpd.GeoDataFrame(index=range(aux_b_lons.shape[0]), crs={'init': 'epsg:4326'}) + + gdf['geometry'] = None + # Create one dataframe with 8 columns, 4 points with two coordinates each one + for i in range(aux_b_lons.shape[0]): + + gdf.loc[i, 'geometry'] = Polygon([(aux_b_lons[i, 0], aux_b_lats[i, 0]), + (aux_b_lons[i, 1], aux_b_lats[i, 1]), + (aux_b_lons[i, 2], aux_b_lats[i, 2]), + (aux_b_lons[i, 3], aux_b_lats[i, 3]), + (aux_b_lons[i, 0], aux_b_lats[i, 0])]) + if i % 1000 == 0: + settings.write_log('\t\t\t\t{0:.2f}%'.format((i+1)*100/aux_b_lons.shape[0]), level=3) + + # Calculating Cell ID + index = np.array(range(self.full_shape[2] * self.full_shape[3])) + index = index.reshape((self.full_shape[2], self.full_shape[3])) + if not full_grid: + index = index[self.x_lower_bound:self.x_upper_bound, self.y_lower_bound:self.y_upper_bound] + gdf['Cell_ID'] = index.flatten() + + gdf = gdf.to_crs(self.crs) + + gdf['FID'] = gdf.index + settings.write_log('\t\t\t\t100.00%', level=3) + gdf.to_file(self.shapefile_path) + else: + settings.write_log('\t\t\tGrid shapefile already done. Lets try to read it.', level=3) + gdf = gpd.read_file(self.shapefile_path) + # gdf.set_index('FID', inplace=True) + + settings.write_time('Grid', 'to_shapefile', timeit.default_timer() - st_time, level=1) + + return gdf + + def to_shapefile_old(self, full_grid=True): + import geopandas as gpd + import pandas as pd + from shapely.geometry import Polygon + st_time = timeit.default_timer() # settings.write_log('\t\tGetting grid shapefile', level=3) -- GitLab