Skip to content

Commit bb61627

Browse files
authored
Merge pull request #2 from SwolfPy-Project/Dev-New-Model
Dev new model
2 parents 7d91e55 + d9e78b0 commit bb61627

File tree

11 files changed

+278
-164
lines changed

11 files changed

+278
-164
lines changed

swolfpy_processmodels/AD.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ def calc(self):
3838

3939
### Primary Pre_screen
4040
self.S1_unders, self.S1_overs = screen(self.Input,
41-
self.process_data['Percent screened out in primary pre-screening (not sent to reactor)'].values / 100,
41+
self.process_data['Pre Screen 1'].values / 100,
4242
self.Material_Properties,
4343
self.LCI,
4444
self.flow_init)
4545

4646
### Secondary Pre_screen
4747
self.S2_to_curing, self.S2_residuls = screen(self.S1_overs,
48-
self.process_data['Percent screened out in secondary pre-screening (residual not sent to composting)'].values / 100,
48+
self.process_data['Pre Screen 2'].values / 100,
4949
self.Material_Properties,
5050
self.LCI,
5151
self.flow_init)
@@ -158,12 +158,25 @@ def report(self):
158158
'Nitrate (ground water)',
159159
'Nitrate (surface water)',
160160
('Technosphere', 'market_for_excavation_skid_steer_loader'),
161-
('Technosphere', 'Electricity_production'),
162161
'Carbon dioxide, fossil',
163162
'Carbon dioxide, non-fossil']:
164163
if i not in self.lci_report.columns:
165164
self.lci_report[i] = 0
166165

166+
net_elec = ((self.lci_report[('Technosphere', 'Electricity_production')].values
167+
- self.lci_report[('Technosphere', 'Electricity_consumption')].values)
168+
* self.Assumed_Comp.values).sum()
169+
if net_elec >= 0:
170+
self.lci_report[('Technosphere', 'Electricity_production')] = (
171+
self.lci_report[('Technosphere', 'Electricity_production')].values
172+
- self.lci_report[('Technosphere', 'Electricity_consumption')].values)
173+
self.lci_report[('Technosphere', 'Electricity_consumption')] = 0
174+
else:
175+
self.lci_report[('Technosphere', 'Electricity_consumption')] = (
176+
self.lci_report[('Technosphere', 'Electricity_consumption')].values
177+
- self.lci_report[('Technosphere', 'Electricity_production')].values)
178+
self.lci_report[('Technosphere', 'Electricity_production')] = 0
179+
167180
self.lci_report['report_Methane, non-fossil'] = (self.lci_report['Methane, non-fossil'].values
168181
+ self.lci_report['Methane, non-fossil (unburned)'].values
169182
+ self.lci_report['Fugitive (Leaked) Methane'].values)

swolfpy_processmodels/AD_subprocess.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def Reactor(input_flow, CommonData, process_data, input_data, Material_Propertie
6666
# Methane production
6767
CH4_prod_vol = (input_flow.data['sol_cont'].values / 1000
6868
* Material_Properties['Methane Yield'].values
69-
* process_data['Percent of L0 reached'].values / 100)
69+
* process_data['L0 reached'].values / 100)
7070

7171
CH4_prod_mass_asC = (CH4_prod_vol
7272
* CommonData.STP['m3CH4_to_kg']['amount']
@@ -449,9 +449,9 @@ def curing(input_flow, input_to_reactor, CommonData, process_data, input_data, a
449449

450450
# Carbon balance
451451
C_Remain = np.where(input_flow.data['C_cont'].values / input_to_reactor.data['C_cont'].apply(lambda x: 1 if x <= 0 else x ).values
452-
<= (1 - process_data['Percent Carbon loss during curing'].values / 100),
452+
<= (1 - process_data['C_loss'].values / 100),
453453
input_flow.data['C_cont'].values,
454-
input_to_reactor.data['C_cont'].values * (1 - process_data['Percent Carbon loss during curing'].values / 100))
454+
input_to_reactor.data['C_cont'].values * (1 - process_data['C_loss'].values / 100))
455455
C_loss = input_flow.data['C_cont'].values - C_Remain
456456

457457
C_loss_as_CH4 = input_data.Curing_Bio['ad_pCasCH4']['amount'] * C_loss
@@ -463,7 +463,7 @@ def curing(input_flow, input_to_reactor, CommonData, process_data, input_data, a
463463
flow=C_loss_as_CO2 * CommonData.MW['CO2']['amount'] / CommonData.MW['C']['amount'])
464464

465465
# Nitrogen balance
466-
N_loss = input_flow.data['N_cont'].values * process_data['Percent N emitted during composting'].values
466+
N_loss = input_flow.data['N_cont'].values * process_data['N_loss'].values
467467
N_loss_as_N2O = N_loss * input_data.Curing_Bio['ad_pNasN2O']['amount']
468468
N_loss_as_NH3 = N_loss * input_data.Curing_Bio['ad_pNasNH3']['amount']
469469

@@ -474,7 +474,7 @@ def curing(input_flow, input_to_reactor, CommonData, process_data, input_data, a
474474

475475
# VOC emission
476476
VS_loss = input_data.Curing_Bio['VSlossPerCloss']['amount'] * C_loss / CommonData.MW['C']['amount']
477-
VOC_emitted = VS_loss * process_data['VOC emissions during curing'].values / 1000000
477+
VOC_emitted = VS_loss * process_data['VOC to VS_loss'].values / 1000000
478478
lci.add(name='NMVOC, non-methane volatile organic compounds, unspecified origin',
479479
flow=VOC_emitted)
480480

swolfpy_processmodels/Common_subprocess.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,10 @@ def compost_use(input_flow, common_data, process_data, material_properties,
228228

229229
C_released = (input_flow.data['C_cont'].values - C_storage) * (1 - common_data.ADC['frac_CH4']['amount'] / 100)
230230
C_CH4 = (input_flow.data['C_cont'].values - C_storage) * (common_data.ADC['frac_CH4']['amount'] / 100)
231-
C_CH4_Oxidized = C_CH4 * process_data['Percent of Generated Methane oxidized'].values / 100
232-
C_CH4_Flared = C_CH4 * process_data['Percent of Generated Methane Flared'].values / 100
233-
C_CH4_Emitted = C_CH4 * process_data['Percent of Generated Methane Emitted'].values / 100
234-
C_CH4_EnergyRec = C_CH4 * process_data['Percent of Generated Methane used for Energy'].values / 100
231+
C_CH4_Oxidized = C_CH4 * process_data['Methane Oxidized'].values / 100
232+
C_CH4_Flared = C_CH4 * process_data['Methane Flared'].values / 100
233+
C_CH4_Emitted = C_CH4 * process_data['Methane Emitted'].values / 100
234+
C_CH4_EnergyRec = C_CH4 * process_data['Methane to Energy'].values / 100
235235
C_CH4_EnergyRec_mass = C_CH4_EnergyRec * (common_data.MW['CH4']['amount'] / common_data.MW['C']['amount'])
236236
CH4_LHV = common_data.LHV['CH4']['amount'] / common_data.STP['m3CH4_to_kg']['amount'] # MJ/kgCH4
237237
C_CH4_Electricity = C_CH4_EnergyRec_mass * CH4_LHV * (common_data.ADC['Elec_eff']['amount'] / 100) / 3.6 #kWhElec

swolfpy_processmodels/Comp.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ def calc(self):
3232

3333
### Primary Pre_screen
3434
self.S1_unders, self.S1_overs = screen(input_flow=self.input_flow,
35-
sep_eff=self.process_data['Percent screened out in primary pre-screening'].values/100,
35+
sep_eff=self.process_data['Pre Screen 1'].values/100,
3636
Op_param=self.InputData.Screen,
3737
lci=self.LCI,
3838
flow_init=self.flow_init)
3939

4040
### Secondary Pre_screen
4141
self.S2_to_shredding, self.S2_residuls = screen(input_flow=self.S1_overs,
42-
sep_eff=self.process_data['Percent screened out in secondary pre-screening'].values/100,
42+
sep_eff=self.process_data['Pre Screen 2'].values/100,
4343
Op_param=self.InputData.Screen,
4444
lci=self.LCI,
4545
flow_init=self.flow_init)
@@ -84,14 +84,14 @@ def calc(self):
8484

8585
### Post screen
8686
self.substrate_to_vac, self.ps_res = post_screen(self.substrate_to_ps,
87-
self.process_data['Percent post screened out'].values/100,
87+
self.process_data['Post Screen'].values/100,
8888
self.InputData.Screen,
8989
self.LCI,
9090
self.flow_init)
9191

9292
### Vacuum
9393
self.substrate_to_cu, self.vac_res = vacuum(self.substrate_to_vac,
94-
self.process_data['Percent vacuumed out (vacprop)'].values/100,
94+
self.process_data['Vacuum'].values/100,
9595
self.InputData.Vaccum_sys,
9696
self.LCI,
9797
self.flow_init)
@@ -197,6 +197,21 @@ def report(self):
197197
for y in self.Index:
198198
report[x][y] = {}
199199

200+
net_elec = ((lci_report[('Technosphere', 'Electricity_production')].values
201+
- lci_report[('Technosphere', 'Electricity_consumption')].values)
202+
* self.Assumed_Comp.values).sum()
203+
204+
if net_elec >= 0:
205+
lci_report[('Technosphere', 'Electricity_production')] = (
206+
lci_report[('Technosphere', 'Electricity_production')].values
207+
- lci_report[('Technosphere', 'Electricity_consumption')].values)
208+
lci_report[('Technosphere', 'Electricity_consumption')] = 0
209+
else:
210+
lci_report[('Technosphere', 'Electricity_consumption')] = (
211+
lci_report[('Technosphere', 'Electricity_consumption')].values
212+
- lci_report[('Technosphere', 'Electricity_production')].values)
213+
lci_report[('Technosphere', 'Electricity_production')] = 0
214+
200215
for y in self.Index:
201216
### Output Waste Database
202217
report["Waste"][y]['Other_Residual'] = lci_report['Other_Residual'][y]

swolfpy_processmodels/Comp_subprocess.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,10 @@ def add_water(input_flow, water_flow, material_properties, process_data, flow_in
7474
### Active Composting
7575
def ac_comp(input_flow, common_data, process_data, input_data, assumed_comp, lci, flow_init):
7676
# Degradation
77-
C_loss = input_flow.data['C_input'].values * process_data['Percent C-loss during composting'].values/100 * input_data.Deg_Param['acDegProp']['amount']/100
78-
N_loss = input_flow.data['N_input'].values * process_data['Percent N-loss during composting'].values/100 * input_data.Deg_Param['acDegProp']['amount']/100
79-
VS_loss = C_loss * process_data['Mass VS loss per mass C-loss'].values
80-
VOCs_loss = VS_loss * process_data['VOC emissions'].values / 1000000
77+
C_loss = input_flow.data['C_input'].values * process_data['C_loss'].values/100 * input_data.Deg_Param['acDegProp']['amount']/100
78+
N_loss = input_flow.data['N_input'].values * process_data['N_loss'].values/100 * input_data.Deg_Param['acDegProp']['amount']/100
79+
VS_loss = C_loss * process_data[' VS_loss to C_loss'].values
80+
VOCs_loss = VS_loss * process_data['VOC to VS_loss'].values / 1000000
8181

8282
#Product
8383
product = deepcopy(flow_init)
@@ -194,10 +194,10 @@ def vacuum(input_flow, sep_eff, Op_param, lci, flow_init):
194194
### Curing
195195
def curing(input_flow, common_data, process_data, input_data, assumed_comp, lci, flow_init):
196196
#Degradation
197-
C_loss = input_flow.data['C_cont'].values * process_data['Percent C-loss during composting'].values/100 * (100-input_data.Deg_Param['acDegProp']['amount'])/100
198-
N_loss = input_flow.data['N_cont'].values * process_data['Percent N-loss during composting'].values/100 * (100-input_data.Deg_Param['acDegProp']['amount'])/100
199-
VS_loss = C_loss * process_data['Mass VS loss per mass C-loss'].values
200-
VOCs_loss = VS_loss * process_data['VOC emissions'].values / 1000000
197+
C_loss = input_flow.data['C_cont'].values * process_data['C_loss'].values/100 * (100-input_data.Deg_Param['acDegProp']['amount'])/100
198+
N_loss = input_flow.data['N_cont'].values * process_data['N_loss'].values/100 * (100-input_data.Deg_Param['acDegProp']['amount'])/100
199+
VS_loss = C_loss * process_data[' VS_loss to C_loss'].values
200+
VOCs_loss = VS_loss * process_data['VOC to VS_loss'].values / 1000000
201201

202202
#Product
203203
product = deepcopy(flow_init)

swolfpy_processmodels/HC_subprocess.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ def active_comp(input_flow, common_data, input_data ,process_data, material_prop
2828

2929
# Degradation
3030
C_loss = (input_flow.data['C_cont'].values
31-
* process_data['Percent C-loss during composting'].values / 100
31+
* process_data['C_loss'].values / 100
3232
* input_data.Degradation_param['acDegProp']['amount'] / 100)
3333

3434
N_loss = (input_flow.data['N_cont'].values
35-
* process_data['Percent N-loss during composting'].values / 100
35+
* process_data['N_loss'].values / 100
3636
* input_data.Degradation_param['acDegProp']['amount'] / 100)
3737

38-
VS_loss = C_loss * process_data['Mass VS loss per mass C-loss'].values
38+
VS_loss = C_loss * process_data['VS_loss to C_loss'].values
3939

40-
VOCs_loss = VS_loss * process_data['VOC emissions'].values / 10**6
40+
VOCs_loss = VS_loss * process_data['VOC to VS_loss'].values / 10**6
4141

4242
# Product: Final compost
4343
product = Flow(material_properties)

swolfpy_processmodels/LF.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,12 +386,25 @@ def report(self):
386386
self.LF["Waste"] = Waste
387387
self.LF["Technosphere"] = Technosphere
388388

389-
for x in [Waste,Technosphere]:
389+
for x in [Waste, Technosphere]:
390390
for y in self.Index:
391391
x[y]={}
392392

393393
### Output Biosphere Database
394394
LCI_DF = self.LCI.report()
395+
396+
# Check the electricity production
397+
if LCI_DF['Electricity_production'].values.sum() > 0:
398+
LCI_DF['Electricity_production'] = (
399+
LCI_DF['Electricity_production']
400+
- LCI_DF['Electricity_consumption'])
401+
LCI_DF['Electricity_consumption'] = 0
402+
else:
403+
LCI_DF['Electricity_consumption'] = (
404+
LCI_DF['Electricity_consumption']
405+
- LCI_DF['Electricity_production'])
406+
LCI_DF['Electricity_production'] = 0
407+
395408
for y in self.Index:
396409
# Technosphere
397410
for x in self._key4:

swolfpy_processmodels/MRF_subprocess.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -559,15 +559,12 @@ def HDPE_type(Input, InputData):
559559
HDPE_T = np.zeros(Input.shape[0])
560560

561561
# HDPE - Pigmented Containers index 19
562-
if InputData.Rec_Sorted_material['HDPE_Pigmented']['amount'] == 1:
563-
HDPE_P[19] = Input[19]
562+
HDPE_P[19] = Input[19]
564563

565564
#HDPE - Translucent Containers index 18
566-
if InputData.Rec_Sorted_material['HDPE_Translucent']['amount'] == 1:
567-
HDPE_T[18] = Input[18]
565+
HDPE_T[18] = Input[18]
568566

569-
HDPE_Unsorted = Input - (HDPE_P + HDPE_T)
570-
return HDPE_Unsorted, HDPE_P, HDPE_T
567+
return HDPE_P, HDPE_T
571568

572569
### Magnet
573570
def Magnet_RDF(Input, sep_eff, InputData, LCI):

swolfpy_processmodels/ProcessModelsMetaData.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
ProcessModelsMetaData['LF']['Name'] = 'Landfill'
2525
ProcessModelsMetaData['LF']['Process_Type'] = 'Treatment'
2626
ProcessModelsMetaData['LF']['File'] = 'LF.py'
27-
ProcessModelsMetaData['LF']['InputType'] = ['RWC', 'MRDO', 'Other_Residual', 'Bottom_Ash', 'Fly_Ash']
27+
ProcessModelsMetaData['LF']['InputType'] = ['RWC', 'MRDO', 'Other_Residual', 'Bottom_Ash',
28+
'Fly_Ash', 'Unreacted_Ash']
2829

2930
ProcessModelsMetaData['SS_MRF'] = {}
3031
ProcessModelsMetaData['SS_MRF']['Name'] = 'Single Stream Material Recovery Facility'

swolfpy_processmodels/SS_MRF.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,8 @@ def calc(self):
111111
self._MS4_HDPE_rmnd,self._MS4_HDPE_rmvd = MS4_HDPE(self._OHDPE_rmvd,self.process_data['Manual Sort 4-HDPE (Negative)'].values,self.InputData,self.LCI)
112112
self.LCI_Waste.add('Other_Residual',self._MS4_HDPE_rmvd)
113113

114-
### HDPE sold by type?
115-
self._HDPE_Unsorted,self._HDPE_P,self._HDPE_T = HDPE_type(self._MS4_HDPE_rmnd,self.InputData)
116-
self.LCI_Waste.add('HDPE_Unsorted',self._HDPE_Unsorted)
114+
### HDPE sold by type
115+
self._HDPE_P, self._HDPE_T = HDPE_type(self._MS4_HDPE_rmnd, self.InputData)
117116
self.LCI_Waste.add('HDPE_P',self._HDPE_P)
118117
self.LCI_Waste.add('HDPE_T',self._HDPE_T)
119118

0 commit comments

Comments
 (0)