20240801 added SRA to main
This commit is contained in:
parent
3e5c54e7cf
commit
8294109a09
74
main.py
74
main.py
@ -9,13 +9,37 @@ from hub.imports.weather_factory import WeatherFactory
|
|||||||
import hub.helpers.constants as cte
|
import hub.helpers.constants as cte
|
||||||
from hub.imports.energy_systems_factory import EnergySystemsFactory
|
from hub.imports.energy_systems_factory import EnergySystemsFactory
|
||||||
from hub.helpers.peak_loads import PeakLoads
|
from hub.helpers.peak_loads import PeakLoads
|
||||||
|
from pathlib import Path
|
||||||
|
import subprocess
|
||||||
|
from hub.imports.results_factory import ResultFactory
|
||||||
|
from hub.imports.energy_systems_factory import EnergySystemsFactory
|
||||||
|
from scripts.energy_system_sizing_and_simulation_factory import EnergySystemsSimulationFactory
|
||||||
|
import hub.helpers.constants as cte
|
||||||
|
from hub.exports.exports_factory import ExportsFactory
|
||||||
|
from scripts.solar_angles import CitySolarAngles
|
||||||
|
from scripts.radiation_tilted import RadiationTilted
|
||||||
|
|
||||||
import geopandas as gpd
|
import geopandas as gpd
|
||||||
import json
|
import json
|
||||||
|
#%% # -----------------------------------------------
|
||||||
# Specify the GeoJSON file path
|
# Specify the GeoJSON file path
|
||||||
|
#%% # -----------------------------------------------
|
||||||
input_files_path = (Path(__file__).parent / 'input_files')
|
input_files_path = (Path(__file__).parent / 'input_files')
|
||||||
output_path = (Path(__file__).parent / 'out_files').resolve()
|
output_path = (Path(__file__).parent / 'out_files').resolve()
|
||||||
output_path.mkdir(parents=True, exist_ok=True)
|
output_path.mkdir(parents=True, exist_ok=True)
|
||||||
|
energy_plus_output_path = output_path / 'energy_plus_outputs'
|
||||||
|
energy_plus_output_path.mkdir(parents=True, exist_ok=True)
|
||||||
|
simulation_results_path = (Path(__file__).parent / 'out_files' / 'simulation_results').resolve()
|
||||||
|
simulation_results_path.mkdir(parents=True, exist_ok=True)
|
||||||
|
sra_output_path = output_path / 'sra_outputs'
|
||||||
|
sra_output_path.mkdir(parents=True, exist_ok=True)
|
||||||
|
cost_analysis_output_path = output_path / 'cost_analysis'
|
||||||
|
cost_analysis_output_path.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
#%%-----------------------------------------------
|
||||||
|
#"""add geojson paths and create city for Baseline"""
|
||||||
|
#%% # -----------------------------------------------
|
||||||
|
|
||||||
geojson_file_path_baseline = output_path / 'updated_buildings_with_all_data_baseline.geojson'
|
geojson_file_path_baseline = output_path / 'updated_buildings_with_all_data_baseline.geojson'
|
||||||
geojson_file_path_2024 = output_path / 'updated_buildings_with_all_data.geojson'
|
geojson_file_path_2024 = output_path / 'updated_buildings_with_all_data.geojson'
|
||||||
with open(geojson_file_path_baseline , 'r') as f:
|
with open(geojson_file_path_baseline , 'r') as f:
|
||||||
@ -30,15 +54,50 @@ city = GeometryFactory('geojson',
|
|||||||
year_of_construction_field='year_built',
|
year_of_construction_field='year_built',
|
||||||
function_field='building_type',
|
function_field='building_type',
|
||||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||||
|
#%%-----------------------------------------------
|
||||||
# Enrich city data
|
# Enrich city data
|
||||||
|
#%% # -----------------------------------------------
|
||||||
ConstructionFactory('nrcan', city).enrich()
|
ConstructionFactory('nrcan', city).enrich()
|
||||||
UsageFactory('nrcan', city).enrich()
|
UsageFactory('nrcan', city).enrich()
|
||||||
WeatherFactory('epw', city).enrich()
|
WeatherFactory('epw', city).enrich()
|
||||||
|
|
||||||
# #energy plus is not going to be processed here, as demand has been obtained before
|
# #energy plus is not going to be processed here, as demand has been obtained before
|
||||||
# energy_plus_workflow(city)
|
# energy_plus_workflow(city)
|
||||||
|
#%%-----------------------------------------------
|
||||||
|
# """SRA"""
|
||||||
|
#%% # -----------------------------------------------
|
||||||
|
ExportsFactory('sra', city, sra_output_path).export()
|
||||||
|
sra_path = (sra_output_path / f'{city.name}_sra.xml').resolve()
|
||||||
|
subprocess.run(['sra', str(sra_path)])
|
||||||
|
ResultFactory('sra', city, sra_output_path).enrich()
|
||||||
|
solar_angles = CitySolarAngles(city.name,
|
||||||
|
city.latitude,
|
||||||
|
city.longitude,
|
||||||
|
tilt_angle=45,
|
||||||
|
surface_azimuth_angle=180).calculate
|
||||||
|
for building in city.buildings:
|
||||||
|
ghi = [x / cte.WATTS_HOUR_TO_JULES for x in building.roofs[0].global_irradiance[cte.HOUR]]
|
||||||
|
RadiationTilted(building,
|
||||||
|
solar_angles,
|
||||||
|
tilt_angle=45,
|
||||||
|
ghi=ghi).enrich()
|
||||||
|
# building_names = []
|
||||||
|
# for building in city.buildings:
|
||||||
|
# building_names.append(building.name)
|
||||||
|
#
|
||||||
|
# df = pd.DataFrame(columns=building_names)
|
||||||
|
# df1 = pd.DataFrame(columns=building_names)
|
||||||
|
# print('test')
|
||||||
|
# for building in city.buildings:
|
||||||
|
# # if building.name in selected_buildings_list:
|
||||||
|
# df[f'{building.name}'] = building.roofs[0].global_irradiance[cte.HOUR]
|
||||||
|
# df1[f'{building.name}'] = building.roofs[0].global_irradiance_tilted[cte.HOUR]
|
||||||
|
#
|
||||||
|
# df.to_csv('solar_radiation_horizontal_selected_buildings.csv')
|
||||||
|
# df1.to_csv('solar_radiation_tilted_selected_buildings.csv')
|
||||||
|
|
||||||
#SRA algorithm
|
#%% # -----------------------------------------------
|
||||||
|
#"""Enrich city with geojson file data"""
|
||||||
|
#%% # -----------------------------------------------
|
||||||
percentage_data = {
|
percentage_data = {
|
||||||
1646: {"type1_%": 1, "type2_%": 0, "type3_%": 0, "roof_area": 2672.550473, "total_floor_area": 26725.50473},
|
1646: {"type1_%": 1, "type2_%": 0, "type3_%": 0, "roof_area": 2672.550473, "total_floor_area": 26725.50473},
|
||||||
1647: {"type1_%": 1, "type2_%": 0, "type3_%": 0, "roof_area": 2653.626087, "total_floor_area": 26536.26087},
|
1647: {"type1_%": 1, "type2_%": 0, "type3_%": 0, "roof_area": 2653.626087, "total_floor_area": 26536.26087},
|
||||||
@ -104,6 +163,11 @@ def enrich_buildings_with_geojson_data (building_type_data, city):
|
|||||||
|
|
||||||
enrich_buildings_with_geojson_data (building_type_data, city)
|
enrich_buildings_with_geojson_data (building_type_data, city)
|
||||||
print('test')
|
print('test')
|
||||||
|
|
||||||
|
#%%-----------------------------------------------
|
||||||
|
# """ADD energy systems"""
|
||||||
|
#%% # -----------------------------------------------
|
||||||
|
|
||||||
for building in city.buildings:
|
for building in city.buildings:
|
||||||
building.energy_systems_archetype_name = 'system 1 electricity pv'
|
building.energy_systems_archetype_name = 'system 1 electricity pv'
|
||||||
|
|
||||||
@ -146,3 +210,9 @@ for building in city.buildings:
|
|||||||
# total_floor_area += thermal_zone.total_floor_area
|
# total_floor_area += thermal_zone.total_floor_area
|
||||||
# print(building.heating_demand[cte.YEAR][0] / (3.6e6 * total_floor_area))
|
# print(building.heating_demand[cte.YEAR][0] / (3.6e6 * total_floor_area))
|
||||||
|
|
||||||
|
|
||||||
|
# for building in city.buildings:
|
||||||
|
# building.energy_systems_archetype_name = 'PV+4Pipe+DHW'
|
||||||
|
# EnergySystemsFactory('montreal_future', city).enrich()
|
||||||
|
# for building in city.buildings:
|
||||||
|
# EnergySystemsSimulationFactory('archetype13', building=building, output_path=simulation_results_path).enrich()
|
Loading…
Reference in New Issue
Block a user