Source code for carbatpy.models.coupled.read_cycle_structure

# -*- coding: utf-8 -*-
"""
Created on Fri Dec 15 14:33:04 2023

@author: atakan
"""

import datetime
import pandas as pd
import graphviz as gv

[docs] DIRNAME = "..//..//data"
[docs] FILE_NAME = "orc_structure.xlsx"
[docs] def plot_cycle_structure(fname, dirname=DIRNAME, cycle_name="cycle", format_="png", engine="circo"): """ read an Excel file with information about the cycle structure and use graphviz for visualization, a file is generated. Parameters ---------- fname : string the excel filename. dirname : string, optional the directory name to read the file and to store afterwards. The default is DIRNAME. cycle_name : string, optional name of the cycle. The default is "cyle". format : String, optional plot-format (png, pdf etc). The default is "png". engine : string, optional an engine name from graphviz (dot, circo etc.). The default is "circo". Returns ------- None. """ verbose = False fname_exel = dirname + "//" + fname fname_out = dirname + "//" + datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") +\ cycle_name data = pd.read_excel(fname_exel, index_col=0) dot = gv.Digraph(cycle_name, comment='ORC in a Carnot Battery') dot.engine = engine dot.attr(rankdir="TB") for line_n, node_name in enumerate(data["Name(unique)"]): if data["in_cycle"].iloc[line_n]: shape = "box" style = "filled" color = "yellow" arrowhead = "normal" acolor = "red" else: shape = "egg" style = "filled" color = "cyan" arrowhead = "vee" acolor = "blue" dot.node(node_name, shape=shape, style=style, color=color) if pd.notnull(data["input1"].iloc[line_n]): label = str(line_n) dot.edge(data["input1"].iloc[line_n], node_name, label=label, arrowhead=arrowhead, color=acolor) if pd.notnull(data["output1"].iloc[line_n]): if not data["in_cycle"].iloc[line_n]: dot.edge(node_name, data["output1"].iloc[line_n], label=str(line_n), arrowhead=arrowhead, color=acolor) if verbose: print(dot.source, fname_out) dot.render(format=format_, filename=fname_out, view=True)
if __name__ == "__main__": plot_cycle_structure(FILE_NAME, cycle_name="orc") plot_cycle_structure("hp_structure.xlsx", cycle_name="heat_pump")