def test_infinite_Weibull(): r1 = PV_ICE.Simulation() r1.createScenario('standard', file=MODULEBASELINE) r1.scenario['standard'].addMaterial('glass', file=MATERIALBASELINE) r1.scenario['standard'].data['mod_lifetime'] = 50.0 failyear = r1.scenario['standard'].data['mod_lifetime'][0] r1.calculateMassFlow() data = r1.scenario['standard'].data EOLrow = data.loc[0, data.columns.str.startswith("EOL_on_Year")] assert round(r1.scenario['standard'].data['Area'][0],0) ==round(EOLrow.sum(),0) EOLrow = data.loc[10, data.columns.str.startswith("EOL_on_Year")] assert round(r1.scenario['standard'].data['Area'][10],0) ==round(EOLrow.sum(),0) # If no recycling as input material, then virgin material is constant for this scenario r1.scenario['standard'].material['glass'].materialdata['mat_EOL_RecycledHQ_Reused4MFG'] = 0.0 r1.calculateMassFlow() assert r1.scenario['standard'].material['glass'].materialdata['mat_Virgin_Stock'][0] == r1.scenario['standard'].data['Area'][10]*mat_massperm2 # If nothing is collected, everything goes to landfill. r1.scenario['standard'].data['mod_EOL_collection_eff'] = 0.0 r1.calculateMassFlow() # Comparing to a year in the future where steady state has been achieved. assert (round(r1.scenario['standard'].data['Area'][0]*mat_massperm2,0) == round(r1.scenario['standard'].material['glass'].materialdata['mat_Total_Landfilled'][30],0)) assert (round(r1.scenario['standard'].material['glass'].materialdata['mat_Total_Landfilled'][0],0) == round(r1.scenario['standard'].material['glass'].materialdata['mat_Total_EOL_Landfilled'][0],0))
def test_project_lifetime(): r1 = PV_ICE.Simulation() r1.createScenario('standard', file=MODULEBASELINE) r1.scenario['standard'].addMaterial('glass', file=MATERIALBASELINE) failyear = r1.scenario['standard'].data['mod_lifetime'][0] r1.calculateMassFlow() # Assert all modules go to trash at end of lifetime assert r1.scenario['standard'].data['EOL_on_Year_'+str(int(failyear)+1)].iloc[0] == 0 # Assert that since the manufacturing process is perfect, and there is no # trash and recycled input on this year, euqlas 0 mat_massperm2 = r1.scenario['standard'].material['glass'].materialdata['mat_massperm2'].iloc[0] assert (r1.scenario['standard'].data['Area'][0]*mat_massperm2- r1.scenario['standard'].material['glass'].materialdata['mat_Virgin_Stock'][0]) == 0.0
# In[2]: import PV_ICE # In[3]: import matplotlib.pyplot as plt import pandas as pd plt.rcParams.update({'font.size': 22}) plt.rcParams['figure.figsize'] = (12, 5) # In[4]: r1 = PV_ICE.Simulation(name='Simulation1', path=testfolder) r1.createScenario(name='50_Year_Module', file=r'..\baselines\baseline_modules_US.csv') r1.scenario['50_Year_Module'].addMaterial( 'glass', file=r'..\baselines\baseline_material_glass.csv') r1.scenario['50_Year_Module'].addMaterial( 'silicon', file=r'..\baselines\baseline_material_silicon.csv') r1.createScenario(name='15_Year_Module', file=r'..\baselines\baseline_modules_US.csv') r1.scenario['15_Year_Module'].addMaterial( 'glass', file=r'..\baselines\baseline_material_glass.csv') r1.scenario['15_Year_Module'].addMaterial( 'silicon', file=r'..\baselines\baseline_material_silicon.csv') r1.createScenario(name='30_Year_Module',
import PV_ICE # In[3]: import matplotlib.pyplot as plt import pandas as pd plt.rcParams.update({'font.size': 22}) plt.rcParams['figure.figsize'] = (12, 5) # ## PV ICE # In[4]: r1 = PV_ICE.Simulation(name='Simulation1', path=testfolder) r1.createScenario(name='PV_ICE_base', file=r'..\baselines\baseline_modules_World.csv') r1.scenario['PV_ICE_base'].addMaterial( 'glass', file=r'..\baselines\baseline_material_glass.csv') r1.createScenario(name='PV_ICE_idealMFG', file=r'..\baselines\baseline_modules_World.csv') r1.scenario['PV_ICE_idealMFG'].addMaterial( 'glass', file=r'..\baselines\baseline_material_glass.csv') r1.scenario['PV_ICE_idealMFG'].data['mod_MFG_eff'] = 100.0 r1.scenario['PV_ICE_idealMFG'].material['glass'].materialdata[ 'mat_MFG_eff'] = 100.0 r1.createScenario( name='Irena_2019',
# # PV ICE handles failures through a probabilistic distribution, so far in specific the Weibull. The Weibull equation is defined by an Alfa and a Beta parameters. These parameters can be found on literature, or they can be calculated if the reliability is known. Altough other values can be set by changing the probabilities, we use by default: # - T50: number of years when 50 % of the year will be off and # - T90 are used: # # Below we show a couple ways of passing the parameters, plot a comparison between different literature values, and highlight the significance of T50 and T90. # # In[1]: import PV_ICE import numpy as np import matplotlib.pyplot as plt import pandas as pd r1 = PV_ICE.Simulation(name='Simulation1') baselinefile = r'C:\Users\sayala\Documents\GitHub\CircularEconomy-MassFlowCalculator\PV_ICE\baselines\baseline_modules_US.csv' materialfile = r'C:\Users\sayala\Documents\GitHub\CircularEconomy-MassFlowCalculator\PV_ICE\baselines\baseline_material_glass.csv' r1.createScenario(name='standard', file=baselinefile) r1.scenario['standard'].addMaterial('glass', file=materialfile) # ## A. Passing Alpha and Beta values # In[2]: weibullInputParams = {'alpha': 3.4, 'beta': 4.5} r1.calculateMassFlow(weibullInputParams=weibullInputParams) print(r1.scenario['standard'].data.WeibullParams.head()) # ## B. Internally calculated Weibull with t50 and t90
import PV_ICE import matplotlib.pyplot as plt import pandas as pd # In[72]: plt.rcParams.update({'font.size': 22}) plt.rcParams['figure.figsize'] = (12, 5) # In[73]: r1 = PV_ICE.Simulation(name='Simulation1', path=testfolder) r1.createScenario(name='baseline', file=MODULEBASELINE) r1.scenario['baseline'].addMaterial(MATERIAL, file=MATERIALBASELINE) # # Goal; Compare Virgin Material Extraction , and Waste. # ## MATERIAL BASELINES # ### mat_virgin_eff | Virgin Material Efficiency # In[74]: # Material baseline mod. stage = 'mat_virgin_eff'