Skip to content
Snippets Groups Projects
Commit 7c2d65f5 authored by jonasVano's avatar jonasVano
Browse files

Merge remote-tracking branch 'origin/main' into dev_jou_fsa_build_quarter_model

parents 4e6267fb 13e82826
No related branches found
No related tags found
No related merge requests found
Showing
with 109 additions and 79 deletions
"""
This script inspects the input files and modifies them such that they adhere to the new input file specification used by the framework after merge of merge request !13 Input Profile Processor.
This script assumes that the file containing the paths to the files containing the input profiles is called "data_path.csv".
"""
import os.path
changed_files = []
for dirpath, dirnames, filenames in os.walk(".\\input_files"):
for filename in filenames:
if filename == "data_path.csv":
print(f"Inspecting file {os.path.join(dirpath, filename)}")
changed_files.append(os.path.join(dirpath, filename))
os.remove(os.path.join(dirpath, filename))
for file in changed_files:
print(f"Modified file {file}!")
"""
This script inspects the input files and modifies them such that they adhere to the new input file specification used by the framework after merge of merge request !12 Refactoring Part 1.
"""
import os.path
import pandas as pd
def read_matrix(df):
matrix = []
for i in df.index:
matrix_row = []
for j in df.index:
matrix_row.append(df[df["comp_name"][j]][i])
matrix.append(matrix_row)
return matrix
def read_components(df):
components = {}
for i in df.index:
components[df["comp_name"][i]] = i
return components
def get_connection(matrix, components, comp_from, comp_to):
return matrix[components[comp_from]][components[comp_to]]
def set_connection(matrix, components, comp_from, comp_to, value):
matrix[components[comp_from]][components[comp_to]] = value
def write_matrix(df, matrix):
for i in df.index:
for j in df.index:
df.loc[i, df["comp_name"][j]] = matrix[i][j]
changed_files = []
invalid_files = []
for dirpath, dirnames, filenames in os.walk(".\\input_files"):
for filename in filenames:
matrix_names = ["elec_matrix.csv", "gas_matrix.csv", "hydro_matrix.csv", "therm_matrix.csv"]
consumption_component_names = ["ChargingInfrastructure", "StandardElectricalConsumption", "HeadConsumption", "Radiator", "HotWaterConsumption"]
if filename.find('matrix') and filename.endswith('.csv') and (filename.find('elec') is not -1 or filename.find('gas') is not -1 or filename.find('hydro') is not -1 or filename.find('therm') is not -1):
try:
print(f"Inspecting file {os.path.join(dirpath, filename)}")
df = pd.read_csv(os.path.join(dirpath, filename))
file_changed = False
matrix = read_matrix(df)
components = read_components(df)
for component in components.keys():
if df["comp_type"][components[component]] in consumption_component_names:
receives_from = []
gives_to = []
for other_component in components.keys():
if get_connection(matrix, components, other_component, component) == 1:
receives_from.append(other_component)
if get_connection(matrix, components, component, other_component) == 1:
gives_to.append(other_component)
if len(gives_to) != 0:
file_changed = True
for recieving_component in gives_to:
set_connection(matrix, components, component, recieving_component, 0)
for giving_component in receives_from:
set_connection(matrix, components, giving_component, recieving_component, 1)
if file_changed:
changed_files.append(os.path.join(dirpath, filename))
write_matrix(df, matrix)
df.to_csv(os.path.join(dirpath, "temp.csv"), index = False)
df_str = pd.read_csv(os.path.join(dirpath, "temp.csv"), dtype = str, keep_default_na = False)
for i in df.columns:
if issubclass(type(df[i][0]), float):
for j in df.index:
if len(df_str[i][j]) != 0 and df_str[i][j].endswith(".0"):
df_str[i][j] = f"{df[i][j]:.0f}"
df_str.to_csv(os.path.join(dirpath, filename), index = False)
os.remove(os.path.join(dirpath, "temp.csv"))
except KeyError:
invalid_files.append(os.path.join(dirpath, filename))
for file in changed_files:
print(f"Modified file {file}!")
for file in invalid_files:
print(f"File {file} breaks some part of the input file specification that during the refactoring!")
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
type,path,unit
elec_price,input_files/data/prices/day-ahead/hourly_price.csv,h
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
type,path,unit
elec_price,input_files/data/prices/day-ahead/hourly_price.csv,h
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,inv_pv,battery,heat_pump,grd,elec_cns,inv_bat
pv_roof,StandardPVGenerator,PV2,10,10,0,0,1,0,0,0,0,0
inv_pv,BasicInverter,INVPV,10,10,0,0,0,0,0,1,1,1
inv_pv,BasicInverter,INVPV,10,10,0,0,0,0,1,1,1,1
battery,LiionBattery,BAT1,10,10,0,0,0,0,0,0,0,1
heat_pump,HeatPump,EHP1,10,10,0,0,0,0,0,0,0,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,0,0,0,1,0
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,0,1,0,0,0
inv_bat,BasicInverter,INVBAT,10,10,0,0,0,1,0,1,1,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,0,1,0,1,0
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,0,0,0,0,0
inv_bat,BasicInverter,INVBAT,10,10,0,0,0,1,1,1,1,0
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,inv_pv,heat_pump,grd,elec_cns
pv_roof,StandardPVGenerator,PV2,10,10,0,0,1,0,0,0
inv_pv,BasicInverter,INVPV,10,10,0,0,0,0,1,1
inv_pv,BasicInverter,INVPV,10,10,0,0,0,1,1,1
heat_pump,HeatPump,EHP1,10,10,0,0,0,0,0,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,0,0,1
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,1,0,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,1,0,1
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,0,0,0
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,inv_pv,battery,heat_pump,grd,elec_cns,inv_bat
pv_roof,StandardPVGenerator,PV2,30,30,0,0,1,0,0,0,0,0
inv_pv,BasicInverter,INVPV,30,30,0,0,0,0,0,1,1,1
inv_pv,BasicInverter,INVPV,30,30,0,0,0,0,1,1,1,1
battery,LiionBattery,BAT1,10,10,0,0,0,0,0,0,0,1
heat_pump,HeatPump,EHP1,10,10,0,0,0,0,0,0,0,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,0,0,0,1,0
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,0,1,0,0,0
inv_bat,BasicInverter,INVBAT,10,10,0,0,0,1,0,1,1,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,0,1,0,1,0
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,0,0,0,0,0
inv_bat,BasicInverter,INVBAT,10,10,0,0,0,1,1,1,1,0
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,inv_pv,heat_pump,grd,elec_cns
pv_roof,StandardPVGenerator,PV2,30,30,0,0,1,0,0,0
inv_pv,BasicInverter,INVPV,30,30,0,0,0,0,1,1
inv_pv,BasicInverter,INVPV,30,30,0,0,0,1,1,1
heat_pump,HeatPump,EHP1,10,10,0,0,0,0,0,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,0,0,1
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,1,0,0
grd,StandardACGrid,GRD1,10000,10000,0,0,0,1,0,1
elec_cns,StandardElectricalConsumption,CNS1,10000,10000,0,0,0,0,0,0
type,path,unit
demand_electric,generate,h
demand_heat,generate,h
irradiance,input_files/data/irradiance/Lindenberg2006BSRN_Irradiance_60sec.csv,min
temperature,input_files/data/temperature/temperature.csv,h
day_ahead_price,input_files/data/prices/day-ahead/hourly_price.csv,h
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment