Skip to content

Commit 3d22c58

Browse files
authored
Add files via upload
1 parent 5fbd7ac commit 3d22c58

6 files changed

+1076
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Created on Sat Oct 29 13:57:10 2022
4+
5+
@author: leabr
6+
"""
7+
8+
def BiomassExtraction (tech_period = '2', CPA_DW = 12.03):
9+
10+
biomass_balance_dict_sc1 = {} # store details of the baseline scenario
11+
biomass_balance_dict = {} # store details of the scenario modelled
12+
13+
if tech_period == '1':
14+
## DATA COLLECTED
15+
CPA_sc1 = 201.02 # amount of CPA received thawed [kg]
16+
DM_CPA_sc1 = 6.43 # dry matter content of the CPA [%]
17+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
18+
biomass_balance_dict_sc1['CPA'] = {'wet_mass': CPA_sc1,
19+
'DM_content': DM_CPA_sc1,
20+
'dry_mass': CPA_DW_sc1}
21+
sample_amount_sc1 = 0.2 # amount of one sample was set to 200g [kg]
22+
DM_sample0_sc1 = 6.43 # dry matter content of the sample0 [% DW]
23+
DM_sample1_sc1 = 8.38 # dry matter content of the sample1 [% DW]
24+
DM_sample2_sc1 = 8.71 # dry matter content of the sample2 [% DW]
25+
DM_sample3_sc1 = 8.81 # dry matter content of the sample3 [% DW]
26+
average_DM_sample = (DM_sample0_sc1 + DM_sample1_sc1 + DM_sample2_sc1 + DM_sample3_sc1) / 4
27+
sample0_DW_sc1 = sample_amount_sc1 * DM_sample0_sc1 /100 # amount of sample0 [kg DW-eq]
28+
sample1_DW_sc1 = sample_amount_sc1 * DM_sample1_sc1 /100 # amount of sample1 [kg DW-eq]
29+
sample2_DW_sc1 = sample_amount_sc1 * DM_sample2_sc1 /100 # amount of sample2 [kg DW-eq]
30+
sample3_DW_sc1 = sample_amount_sc1 * DM_sample3_sc1 /100 # amount of sample3 [kg DW-eq]
31+
total_sample_DW_sc1 = sample0_DW_sc1 + sample1_DW_sc1 + sample2_DW_sc1 + sample3_DW_sc1
32+
biomass_balance_dict_sc1['samples'] = {'wet_mass': sample_amount_sc1*5,
33+
'DM_content': average_DM_sample,
34+
'dry_mass': total_sample_DW_sc1}
35+
## CONSERVATION OF MASS OUTPUT = INPUT - SAMPLES TO CALCULATE AMOUNT OF HYDROLYSATE
36+
process_losses = 0 # assumption implied by the conservation of mass
37+
hydrolysate_DW_sc1 = CPA_DW_sc1 - total_sample_DW_sc1 - process_losses # amount of hydrolysate [kg DW-eq]
38+
DM_hydrolysate_sc1 = DM_sample3_sc1 # dry matter content of the hydrolysate is the same as the last sample [% DW]
39+
hydrolysate_sc1 = hydrolysate_DW_sc1 / (DM_hydrolysate_sc1/100)
40+
biomass_balance_dict_sc1['hydrolysate'] = {'wet_mass': hydrolysate_sc1,
41+
'DM_content': DM_hydrolysate_sc1,
42+
'dry_mass': hydrolysate_DW_sc1}
43+
## DATA MODELLED
44+
hydrolysate_DW = CPA_DW * hydrolysate_DW_sc1 / CPA_DW_sc1
45+
biomass_balance_dict['CPA'] = CPA_DW
46+
biomass_balance_dict['hydrolysate'] = hydrolysate_DW
47+
biomass_balance_dict['losses'] = CPA_DW - hydrolysate_DW # samples considered as biomass losses in the balance
48+
## CHECK THE MASS BALANCE
49+
if biomass_balance_dict['CPA'] != (biomass_balance_dict['hydrolysate'] +
50+
biomass_balance_dict['losses']):
51+
raise Exception('The activity S3.A1.Extraction is unbalanced!')
52+
53+
if tech_period == '2':
54+
## DATA COLLECTED
55+
CPA_sc1 = 192.24 # amount of CPA received thawed [kg]
56+
DM_CPA_sc1 = 6.26 # dry matter content of the CPA [%]
57+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
58+
biomass_balance_dict_sc1['CPA'] = {'wet_mass': CPA_sc1,
59+
'DM_content': DM_CPA_sc1,
60+
'dry_mass': CPA_DW_sc1}
61+
sample_amount_sc1 = 0.2 # amount of one sample was set to 200g [kg]
62+
DM_sample0_sc1 = 6.26 # dry matter content of the sample0 [% DW]
63+
DM_sample1_sc1 = 7.12 # dry matter content of the sample1 [% DW]
64+
DM_sample2_sc1 = 7.35 # dry matter content of the sample2 [% DW]
65+
DM_sample3_sc1 = 7.34 # dry matter content of the sample3 [% DW]
66+
DM_sample4_sc1 = 7.58 # dry matter content of the sample4 [% DW]
67+
average_DM_sample = (DM_sample0_sc1 + DM_sample1_sc1 + DM_sample2_sc1 + DM_sample3_sc1 + DM_sample4_sc1) / 5
68+
sample0_DW_sc1 = sample_amount_sc1 * DM_sample0_sc1 /100 # amount of sample0 [kg DW-eq]
69+
sample1_DW_sc1 = sample_amount_sc1 * DM_sample1_sc1 /100 # amount of sample1 [kg DW-eq]
70+
sample2_DW_sc1 = sample_amount_sc1 * DM_sample2_sc1 /100 # amount of sample2 [kg DW-eq]
71+
sample3_DW_sc1 = sample_amount_sc1 * DM_sample3_sc1 /100 # amount of sample3 [kg DW-eq]
72+
sample4_DW_sc1 = sample_amount_sc1 * DM_sample4_sc1 /100 # amount of sample4 [kg DW-eq]
73+
total_sample_DW_sc1 = sample0_DW_sc1 + sample1_DW_sc1 + sample2_DW_sc1 + sample3_DW_sc1 + sample4_DW_sc1
74+
biomass_balance_dict_sc1['samples'] = {'wet_mass': sample_amount_sc1*5,
75+
'DM_content': average_DM_sample,
76+
'dry_mass': total_sample_DW_sc1}
77+
## CONSERVATION OF MASS OUTPUT = INPUT - SAMPLES TO CALCULATE AMOUNT OF HYDROLYSATE
78+
process_losses = 0 # assumption implied by the conservation of mass
79+
hydrolysate_DW_sc1 = CPA_DW_sc1 - total_sample_DW_sc1 - process_losses # amount of hydrolysate [kg DW-eq]
80+
DM_hydrolysate_sc1 = DM_sample4_sc1 # dry matter content of the hydrolysate is the same as the last sample [% DW]
81+
hydrolysate_sc1 = hydrolysate_DW_sc1 / (DM_hydrolysate_sc1/100)
82+
biomass_balance_dict_sc1['hydrolysate'] = {'wet_mass': hydrolysate_sc1,
83+
'DM_content': DM_hydrolysate_sc1,
84+
'dry_mass': hydrolysate_DW_sc1}
85+
## DATA MODELLED
86+
hydrolysate_DW = CPA_DW * hydrolysate_DW_sc1 / CPA_DW_sc1
87+
biomass_balance_dict['CPA'] = CPA_DW
88+
biomass_balance_dict['hydrolysate'] = hydrolysate_DW
89+
biomass_balance_dict['losses'] = CPA_DW - hydrolysate_DW # samples considered as biomass losses in the balance
90+
## CHECK THE MASS BALANCE
91+
if biomass_balance_dict['CPA'] != (biomass_balance_dict['hydrolysate']
92+
+ biomass_balance_dict['losses']):
93+
raise Exception('The activity S3.A1.Extraction is unbalanced!')
94+
95+
return biomass_balance_dict_sc1, biomass_balance_dict
96+
97+
98+
def SulfuricAcidExtraction (tech_period = '2', CPA_DW = 12.03):
99+
100+
H2SO4_dict = {}
101+
102+
if tech_period == '1':
103+
## DATA COLLECTED
104+
CPA_sc1 = 201.02 # amount of CPA received thawed [kg]
105+
DM_CPA_sc1 = 6.43 # dry matter content of the CPA [%]
106+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
107+
concentration_H2SO4_sc1 = 96 # concentration of the solution used [%]
108+
initial_concentration_H2SO4 = 18 # solution at 18M used [M]
109+
diluted_concentration_H2SO4 = 6 # diluted solution at 6M [M]
110+
volume_H2SO4_sc1 = 1.57
111+
### CALCULATION OF THE VOLUME OF WATER NEEDED
112+
volume_water_sc1 = (initial_concentration_H2SO4 * volume_H2SO4_sc1 / diluted_concentration_H2SO4
113+
- volume_H2SO4_sc1)
114+
## ADAPTION TO ECOINVENT 3.6 DATASET
115+
density_H2SO4 = 1.83 # density of H2SO4 (96%) at 20°C [g/cm3] = [kg/L]
116+
ei36_conc_H2SO4 = 100 # pure substances in ecoinvent 3.6 [%]
117+
# calculation of the equivalent volume of H2SO4 at 100% (V2 = C1 x V1 / C2)
118+
volume_H2SO4_ei36_sc1 = concentration_H2SO4_sc1 * volume_H2SO4_sc1 / ei36_conc_H2SO4 # volume of H2SO2 [L]
119+
amount_H2SO4_ei36_sc1 = volume_H2SO4_ei36_sc1 * density_H2SO4 # amount of H2SO4 [kg]
120+
volume_water_ei36_sc1 = volume_water_sc1 # volume of water used for dilution [L]
121+
## DATA MODELLED
122+
amount_H2SO4_ei36 = CPA_DW * amount_H2SO4_ei36_sc1 / CPA_DW_sc1
123+
volume_H2SO4 = CPA_DW * volume_H2SO4_sc1 / CPA_DW_sc1
124+
volume_water = CPA_DW * volume_water_ei36_sc1 / CPA_DW_sc1
125+
H2SO4_dict['amount_H2SO4_100%'] = amount_H2SO4_ei36
126+
H2SO4_dict['volume_H2SO4_96%'] = volume_H2SO4
127+
H2SO4_dict['volume_ultrapure_water'] = abs(volume_H2SO4 - volume_H2SO4_ei36_sc1)
128+
H2SO4_dict['volume_water'] = volume_water
129+
130+
if tech_period == '2':
131+
## DATA COLLECTED
132+
CPA_sc1 = 192.24 # amount of CPA received thawed [kg]
133+
DM_CPA_sc1 = 6.26 # dry matter content of the CPA [%]
134+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
135+
concentration_H2SO4_sc1 = 96 # concentration of the solution used [%]
136+
initial_concentration_H2SO4 = 18 # solution at 18M used [M]
137+
diluted_concentration_H2SO4 = 6 # diluted solution at 6M [M]
138+
volume_H2SO4_sc1 = 1.5
139+
### CALCULATION OF THE VOLUME OF WATER NEEDED TO REACH THE 6M CONCENTRATION
140+
volume_water_sc1 = (initial_concentration_H2SO4 * volume_H2SO4_sc1 / diluted_concentration_H2SO4
141+
- volume_H2SO4_sc1)
142+
## ADAPTION TO ECOINVENT 3.6 DATASET
143+
density_H2SO4 = 1.83 # density of H2SO4 (96%) at 20°C [g/cm3] = [kg/L]
144+
ei36_conc_H2SO4 = 100 # pure substances in ecoinvent 3.6 [%]
145+
# calculation of the equivalent volume of H2SO4 at 100% (V2 = C1 x V1 / C2)
146+
volume_H2SO4_ei36_sc1 = concentration_H2SO4_sc1 * volume_H2SO4_sc1 / ei36_conc_H2SO4 # volume of H2SO2 [L]
147+
amount_H2SO4_ei36_sc1 = volume_H2SO4_ei36_sc1 * density_H2SO4 # amount of H2SO4 [kg]
148+
volume_water_ei36_sc1 = volume_water_sc1 # volume of water used for dilution [L]
149+
## DATA MODELLED
150+
amount_H2SO4_ei36 = CPA_DW * amount_H2SO4_ei36_sc1 / CPA_DW_sc1
151+
volume_H2SO4 = CPA_DW * volume_H2SO4_sc1 / CPA_DW_sc1
152+
volume_water = CPA_DW * volume_water_ei36_sc1 / CPA_DW_sc1
153+
H2SO4_dict['amount_H2SO4_100%'] = amount_H2SO4_ei36
154+
H2SO4_dict['volume_H2SO4_96%'] = volume_H2SO4
155+
H2SO4_dict['volume_ultrapure_water'] = abs(volume_H2SO4 - volume_H2SO4_ei36_sc1)
156+
H2SO4_dict['volume_water'] = volume_water
157+
158+
return H2SO4_dict
159+
160+
161+
def WaterExtraction (tech_period = '2', CPA_DW = 12.03):
162+
163+
if tech_period == '1':
164+
## DATA COLLECTED
165+
water_process_sc1 = 627.71 # total volume of water used in the process [L]
166+
CPA_sc1 = 201.02 # amount of CPA received thawed [kg]
167+
DM_CPA_sc1 = 6.43 # dry matter content of the CPA [%]
168+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
169+
water_CPA_sc1 = CPA_sc1 - CPA_DW_sc1
170+
## WATER BALANCE TO CALCULATE WATER LOSSES PER EVAPORATION
171+
H2SO4_dict = SulfuricAcidExtraction (tech_period, CPA_DW)
172+
water_H2SO4 = H2SO4_dict['volume_water'] # volume of water used to prepare the solution of H2SO4 [L]
173+
biomass_balance_dict_sc1, biomass_balance_dict = BiomassExtraction (tech_period, CPA_DW)
174+
water_samples = (biomass_balance_dict_sc1['samples']['wet_mass']
175+
- biomass_balance_dict_sc1['samples']['dry_mass'])
176+
water_hydrolysate_sc1 = (biomass_balance_dict_sc1['hydrolysate']['wet_mass']
177+
- biomass_balance_dict_sc1['hydrolysate']['dry_mass']) # volume of water in the hydrolysate [L]
178+
water_evaporation_sc1 = (water_CPA_sc1 + water_H2SO4) - (water_hydrolysate_sc1 + water_samples)
179+
## DATA MODELLED
180+
water_process = CPA_DW * water_process_sc1 / CPA_DW_sc1
181+
water_evaporation = CPA_DW * water_evaporation_sc1 / CPA_DW_sc1
182+
183+
if tech_period == '2':
184+
## DATA COLLECTED
185+
water_process_sc1 = 575.94 # total volume of water used in the process [L]
186+
CPA_sc1 = 192.24 # amount of CPA received thawed [kg]
187+
DM_CPA_sc1 = 6.26 # dry matter content of the CPA [%]
188+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
189+
water_CPA_sc1 = CPA_sc1 - CPA_DW_sc1
190+
## WATER BALANCE TO CALCULATE WATER LOSSES PER EVAPORATION
191+
H2SO4_dict = SulfuricAcidExtraction (tech_period, CPA_DW)
192+
water_H2SO4 = H2SO4_dict['volume_water'] # volume of water used to prepare the solution of H2SO4 [L]
193+
biomass_balance_dict_sc1, biomass_balance_dict = BiomassExtraction (tech_period, CPA_DW)
194+
water_samples = (biomass_balance_dict_sc1['samples']['wet_mass']
195+
- biomass_balance_dict_sc1['samples']['dry_mass'])
196+
water_hydrolysate_sc1 = (biomass_balance_dict_sc1['hydrolysate']['wet_mass']
197+
- biomass_balance_dict_sc1['hydrolysate']['dry_mass']) # volume of water in the hydrolysate [L]
198+
water_evaporation_sc1 = (water_CPA_sc1 + water_H2SO4) - (water_hydrolysate_sc1 + water_samples)
199+
## DATA MODELLED
200+
water_process = CPA_DW * water_process_sc1 / CPA_DW_sc1
201+
water_evaporation = CPA_DW * water_evaporation_sc1 / CPA_DW_sc1
202+
203+
return water_process, water_evaporation
204+
205+
206+
def ElectricityExtraction (tech_period = '2', CPA_DW = 12.03):
207+
208+
if tech_period == '1': # period set to 2019/2021 i.e. baseline scenario
209+
## DATA COLLECTED
210+
elec_sc1 = 197.26
211+
CPA_sc1 = 201.02 # amount of CPA received thawed [kg]
212+
DM_CPA_sc1 = 6.43 # dry matter content of the CPA [%]
213+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
214+
## DATA MODELLED
215+
elec = CPA_DW * elec_sc1 / CPA_DW_sc1
216+
217+
if tech_period == '2':
218+
## DATA COLLECTED
219+
elec_sc1 = 37.72 # amont of electricity directly measured [kWh]
220+
CPA_sc1 = 192.24 # amount of CPA received thawed [kg]
221+
DM_CPA_sc1 = 6.26 # dry matter content of the CPA [%]
222+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
223+
## DATA MODELLED
224+
elec = CPA_DW * elec_sc1 / CPA_DW_sc1
225+
226+
return elec
227+
228+
229+
def WastewaterExtraction (tech_period = '2', CPA_DW = 12.03):
230+
231+
if tech_period == '1': # period set to 2019/2021 i.e. baseline scenario
232+
## DATA COLLECTED
233+
wastewater_sc1 = -1 * 624.58 / 1000 # wastewater discarded to sewer system [m3]
234+
CPA_sc1 = 201.02 # amount of CPA received thawed [kg]
235+
DM_CPA_sc1 = 6.43 # dry matter content of the CPA [%]
236+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
237+
## DATA MODELLED
238+
wastewater = CPA_DW * wastewater_sc1 / CPA_DW_sc1
239+
240+
if tech_period == '2':
241+
## DATA COLLECTED
242+
wastewater_sc1 = -1 * 572.94 / 1000 # wastewater discarded to sewer system [m3]
243+
CPA_sc1 = 192.24 # amount of CPA received thawed [kg]
244+
DM_CPA_sc1 = 6.26 # dry matter content of the CPA [%]
245+
CPA_DW_sc1 = CPA_sc1 * DM_CPA_sc1 / 100 # amount of CPA treated [kg DW-eq]
246+
## DATA MODELLED
247+
wastewater = CPA_DW * wastewater_sc1 / CPA_DW_sc1
248+
249+
return wastewater
250+
251+
252+
def ExtractionDataDict (tech_period = '2', CPA_DW = 12.03):
253+
254+
data_dict = {}
255+
256+
biomass_balance_dict_sc1, biomass_balance_dict = BiomassExtraction(tech_period, CPA_DW)
257+
258+
## BIOMASS INPUT
259+
data_dict['CPA'] = {}
260+
data_dict['CPA']['amount'] = biomass_balance_dict['CPA']
261+
data_dict['CPA']['unit'] = 'kg DW-eq'
262+
data_dict['CPA']['type'] = 'fg_input'
263+
264+
## BIOMASS OUTPUTS
265+
data_dict['hydrolysate'] = {}
266+
data_dict['hydrolysate']['amount'] = biomass_balance_dict['hydrolysate']
267+
data_dict['hydrolysate']['unit'] = 'kg DW-eq'
268+
data_dict['hydrolysate']['type'] = 'ref_flow'
269+
data_dict['losses'] = {}
270+
data_dict['losses']['amount'] = biomass_balance_dict['losses']
271+
data_dict['losses']['unit'] = 'kg DW-eq'
272+
data_dict['losses']['type'] = 'losses'
273+
274+
## ELECTRICITY
275+
data_dict['electricity_FR'] = {}
276+
data_dict['electricity_FR']['amount'] = ElectricityExtraction (tech_period, CPA_DW)
277+
data_dict['electricity_FR']['unit'] = 'kWh'
278+
data_dict['electricity_FR']['type'] = 'tech_input'
279+
280+
## TAP WATER
281+
water_process, water_evaporation = WaterExtraction (tech_period, CPA_DW)
282+
data_dict['tap_water'] = {}
283+
data_dict['tap_water']['amount'] = water_process
284+
data_dict['tap_water']['unit'] = 'L'
285+
data_dict['tap_water']['type'] = 'tech_input'
286+
287+
## SULFURIC ACID
288+
H2SO4_dict = SulfuricAcidExtraction (tech_period, CPA_DW)
289+
data_dict['sulfuric_acid'] = {}
290+
data_dict['sulfuric_acid']['amount'] = H2SO4_dict['amount_H2SO4_100%']
291+
data_dict['sulfuric_acid']['unit'] = 'kg'
292+
data_dict['sulfuric_acid']['type'] = 'tech_input'
293+
294+
## ULTRAPURE WATER
295+
data_dict['ultrapure_water'] = {}
296+
data_dict['ultrapure_water']['amount'] = H2SO4_dict['volume_ultrapure_water']
297+
data_dict['ultrapure_water']['unit'] = 'L'
298+
data_dict['ultrapure_water']['type'] = 'tech_input'
299+
300+
## WASTEWATER
301+
data_dict['wastewater'] = {}
302+
data_dict['wastewater']['amount'] = WastewaterExtraction(tech_period, CPA_DW)
303+
data_dict['wastewater']['unit'] = 'm3'
304+
data_dict['wastewater']['type'] = 'tech_output'
305+
306+
## WATER VAPOR
307+
data_dict['water_vapor'] = {}
308+
data_dict['water_vapor']['amount'] = water_evaporation
309+
data_dict['water_vapor']['unit'] = 'L'
310+
data_dict['water_vapor']['type'] = 'emission'
311+
312+
return data_dict

0 commit comments

Comments
 (0)