Source code for carbatpy.utils.run_screening_evaluation

# -*- coding: utf-8 -*-
"""
Run script to evaluate the fluid screening, together with the compressor model

which are stored in two csv-files. First they are sorted then concatenated.
Afterwards, the Paeroto optimal values are selected, plotted and stored.


Created on Mon Feb 12 17:01:22 2024

@author: atakan
"""

from paretoset import paretoset
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sbn
import carbatpy as cb


[docs] RUN_NO = 1
[docs] f_add ="-sort-rlt-4val" # change this name to have unique file names for each run
[docs] directory = r"C:\Users\atakan\sciebo\results\optimal_hp_fluid\fluid_select_restricted\2024-02-12-16-55-ProEthPenBut"
[docs] filename1 = directory + r"\\2024-02-12-16-55-ProEthPenBut.csv"
[docs] pareto_file = filename1.split(".")[0]+'-sort-evaluated.csv'
[docs] f_name = filename1.split(".")[0]+f_add
[docs] filename2 = directory + \ r"\\2024-02-12-16-55-ProEthPenBut-compressor-Roskosch.csv" # the compressor data
[docs] data_screen = pd.read_csv(filename1)
[docs] keys=data_screen.columns
[docs] fl_all =cb. property_eval_mixture.get_fluid(data_screen)
[docs] fl_col = fl_all[1]
[docs] data =data_screen.sort_values(axis=0, by=fl_col).reset_index(drop=True)
# .reset_index is important, without it, sorting gets lost after concat
[docs] eval_dat = pd.read_csv(filename2)
[docs] keys2 =eval_dat.columns
[docs] eval_sorted=eval_dat.sort_values(axis=0, by=fl_col).reset_index(drop=True)
[docs] all_keys=[*keys, *keys2]
[docs] combined_data = pd.concat([data, eval_sorted], axis=1, ignore_index=True)
combined_data.columns=all_keys combined_data.to_csv(f_name+"-combi-new.csv")
[docs] what_act = {"x": 'spec_Volume_sup', "y": 'COP_is80', "hue": 'p_ratio',#',# 'COP_comp', #'T_glide_h', "size": 'spec_Volume_sup', 'style': 'Temperature_hplt'}
if RUN_NO ==0: ##############################################
[docs] SUCCESS = cb.property_eval_mixture.data_plot(filename1, what_act)
############################################ fluids_act, fluid_col_act, fluid_str_act = cb.property_eval_mixture.get_fluid(combined_data) ######################################### evaluated_data = cb.property_eval_mixture.eval_is_eff_roskosch(combined_data, filename1.split(".")[0]+'-sort-evaluated.csv') ################################### if RUN_NO >=0: # Pareto-Optimal values are searched, for these objectives:
[docs] objectives_act = [ 'T_glide_h', 'eff_sec_law_r_lowT', 'spec_Volume_sup','p_ratio'] #'eff_sec_law_r'] # 'spec. Volume_sup',
sense_act = ["max", "max", "min", "min"] what_act["x"]=objectives_act[0] what_act["y"]=objectives_act[1] optimal_data = cb.optimize.pareto(pareto_file, [objectives_act,sense_act]) opt_values = optimal_data["all_values"][ optimal_data["optimal_mask"]] opt_values.to_csv(f_name+"-pareto.csv") graph = sbn.relplot(data=opt_values.round(3), y=what_act["y"], hue=what_act["hue"], size=what_act["size"], x=what_act["x"]) graph.savefig(f_name+"-plot.jpg", dpi =300) with open(f_name+"-objectives-.txt", "w", encoding="utf-8") as file: file.write(str(list(zip(objectives_act,sense_act)))) graph2 = sbn.relplot(data=optimal_data["all_values"], y="is_eff", hue="p_ve", #size="eff_sec_law_r_lowT", x='spec_Volume_sup') graph2.savefig(f_name+"-plot_is_eff.jpg", dpi =300) # val = cb.property_eval_mixture.get_cycle_points(opt_values, 80) # val2 = cb.property_eval_mixture.get_cycle_points(opt_values, 104) # figure, axis =plt.subplots(1,1) # axis.plot(val[2,:]- val[2,:].min(),val[0,:],"o:k") # axis.plot(val2[2,:]- val2[2,:].min(),val2[0,:],"v:b")