variable_window_ratio.py 1.88 KB
Newer Older
Eric Duminil's avatar
Eric Duminil committed
1
2
from pathlib import Path
import shutil
Eric Duminil's avatar
Eric Duminil committed
3
4
5
6
from xml.etree import ElementTree as et
import pandas as pd

from run_simstadt_workflow import find_simstadt, SCRIPT_DIR, run_workflow
7
8

SIMSTADT2_GLOB = 'Desktop/SimStadt2_0.*/'
Eric Duminil's avatar
Eric Duminil committed
9
10
REPO_PATH = Path.home() / 'git' / 'simstadt2' / 'TestRepository'
PROJECT_NAME = 'Gruenbuehl'
Eric Duminil's avatar
Eric Duminil committed
11
CITYGMLS = ['Gruenbuehl_LOD2_ALKIS_1010.gml']
Eric Duminil's avatar
Eric Duminil committed
12
13
14
15

PROJECT_PATH = REPO_PATH / f'{PROJECT_NAME}.proj'
PARAMS = 'params.xml'

Eric Duminil's avatar
Eric Duminil committed
16
17
BUILDING_PHYSICS_LIBRARY = 'GermanBuildingTypologyLibrary_IWU.xml'

18
print(find_simstadt(SIMSTADT2_GLOB))
Eric Duminil's avatar
Eric Duminil committed
19
20
21

TEMPLATE_NAME = '99_HeatDemand'

Eric Duminil's avatar
Eric Duminil committed
22
23
24
25
26
27
28
29
30
31
32
33
34
35
template = SCRIPT_DIR / 'Template' / f'{TEMPLATE_NAME}.flow' # Heat demand, with custom BuildingPhysics

workflow_path = PROJECT_PATH / f'{TEMPLATE_NAME}.flow'

shutil.copytree(template, workflow_path, dirs_exist_ok=True)
print(workflow_path)

physics_processor_step = workflow_path / '01_Preprocessing.step/02_PhysicsPreprocessor.step'


############# Specify custom lib #########################
custom_library_path = physics_processor_step / BUILDING_PHYSICS_LIBRARY

physics_processor_params = physics_processor_step / PARAMS
Eric Duminil's avatar
Eric Duminil committed
36

Eric Duminil's avatar
Eric Duminil committed
37
38
tree = et.parse(physics_processor_params)
root = tree.getroot()
Eric Duminil's avatar
Eric Duminil committed
39

Eric Duminil's avatar
Eric Duminil committed
40
41
42
43
lib_node = root.find(".//object[@class='de.hft.stuttgart.simstadt2.assessment.PhysicsXmlLib']/void[@property='path']/string")
lib_node.text = str(custom_library_path)
tree.write(physics_processor_params)
##########################################################
Eric Duminil's avatar
Eric Duminil committed
44

Eric Duminil's avatar
Eric Duminil committed
45

Eric Duminil's avatar
Eric Duminil committed
46
output_files = run_workflow(find_simstadt(SIMSTADT2_GLOB), workflow_path, CITYGMLS)
Eric Duminil's avatar
Eric Duminil committed
47

Eric Duminil's avatar
Eric Duminil committed
48
heat_demand_csv = next(file for file in output_files if 'HEATING.csv' in file.name)
Eric Duminil's avatar
Eric Duminil committed
49

Eric Duminil's avatar
Eric Duminil committed
50
################### Parse heat demand ########################
Eric Duminil's avatar
Eric Duminil committed
51

Eric Duminil's avatar
Eric Duminil committed
52
53
54
55
56
df = pd.read_csv(heat_demand_csv,
            skiprows=list(range(19)) + [20],
            sep=';',
            decimal=','
           )
Eric Duminil's avatar
Eric Duminil committed
57

Eric Duminil's avatar
Eric Duminil committed
58
59
heat_demand_MWh = df['Yearly Heating demand'].sum() / 1000
print(f"Total heat demand : {heat_demand_MWh:.0f} MWh / a")