Source code for carbatpy.helpers.input_dict

# -*- coding: utf-8 -*-
"""
Created on Thu Aug  1 12:35:02 2024

@author: atakan
"""
import json
import yaml
import carbatpy as cb

[docs] input_hp = { 'process': { "compressor": "Flow_device", "condenser": "StaticHeatExchanger", "throttle": "Flow_device", "evaporator": "StaticHeatExchanger", }, "species_all": {'working_fluid': "cycle", 'cold_storage': "source-sink", 'hot_storage': "source-sink", }, 'compressor': { "calc_type": "const_eta", "eta_s": 0.7, "species": {"working_fluid":{"in": "evaporator", "out":"condenser"},}, "dt_superheat": 5, }, 'throttle': { "calc_type": "const_h", "species": {"working_fluid":{"in": "condenser" , "out":"evaporator"},}, }, 'condenser': { "calc_type": "const", "species": {"working_fluid":{"in":"compressor", "out":"throttle"}, "hot_storage":{"in":"temp_low", "out":"temp_high"}}, "dt_min": 3., }, 'evaporator': { "calc_type": "const", "species": {"working_fluid":{"in":"throttle", "out":"compressor"}, "cold_storage":{"in":"temp_high", "out":"temp_low"}}, "dt_min": 3., }, 'cold_storage': { "species": "Methanol", "fractions": [1.0], "p_low": 5e5, "temp_low": 250.0, "temp_high": "ambient" }, 'hot_storage': { "species": "Water", "fractions": [1.0], "p_low": 2e5, "temp_low": "ambient", "temp_high": 360.0 }, 'working_fluid': { "species": "Propane * Butane * Pentane * Hexane", "fractions": [ 7.71733787e-01, 2.22759488e-02, 1.78685867e-01, 0.027304397199999997], "temp_low": "ambient", "temp_high": 360.0, "p_low": 1.28250708e+05, "p_high": 1.37548728e+06, "optimize": "None", "setting": "initial", }, }
[docs] input_hex = { 'condenser': { 'model': "StaticHeatExchanger", "calc_type": "const", "species": {"working_fluid":{"in":"temp_high", "out":"temp_low"}, "hot_storage":{"in":"temp_low", "out":"temp_high"}}, "dt_min": 3., "q_dot": 1000., "overall_u":100, 'area': 1, }, 'hot_storage': { "species": "Water", "fractions": [1.0], "p_low": 2e5, "temp_low": "ambient", "temp_high": 360.0, 'props':"REFPROP", }, 'working_fluid': { "species": "Propane * Butane * Pentane * Hexane", "fractions": [ 7.71733787e-01, 2.22759488e-02, 1.78685867e-01, 0.027304397199999997], "temp_low": "ambient", "temp_high": 360.0, "p_low": 1.28250708e+05, "p_high": 1.37548728e+06, "optimize": "None", "setting": "initial", 'props':"REFPROP", }, }
[docs] class Val(): """ Class to store and read the *input* dictionary values and variables for a heat pump. Best is to set them in a yaml or json file and read them with the appropriate function. The default place to search for hp-input-dictvariables is in the data directory. Part of carbatpy. """ def __init__(self, variables_dict=None): if variables_dict: for key, value in variables_dict.items(): setattr(self, key, value)
[docs] def to_file(self, fname=None): if fname: with open(fname, "w") as file: if fname.find("json") > 0: json.dump(self.__dict__, file, indent=4) elif fname.find("yaml") > 0: yaml.dump(self.__dict__, file) else: raise NotImplementedError(f"File type not implemeted {fname}") else: print("No file name given")
@classmethod
[docs] def from_file(cls, fname=None): instance = cls.__new__(cls) if fname: with open(fname, "r") as file: if fname.find("json") > 0: data = json.load(file) elif fname.find("yaml") > 0: data = yaml.safe_load(file) else: raise NotImplementedError(f"File type not implemeted {fname}") for key, value in data.items(): setattr(instance, key, value) else: print("No file name given") return instance
[docs] def find_key(a_dict, fl_name, t_amb =cb.CB_DEFAULTS['General']["T_SUR"]): for key in a_dict["process"].keys(): di2 = a_dict[key] if fl_name in di2["species"].keys(): in_out = di2["species"][fl_name] t_both= {} for key, value in in_out.items(): t_act= a_dict[fl_name][value] if t_act =="ambient": t_act = t_amb t_both[key]=t_act #T_in, T_out = a_dict[fl_name][in_out["in"]], a_dict[fl_name][in_out["out"]] return t_both
if __name__ == "__main__":
[docs] RES_DIR = cb.CB_DEFAULTS["General"]["RES_DIR"]
fn0 = RES_DIR + "\\test_input3.yaml" # mein = Val(input_hp) actuell = Val(input_hp) actuell.to_file(fn0) neu = Val.from_file(fn0) print (f'{find_key(input_hp, "cold_storage")}, hot: {find_key(input_hp, "hot_storage")}') with open(fn0, "r") as file: if fn0.find("json") > 0: in_dict = json.load(file) elif fn0.find("yaml") > 0: in_dict = yaml.safe_load(file)