Skip to content

Commit

Permalink
starting SIPS case studies
Browse files Browse the repository at this point in the history
journal started, residential scenarios defined - haven't yet run.
  • Loading branch information
heathermirletz committed Dec 24, 2024
1 parent 99d43f3 commit a5f1b6d
Show file tree
Hide file tree
Showing 8 changed files with 530 additions and 4,101 deletions.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -1283,7 +1283,9 @@
"cell_type": "code",
"execution_count": 25,
"id": "5c172e28",
"metadata": {},
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
Expand Down
1,934 changes: 114 additions & 1,820 deletions docs/dev/Untitled.html → docs/dev/SIPS2025-CaseStudies.html

Large diffs are not rendered by default.

255 changes: 255 additions & 0 deletions docs/dev/SIPS2025-CaseStudies.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,255 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "badb9b1e-e3ab-46ab-835d-46aec0dc01ac",
"metadata": {},
"source": [
"# SIPS: QUIP SERIES\n",
"This journal explores the case studies of the SIPS 2025 project understanding the implications of repowering and module reuse. This compliments analyses conducted in SAM and PV Watts. Below are the Residential, Commercial, and Utility scale case studies"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "51c46971-8cdf-4836-8418-0469123f3ab9",
"metadata": {},
"outputs": [],
"source": [
"#setup\n",
"import numpy as np\n",
"import pandas as pd\n",
"import os,sys\n",
"from pathlib import Path\n",
"import matplotlib.pyplot as plt\n",
"import plotly.express as px\n",
"\n",
"import PV_ICE\n",
"\n",
"cwd = os.getcwd() #grabs current working directory\n",
"\n",
"testfolder = str(Path().resolve().parent.parent / 'PV_ICE' / 'TEMP' / 'MESC-NRELStdScens')\n",
"inputfolder = str(Path().resolve().parent.parent / 'PV_ICE' / 'baselines'/'NRELStdScenarios')\n",
"baselinesfolder = str(Path().resolve().parent.parent /'PV_ICE' / 'baselines')\n",
"supportMatfolder = str(Path().resolve().parent.parent / 'PV_ICE' / 'baselines' / 'SupportingMaterial')\n",
"#altBaselinesfolder = str(Path().resolve().parent.parent / 'PV_ICE' / 'baselines' / 'Energy_CellModuleTechCompare')\n",
"\n",
"if not os.path.exists(testfolder):\n",
" os.makedirs(testfolder)\n",
"\n",
"print(\"Python version \", sys.version)\n",
"print(\"Pandas version \", pd.__version__)\n",
"print(\"pyplot \", plt.matplotlib.__version__)\n",
"print(\"PV_ICE version \", PV_ICE.__version__)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "613f82f3-f393-43dc-9386-0b9329ab0804",
"metadata": {},
"outputs": [],
"source": [
"sim1 = PV_ICE.Simulation(name='SIPS', path=testfolder)"
]
},
{
"cell_type": "markdown",
"id": "a43f9553-be86-4a17-92d2-b32c65992b15",
"metadata": {},
"source": [
"## Residential Case Study\n",
"This case study considers a residential system where the PV system is not at technical end of life (installed 2015), but the roof needs replacing in 2024. The owner has the option of keeping the old system or replacing the PV system."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "93a52417-0815-46cc-8b4f-c86fc2b6e556",
"metadata": {},
"outputs": [],
"source": [
"#c-Si\n",
"MATERIALS = ['glass','aluminium_frames','silver','silicon', 'copper', 'encapsulant', 'backsheet']\n",
"moduleFile = os.path.join(baselinesfolder, 'baseline_modules_mass_US_updatedT50T90.csv')\n",
"#CdTe\n",
"#MATERIALS_CdTe = ['glass_cdte','aluminium_frames_cdte', 'copper_cdte', 'encapsulant_cdte','cadmium','tellurium']\n",
"#moduleFile_CdTe = os.path.join(baselinesfolder, 'baseline_modules_mass_US_CdTe.csv')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5ee5a3e3-29a3-4eea-94c5-e5ae75fb1da6",
"metadata": {},
"outputs": [],
"source": [
"#residential system parameters\n",
"resi_sys1_size = 0.00552 #MW, first system on roof (degrades to 5 kW in 2024 after 9 years (2024-2015))\n",
"resi_sys1_deg = 1.1 #%/yr, corresponds to 20 yr life\n",
"resi_sys1_life = 20 #years of life\n",
"resi_sys1_life_repower = 9 #years of life but remove for repowering\n",
"\n",
"resi_sys2_size = 0.0073 #MW, 2nd system on roof\n",
"resi_sys2_deg = 0.7 #%/yr, corresponds to 30 yr life\n",
"resi_sys2_life = 30 #years of life"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "efedbc4b-0216-48aa-a884-dbc8ce255975",
"metadata": {},
"outputs": [],
"source": [
"#Residential case study\n",
"sim1.createScenario(name='Resi_keep', massmodulefile=moduleFile) #create the scenario, name and mod file attach\n",
"for mat in MATERIALS:\n",
" materialfile = os.path.join(baselinesfolder, 'baseline_material_mass_'+str(mat)+'.csv')\n",
" sim1.scenario['Resi_keep'].addMaterial(mat, massmatfile=materialfile) # add all materials listed in MATERIALS"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7be01ab2-6824-4687-a1b8-23b68dbeb4ac",
"metadata": {},
"outputs": [],
"source": [
"#Residential case study\n",
"sim1.createScenario(name='Resi_repower', massmodulefile=moduleFile) #create the scenario, name and mod file attach\n",
"for mat in MATERIALS:\n",
" materialfile = os.path.join(baselinesfolder, 'baseline_material_mass_'+str(mat)+'.csv')\n",
" sim1.scenario['Resi_repower'].addMaterial(mat, massmatfile=materialfile) # add all materials listed in MATERIALS"
]
},
{
"cell_type": "markdown",
"id": "68bf3167-c4a5-4da3-91ed-57f0f9bacd5f",
"metadata": {},
"source": [
"idx_temp = pd.RangeIndex(start=2024,stop=2051,step=1) #create the index\n",
"CdTeRamp = pd.DataFrame(index=idx_temp, columns=['CdTe_deploy_[MWdc]'], dtype=float)\n",
"CdTeRamp.loc[2024] = 14000\n",
"CdTeRamp.loc[2030] = 50000#22000\n",
"CdTeRamp_full = round(CdTeRamp.interpolate(),0)\n",
"#CdTeRamp_full"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "61014a62-9b16-431d-9c5e-3aa2f19acef6",
"metadata": {},
"outputs": [],
"source": [
"#Modify the Scenario \n",
"sim1.modifyScenario(scenarios='Resi_keep',stage='new_Installed_Capacity_[MW]', value=0)#, start_year=) #\n",
"#sim1.modifyScenario(scenarios='NAME',stage='new_Installed_Capacity_[MW]', value=0.005, start_year=2015) #5kW system installed in 2015\n",
"sim1.scenario['Resi_keep'].dataIn_m.loc[2015, 'new_Installed_Capacity_[MW]'] = resi_sys1_size\n",
"sim1.scenario['Resi_keep'].dataIn_m.loc[2015, 'mod_degradation'] = resi_sys1_deg\n",
"sim1.scenario['Resi_keep'].dataIn_m.loc[2015, 'mod_lifetime'] = resi_sys1_life\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5ac8fa8a-7c2b-40ee-8b64-5c1e34594d6f",
"metadata": {},
"outputs": [],
"source": [
"#Modify the Scenario \n",
"sim1.modifyScenario(scenarios='Resi_repower',stage='new_Installed_Capacity_[MW]', value=0)#, start_year=) #\n",
"#sim1.modifyScenario(scenarios='NAME',stage='new_Installed_Capacity_[MW]', value=0.005, start_year=2015) #5kW system installed in 2015\n",
"sim1.scenario['Resi_repower'].dataIn_m.loc[2015, 'new_Installed_Capacity_[MW]'] = resi_sys1_size\n",
"sim1.scenario['Resi_repower'].dataIn_m.loc[2015, 'mod_degradation'] = resi_sys1_deg\n",
"sim1.scenario['Resi_repower'].dataIn_m.loc[2015, 'mod_lifetime'] = resi_sys1_life_repower\n",
"\n",
"sim1.scenario['Resi_repower'].dataIn_m.loc[2024, 'new_Installed_Capacity_[MW]'] = resi_sys2_size\n",
"sim1.scenario['Resi_repower'].dataIn_m.loc[2024, 'mod_degradation'] = resi_sys2_deg\n",
"sim1.scenario['Resi_repower'].dataIn_m.loc[2024, 'mod_lifetime'] = resi_sys2_life"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6268306d-58bc-4065-9810-0871f6871744",
"metadata": {},
"outputs": [],
"source": [
"#do we also need a reuse scenario where both systems are used for full life? - wouldn't it just be additive?"
]
},
{
"cell_type": "markdown",
"id": "b229bce9-496d-4f55-b8a1-2fd1158b3a75",
"metadata": {},
"source": [
"# Commercial Case Study\n",
"This case study considers a set of commerical PV installations."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5601df4c-6556-4b71-8922-6a05dbe9ccc6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "76aec89f-0650-43c9-94db-b3f70de82ef9",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "bf115fa7-ac29-41c2-bfcd-7b8dc1beb64b",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "afcc89b5-fccf-4c63-91e7-194446218e18",
"metadata": {},
"source": [
"# Utility Case Study\n",
"This case study considers a set of utility scale PV installations."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3210d68d-f56b-4da3-b500-8073b707a2d5",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading

0 comments on commit a5f1b6d

Please sign in to comment.